����Linux��
Linux����

��MySQL+Proftpd����FTP������

����ʱ��:2006-08-20 20:19:08��Դ:��������:bear10214
FTP(File Transfer Protocol)��internet�е�һ��ö�����Ҫ�Ļ�����Э�飬�㷺Ӧ����internet�У�Ȼ����ͳ��FTP�����е��ʺŶ����÷������е�ϵͳ�û�������ҲΪҲ��ϵͳ��ȫ��������������MySQL�����û���֤���ܺõر����������������������ݿ����ṩ�û�������֤����FTP���ʺ�ӳ����ϵͳ�û����Ӷ�������ʹ��ϵͳ�û����������Դﵽ�Ƚϰ�ȫ��Ŀ�ġ�
��MySQL+Proftpd����FTP����������Ҫ���м��mod_sql�����������ģ�������ķ��������Ѿ���װ����MySQL��������̣�
һ���������İ�װ����mod_sql��proftpd����
Proftpd�İ�װ������ͨ��http://www.proftpd.net ��ã�ע��Ҫ֧��MySQL��֤��͵İ汾Ϊ1.2.5��
Mod_sql��װ������ͨ��http://www.lastditcheffort.org/~aah/proftpd/mod_sql/ ��á�
�������İ�װ��
�⿪��װ������proftpd-1.2.8.tar.gz ������/usr/local/src��Ŀ¼�£������
tar -gzvf proftpd-1.2.8.tar.gz
�⿪����ʱ������һ��proftpd-1.2.8 ��Ŀ¼��Ȼ������Ŀ¼�е�contribĿ¼��
cd proftpd-1.2.8/contrib/
���м��mod_sql��������Ŀ¼�У��ٽ⿪��
tar -gzvf mod_sql-4.0.8.tar.gz
����ʹProftpd֧��MySQL��֤��
./configure -with-modules=mod_sql:mod_sql_mysql -with-includes=/usr/includes/mysql with-libraries=/usr/lib/mysql
ע�⣺-with-includesѡ����ָMySQL��ͷ�ļ����ڵ�Ŀ¼��-with-librariesѡ����ָMySQL�Ŀ��ļ����ڵ�Ŀ¼�����ڲ�ͬ�Ļ������ܻ��Dz�ͬ��Ŀ¼��
���б��룺
make
��װ��
make install
��װ��֮�󣬿��԰����в�����в��ԣ�Proftpd�Ƿ�������������
sh sample-configurations/PFTEST.install
���Ե�����Ҫ����ʱ�ļ���������/tmp/PFTESTĿ¼�У��������
./proftpd -n -d 5 -c /tmp/PFTEST/PFTEST.conf
������������У�����Է����кܶ����Ϣ�������һ�л���֣�
ProFTPD 1.2.8 (built ***) standalone mode STARTUP
˵�����������ˣ����õĶ˿���2021����������û�proftpd������ proftpd���е�¼���ԡ���������������������׼��������Ҫ��鰲װ�Ƿ���ȷ��
����ΪFTP��������Ӧ�����ݿ⼰�����
1�������Ϊ�˷�����ר�ŵ����ݿ⣬Ҳ���Է������������ݿ��С��ڴ���ר�Ž���һ��ר�ŵ����ݿ�FTP��

create database FTP;

2��Ȼ����������ݿ��н���һ���û���FTPUSERS��������DZ���ģ�

