vsftp是very secure ftp 的缩写。分为主动模式和被动模式两种,端口又分为命令端口(21)和数据端口。
在主动模式下:1.客户端先打开一个大于1024的随机端口X与ftp服务器的21端口建立命令通道。
2.客户端有数据传输需求时再次开启大于1024的随机端口Y并通过命令通道告知ftp服务器
3.ftp服务器通过tcp的3次握手主动连接客户端的端口Y
在被动模式下:1.客户端先打开一个大于1024的随机端口X与ftp服务器的21端口建立命令通道。
2.客户端有数据传输需求时,通过命令通道发送请求。
3.服务器接受到请求后,开启一个大于1024的随机端口Y,并告知客户端
4.客户端收到通知后,会开启大于1024的随机端口X,然后跟服务器端口Y建立连接。
实验开始:
目的:同时满足匿名用户和实名用户的访问,并且都能“上传”,“删除”,“重命名”的操作。
vsftpd.conf配置:
anonymous_enable=YES anon_root=/var/ftp/pub/ local_enable=YES write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
先测试实名用户:
useradd -s /sbin/nologin ftp1
echo ftp1 |passwd ftp1 --stdin
touch /home/ftp1/helloworld.txt
重点在测试匿名用户,花费了很多时间。
总结下来就是不能直接给anon_root目录777权限,必须在此目录下建立一个新目录,再赋予ftp用户对这个目录的rwx权限
比如:
mkdir /var/ftp/pub/anon
chmod 777 /var/ftp/pub/anon //other的权限必须要7
chwon ftp. /var/ftp/pub/anon 这一步没必要
也就是说,虽然匿名用户建立的文件的user和group都是ftp,但是你执行chown ftp.和chmod 770是没用的,必须要others有权限。这点很诡异。。。