ubuntu

Ubuntu如何设置vsftp虚拟用户

小樊
47
2025-10-16 05:07:06
栏目: 云计算

Ubuntu设置vsftpd虚拟用户的详细步骤

1. 安装vsftpd

首先确保系统已安装vsftpd,若未安装则执行以下命令:

sudo apt update
sudo apt install vsftpd

2. 准备虚拟用户信息文件

创建用于存储虚拟用户账号的文本文件(如virtual_users.txt),每行依次填写用户名密码(无额外空格):

sudo touch /etc/vsftpd/virtual_users.txt
sudo chmod 600 /etc/vsftpd/virtual_users.txt
sudo nano /etc/vsftpd/virtual_users.txt

示例内容(添加两个虚拟用户user1user2):

user1
password1
user2
password2

3. 生成虚拟用户数据库

安装db-util工具(用于将文本文件转换为vsftpd可识别的数据库格式):

sudo apt install db-util

使用db_load命令生成哈希数据库(提升安全性):

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  # 限制数据库文件权限

4. 配置PAM认证

创建专用于虚拟用户的PAM配置文件(如vsftpd-virtual),指定数据库路径:

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

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

虚拟用户需映射到系统用户才能访问文件系统。创建专用系统用户(如ftpuser),并设置其主目录:

sudo adduser --system --home /home/ftpuser --no-create-home --shell /usr/sbin/nologin ftpuser
sudo chown -R ftpuser:ftpuser /home/ftpuser  # 设置目录所有权

6. 配置vsftpd主配置文件

编辑vsftpd主配置文件(/etc/vsftpd.conf),启用虚拟用户并调整相关参数:

sudo nano /etc/vsftpd.conf

修改或添加以下关键配置(删除原有冲突配置):

# 基础设置
listen=YES
listen_ipv6=NO
anonymous_enable=NO  # 禁用匿名用户
local_enable=YES     # 允许本地用户(含虚拟用户)
write_enable=YES     # 允许上传文件

# 虚拟用户相关
guest_enable=YES          # 启用虚拟用户
guest_username=ftpuser    # 虚拟用户映射的系统用户
virtual_use_local_privs=YES  # 虚拟用户使用本地用户权限
user_sub_token=$USER      # 用户子目录占位符
local_root=/home/ftpuser/$USER  # 虚拟用户根目录(动态生成)

# 安全设置
chroot_local_user=YES     # 锁定用户到主目录
allow_writeable_chroot=YES  # 允许chroot目录可写(避免登录错误)
pam_service_name=vsftpd-virtual  # 指定PAM配置文件

7. 创建虚拟用户目录

为每个虚拟用户创建专属FTP目录(基于local_root配置):

sudo mkdir -p /home/ftpuser/user1
sudo mkdir -p /home/ftpuser/user2
sudo chown -R ftpuser:ftpuser /home/ftpuser  # 确保目录权限正确

8. 重启vsftpd服务

应用所有配置变更:

sudo systemctl restart vsftpd

9. 测试虚拟用户登录

使用FTP客户端(如FileZilla、WinSCP或命令行ftp)连接服务器,输入虚拟用户名(如user1)和密码,验证是否能成功登录并访问对应目录(如/home/ftpuser/user1)。

注意事项

0
看了该问题的人还看了