分类: LINUX
2009-11-30 11:06:29
FTP
1、Client(随机端口X)----->Server(21端口) [控制连接]
Client连接Server 21端口,告诉Server,我打开了X端口,你往我的X端口发送数据。
2、Server(20端口)----->Client(指定端口X) [数据连接]
Server使用20端口向Client的X端口发送数据。
1、Client(任意Y)----->Server(21端口) [控制连接]
Client连接Server 21端口,我要传输数据,你告诉我你打开的端口。
2、Server(21端口)----->Client(Y端口) [控制连接]
告诉Client我打开了P端口。
3、Client(随机端口Z)----->Server(随机端口P) [数据连接]
Client打开随机端口Z,连接Server的P端口进行数据传输。
Server
vsftpd: vsftpd
gssftp: krb5-workstation-servers
wuftp (no support)
proftpd (no support)
Client
Ftp
lftp
gftp
/etc/vsftpd/vsftpd.conf (主配置文件)
/etc/vsftpd/ftpusers (用于访问控制)
/etc/vsftpd/user_list (用于访问控制)
PAM file: /etc/pam.d/vsftpd
anon_root
匿名用户的主目录
anonymous_enable
是否允许匿名访问
write_enable
是否允许写入
anon_umask
匿名用户创建文件的掩码,默认为077,注意必须以0为前缀,否则会被当作 10进制整数。
anon_upload_enable (with write_enable)
是否允许匿名用户上传
anon_mkdir_write_enable (with write_enable)
是否允许匿名用户建立目录
anon_other_write_enable (delete & rename)
是否允许除了upload和创建目录之外的写操作,比如删除和重命名。默认为 NO
anon_world_readable_only (download files world readable)
待查
When enabled, anonymous users will only be allowed to download files
which are world readable. This is recognising that the ftp user may own
files, especially in the presence of uploads.
Default: YES
local_enable
是否允许匿名访问
write_enable
是否可写
local_umask
本定用户创建文件的掩码,同anon_umask
local_root
本地用户家目录
Host-based
tcp_wrappers=YES
User-based
PAM
pam_service_name=vsftpd (/etc/vsftpd/vsftpd.conf)
/etc/pam.d/vsftpd (pam_listfile.so)
/etc/vsftpd/ftpusers
userlist
userlist_enable
userlist_file: /etc/vsftpd/user_list
userlist_deny=YES/NO
userlist_deny只有在 userlist_enable=YES的时候才生效,如果
userlist_deny=NO,只有在userlist_file中指定的用户才可以登录
1、创建虚拟用户数据库
我们将使用pam_userdb模块来认证虚拟用户。
#cd /usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS
#vim logins.txt ##用户名和密码交替,tom密码为foo,jerry的为redhat
tom
foo
jerry
redhat
#rpm -ivh db4-utils-4.3.29-9.fc6.i386.rpm ##安装db工具包
#db_load -T -t hash -f logins.txt /etc/vsftpd/login.db
#chmod 600 /etc/vsftpd/login.db
2、创建pam文件
#cat vsftpd.pam
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
#cp vsftpd.pam /etc/pam.d/ftp
其中ftp是在vsftpd.conf中pam_service_name=ftp指定
3、创建用户,用做虚拟用户映射
#useradd -d /home/virtual virtual
#ls -ld /home/ virtual
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/virtual
4、编辑vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
listen=YES
listen_port=10021
pasv_min_port=30000
pasv_max_port=30999
pam_service_name=ftp
5、重启vsftpd服务
6、测试
#ftp localhost 10021
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:chris): tom
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"