在 Debian 上配置 FTP 虚拟用户(Virtual Users),常见做法是使用 vsftpd + PAM + 虚拟用户数据库(db4)。下面给你一套可用、较标准的步骤。
sudo apt update
sudo apt install vsftpd db-util
创建一个文本文件,格式为:
用户名
密码
用户名
密码
例如 /etc/vsftpd/virtual_users.txt:
ftpuser1
123456
ftpuser2
abcdef
生成数据库:
sudo mkdir -p /etc/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 文件:
sudo nano /etc/pam.d/vsftpd
清空原内容,写入:
auth required /usr/lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtual_users
account required /usr/lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtual_users
如果路径不同,用
find / -name pam_userdb.so查找
sudo useradd -d /home/ftp -s /usr/sbin/nologin ftpvuser
sudo mkdir -p /home/ftp
sudo chown ftpvuser:ftpvuser /home/ftp
编辑 /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=ftpvuser
virtual_use_local_privs=YES
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/ftp/$USER
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000
sudo mkdir -p /home/ftp/ftpuser1
sudo mkdir -p /home/ftp/ftpuser2
sudo chown -R ftpvuser:ftpvuser /home/ftp
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:41000/tcp
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
ftp localhost
或使用 FileZilla:
pam_service_name 错write_enable=YESftpvuserpasv 端口和防火墙如果你是指 proftpd / pure-ftpd 或 Docker 环境 / 云服务器,告诉我,我可以给你对应方案。