温馨提示×

debian ftpserver如何添加虚拟用户

小樊
48
2026-10-18 11:38:09
栏目: 云计算

在 Debian 上搭建 FTP 服务器并添加虚拟用户(非系统用户),最常用、稳定的方案是 vsftpd + PAM + 虚拟用户数据库(db4)。下面给出一套可操作的完整流程。


一、安装必要软件

sudo apt update
sudo apt install vsftpd db-util
  • vsftpd:FTP 服务
  • db-util:生成虚拟用户数据库

二、创建虚拟用户文件

创建一个文本文件,每行用户名、密码交替:

sudo nano /etc/vsftpd/virtual_users.txt

内容示例:

ftpuser1
password1
ftpuser2
password2

三、生成虚拟用户数据库

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
sudo rm /etc/vsftpd/virtual_users.txt

四、配置 PAM 认证

编辑 PAM 文件:

sudo nano /etc/pam.d/vsftpd

清空原内容,写入:

auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users

五、创建虚拟用户映射的系统用户

虚拟用户必须映射到一个真实系统用户:

sudo useradd -d /home/ftp -s /usr/sbin/nologin ftpvuser
sudo mkdir -p /home/ftp
sudo chown ftpvuser:ftpvuser /home/ftp

六、配置 vsftpd

编辑主配置文件:

sudo nano /etc/vsftpd.conf

关键配置(示例):

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES

# 虚拟用户
guest_enable=YES
guest_username=ftpvuser
pam_service_name=vsftpd
virtual_use_local_privs=YES

# 用户目录
user_sub_token=$USER
local_root=/home/ftp/$USER

# 被动模式(云服务器推荐)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

七、为每个虚拟用户创建目录

sudo mkdir -p /home/ftp/ftpuser1
sudo mkdir -p /home/ftp/ftpuser2
sudo chown -R ftpvuser:ftpvuser /home/ftp

八、重启服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

九、测试连接

ftp localhost

或使用 FileZilla:

  • 协议:FTP
  • 登录类型:普通
  • 用户:ftpuser1
  • 密码:password1

十、常见问题

1. 登录提示 530

  • PAM 文件错误
  • db 文件路径不对
  • 虚拟用户未映射到系统用户

2. 无法上传

  • write_enable=YES
  • 目录权限属于 ftpvuser

3. 云服务器连不上

  • 开放 21 和 30000–31000 端口

如果你需要:

  • 每个虚拟用户不同权限
  • 使用 MySQL / LDAP 虚拟用户
  • 配合 Nginx / SFTP 替代方案

可以继续问我。

0 踩