温馨提示×

ubuntu ftpserver为何上传报错

小樊
39
2026-09-17 17:25:00
栏目: 智能运维

在 Ubuntu 上搭建 FTP 服务器(常见如 vsftpd)时,上传报错是很常见的问题。原因通常集中在权限、配置、防火墙 / SELinux、被动模式等方面。下面按最常见原因逐一说明,并给出排查办法。


一、最常见原因汇总

1️⃣ 目录权限不足(最常见)

FTP 用户对上传目录没有写权限

检查:

ls -ld /home/ftpuser/upload

解决:

chown ftpuser:ftpuser /home/ftpuser/upload
chmod 755 /home/ftpuser/upload

如果是匿名上传:

chmod 777 /srv/ftp/incoming

2️⃣ vsftpd 配置禁止写操作

vsftpd 默认可能禁止上传。

关键配置(/etc/vsftpd.conf):

write_enable=YES

修改后重启:

sudo systemctl restart vsftpd

3️⃣ 用户被限制在家目录(chroot)

如果用户被 chroot,但家目录可写,vsftpd 会拒绝登录或上传。

错误示例:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

解决方式(任选其一):

✅ 方法 1:根目录只读,子目录可写

chmod a-w /home/ftpuser
mkdir /home/ftpuser/upload
chown ftpuser:ftpuser /home/ftpuser/upload

✅ 方法 2:允许可写 chroot(不推荐生产)

allow_writeable_chroot=YES

4️⃣ 被动模式(PASV)配置错误

客户端使用被动模式,但服务器未正确配置。

配置示例:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

并放行端口:

ufw allow 30000:31000/tcp

5️⃣ 防火墙 / 安全组未放行

FTP 需要:

  • 21(控制端口)
  • PASV 端口范围
ufw allow 21/tcp

云服务器还要在安全组放行。


6️⃣ AppArmor 限制(Ubuntu 特有)

vsftpd 可能被 AppArmor 限制。

查看:

aa-status | grep ftp

临时测试:

sudo aa-complain /usr/sbin/vsftpd

7️⃣ 磁盘空间不足

df -h

8️⃣ 匿名上传未开启

匿名上传需:

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
write_enable=YES

二、快速排查步骤(建议按顺序)

  1. 看客户端报错信息(很重要)
  2. 看服务端日志:
    tail -f /var/log/vsftpd.log
    # 或
    journalctl -u vsftpd
    
  3. 确认:
    • write_enable=YES
    • 目录权限
    • chroot 设置
    • 被动端口

三、如果你愿意,我可以更精准帮你

你可以补充:

  • 用的什么 FTP 服务(vsftpd / proftpd / pure-ftpd)
  • 报错原文(客户端 + 服务端日志)
  • 是否是匿名 / 本地用户
  • Ubuntu 版本

我可以直接给你一份可用配置

0