我想设置一个仅匿名的 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_user
3.0.3 标准 /etc/vsftpd.conf 文件中列出了两次。这让我很困惑。