use FTP;
create table FTPUSERS (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
);
�˱�����Ϊ���û���֤����Ҫ�ģ�����userid��passwd�DZز����ٵģ�userid������FTP������û�����passwd��ָ���û������룻uid��ϵͳ�û���ID��Ҳ������ӳ���ϵͳ�û���gid������ϵͳ���ID��home�Ǹ��û����ڵ�HOMEĿ¼��shell����Ϊ���û�ָ����Ӧ��shell����Ȼ����Խ���������ֶΣ����磺������¼�û���¼������count�����������ڵ�date��������������Ϥ��֮������Ը����Լ���ϲ�����Ӹ���Ĺ��ܡ��ڴ˾Ͳ��ི��
3�����������Ҫ���еĹ��ܣ��㻹������������һ����Ҫ�ı���FTPGRPS��Ҳ����ȷ����ı��񣬵�ȻҲ���Բ��ã����イһ�����ĸ�ʽ��
create table FTPGRPS (
grpname TEXT NOT NULL,
gid SMALLINT NOT NULL,
members TEXT NOT NULL,
);
����grpname��������ƣ�gid��ϵͳ���ID��members����ij�Ա��ע�⣺���Ա������֮��Ҫ�ö��Ÿ���������ʹ�ÿո�

4��Ϊ�ձ�������¼��
INSERT INTO FTPUSERS (userid, passwd, uid, gid, home, shell)
VALUES ('user1', '999999', '1000', '1000', '/home/ftp/user1', "");

���˸�ʽ����Բ�����ÿһ���û�����һ����¼��
�����Ҫ��Ӧ�õ�����Ĺ��ܣ��ҽ�������ı�����ҲҪΪ�����Ӽ�¼������һ��Ҫע����members���ֶζ����Աһ��Ҫ�ö��Ÿ�����

�ġ�ΪFTP�û�������Ӧ��ϵͳ�û���
�ڱ����У�ֻ����FTP����ֻ�ṩһ����Ч��ϵͳ�û�FTPUSR����FTPGRP����Ȼ��Ҳ�������ö��ϵͳ�û��������ڰ�ȫ�Ŀ��ǣ���ֻ��һ��������������FTP daemon���������е�FTP�û�ӳ�������û���

�Ƚ���FTPGRP�飺
groupadd -g 1000 -r FTPGRP
����FTPUSR�û���
adduser -u 1000 -g 1000 -d /home/FTP -s /bin/bash -r FTPUSR

ΪFTPUSR����HOME�������е�FTP user ��ռ�ȫ���ڴ�Ŀ¼�£�
mkdir /home/FTP
chown FTPUSR /home/FTP
chgrp FTPGRP /home/FTP

�塢���������ļ���
Proftpd�������ļ�proftpd.conf��/usr/local/etc/Ŀ¼�£���Բ��õ���֤����ʹ�ò�ͬ�������ļ���ʹ��MySQL��֤�����԰�sample-configurations/mod_sql.conf������/usr/local/etc���沢�������Ϊproftpd.conf
�޸�proftpd.conf�ļ��������������£�

#����FTP�����������ƣ�
ServerName"My FTP Server"
#����FTP�����������ͣ�
ServerType standalone
DefaultServer on
#���ø������������û���ij���ط������ǿ�������İ�ȫ�ԡ�
DefaultRoot ~
#����FTP����˿ںţ���׼��FTP����˿���21��
Port 21
#�����½��ļ���Ŀ¼ʱ������Ȩ�޵����룺
Umask 022
#����ϵͳ��־�ļ���
SystemLog /var/log/ftp.syslog
#���ü�¼�ļ��������־�ļ���
TransferLog /var/log/ftp.transferlog
#�������ij��Ե�¼�Ĵ�������������Զ��Ͽ����ӣ�
MaxLoginAttempts 3

#����MySQL��֤��

#���ݿ����ӵ���Ϣ��DatabaseName�����ݿ����� HostName����������
#Port�Ƕ˿ںţ�UserName���������ݿ���û�����Password�����롣
SQLConnectInfo DatabaseName@HostName:Port UserName Password
#����SQLConnectInfo proftpd@localhost root 123456
#���ݿ���֤�����ͣ�
SQLAuthTypes Backend Plaintext
#ָ���������û���֤�ı����й���Ϣ��
SQLUserInfo FTPUSERS userid passwd uid gid home shell
#�������shellΪ��ʱ�����û���¼��
RequireValidShell off
#���ݿ�ļ��������������û��ķ�ʽ��
SQLAuthenticate users
#���homeĿ¼�����ڣ���ϵͳ��Ϊ��������home���½�һ��Ŀ¼��
SQLHomedirOnDemand on

