FTPServer虚拟用户创建步骤(以vsftpd为例)
首先确保系统已安装vsftpd(Linux主流发行版通用步骤):
sudo apt update && sudo apt install vsftpd -y # Debian/Ubuntu
sudo yum install vsftpd -y # CentOS/RHEL
创建文本文件存储虚拟用户的用户名+密码(每行一个用户,奇数行用户名、偶数行密码):
sudo mkdir -p /etc/vsftpd/vusers
sudo nano /etc/vsftpd/virtual_users.txt
示例内容(按格式添加用户):
ftpuser1
password123
ftpuser2
securepass456
保存后生成Berkeley DB数据库文件(vsftpd认证所需格式):
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
sudo chmod 600 /etc/vsftpd/virtual_users.db # 限制文件权限
创建专用于虚拟用户的PAM配置文件(指向数据库文件):
sudo nano /etc/pam.d/vsftpd.virtual
添加以下内容(关键参数说明:db指定数据库路径,无需文件扩展名):
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
虚拟用户需映射到本地系统用户(用于访问FTP目录,无系统登录权限):
sudo useradd --system --home /home/virtual_ftp --no-create-home --shell /sbin/nologin virtual_ftp
sudo chown -R virtual_ftp:virtual_ftp /home/virtual_ftp # 设置目录归属
sudo chmod 755 /home/virtual_ftp # 限制目录权限
编辑vsftpd核心配置(/etc/vsftpd.conf),启用虚拟用户并调整权限:
sudo nano /etc/vsftpd.conf
关键配置项(按需调整):
# 基础虚拟用户设置
guest_enable=YES # 启用虚拟用户模式
guest_username=virtual_ftp # 虚拟用户映射的本地用户
virtual_use_local_privs=YES # 虚拟用户继承本地用户权限(若需限制,可设为NO并单独配置)
# 认证与访问控制
pam_service_name=vsftpd.virtual # 指定PAM配置文件
local_enable=YES # 允许本地用户(含虚拟用户)登录
anonymous_enable=NO # 禁用匿名登录(根据需求调整)
# 目录限制
chroot_local_user=YES # 锁定用户到其根目录(增强安全)
allow_writeable_chroot=YES # 允许根目录可写(若chroot开启且需上传)
应用所有配置变更:
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd # 设置开机自启
使用FTP客户端(如FileZilla、命令行ftp)连接服务器:
ftpuser1/password123)登录成功后,可验证上传/下载权限(根据配置调整)。
若需为不同虚拟用户设置不同权限(如禁止某用户上传),可创建用户专属配置文件:
sudo mkdir -p /etc/vsftpd/user_configs
sudo nano /etc/vsftpd/user_configs/ftpuser1
添加限制(如禁止上传):
write_enable=NO
anon_upload_enable=NO
修改主配置文件,指定用户配置目录:
user_config_dir=/etc/vsftpd/user_configs
重启服务使配置生效。
注意事项:
/home/virtual_ftp)需归属映射的本地用户(virtual_ftp);pasv_enable=YES及端口范围设置。