安装vsftpd
sudo yum install vsftpd
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
创建系统用户
sudo useradd -d /home/ftpuser -s /sbin/nologin ftpuser # 禁止登录系统
sudo passwd ftpuser # 设置密码
sudo chown ftpuser:ftpuser /home/ftpuser # 设置目录归属
sudo chmod 755 /home/ftpuser # 设置目录权限
删除用户
sudo userdel -r ftpuser # 删除用户及家目录
创建虚拟用户数据库
sudo yum install db4 db4-utils # 安装依赖
sudo vi /etc/vsftpd/virtusers.txt # 添加用户(格式:用户名+密码,每行一个)
sudo db_load -T -t hash -f /etc/vsftpd/virtusers.txt /etc/vsftpd/virtusers.db
sudo chmod 600 /etc/vsftpd/virtusers.db
配置PAM认证
sudo vi /etc/pam.d/vsftpd.virtual
# 添加以下内容
auth required pam_userdb.so db=/etc/vsftpd/virtusers
account required pam_userdb.so db=/etc/vsftpd/virtusers
修改vsftpd配置
sudo vi /etc/vsftpd/vsftpd.conf
# 启用虚拟用户
guest_enable=YES
guest_username=ftpuser # 映射至系统用户
virtual_use_local_privs=YES
pam_service_name=vsftpd.virtual
chroot_local_user=YES
allow_writeable_chroot=YES
限制用户目录
chroot_local_user=YES将用户锁定至家目录。allow_writeable_chroot=YES。防火墙与SELinux
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --reload
sudo setsebool -P ftp_home_dir on # 允许FTP访问家目录
批量导入用户
可通过脚本批量生成虚拟用户数据库,示例脚本参考。
cat /etc/vsftpd/virtusers.txt(虚拟用户)或id ftpuser(系统用户)。/etc/vsftpd/user_list中添加用户名,并在配置中启用userlist_deny=YES。/var/log/vsftpd.log查看用户登录及操作记录。