[LinuxFocus-icon]
<--  | ��ҳ  | վ���ͼ  | ����  | ����

���� | �����ڿ� | ���� | ����LF
This document is available in: English  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  Polish  

[Photo of the Author]
by Mario M. Knopf
<netzmeister/at/neo5k/dot/org>

��������:

Mario ��æ�� Linux�������������ȫ��صĻ���Ϊ�֡���ҵ��ʱ�䣬��ά����������վ��neo5k.org �� linuxwallpapers.de.


Ŀ¼:

 

vsftpd - Very Secure FTP Daemon ���

vsftp

ÕªÒª:

��ƪ������"Very Secure FTP Daemon" �Ļ������ܡ����ȣ��һ���Եؽ��� FTP �� vsftpd��֮�����ǽ���ѧϰ vsftp �ػ�����deamon���İ�װ�����ú�����������������ǻ�Ҫ����һ��СС�Ĺ��ܲ��ԡ�

_________________ _________________ _________________

 

����

�ļ�����Э��(FTP)��Ŀ�����ڻ������Ͻ���ƽ̨�޹ص����ݴ��䣬������һ���ͻ���/�������ܹ���RFC 959[1] �涨 FTP ��ͨ�������ŵ����˿ڣ����䣬һ���������ݣ�TCP �˿� 20������һ�����������Ϣ��TCP �˿� 21�����ڿ����ŵ�֮�ϣ�˫�����ͻ����ͷ��������������ڷ������ݴ�������
һ�� FTP ���Ӱ���4�����裺

FTP �����ӿ���ʹ�� TCP ��Transmission Control Protocol, �������Э�飩�������������ݵĿɿ����䡣��ˣ�FTP �����ݴ����в���Ҫ���ķ��鶪ʧ�����ݴ����⡣��Ϊ TCP ������ÿ�����鶼����˳��ġ�û�д���ġ����ظ��ĵ��

FTP �и��ݷ��ͷ�ʽ�IJ�ͬ��Ϊ�����ֲ�ͬ�Ĵ������ͣ���(stream)ģʽ�� end-of-file (EOF) ��־����Ľ����������ִ���ģʽ�� end-of-record (EOR) ����־����Ľ���

���⻹�����ֲ�ͬ�Ĵ���ģʽ:

ASCII ģʽ�����ı��ļ��Ĵ��䣬��������ģʽ���ڳ�������Ƶ����ݵĴ��䡣�û�����Ҫѡ���ض��Ĵ���ģʽ���������еĿͻ��˶�����ʶ������ļ��������Զ��л�ģʽ��

��Ȩ�õ��û��������붼��ʹ����������ģ�����һ���dz����صİ�ȫ��������Ҳ��һЩ�й�FTP�İ�ȫ�Ŀ��ǵij����㡣1997 ��10�£�RFC2228[2] ���ڷ����ˣ��������� FTP �İ�ȫ�Բ���淶��

 

vsftpd

vsftpd ��һ�� UNIX �����ϵͳ�����еķ����������֣����������������� Linux, BSD, Solaris, HP-UX �Լ� IRIX ���档��֧�ֺܶ������� FTP ��������֧�ֵ����������磺

vsftpd �����ִ���"very secure FTP daemon", ��ȫ�����Ŀ����� Chris Evans ���ǵ���Ҫ����֮һ������� FTP ��������ƿ������ʼ��ʱ�򣬸߰�ȫ�Ծ���һ��Ŀ�ꡣ

һ�����Ӿ��� vsftpd ���� chroot ģʽ�¹����ģ�chroot ģʽ����Ϊ����������� vsftpd �ˣ�����ָ��һ���µ�Ŀ¼����Ҳ�Ͳ��ܷ����Ǹ�Ŀ¼֮��ij�����ļ��� --- ������Ҳ��Ϊ�������ϵġ���һ�����ܱ�DZ�ڵĹ������ƻ��� FTP ������������ϵͳ���������ֶ����������Ӷ������˸������ʧ���й� chroot �ĸ�����Ϣ�������±ߵ�����[3]�еõ������������ vsftpd ��������ȫ��������Ȥ���Ƽ��Ķ����� [4]��

