vsftpd:拒绝在 chroot 中使用可写根运行

Woo*_*aaa 6 linux ftp chroot write vsftpd

我想设置一个仅匿名的 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
Run Code Online (Sandbox Code Playgroud)

但是当我尝试连接它时:

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 ?
Run Code Online (Sandbox Code Playgroud)

Den*_*lte 6

要么做其他两个答案(降级,或通过禁用检查来降低安全性)

另一种选择是通过对根 chroot 文件夹拥有正确的权限来实际解决问题。

引用 Marek 已经链接的一篇不错的博客文章

– 对在 chroot() 中使用可写根目录运行的配置错误添加更强的检查。这可能会伤害那些不小心打开 chroot_local_user 的人,但这就是生活。

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

因此,修复它需要您:

更改 chroot 的 home root 的写入权限

chmod a-w /home/user
Run Code Online (Sandbox Code Playgroud)

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


小智 1

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

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