#��ֹDoS���������������˽��̣�
MaxInstances 30
#�������������ϵͳ�û����飺
User FTPUSR
Group FTPGRP
#�����û���¼ʱ��ʾ����Ϣ�����������Ŀ¼�е���Ϣ��
DisplayLogin welcome.msg
DisplayFirst Chdir.message
#�������ĵ�¼����
MaxClients 10
#֧�ֶϵ�������
AllowRetrieveRestart on

�������ԡ�
������ļ������ã����������Proftpd�����ˣ����������Ƿ�ɹ���
/usr/local/sbin/proftpd -n
��������Է��ַ����Ѿ������ˣ�������������ĵط����е�¼�������������������Ϳ���ʹ��FTP�����ˣ��������ڲ��Ե�ʱ����Ļ��˲��ٵ�ʱ�䡣���û�ɹ�û��ϵ����ϸ���һ���Լ����Ǹ��ط��������⡣�����ǰ��IJ��Գɹ��ˣ����������ļ��г��ֵ�������ܻ�Ƚϴ󣬵�Ȼ���ݿ��е�FTPUSERS�������ݲ��ܳ��ִ���

�ߡ��ű��ı�д��
���ˣ�һ�ж��ɹ��ˣ������дһ���ű�������FTP���������ʹ�õķ�������������"ServerType inetd"�� ����õ���inetd������Ҫ�޸�/etc/inetd.conf�ļ�������һ�У�
ftp streamtcpnowaitroot/usr/local/sbin/proftpd proftpd
�������xinetd��������Ҫ��/etc/xinetd.d/��Ŀ¼������һ���ļ���proftpd
������������£�
service ftp
{
flags=REUSE
socket_type=stream
instances=30
wait=no
user=root
server=/usr/local/sbin/proftpd
log_on_success=HOST PID
log_on_failure=HOST RECORD
}
���ѡ�õ�"ServerType standalone"����������/etc/rc.d/init.d/Ŀ¼��������һ��proftpd �ű��������������£�
#!/bin/bash
#
# Startup script for the proftpd FTP server
. /etc/rc.d/init.d/functions
proftpd=/usr/local/sbin/proftpd
prog=proftpd
RETVAL=0
start() {
echo -n $"Starting $prog:"
daemon $proftpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd
return $RETVAL
}

stop() {
echo -n $"Stopping $prog:"
killproc proftpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd
return $RETVAL
}


# See how we were called
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $proftpd
RETVAL=$?
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|status|restart}"
exit 1
esac

exit $RETVAL

�ˡ��ܽ�
������������еIJ��裬Proftp+MySQL�������о������ģ�����ͨ�����ݿ���������ܶ�Ĺ��ܣ����磺������¼�û��ĵ�¼�Ĵ�������������Ҳ����ô���ӣ�ֻ��Ҫ��FTPUSERS��������field count���Ϳ�������ʵ�֡��������ϵIJ���ֻ��һ�������Ĺ��ܣ�Ҫ��չ�����Ĺ��ܿ��Բο�����װ�����Դ���˵���ļ���
���������������:

MaxClients 100 ;����û���
MaxClientsPerHost 2 ;ÿ�ͻ������������
MaxClientsPerUser 1 ;ÿ�û���������
MaxHostsPerUser 1 ;ÿ�û�ͬʱʹ�ÿͻ���������
TransferRate RETR 100.0:102400 ;����100KByte/S
TimeoutIdle 150 ;����ʱ��(��)
TimeoutLogin 50 ;��½��ʱ(��)
TimeoutNoTransfer 150 ;���䳬ʱ(��)
UseReverseDNS off ;������ip������������
;дȨ������
denyall ;������

