Debian 上 vsftpd 故障排查流程
一 快速定位与基础检查
sudo systemctl status vsftpd、sudo systemctl restart vsftpd、sudo systemctl enable vsftpd、sudo ss -tulpen | grep ':21'。若端口被占用,先释放或更换端口再启动服务。sudo vsftpd -t;确保主配置 /etc/vsftpd.conf 属主为 root:root、权限 644,否则会出现如 “500 OOPS: config file not owned by correct user” 的报错。sudo tail -f /var/log/syslog、sudo journalctl -u vsftpd -xe。二 网络连通与防火墙
sudo ufw allow 21/tcp,被动端口范围 sudo ufw allow 10000:10010/tcpsudo firewall-cmd --permanent --add-service=ftp && sudo firewall-cmd --reloadsudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT,被动端口 sudo iptables -A INPUT -p tcp --dport 10000:10010 -j ACCEPTtelnet 服务器IP 21 或 nc -vz 服务器IP 21,能连上再继续登录/传输测试。三 认证登录与权限问题
setsebool ftpd_disable_trans 1 或按需设置布尔值)。chown ftpuser:ftpuser /path、chmod 755 /path)。userlist_enable=YES、userlist_file=/etc/vsftpd.user_list、userlist_deny=NO(白名单)或 userlist_deny=YES(黑名单),并确保列表文件存在且权限正确。四 日志与被动模式配置
sudo tail -f /var/log/vsftpd.log 实时查看登录、权限、目录切换等细节。xferlog_enable=YES,默认 /var/log/vsftpd/xferlog,用于记录上传/下载等传输行为。pasv_enable=YES、pasv_min_port=10000、pasv_max_port=10010,并放行对应端口范围,否则数据通道会卡在“建立数据连接”。reverse_lookup_enable=NO 禁用反向解析;仅用 IPv4 时可设 listen_ipv6=NO 避免双栈监听冲突。五 关键配置示例与验证步骤
listen=YES、listen_ipv6=NOanonymous_enable=NO、local_enable=YESwrite_enable=YES、local_umask=022chroot_local_user=YESxferlog_enable=YES、xferlog_file=/var/log/vsftpd/xferlogpasv_enable=YES、pasv_min_port=10000、pasv_max_port=10010sudo vsftpd -t 校验语法;2) sudo systemctl restart vsftpd 应用;3) 用客户端(如 FileZilla)以主动/被动模式分别测试登录、列目录、上传/下载;4) 观察 /var/log/vsftpd.log 与 /var/log/vsftpd/xferlog 输出,定位失败阶段与原因。