FTP是仅基于TCP的服务,不支持UDP,与众不同的是FTP使用2个端口,一个是数据端口和一个命令端口【也可叫做控制端口】。通常来说这两个端口是21命令端口和20的数据端口,FTP分主动FTP和被动FTP

主动FTP

客户端从一个任意的非特权端口NN>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口20连接到客户端制定的数据端口(N+1).

被动FTPPASV

在被动方式的FTP中,命令连接和数据连接都是由客户端主动发起。当打开一个FTP连接时,客户端打开两个任意的非特权本地端口N ,N+1N>1024)第一个端口连接服务器的21端口,但与主动方式FTP方式不同的是客户端不会提交POST命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器开启一个任意的非特权端口PP>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,SYSTDELE

#是否开启上传下载日志

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

#是否开启匿名用户

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