Ubuntu配置vsftpd虚拟用户步骤
首先更新软件包列表并安装vsftpd、数据库工具(用于创建虚拟用户数据库)和PAM模块:
sudo apt-get update
sudo apt-get install vsftpd db-util libpam-modules
新建文件存储虚拟用户的用户名+密码(每行一个用户,奇数行用户名、偶数行密码):
sudo nano /etc/vsftpd/virtual_users.txt
示例内容(按格式添加用户):
user1
password1
user2
password2
保存后设置文件权限(仅root可读写):
sudo chmod 600 /etc/vsftpd/virtual_users.txt
使用db_load
工具将文本文件转换为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配置文件(用于vsftpd虚拟用户认证),替换默认的认证方式:
sudo nano /etc/pam.d/vsftpd-virtual
添加以下内容(指向虚拟用户数据库):
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
保存后设置权限:
sudo chmod 600 /etc/pam.d/vsftpd-virtual
编辑vsftpd的主配置文件,启用虚拟用户功能并调整相关参数:
sudo nano /etc/vsftpd.conf
修改或添加以下关键配置(按需调整):
# 禁用匿名用户登录
anonymous_enable=NO
# 允许本地用户登录(虚拟用户需依赖此选项)
local_enable=YES
# 允许上传文件
write_enable=YES
# 将本地用户锁定在主目录(增强安全性)
chroot_local_user=YES
# 允许chroot目录可写(避免权限问题)
allow_writeable_chroot=YES
# 启用虚拟用户
guest_enable=YES
# 指定虚拟用户映射的系统用户(需提前创建,见下一步)
guest_username=ftpuser
# 使用虚拟用户数据库进行认证
pam_service_name=vsftpd-virtual
# 虚拟用户权限设置(与本地用户一致)
virtual_use_local_privs=YES
# 动态生成用户根目录($USER为虚拟用户名)
user_sub_token=$USER
local_root=/home/$USER
虚拟用户需映射到一个系统用户(作为其宿主,负责文件权限管理),该用户不应有shell登录权限:
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
设置系统用户的FTP目录权限(确保虚拟用户可访问):
sudo chown ftpuser:ftpuser /home/ftpuser
应用所有配置变更:
sudo systemctl restart vsftpd
设置开机自启(可选):
sudo systemctl enable vsftpd
使用FTP客户端(如FileZilla)连接服务器,输入虚拟用户名(如user1)和密码(如password1),验证是否能成功登录并访问对应的根目录(/home/user1
)。
注意事项:
755
(drwxr-xr-x
),避免权限过高导致安全风险;vsftpd.conf
中添加cmds_allowed
或针对用户创建单独配置文件;ssl_enable=YES
配置),保护数据传输安全。