chroot 目录组件的所有权或模式不正确

Mul*_*gno 70 ssh chroot chown

我创建了用户 MY_USER。将他的家目录设置为/var/www/RESTRICTED_DIR,这是他应该被限制的路径。然后我编辑了 sshd_config 并设置:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR
Run Code Online (Sandbox Code Playgroud)

然后我重新启动了 ssh。将 MY_USER 所有者(和组所有者)设为 RESTRICTED_DIR,并将其修改为 755。我明白了

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER
Run Code Online (Sandbox Code Playgroud)

如果我从 sshd_config 中删除了 2 行,则用户可以成功登录。当然,它可以访问所有服务器。有什么问题?我什至试图将 RESTRICTED_DIR chown 到 root (因为我在某处读到有人解决了同样的问题)。没运气..

vor*_*aq7 99

man页面

ChrootDirectory
指定认证后chroot(2) 的目录路径名。 路径名的所有组成部分必须是任何其他用户或组不可写的根目录。在 chroot 之后,sshd(8) 将工作目录更改为用户的主目录。

我的猜测是路径上的一个或多个目录不符合这些要求(我怀疑是www您的网络用户拥有或可写的,而不是 root)。
返回并按照说明进行操作,确保满足上述粗斜体要求。

  • 这让我发疯......如果除了root之外没有人对它有写访问权限,那么登录的用户应该如何上传新文件?它违背了我最初设置 sftp 的全部目的。 (4认同)
  • 好的!解决了。我将 chrooted 目录设置为一个级别。然后我给了原来的 chrooted_dir 777 perms。它的工作:) (3认同)
  • 我知道这已经很老了,但是不要直接修改 `/var/www` 路径的权限,这可能会破坏 apache,最好将 sftp 目录放在另一个路径中,然后在 Apache 中使用 URL 映射指向另一个目录。检查此处的文档 https://httpd.apache.org/docs/2.4/urlmapping.html 在`Files Outside DocumentRoot` 下 (3认同)
  • @jlh 只需在 chroot 目录下创建一个由您的用户拥有的具有写入权限的目录:`/var/www/RESTRICTED_DIR/<youruser>` (3认同)
  • 尽管手册页说了些什么,即使组设置为“root”,我也必须在它起作用之前设置 gw 权限(Ubuntu 14.04)。联机帮助页应该说 *** 路径名的所有组件必须是任何其他用户或任何组都不能写入的根目录拥有的目录*** `sudo chown root:root -R /path/to/home; 须藤 chmod 755 -R /path/to/home` (2认同)

小智 40

ChrootDirectory 目录必须由 root 拥有并具有 755 模式:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR
Run Code Online (Sandbox Code Playgroud)

好的,现在所有进入的文件都/var/www/RESTRICTED_DIR必须由 拥有MY_USER,它必须属于www-data组,并且具有 775 模式以允许组权限,如下所示:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*
Run Code Online (Sandbox Code Playgroud)

注意:请记住,如果您正在配置 apache,最好只允许访问 htdocs 文件夹。

  • 很确定它应该是`sudo usermod -a -G www-data MY_USER`,因为该组应该在`-G`之后 (4认同)
  • 这有效,但我无法将新文件上传到目录,我只能修改之前使用 root 帐户和用户所有权创建的文件。 (2认同)