问题描述
我刚刚从 Ubuntu Server 11.10(Oneiric Ocelot)更新到 Ubuntu 12.04 LTS(Precise Pangolin)。
它更新了我的 vsFTPd 安装,似乎有些东西发生了变化 :/我使用 PAM 身份验证。什么变化可能导致此问题?
当我尝试连接到 FTP 服务器时出现此错误:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
我尝试用谷歌搜索,它说将 allow_writable_root=YES
添加到配置文件中 – 但是当我尝试这个并尝试重新启动 vsftpd 时它无法重新启动。为什么?
以下是我实际修复它的方法:
wget http://http.us.debian.org/debian/pool/main/v/vsftpd/vsftpd_3.0.2-3_amd64.deb -O vsftpd.deb
dpkg -i vsftpd.deb
echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf
service vsftpd reload
瞧 🙂
最佳方案
我也遇到了这个问题,我认为这是因为新的 vsFTPd 更新增强了安全性,所以同时我使用了这个解决方案。
-
我通过在终端中使用以下命令来 chmod 我的 FTP 用户首次登录时进入的文件夹(根文件夹):
sudo chmod a-w /home/user
\n您可以将/home/user
更改为您的 FTP 用户的根文件夹。 -
在文件夹中创建一个子文件夹,可以使用 GUI,或者如果你只有一个终端,则为:
sudo mkdir /home/user/newfolder
现在您应该能够登录并在 “newfolder” 中读写。您将无法使用 chmod a-w 从 FTP 客户端写入根文件夹本身,这就是子文件夹的原因,您可以在其中写入。
我猜想在 not-so-long 时间内会有一个修复,但与此同时我希望这会有所帮助。
次佳方案
有人将该功能从版本 3.0.0 反向移植到 2.3.5,添加了 allow_writeable_chroot=YES
(参见 this blog entry )。
要在 Ubuntu\xa012.04 (Precise Pangolin) 上安装,请以 root 身份运行以下命令:
add-apt-repository ppa:thefrontiergroup/vsftpd
apt-get update
apt-get install vsftpd
echo allow_writeable_chroot=YES >> /etc/vsftpd.conf
请注意 vsftpd-ext 中的 there seems to an option allow_writable_chroot=YES
– 注意缺少 e!(或者这是博客文章中的拼写错误?)
第三种方案
vsFTPd 3.0.0 增加了一个配置选项,
allow_writeable_chroot=YES
再次启用以前的行为(来源:Fixing 500 OOPS: vsFTPd: refusing to run with writable root inside chroot(),Brian K. White 的评论)。
不幸的是,Ubuntu 尚未打包 3.0.0。因此,在此期间,请降级到某个较旧的版本。例如,我在 Ubuntu\xa012.04 (Precise Pangolin) 上使用这个:http://packages.ubuntu.com/oneiric-updates/vsftpd