ftp工作是会启动两个通道: 控制通道 , 数据通道 在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种模式:port模式(主动模式)和pasv(被动模式) PORT模式: 在客户端需要接收数据时,ftp_client(大于1024的随机端口)-PORT命令->ftp_server(21) 发送PORT命令,这个PORT命令包含了客户端是用什么端口来接收数据(大于1024的随机端口),在传送数据时,ftp_server将通过自己的TCP 20 端口和PORT中包含的端口建立新的连接来传送数据。
PASV模式:
传送数据时,ftp_client--PASV命令-->ftp_server(21) 发送PASV命令时,ftp_server自动打开一个1024--5000之间的随机端口并且通知ftp_client在这个端口上传送数据,然后客户端向指定的端口发出请求连接,建立一条数据链路进行数据传输。
一、安装
yum -y install vsftpd
service vsftpd start
chkconfig --level 345 vsftpd on
二、登录方式
LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd.
访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:
(1)anonymous(匿名帐号)
使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能.
(2)real(真实帐号)
real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建
(3)guest(虚拟帐号)
如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容.
三、配置文件
全局设置:
listen=YES #是否监听端口
write_enable=YES #是否允许写
download_enable=YES #是否允许下载
connect_from_port_20=YES #主动连接使用20端口
psav_enable=YES #是否开启被动模式
userlist_enable=YES #是否启用/etc/vsftpd/ftpusers
userlist_deny=YES #YES时/etc/vsftpd/ftpusers为黑名单,NO为白名单
guest_enable=YES #是否开启来宾(虚拟账户),所有非匿名成为指定账户
guest_username=ftp
anonymous_enable=YES #是否开启匿名
tcp_wrappers=YES
---------------------------------------------------------------------------------------
匿名用户配置:
anon_root=/var/ftp
anon_upload_enable=YES
anon_mkdir_enable=NO
anon_umask=077
---------------------------------------------------------------------------------------
本地账户:
local_enable=YES local_umask=022chroot_local_user=YES #是否禁锢本地账户,不禁锢登录后可以切换进其他账户造成危险
local_root=/var/ftp