����������˶�����ԣ����� FTP ����İ�ȫ��Ӧ��������Ҫ�ģ�vsftpd ������ FTP ������������Խ��WU-FTPD[5] ��������Ա�����һ����������ӣ���Ϊ���ڹ�ȥ�ļ����г�����̫��İ�ȫȱ�ݡ�

 

��װ

vsftpd �ػ�����İ�װ�൱�򵥣���ÿ����Ҫ���а����㶼�����ҵ� vsftpd �� RPM �����ܶ�����£����Ѿ���װ���ˡ����û�еĻ���Դ��������� [6] �ҵ���Ȼ���ֹ���װ��

�õ�Դ���벢�⿪ tarball �󣬽����½���Ŀ¼Ŀ¼������ make�������DZ�Ҫ�������ʾ����

neo5k@phobos> tar xzvf vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make

��֮ǰ����Ӧ�ÿ����û� "nobody" ��Ŀ¼ "/usr/share/empty" �Ƿ���ڣ������Ҫ�Ļ����Ǿ��½�����û������Ŀ¼��������������û��������ʣ��û� "ftp" ��Ŀ¼"/var/ftp" Ҳ��Ҫ���������������������������ɣ�

neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp

���ڰ�ȫԭ��Ŀ¼ "/var/ftp" ��Ӧ�������û� "ftp"��Ҳ��Ӧ����дȨ�ޡ�����û��Ѿ������˵Ļ��������������������ǿ��Ըı�Ŀ¼�������߲�ȥ�������û���дȨ�ޣ�

neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp

�ﵽ�����е��Ⱦ����������ǿ��԰�װ vsftp-daemon ��:

neo5k@phobos> make install

����� manpage Ӧ���Ѿ���������ϵͳ�е���ȷ��λ���ˡ�����������쳣������鷳һ����ֹ�����Ҳ��������������

neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8

�������ǵ������ļ������ӻ�û�п����� --- ���������ǵĽ��ܸ���һЩ --- ������Ҫ�ֹ�������

neo5k@phobos> cp vsftpd.conf /etc

 

����

�����ļ�������"/etc/vsftpd.conf"�ҵ����ʹ���������ļ�һ����vsftpd �������ļ����� # ��ʼע�͡�

# Comment line

һ�����õ������������ģ�

# Anonymus FTP-access permitted? YES/NO
anonymous_enable=NO
 
# Permit anonymus upload? YES/NO
anon_upload_enable=NO
 
# Permission for anonymus users to make new directories? YES/NO
anon_mkdir_write_enable=NO
 
# Permission for anonymus users to do other write operations - like renaming or deleting? YES/NO
anon_other_write_enable=NO
 
# Log on by local users permitted? YES/NO
local_enable=YES
 
# Shall local users be locked into their home directory? YES/NO
chroot_local_user=YES
 
# Highest permitted data transfer rate in bytes per second for local logged on users. Default = 0 (unlimited)
local_max_rate=7200
 
# General write permission? YES/NO
write_enable=YES
 
# Enable messages when changing directories? YES/NO
dirmessage_enable=YES
 
# Welcome banner at users logon.
ftpd_banner="Welcome to neo5k's FTP service."
 
# Activate logging? YES/NO
xferlog_enable=YES
 
# Logging of all FTP activities? YES/NO
# Careful! This can generate large quantities of data.
log_ftp_protocol=NO
 
# Confirm connections are established on port 20 (ftp data) only. YES/NO
connect_from_port_20=YES
 
# Timeout during idle sessions
idle_session_timeout=600
 
# Data connection timeout
data_connection_timeout=120
 
# Access through Pluggable Authentication Modules (PAM)
pam_service_name=vsftpd
 
# Standalone operation? YES/NO - depending on operation mode (inetd, xinetd, Standalone)
# The author's FTP service is being startet with xinetd, therefore the value here is NO.
listen=NO

 

��ʼ FTP ����

vsftpd ���Թ��������ַ�ʽ��ʹ�� inetd �� xinetd���������standalone������ģʽ��  

inetd

Ҫ�� FTP ����ͨ�� inetd ����������Ҫʹ��һ���༭���������ļ� "/etc/inetd.conf"��

neo5k@phobos> vi /etc/inetd.conf

