在 Debian 上限制 FTP(S) 用户(通常指 vsftpd,也可以是 proftpd / pure-ftpd),常见需求包括:
下面以 vsftpd(Debian 最常见) 为主说明。
sudo apt update
sudo apt install vsftpd
创建用户时不给 shell:
sudo useradd -m -s /usr/sbin/nologin ftpuser
sudo passwd ftpuser
或已有用户:
sudo usermod -s /usr/sbin/nologin ftpuser
✅ /usr/sbin/nologin 允许 FTP,但不允许 SSH/Shell 登录
编辑配置文件:
sudo nano /etc/vsftpd.conf
关键配置:
chroot_local_user=YES
allow_writeable_chroot=YES
重启服务:
sudo systemctl restart vsftpd
⚠ 如果用户 home 目录可写,必须加 allow_writeable_chroot=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.allowed_users
创建白名单:
sudo nano /etc/vsftpd.allowed_users
内容:
ftpuser
重启:
sudo systemctl restart vsftpd
✅ 只有白名单中的用户能登录
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denied_users
write_enable=NO
或针对用户:
write_enable=YES
# 然后 chmod 目录为只读
建议:
/home/ftpuser/home/ftpuser/filessudo chown root:root /home/ftpuser
sudo chmod 755 /home/ftpuser
sudo mkdir /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files
ssl_enable=YES
并配置证书(可用 Let’s Encrypt 或自签)
✅ 禁用匿名登录
anonymous_enable=NO
✅ 限制被动端口范围(防火墙友好)
pasv_min_port=30000
pasv_max_port=31000
如果你用的是 proftpd / pure-ftpd,或想限制:
可以告诉我,我给你对应配置。