错误消息“ 500 OOPS:vsftpd:拒绝在chroot()中使用可写根运行”-让用户入狱


19

到目前为止,我一直无法将FTP用户保留在其网站目录中。是否有一种解决方案既可以修复此错误,又可以将用户监禁在其目录中?

我更改的vsFTPd设置:

listen_port=9000
Set: anonymous_enable=NO
Uncomment: local_enable=YES
Uncomment: write_enable=YES
Uncomment: local_umask=022
Set: connect_from_port_20=NO
Uncomment: idle_session_timeout=600
Uncomment: data_connection_timeout=120
Comment out: #ftpd_banner=Welcome to blah FTP service. [should be on line 104]
Added: banner_file=/etc/issue.net
Uncomment: chroot_local_user=YES
Uncomment: chroot_local_user=YES
Uncomment: chroot_list_enable=YES
Uncomment : chroot_list_file=/etc/vsftpd.chroot_list

在文件末尾,我添加了:

# Show hidden files and the "." and ".." folders.
# Useful to not write over hidden files:
force_dot_files=YES

# Hide the info about the owner (user and group) of the files.
hide_ids=YES

# Connection limit for each IP address:
max_per_ip=10

# Maximum number of clients:
max_clients=5

# FTP Passive Settings
pasv_enable=YES
#If your listen_port is 9000 set this range to 7500 and 8500
pasv_min_port=[port range min]
pasv_max_port=[port range max]

有问题的用户mybloguser被监禁到她/他的网站目录下/srv/www/myblog,该用户不属于nano /etc/vsftpd.chroot_list文件。用户的主目录也是/srv/www/myblog过去使用过的目录。

我尝试了allow_writeable_chroot=YES无效的解决方案,实际上完全破坏了vsFTPd。

我试过了:

我们如何才能解决此错误并使用户进入其主目录呢?


以某种方式,对我来说,至少对于“虚拟” ftp用户而言,只需添加设置allow_writeable_chroot=YES就足够了,并且实际上可以“按预期”运行FWIW ...
rogerdpack 2015年

Answers:


18

对于VSFTPD 3,

  1. 去: /etc/vsftpd.conf
  2. 并添加以下内容:

    allow_writeable_chroot=YES
    

    如果尚不存在,只需添加它。

  3. 重新启动vsftpd服务:

    service vsftpd restart
    

它应该工作。


3
发问者实际上说他已经尝试过了,但是没有用,所以这不是他的问题的答案。
2014年

2
在哪里可以了解到这种选择的安全性?
flickerfly

为我工作(在已接受答案的评论中也提到了这一点)
Sverre'Feb

16

这个问题的真正解决方案:用户的主文件夹不应该可写只可读。

因此,如果用户站点位于文件夹中cat/example.com/http/,则文件夹cat必须具有chmod 555并且所有都可以。


12
这是没有意义的。用户目录不应是可写的???
凯文·鲍文

6
如果用户无法写入文件,应该如何准确地上传文件?
塞林

它对于没有上传权限的匿名ftp很好用,谢谢!
palacsint 2014年

对!现在就可以了
user1406691 2014年

5
这样完美!只需使用chmod 555为用户创建一个家,然后在其中用chmod 755或您需要的一个为一个(或多个)网站创建一个家:一切正常,用户将具有写权限。
lucaferrario 2014年

13

在进一步审查此帖子后,在评论中发布了一个修复了我的问题的软件包。您可以通过我的名字或“商标”文档进行搜索: http //www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/。这是我进一步解决此问题的详细信息。

使用者仍会摇晃他们的家庭目录!!!

# ------------------------------------------------------------------------------
# SETUP FTP USERS --------------------------------------------------------------
# ------------------------------------------------------------------------------

# create the ftp users and lock them to the website directories
useradd -d /srv/www/[website/appname] -m [ftp user name]

# set the ftp account passwords
passwd [ftp user name]

# add the ftp users to the www-data user/group
adduser [ftp user name] www-data

# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

# Edit the vsftpd.conf and append this setting to the end of the file to keep users' jailed!
nano /etc/vsftpd.conf

# add all of the text between the starting [[ and ending ]]
# [[

# Keep non-chroot listed users jailed
allow_writeable_chroot=YES

# ]]

# restart the service for changes to take effect
sudo service vsftpd restart

#test ftp via secondary terminal window:
ftp [ftp user name]@[server ipaddress] [ftp port]