�����ҵ����� FTP ҵ������У���ȥ�� vsftpd ����ǰ���ע�ͷ��š����û����ôһ��Ļ������Ǿͼ������֮������Ҫ�������� inetd������Ӧ���������ģ�
# ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   in.ftpd
ftp   stream   tcp   nowait   root   /usr/sbin/tcpd   vsftpd
 

xinetd

����ʹ�� xinetd ���� vsftp daemon ������ inetd �����ִ����������������¼�����ʿ��ơ���ҵ��������ӿڰ󶨵ȸĽ���[7] ��һ���dz������Ĺ��� xinetd �Ľ��ܡ��޸�֮������xinetd �DZ�Ҫ�ġ�xinetd ������Ӧ����������ӵģ�
# vsftp daemon.
service ftp
{
     disable = no
     socket_type = stream
     wait = no
     user = root
     server = /usr/sbin/vsftpd
     per_source = 5
     instances = 200
     no_access = 192.168.1.3
     banner_fail = /etc/vsftpd.busy_banner
     log_on_success += PID HOST DURATION
     log_on_failure += HOST
     nice = 10
}
    
 

Standalone Operation

vsftpҲ���Թ����ڶ�������ģʽ�¡�������������Ҫ�ٴδ� "/etc/vsftpd.conf" �����¸Ķ���

# Shall the vsftp daemon run in standalone operation? YES/NO
listen=YES

����������֮���ػ����̿��������·�ʽ����

neo5k@phobos> /usr/sbin/vsftpd &

�����������·������������ȷ�ģ����������Ϳ���������������

neo5k@phobos> vsftpd &

���ں�һ�ַ�ʽ�����ǿ���������·�������Ƿ���ȷ

neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin

�ڶ�������ģʽ�����DZ��뱣֤ vsftp daemon û�б�inetd �� xinetd ������  

��������

�ڳɹ��ذ�װ������֮�����ǿ��Ե�һ�η������ FTP �������ˡ�
neo5k@phobos> ftp phobos
Connected to phobos
220 "Welcome to neo5k's FTP service."
Name (phobos:neo5k): testuser
331 Please specify the password.
Password:
230 Login successful
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -l
229 Entering Extended Passive Mode
150 Here comes the directory listing
drwxr-xr-x      11  500      100        400  May 07 16:22  docs
drwxr-xr-x       9  500      100        464  Feb 01 23:05  hlds
drwxr-xr-x      39  500      100       4168  May 10 09:15  projects
226 Directory send OK.
ftp>
 

����

����ע�⵽��vsftp daemon �İ�װ�����ö��ܼ򵥣������ṩ�˺ܶ����Ժͺܸߵİ�ȫ�ԡ�

��Ȼ��������ܽ����Ƕ� vsftpd �ṩ�Ļ�����һƳ����� FTP ���������ṩ�˴����Ŀɹ����õ�ѡ��������Ҫ����һ���о� vsftpd �Ļ���Ӧ�÷�����Ŀ����ҳ[6]���Ķ�����һ�����ĵ���

 

����

[1] ftp://ftp.rfc-editor.org/in-notes/rfc959.txt [RFC 959 - File Transfer Protocol]
[2] ftp://ftp.rfc-editor.org/in-notes/rfc2228.txt [RFC 2228 - FTP Security Extensions]
[3] linuxfocus.org: article225, January2002 [chroot]
[4] http://vsftpd.beasts.org/DESIGN [Security vsftpd]
[5] http://www.wu-ftpd.org/ [WU-FTPD]
[6] http://www.vsftpd.beasts.org/ [Home of vsftpd]
[7] linuxfocus.org: article 175, November2000 [xinetd]

 

����ƪ���·�������

ÿƪ���¶��и��Եķ���ҳ�档�����ҳ����������ύ���ۣ�Ҳ���Բ鿴�������ߵ����ۣ�
 ï¿½ï¿½ï¿½ï¿½Ò³ï¿½ï¿½ 

<--, back to the index of this issue

��ҳ��LinuxFocus�༭��ά��
© Mario M. Knopf, FDL
LinuxFocus.org
������Ϣ:
de --> -- : Mario M. Knopf <netzmeister/at/neo5k/dot/org>
de --> en: Jürgen Pohl <sept.sapins/at/verizon.net>
en --> cn: ���� <wangxu(at)linuxfocus.org>

2004-07-10, generated by lfparser version 2.46