CentOS 7 下使用 VSFTP 配置虚拟用户的实操指南
一 环境准备与安装
yum install -y vsftpd db4-utilsuseradd -d /data/ftproot -s /sbin/nologin virtusersmkdir -p /data/ftproot/vuser1/rootdirchown -R virtusers:virtusers /data/ftprootchmod 500 /data/ftproot/vuser1chmod 755 /data/ftproot/vuser1/rootdir二 创建虚拟用户与数据库
vi /etc/vsftpd/vuserlistvuser1
StrongPass!23
db_load -T -t hash -f /etc/vsftpd/vuserlist /etc/vsftpd/vuserlist.dbchmod 600 /etc/vsftpd/vuserlist.db三 配置 PAM 认证
vi /etc/pam.d/vsftpdauth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
四 配置 VSFTP 主配置文件
vi /etc/vsftpd/vsftpd.conf,建议关键参数如下(按实际环境调整):# 基础
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
use_localtime=YES
# 安全与隔离
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# 虚拟用户
guest_enable=YES
guest_username=virtusers
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vuser_conf
pam_service_name=vsftpd
# 被动模式(云环境强烈建议显式配置)
pasv_enable=YES
pasv_min_port=30100
pasv_max_port=30200
pasv_address=YOUR_PUBLIC_IP # 在 VPC/云环境填服务器公网地址
touch /etc/vsftpd/chroot_listecho "vuser1" >> /etc/vsftpd/chroot_listvirtual_use_local_privs=YES 让虚拟用户使用本地用户的权限模型,便于在用户级配置中启用写入等能力。五 配置用户级目录与权限及测试
mkdir -p /etc/vsftpd/vuser_confvi /etc/vsftpd/vuser_conf/vuser1local_root=/data/ftproot/vuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
chown -R virtusers:virtusers /data/ftprootchmod 500 /data/ftproot/vuser1chmod 755 /data/ftproot/vuser1/rootdirsystemctl restart vsftpd && systemctl enable vsftpdfirewall-cmd --add-port=21/tcp --permanent && firewall-cmd --reloadfirewall-cmd --add-port=30100-30200/tcp --permanent && firewall-cmd --reloadpasv_address 是否正确。/etc/pam.d/vsftpd 的 db= 路径与 vuserlist.db 权限(600),以及 pam_service_name=vsftpd 一致。