系统版本:CentOS 8.2
FTP服务端及客户端安装
代码语言:javascript复制dnf install vsftpd lftp
启动FTP服务并开机自启动
代码语言:javascript复制systemctl enable vsftpd --now
FTP配置文件在/etc/vsftpd/下
注:ftpusers和user_list两个文件可理解为vsftp的黑名单,可在vsftpd.conf中开启userlist_deny参数即可生效,无论如何,我们创建的ftp用户不在这两个文件中即可保证可以正常使用。
创建ftp用户
代码语言:javascript复制useradd -s /sbin/nologin/ ftpuser
passwd ftpuser
修改ftp默认共享目录
ftp默认共享目录为:/var/ftp/pub
试验修改为/var/ftp/ftppub目录
- 创建ftppub目录
mkdir /var/ftp/ftppub
- 修改文件夹属主为ftpuser
chown -R ftpuser:ftpuser /var/ftp/ftppub
编辑vsftpd配置文件
- 修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
- 在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。
#listen_ipv6=YES
- 添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。
local_root=/var/ftp/ftppub
allow_writeable_chroot=YES #NO为只读
pasv_enable=YES #开启被动模式
pasv_address=xxx.xx.xxx.xx #修改为云服务器公网 IP
pasv_min_port=40000
pasv_max_port=45000
- 保存退出
- 执行以下命令,创建并编辑 chroot_list 文件。
vim /etc/vsftpd/chroot_list
注:将ftp用户名填入此文件后用户即可随意切换目录,删除即会被锁定在自己规定的目录中(用户名填写一行一个)
- 重启vsftpd服务
- 放通安全组规则
需要放通20、21、还有配置文件中指定的端口范围即可
常见问题:
- 点击登录后无限重新弹出此界面,可能是因为客户端没有安装pam安全认证模块导致。
打开/etc/pam.d/vsftpd注释掉下图中两行后重启vsftpd服务即可解决。