vsftp故障排查Ubuntu版攻略
导读:Ubuntu 下 vsftpd 故障排查攻略 一 快速定位流程 检查服务状态与端口 查看运行状态:sudo systemctl status vsftpd 启动/自启:sudo systemctl start vsftpd、sudo s...
Ubuntu 下 vsftpd 故障排查攻略
一 快速定位流程
- 检查服务状态与端口
- 查看运行状态:sudo systemctl status vsftpd
- 启动/自启:sudo systemctl start vsftpd、sudo systemctl enable vsftpd
- 端口占用:sudo ss -tulpen | grep ‘:21|:990’
- 核对配置文件
- 主配置:/etc/vsftpd.conf(修改后执行:sudo systemctl restart vsftpd)
- 常用关键项:anonymous_enable=NO、local_enable=YES、write_enable=YES、chroot_local_user=YES
- 查看日志
- 服务日志:sudo journalctl -u vsftpd -f
- 专用日志:sudo tail -f /var/log/vsftpd.log(若未生成,检查配置与 rsyslog)
- 防火墙放行
- UFW:sudo ufw allow 21/tcp、sudo ufw allow 990/tcp、sudo ufw allow 40000:50000/tcp
- firewalld:sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload
- 连通性测试
- 本机:ftp 127.0.0.1
- 远程:ftp your_server_ip 或使用 nc/telnet 探测 21 端口
二 常见症状与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| 无法连接(超时/拒绝) | 服务是否运行、端口 21 是否监听、云安全组/本机防火墙 | 启动服务;放行 21/tcp;云主机放行安全组;必要时改用被动模式并放行数据端口范围 |
| 530 Login incorrect | 密码是否正确、用户是否被禁止、PAM 与白名单配置 | 重置密码;检查 /etc/ftpusers 黑名单;核对 /etc/vsftpd.user_list 与 userlist_enable/userlist_deny;Ubuntu 下将 pam_service_name=ftp |
| 500 OOPS: refusing to run with writable root inside chroot() | 是否启用 chroot_local_user=YES 且家目录可写 | 设置家目录属主为 root:root 且权限 755,或启用 allow_writeable_chroot=YES |
| 能登录但无法上传 | write_enable=YES、目录权限、磁盘空间 | 开启写入;修正目录属主与权限(如 chown user:user /home/user,chmod 755 /home/user);检查 df -h |
| 被动模式数据连接失败 | 是否配置 pasv_enable=YES 与端口范围,且防火墙放行 | 在配置中设置 pasv_min_port/pasv_max_port(如 40000:50000),并放行对应端口范围 |
| 日志无明显输出 | 日志路径、rsyslog 配置 | 确认 /var/log/vsftpd.log 存在并有写入;必要时在 rsyslog 中启用 vsftpd 日志 |
| 端口冲突 | 21 被其他进程占用 | 结束占用进程或调整 vsftpd 监听端口,并同步防火墙规则 |
三 配置与权限要点
- 基础配置建议(/etc/vsftpd.conf)
- 身份与权限:anonymous_enable=NO、local_enable=YES、write_enable=YES
- 禁锢用户:启用 chroot_local_user=YES 时,避免家目录可写,或使用 allow_writeable_chroot=YES
- 被动模式:启用 pasv_enable=YES,并设置端口范围(如 pasv_min_port=40000、pasv_max_port=50000)
- 用户访问控制
- 黑名单:/etc/ftpusers(列于此文件的用户禁止登录)
- 白名单:启用 userlist_enable=YES 与 userlist_deny=NO,并在 /etc/vsftpd.user_list 中列出允许登录的用户
- PAM 与系统账号
- Ubuntu 常见为 pam_service_name=ftp;若使用 /sbin/nologin 的系统账号,确保 /etc/shells 包含该 shell,或在 /etc/pam.d/vsftpd 中调整相关 PAM 规则以避免鉴权失败
- 目录与所有权
- 禁锢场景建议:家目录属主 root:root、权限 755;用户写入目录单独授权(如 /home/user 为 755,/home/user/upload 为 755/775 视需求而定)
四 防火墙与被动模式
- UFW 放行示例
- 命令:sudo ufw allow 21/tcp、sudo ufw allow 990/tcp、sudo ufw allow 40000:50000/tcp
- 说明:21 为控制连接,990 为显式 FTPS(若启用),40000:50000 为被动模式数据端口范围
- firewalld 放行示例
- 命令:sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload
- 说明:若使用被动模式,同样需要放行配置的数据端口范围
- 云服务器与边界防火墙
- 除本机防火墙外,还需在云平台安全组放行 21/tcp 与被动端口范围
五 高效排错命令清单
- 服务与端口:sudo systemctl status vsftpd、sudo ss -tulpen | grep ‘:21|:990’
- 配置与语法:编辑 /etc/vsftpd.conf 后用 sudo systemctl restart vsftpd 生效
- 日志跟踪:sudo journalctl -u vsftpd -f、sudo tail -f /var/log/vsftpd.log
- 连通性测试:ftp 127.0.0.1、ftp your_server_ip;必要时用 nc -vz your_server_ip 21
- 防火墙与端口:sudo ufw status、sudo firewall-cmd --list-ports、sudo ss -tulpen | grep ftp
- 权限与空间:ls -ld /home/username、df -h
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: vsftp故障排查Ubuntu版攻略
本文地址: https://pptw.com/jishu/779304.html
