ubuntu

Ubuntu如何配置vsftp虚拟用户

小樊
40
2025-09-23 01:15:27
栏目: 云计算

Ubuntu配置vsftpd虚拟用户步骤

1. 安装vsftpd及依赖工具

首先更新软件包列表并安装vsftpd、数据库工具(用于创建虚拟用户数据库)和PAM模块:

sudo apt-get update
sudo apt-get install vsftpd db-util libpam-modules

2. 创建虚拟用户数据库

(1)创建文本用户文件

新建文件存储虚拟用户的用户名+密码(每行一个用户,奇数行用户名、偶数行密码):

sudo nano /etc/vsftpd/virtual_users.txt

示例内容(按格式添加用户):

user1
password1
user2
password2

保存后设置文件权限(仅root可读写):

sudo chmod 600 /etc/vsftpd/virtual_users.txt

(2)生成数据库文件

使用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

3. 配置PAM认证

创建专门的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

4. 修改vsftpd主配置文件

编辑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

5. 创建虚拟用户映射的系统用户

虚拟用户需映射到一个系统用户(作为其宿主,负责文件权限管理),该用户不应有shell登录权限:

sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser

设置系统用户的FTP目录权限(确保虚拟用户可访问):

sudo chown ftpuser:ftpuser /home/ftpuser

6. 重启vsftpd服务

应用所有配置变更:

sudo systemctl restart vsftpd

设置开机自启(可选):

sudo systemctl enable vsftpd

7. 测试虚拟用户登录

使用FTP客户端(如FileZilla)连接服务器,输入虚拟用户名(如user1)密码(如password1),验证是否能成功登录并访问对应的根目录(/home/user1)。

注意事项

0
看了该问题的人还看了