Ubuntu 上 vsftpd 的常见问题清单
快速排查步骤
sudo systemctl status vsftpd;必要时 sudo systemctl restart vsftpdsudo ss -tulpen | grep ':21\|:990' 或 sudo netstat -tuln | grep 21sudo ufw allow 21/tcp,TLS 加 sudo ufw allow 990/tcp,被动端口范围如 sudo ufw allow 30000:31000/tcpsudo vsftpd /etc/vsftpd.conf;修改后 sudo systemctl restart vsftpdsudo tail -f /var/log/vsftpd.log(路径以实际配置为准)ls -ld /path、sudo chown -R ftpuser:ftpuser /path、sudo chmod -R 755 /pathdf -h高频场景与对策
/etc/ftpusers(禁止登录的系统账号列表)是否包含该用户;确认 PAM 配置与用户 shell 合法;必要时查看日志。write_enable=YES;确保目标目录对登录用户可写;检查磁盘空间与配额。allow_writeable_chroot=YES(vsftpd ≥ 3.0.2 支持);chroot_local_user=YES,将可写目录放到子目录(如将可写目录设为 ~/upload,主目录保持只读)。vsftpd.conf 设置被动端口段:pasv_min_port=30000、pasv_max_port=31000,并放行对应防火墙/安全组端口;客户端启用被动模式。sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pemssl_enable=YES、allow_anon_ssl=NO、force_local_logins_ssl=YES、force_anon_data_ssl=YES、ssl_tlsv12=YES、ssl_ciphers=HIGH;客户端选择“仅使用 TLS”。关键配置与最小可用示例
anonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YESallow_writeable_chroot=YES(若需主目录可写)pasv_min_port=30000pasv_max_port=31000ssl_enable=YES、allow_anon_ssl=NO、force_local_logins_ssl=YES、force_anon_data_ssl=YES、ssl_tlsv12=YES、ssl_ciphers=HIGH/var/log/vsftpd.log),使用 sudo tail -f 实时排查。安全与运维建议
/etc/ftpusers)。sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak;变更后用 sudo vsftpd /etc/vsftpd.conf 做语法校验。