温馨提示×

ubuntu vsftp为何报错500

小樊
42
2026-10-01 06:56:10
栏目: 智能运维

在 Ubuntu 上使用 vsftpd 时出现 500 错误,通常不是“一个”原因,而是某一类配置或权限问题被 vsftpd 拒绝了。下面按最常见 → 较少见帮你排查。


一、最常见的 500 错误原因

1️⃣ 用户家目录权限过松(非常常见)

vsftpd 对用户目录权限有严格要求:

错误示例

500 OOPS: cannot change directory:/home/xxx

原因

  • 家目录权限太大(如 777)
  • 家目录属主不对

解决方法

sudo chmod 755 /home/用户名
sudo chown 用户名:用户名 /home/用户名

如果你是 虚拟用户,根目录也要:

chmod 555 /ftp

2️⃣ 启用了 chroot 但没配置好(500 OOPS: vsftpd: refusing to run with writable root inside chroot)

这是 Ubuntu 上最常见 500 错误之一。

现象

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

原因

  • chroot_local_user=YES
  • 但 chroot 根目录可写

解决方法(任选一种)

✅ 推荐(Ubuntu 新版本):

allow_writeable_chroot=YES

或修改目录权限:

chmod a-w /home/用户名

3️⃣ SELinux / AppArmor 限制(Ubuntu 一般是 AppArmor)

Ubuntu 默认用 AppArmor。

现象

500 OOPS: child died

检查

sudo aa-status | grep ftp

临时解决

sudo systemctl stop apparmor

长期解决

  • 修改 /etc/apparmor.d/usr.sbin.vsftpd
  • 或把用户目录放在允许路径

二、配置错误导致的 500

4️⃣ 配置文件语法错误

比如:

local_enable = yes   ❌

应为:

local_enable=YES

检查

sudo vsftpd /etc/vsftpd.conf

会直接报配置错误。


5️⃣ 匿名用户配置冲突

如果启用了匿名:

anonymous_enable=YES

但目录不对,会 500。


三、被动模式(PASV)相关问题(某些客户端显示 500)

虽然不是严格 500,但常被混淆。

建议配置

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

并在防火墙放行:

sudo ufw allow 30000:31000/tcp

四、快速自查清单 ✅

你可以贴出以下信息,我可以精准判断:

  1. 完整报错内容(客户端 + /var/log/vsftpd.log)
  2. /etc/vsftpd.conf
  3. 使用用户类型(系统用户 / 虚拟用户)
  4. Ubuntu 版本

如果你愿意,可以直接把 报错原文 + vsftpd.conf 发出来,我可以逐行帮你改。

0 踩