vsftpd:拒绝在 chroot 内以可写 root 身份运行

vsftpd:拒绝在 chroot 内以可写 root 身份运行

我想设置一个仅匿名的 FTP 服务器(能够上传文件)。这是我的配置文件:

listen=YES

anonymous_enable=YES
anon_root=/var/www/ftp

local_enable=YES
write_enable=YESr.

anon_upload_enable=YES
anon_mkdir_write_enable=YES

xferlog_enable=YES
connect_from_port_20=YES

chroot_local_user=YES

dirmessage_enable=YES
use_localtime=YES
secure_chroot_dir=/var/run/vsftpd/empty
rsa_cert_file=/etc/ssl/private/vsftpd.pem
pam_service_name=vsftpd

但是当我尝试连接它时:

kan@kan:~$ ftp yxxxng.bej
Connected to yxxx.
220 (vsFTPd 2.3.5)
Name (yxxxg.bej:kan): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed
Can anyone help ?

答案1

要么采取另外两种答案(降级,或通过禁用检查来降低安全性)

另一种选择是通过对根 chroot 文件夹赋予正确的权限来真正解决问题。

引用 Marek 已经链接的一篇很好的博文

– 为在 chroot() 中使用可写根目录运行时的配置错误添加更强大的检查。这可能会给那些粗心地打开 chroot_local_user 的人带来麻烦,但这就是生活。

chrooted 根目录可由用户写入,但 Marek 提到的更新不再允许这样做。

因此修复此问题需要您:

更改 chrooted 主目录根目录的写权限

chmod a-w /home/user

强迫您的用户上传到子目录。

答案2

将 vsftpd 更改为较低版本。这是 vsftpd 2.3.5 中引入的安全补丁

http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/

答案3

您的write enable设置为YESr,而不是YES也尝试添加

allow_writeable_chroot=YES

通常这有帮助

sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

答案4

对我来说,诀窍是确保“homedir”对于相关用户不可写,然后

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

并注释掉

#chroot_local_user=YES

不是,chroot_local_user3.0.3 标准 /etc/vsftpd.conf 文件中列出了两次。这让我很困惑。

相关内容