到目前为止,我无法将 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,
- 去:
/etc/vsftpd.conf
并添加以下内容:
allow_writeable_chroot=YES
如果尚不存在,则添加它。
重新启动 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