错误消息“500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行” - 让用户被监禁

错误消息“500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行” - 让用户被监禁

到目前为止,我无法将 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。

我努力了:

我们如何才能修复这个错误并将用户限制在他们的主目录中?

答案1

对于 VSFTPD 3,

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

    allow_writeable_chroot=YES
    

    如果尚不存在,则添加它。

  3. 重新启动 vsftpd 服务:

    service vsftpd restart
    

而且它应该可以工作。

答案2

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

因此,如果用户站点位于文件夹中cat/example.com/http/,则文件夹cat必须有chmod 555,并且一切都会正常。

答案3

在进一步查看这篇文章后,评论中发布了一个修复了我的问题的软件包。您可以通过我的名字或“标记”文档进行搜索: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]

答案4

这和 toastboy70 提到的差不多。将 ftp-root 目录更改为 ftp.ftp 并且不可写 (/etc/vsftpd.conf):anon_root=/srv/ftp

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

相关内容