温馨提示×

debian ftpserver怎样配虚拟

小樊
37
2026-09-22 00:22:12
栏目: 云计算

你说的“Debian FTP server 配虚拟”,一般是指 vsftpd 配置虚拟用户(Virtual Users),即:

  • 不使用系统账号(/etc/passwd)
  • 用独立的用户密码文件登录 FTP
  • 通常配合 PAM + 数据库或文本文件

下面给你一个 Debian + vsftpd 虚拟用户最常用、最稳妥的方案(文本文件版,适合入门和中小规模)。


一、安装 vsftpd

sudo apt update
sudo apt install vsftpd

二、创建虚拟用户文件

sudo mkdir /etc/vsftpd
sudo nano /etc/vsftpd/virtual_users.txt

内容格式(一行用户名,一行密码):

user1
password1
user2
password2

三、生成用户数据库

安装工具:

sudo apt install db-util

生成 db 文件:

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

编辑 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 /home/ftp
sudo chown ftpvuser:ftpvuser /home/ftp

六、配置 vsftpd.conf

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

chroot_local_user=YES
allow_writeable_chroot=YES

user_sub_token=$USER
local_root=/home/ftp/$USER

pasv_min_port=30000
pasv_max_port=31000

七、给虚拟用户分配目录

sudo mkdir /home/ftp/user1
sudo chown ftpvuser:ftpvuser /home/ftp/user1

八、重启 vsftpd

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

九、测试

ftp localhost

或用 FileZilla:

  • 主机:服务器 IP
  • 协议:FTP
  • 登录类型:普通
  • 用户:user1
  • 密码:password1

常见问题

1. 登录后 500 OOPS

一般是:

  • chroot 目录权限不对
  • 忘了 allow_writeable_chroot=YES

2. 被动模式连不上

防火墙放行:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

如果你说的“虚拟”是指:

  • 虚拟主机(多域名 FTP)
  • Docker 里跑 FTP
  • 用 MySQL 存虚拟用户

可以告诉我,我给你对应方案。

0