服务端口和数据端口

  • 服务端口 21,负责指令传输,如登录
  • 数据渡口 通信过程决定,如获取目录数据
被动模式,可以通过pasv_min_port、pasv_max_port设置数据端口范围

主动模式和被动模式

  • 主动模式 - 客户端开端口,服务器来连
  • 被动模式 - 服务器开端口,客户端来连

权限

FTP文件读写权限同Linux,如ftp根路径如下:

drwxrwxr-x  2 ftp     ftp      4096 4月  30 19:30 ftproot

允许拥有者读、写、打开权限,允许所在组用户读、写、打开权限,只需要访问读、打开权限

可以通过usermod -g grouname username来将用户加入组

用户添加

useradd -d ftp根路径 -g 组  -s /sbin/nologin 用户名
passwd 用户名

需要在/etc/shells添加/sbin/nologin,否则ftp用户无法使用

root@nexhome-OptiPlex-390:/home/nexhome# cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/sbin/nologin

配置

vsftpd.conf

  • listen和listen_ipv6不能同时设置为YES,只需设置listen为YES,否则可能会到只500 Illegal PORT command错误
  • local_root - 指定FTP根路径
  • write_enable=YES - 允许写入
  • pasv_enable=YES - 开启被动模式
  • chroot_local_user=YES和allow_writeable_chroot=YES - 切换到FTP根目录,无法访问更上层的系统目录
  • pasv_min_port、pasv_max_port指定被动模式的端口范围

问题

  • (1) FileZilla出现”转换命令到8 bit编码失败”
进入FileZilla站点管理器,进入【字符集】设置"强制UTF-8"
  • (2) 使用TotalCommand出现500 Illegal PORT command
当TotalCommand检测返回的Passive Mode中IP非局域网IP(如下),则会尝试用主动模式,即发送PORT请求,此时无法服务无法连接客户端IP,则会报`500 Illegal PORT command`;

可以随意通过pasv_address来配置,局域网IP范围如下:

10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
  • (3) 出现500 OOPS: vsftpd: refusing to run with writable root inside chroot()
可以增加allow_writeable_chroot=YES来解决