; ��ȷʡ���µ�incomingĿ¼����Ȩ������
AllowOverwrite on ;��������
AllowRetrieveRestart on ;������������
AllowStoreRestart on ;������������
;����incommingĿ¼��д
allowall

;��dele,chmod,retr��ftp�������
denyall ;�������û����ܿ��ƶ������



��: ftp����
�����Ǻŵ�����һ�����ʹ�ã����������ھ���ʵ���в�֧�֡�
ABOR ��������
*ACCT ijЩϵͳ���ʺź��û����ļ�ϵͳ�����
*ALLO Ϊ�������͵��ļ�����ռ䡣����Я���IJ�����ȷ���ֽ���
*APPE ���ļ����ӵ��Ѿ����ڵ��ļ�����
CDUP ��Զ��ϵͳ�Ͻ���ǰĿ¼�л����ϼ���Ŀ¼
CWD �ı�Զ��ϵͳ�Ĺ���Ŀ¼
DELE ɾ��Զ��ϵͳ���ļ�
HELP ��ȡ�������İ�����Ϣ���磺֧�ֵ�������б�
LIST ��һ���½��������������Ϸ��͵�ǰ����Ŀ¼�µ��ļ����б�
MKD ����Ŀ¼
MODE ָ������ģʽ����Я���IJ����ǣ�S��B�� C.
NLST ��һ���½��������������Ϸ���һ����ǰĿ¼�µġ���ȫ����Ŀ¼�б�
NOOP �ղ�������ֹ���Ӷϵ�
PASS �ṩһ���û���¼���룬��������������USER�����
*PASV ָ�����������ݴ�����̼����ȴ��ͻ��˵������������ӽ�������
PORT ָ���ͻ��˼����ȴ��������˽��������ӵĶ˿ں�
PWD ��ʾ�������˵ĵ�ǰ����Ŀ¼��
QUIT �˳���¼����ֹ����
*REIN ���³�ʼ�����˳���¼���Dz����Ͽ����ӣ����������󷢳�һ���µ�USER����
*REST �ӷ�������һ����ʶ�����¿�ʼ����
RETR ��Զ��ϵͳȡ��һ���ļ�
RMD ɾ��һ��Ŀ¼
*RNFR ָ��Ҫ���������ļ����ϵ�·��������������һ��RNTO����
*RNTO ָ��Ҫ���������ļ����µ�·����
*SITE վ�����еķ������ṩ�ķ���
*SMNT �ṹ���أ��ṩһ���ļ�ϵͳ�ṹ��Զ��ϵͳ·����
*STAT ״̬��Ϣ
STOR ����һ���ļ����������ϣ����ļ��Ѿ������򸲸�
*STOU ����һ���ļ����������ϣ��������Ѿ����ڵ��ļ�
STRU ָ���ļ��ṹ������������F��R��P.
*SYST ����Զ��ϵͳ�IJ���ϵͳ����
TYPE ָ���ļ����ͣ�����������A��E��I��Lֻ��TYPE A��TYPE I����
��������

���� 8 ������

  1. aben6448 �� 2010-07-08 10:59:32����:

    ������dz���ʵ�õ�

  2. lyt_44 �� 2010-07-04 17:42:26����:

    ��~~~~~~~~

  3. ��֪·���� �� 2010-06-02 09:11:03����:

    ����ѧϰ��лл��

  4. ����֮�� �� 2010-05-22 13:45:23����:

    ���½�ӡ������ѧϰ��

  5. thinkall �� 2010-05-21 11:46:21����:

    �ܺú�ǿ��

  6. dearsnow �� 2009-06-16 09:42:58����:

    лл¥�������ˡ� ������һ����

  7. likelong617 �� 2009-06-13 10:06:44����:

    ��������ʦ����FTP���������������أ����ڼ��������ˣ�лл��

  8. xuyiqiang �� 2009-06-12 17:00:04����:

    ��~~~����