我已经为此工作了大约一个小时,并遵循了许多示例,但新用户仍然可以访问整个目录结构,或者根本无法登录,并显示消息“500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行”。我的步骤如下:
adduser user1
nano /etc/passwd (changed home dir to /var/www/domain.com and bash to rbash)
nano /etc/vsftpd (uncommented chroot_local_user=YES, chroot_list_enable=YES, chroot_list_file=/etc/vsftpd.chroot_list)
nano /etc/vsftpd.chroot_list (add a line for user1)
我尝试过很多不同的方法,但都行不通。首先,让我们澄清一下,chroot_local_user=YES 到底是什么意思?我之所以问这个问题,是因为它似乎没有按照我期望的方式执行任何操作。有些网站建议将其切换为 NO。
我正在尝试为我姐姐的网站管理员设置一个虚拟主机,但不想让他看到我其他网站的其他文件。我是不是漏掉了什么步骤,还是我应该切换到其他 FTP 服务器?
答案1
这个想法是将用户限制在他们的主目录中。将用户添加到/etc/vsftpd.chroot_list
允许他们免受此限制的约束,因此您的网站管理员不应该在那里。
您之所以获得该权限,500 OOPS
是因为您已授予目录根目录的写权限,并且已启用 chroots。
您不需要使用 chroot - 只需将用户的主目录更改为网站根目录:
usermod -d /var/www/domain.com user1
确保您的vsftpd.conf
文件包含:
anonymous_enable=NO
local_enable=YES
write_enable=YES
确保您已经删除(或禁用)所有chroot
线路。
答案2
Gareth the Red 可能完全正确,我最终放弃了 vsftp,因为在他出现之前我没有弄清楚。
我最终通过 openssh 完成了所有操作,但这也存在一些挑战。这是我在本文分享的任何教程中从未见过的。
/etc/ssh/sshd_config: Add these lines:
Subsystem sftp internal-sftp
Match User sftpuser
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home
ForceCommand internal-sftp
非常重要,这个保留在 /home!如果您尝试 /home/sftpuser,它将失败。
最后的诀窍是检查出现此错误的 auth.log:
fatal: bad ownership or modes for chroot directory
这让我看到了这个页面: https://wiki.archlinux.org/index.php/SFTP_chroot
将 ChrootDirectory 更改为 /home 后,我 chmod 750 所有限制该用户的用户目录,然后运行以下命令:
mount --bind /var/www/example.com /home/sftpuser
我希望这对某些人有所帮助,我花了几个小时才找到正确的信息,如果我早点查看日志,花的时间就会少很多。