11
请注意:克里斯的解决方案会将第三方软件包服务器添加到您的存储库列表中!当您盲目接受要在系统上安装的外部软件包时,为什么要安装安全的chroot FTP服务器。(克里斯:我不认为你会占便宜,但使用此解决方案恕我直言,是坏sysadmining)
雷托

1
您是否有更好的方法来解决这个难题@reto?解决起来有点麻烦。谢谢您的帮助。
克里斯·霍夫

如果发行版中有更新的软件包,我将尝试使用它。大多数发行版都为较早版本提供反向移植。如果那不可能,那么我将从原始开发人员那里获取源代码并自己构建。如果周围有补丁,我可以应用它(通常它们很小,可以手动检查)。
2013年

该线程具有12'000视图,假设有5%使用您的解决方案并添加了您的回购。您可以轻松添加集成了后门的核心软件包的新版本。在一周内,您可以访问600个系统。我认为您不会这样做,但是添加第三方回购协议并不是很安全。
重新

1
我不需要从回购更新。对我来说,添加行“ allow_writeable_chroot = YES”修复了该错误
abumalick 2013年

7

根据先前的答案“此问题的真正解决方案:用户的主文件夹不应只可写”。总体思路是正确的,但认识错误。

下面,我将尝试给出一个简单的示例:

首先,我们需要构建用户目录的拓扑:

 / home(ro)
   | -someuser(rw​​,700)
         | -ftp_upload(ro,555)-ch_rooting在这里,vsftpd必需为只读:(
           | -temp(rw,755)
           | -in_box(rw,755)
           | -out_box(rw,755)

vsftpd.conf剪切:

#启用chrooting
chroot_local_user =是

#chroot除了在chroot_list内部监听的所有用户
chroot_list_enable =是

#例外清单。理想情况下,它应该为空白;)
chroot_list_file = / etc / vsftpd / chroot_list

#将ftp根目录映射到特定目录
local_root = / home / someuser / ftp

此配置非常适合单用户配置。对于多用户,应另外使用“ user_config_dir”指令。

**更新20/09

------ **

这是一个棘手的解决方法,不是最好的主意,但是...如果您需要可写的ftp根文件夹,只需在启动前和启动后命令中插入权限更改命令。

  1. 启动前-将服务器要求更改为只读权限(:

  2. 启动服务器

  3. 启动后-将权限更改为读写权限,或您需要的权限。


我尝试了许多变体,但无法使其适用于WP服务器。这对WP配置有用吗?
克里斯·霍夫

希望更新部分,mauby这种变体可以帮助您,这样做并不完全安全,但是如果没有其他可能性……
Reishin

1

这几乎是toastboy70提到的。将ftp-root目录设置为ftp.ftp且不可写(/etc/vsftpd.conf):anon_root = / srv / ftp

然后创建一个可写的子目录:/ srv / ftp / upload


0

我还需要将以下内容添加到/etc/vsftpd.conf文件中:

seccomp_sandbox=NO

而且不需要自定义仓库!

并取消注释行:

write_enable=YES

0

简单的解决方法是按照错误消息的提示进行操作:将根目录设为不可写,然后,如果需要启用上载,则创建一个具有写权限的子目录。无需更改配置。


0

经过3个小时的搜索,我上了Ubuntu 14.04.2 LTS VSFTPd 3。客户端访问后,主文件夹将显示为/ home / vimal。我已经以root权限登录了vimal。我已经创建了ftpShare文件夹,但是意义不大。

sudo chown vimal:vimal /home/vimal/ftpShare/

一些有用的命令:

sudo nano /etc/vsftpd.conf
sudo service vsftpd restart
sudo apt-get purge vsftpd
netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
ftp://12.345.23.xxx/  for browser login

以上表示ftp守护程序正在运行

我有以下配置:

seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES

一旦FTP工作,您可能会进一步将其调整为特定需求,其中一些具有默认值,但我不记得确切。

在FTP客户端中看到的错误:

1. 500 OOPS:prctl PR_SET_SECCOMP失败

解。

seccomp_sandbox=no    

[在最初的注释部分结束后,将其添加到vsftpd.conf的第一行]

2. 500 OOPS:vsftpd:拒绝在chroot()中以可写根运行

allow_writeable_chroot=YES

我在最后一行添加了它。


0

我解决了vsFTPd拒绝在Ubuntu服务器上的chroot()内部使用可写根运行的问题,如下所示:

我刚刚在 vsftpd.conf文件中:

allow_writeable_chroot=YES
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.