控制连接 21端口 用于发送ftp命令
数据连接 20端口 用于上传下载数据

主动模式
FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据
image.png
被动模式
在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

FTP服务 - 图2

相关配置及介绍

启动服务相关文件

  1. /usr/lib/systemd/system/vsftpd.service
  2. /etc/rc.d/init.d/vsftpd

配置文件
  1. /etc/vsftpd/vsftpd.conf

vsftpd 服务器常见配置

命令端口
  1. listen_port=2121 #默认 ftp 为 21 端口

主动模式端口
  1. connect_from_port_20=YES #主动模式端口为 20
  2. ftp_data_port=20 #指定主动模式端口

匿名用户
  1. anonymous_enable=YES #支持匿名用户,centos8 默认不允许匿名
  2. no_anon_password=YES #匿名用户略过口令检查,默认为 no

匿名用户上传
  1. anon_upload_enable=YES #匿名上传,注意:文件系统权限
  2. anon_mkdir_write_enable=YES #匿名建目录
  3. setfacl -m u:ftp:rwx /var/ftp/pub #linux 系统的文件权限设置也会影响用户的访问