500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行

500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行

我完全知道这个问题被问过无数次,但是之前提到的解决方案都不适用于我的情况。

我的配置:

$ cat /etc/vsftpd-anon.conf 
listen=YES
local_enable=NO
anonymous_enable=YES
write_enable=YES
anon_root=/var/anonftp
xferlog_enable=YES
listen_address=10.0.0.2
listen_port=9988
allow_writeable_chroot=YES

瞧,我没有使用任何主目录。我专门为这种情况创建了一个目录。我还添加了allow_writeable_chroot选项,vsftpd 可以识别它,但会忽略它。

目标目录:

$ ls -l /var/ | grep anonftp
drwxrwxrwx  3 root root      4096 led 26 11:09 anonftp

我尝试如何使用它:

$ sudo killall vsftpd 
$ sudo vsftpd /etc/vsftpd-anon.conf &
[1] 21064
$ ftp 10.0.0.2 9988
Connected to 10.0.0.2.
220 (vsFTPd 3.0.2)
Name (10.0.0.2:david): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.

vsftpd.log 中没有任何内容

答案1

跑步echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf && service vsftpd restart

答案2

我遇到了同样的问题,但没有任何帮助。没有:

  1. vsftpd.conf 中的 allow_writeable_chroot=YES
  2. chmod 到 ftp 根目录

    因此我对 vsftpd 进程进行了 strace 检查,发现以下几行:

...
18825 chdir(“/usr/share/empty”) = 0
18825 chroot(“。”)= 0
...

使用以下命令更改 /usr/share/empty 的权限后

chmod 0644 /usr/share/empty

错误已消失。

答案3

echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf && service vsftpd restart

每次编辑conf时都运行上述命令。

答案4

短的

就我而言,配置非常相似,问题是新创建的用户没有自己的/home/{username}目录

长的

在 中vsftpd.conf,我有以下几行:

...
user_sub_token=$USER
local_root=/var/www/$USER
...

不确定,但是,它看起来像是首先vsftpd尝试将用户登录到用户的/home目录中,然后成功后再执行此操作chroot()local_root并且由于用户没有自己的/home/{username}目录 - 它失败并出现上述错误。

因此,通过添加/home/{username}目录并将用户设置为所有者 - 解决了它!

相关内容