非常重要,这个保留在 /home!如果您尝试 /home/sftpuser,它将失败。

非常重要,这个保留在 /home!如果您尝试 /home/sftpuser,它将失败。

我已经为此工作了大约一个小时,并遵循了许多示例,但新用户仍然可以访问整个目录结构,或者根本无法登录,并显示消息“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

我希望这对某些人有所帮助,我花了几个小时才找到正确的信息,如果我早点查看日志,花的时间就会少很多。

相关内容