在 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 文件:
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
编辑主配置文件:
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:
write_enable=YESftpvuser如果你需要:
可以继续问我。