FTP是仅基于TCP的服务,不支持UDP,与众不同的是FTP使用2个端口,一个是数据端口和一个命令端口【也可叫做控制端口】。通常来说这两个端口是21命令端口和20的数据端口,FTP分主动FTP和被动FTP。
主动FTP:
客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口20连接到客户端制定的数据端口(N+1).
被动FTP【PASV】
在被动方式的FTP中,命令连接和数据连接都是由客户端主动发起。当打开一个FTP连接时,客户端打开两个任意的非特权本地端口N ,N+1(N>1024)第一个端口连接服务器的21端口,但与主动方式FTP方式不同的是客户端不会提交POST命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器开启一个任意的非特权端口P(P>1024)并发送POST P命令给客户端,然后由客户端发起从本地端口N+1到服务器的端口P的连接来传送数据。
配置文件:
主配置文件:vsftpd.conf
锁定用户家目录的用户列表文件:chroot_list
限制用户列表文件:user_list
FTP用户列表文件:ftpusers
VSFTP参数详解:
#是否使用服务器本地时间YES为是 NO为否
use_localtime=YES
#用户是否有写权限
write_enable=YES
#用户是否可以下载设置为YES即允许用户下载
download_enable=YES
是否显示目录下的.message文件
dirmessage_enable=YES
#用户可以使用的ftp命令cmds_allowed=
ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,STOR,TYPE,
USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,DELE
#是否开启上传下载日志
xferlog_enable=YES
#日志文件路径
xferlog_file=/var/log/vsftpd.log
设置用户空闲会话中断时间
#idle_session_timeout=600
设置空闲的数据连接中断时间
#data_connection_timeout=60
#服务器最大用户连接数
max_clients=50
#每个ip最大连接数
max_per_ip=5
是否允许用户ASCII模式上传、下载
ascii_upload_enable=NO
ascii_download_enable=NO
connect_from_port_20=YES
是否允许被动连接
pasv_enable=YES
设置被动连接的最小端口
pasv_min_port=65400
设置被动连接的最大端口
pasv_max_port=65420
设置PAM认证服务器的配置,该文件放在/etc/pam.d目录下,
pam_service_name=vsftpd
使用/etc/hosts.allow和/etc/hosts.deny两个文件实现访问控制
tcp_wrappers=YES
监听端口
listen_port=21
是否监听
listen=YES
#是否开启匿名用户
[Ok3w_NextPage]anonymous_enable=NO
#是否开启本地用户
local_enable=YES
#文件上传后的权限 022相当于 -rw-r--r—
local_umask=022
#是否将用户锁定在用户家目录下
chroot_list_enable=YES
#需要锁定家目录的用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list
#是否使用用户限制列表
userlist_deny=YES
#用户限制列表文件
userlist_file=/etc/vsftpd/user_list
#文件传输最大速度
local_max_rate=900000