我刚刚从 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
瞧 :)
答案1
我也遇到了这个问题,我认为这是因为新的 vsFTPd 更新增强了安全性,所以同时我使用了这个解决方案。
我在终端中使用以下命令修改我的 FTP 用户首次登录时进入的文件夹(根文件夹):
sudo chmod a-w /home/user
您可以更改
/home/user
为您的 FTP 用户的根文件夹。在文件夹中创建一个子文件夹,可以使用 GUI,或者如果您只有一个终端,则可以:
sudo mkdir /home/user/newfolder
现在您应该能够登录并在“新文件夹”中读写。您将无法使用 chmod aw 从 FTP 客户端写入根文件夹本身,所以这就是子文件夹的原因,您可以在其中写入。
我想不久之后就会有一个修复,但与此同时我希望这会有所帮助。
答案2
有人将该功能从 3.0.0 版本移植到allow_writeable_chroot=YES
了 2.3.5 版本(参见这篇博文)。
要在 Ubuntu 12.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
笔记那似乎有一个选择 allow_writable_chroot=YES
在 vsftpd-ext 中 - 注意缺失值埃!(或者这是博客文章中的拼写错误?)
答案3
vsFTPd 3.0.0 增加了一个配置选项,
allow_writeable_chroot=YES
再次启用以前的行为(来源:修复 500 OOPS:vsFTPd:拒绝在 chroot() 中使用可写 root 权限运行,Brian K. White 的评论)。
不幸的是,Ubuntu 尚未打包 3.0.0。因此,请暂时降级到某个旧版本。例如,我在 Ubuntu 12.04(Precise Pangolin)上使用这个:http://packages.ubuntu.com/oneiric-updates/vsftpd
答案4
为什么?
摘自并改编自我的回答错误 1065714。
为了保持稳定版本的稳定性,发布后的更新仅在特定情况下才会考虑。流程和所需标准的详细信息如下所列:https://wiki.ubuntu.com/StableReleaseUpdates#When
这确实使得 LTS 版本的用户难以拥有可写的 chroot,因为上游 vsftpd 项目决定在 12.04 发布时不提供此功能。现在 12.04 已经发布,并且修复不符合上述标准,我认为 12.04 不会改变这一点。但请注意稳定版本更新团队对此做出最终决定,但尚未向他们提出更新意见。
如果您希望为想要使用“allow_writeable_chroot”选项的用户提供更新版本的 vsftpd,那么 backports 存储库就是一个合适的场所。使用 backport,想要该功能的用户只需添加 backports 存储库并从那里安装 vsftpd。您可以在此处了解有关 backport 的更多信息以及如何请求 backport:https://wiki.ubuntu.com/UbuntuBackports
与此同时,The Frontier Group 已好心地提供了 PPA,如 lumbric 的回答中所述。或者,您也可以使用此处适合您的其他答案之一。