Debian 下 vsftpd 报错 很常见,但不同报错原因不同。我先给你一个通用排查思路,再列出常见报错及对应解决方法。你可以对照看看,也可以把具体报错信息贴出来,我可以更精准地帮你。
dpkg -l | grep vsftpd
没装就装:
sudo apt update
sudo apt install vsftpd
sudo systemctl status vsftpd
如果服务起不来,重点看:
sudo journalctl -xe
sudo vsftpd
500 OOPS: cannot change directory原因:用户家目录权限或 SELinux / AppArmor 限制
解决:
sudo chmod 755 /home/用户名
如果是 虚拟用户:
sudo mkdir -p /home/ftp
sudo chown ftp:ftp /home/ftp
530 Login incorrect原因:
解决:
sudo nano /etc/vsftpd.conf
确认:
local_enable=YES
write_enable=YES
如果是虚拟用户,检查:
sudo nano /etc/pam.d/vsftpd
500 OOPS: vsftpd: refusing to run with writable root inside chroot()原因:chroot 的用户目录可写(vsftpd 安全限制)
✅ 推荐方案(Debian 常用):
allow_writeable_chroot=YES
或:
sudo chmod a-w /home/用户名
500 OOPS: priv_sock_get_cmd原因:配置冲突(常见于被动模式)
解决:
seccomp_sandbox=NO
解决:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
sudo ufw allow 30000:31000/tcp
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
重启:
sudo systemctl restart vsftpd
sudo tail -f /var/log/syslog | grep vsftpd
sudo vsftpd -olisten=NO
请直接贴出:
我可以一步一步帮你改成可用配置 ✅