chroot 不更改到主目录

chroot not changing to home directory

我已经在 Redhat 的 sshd_config 中设置了 chroot。它按预期工作。

当用户登录时,他们最终会进入 chroot 目录,而不是他们的主目录。为什么?

示例:chroot 设置为 /home/test。用户 bob 登录。在 /etc/passwd 中,bob 的主目录是 /here。我希望 bob's 最终出现在 /home/test/here(它确实存在并且归 bob 所有)。相反,他最终出现在 /home/test.

根据该人的说法,chroot 运行后,它会将用户的目录设置为主目录。 Chroot 将根设置为 /home/test。因此,它应该将主目录设置为 /here。它没有,我找不到任何消息来提示我可能是什么问题。

/etd/sshd_config 的变化是:

Match User bob
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /home/test
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

在/etc/passwrd中,相关行是:

bob:x:1001:1001:SFTP Test:/here:/bin/bash

万一其他人有这个问题,就是这个问题...

在 sshd_config 中为 sftp 服务器设置 chroot 时,通常在 sshd_config 中设置以下内容:

ForceCommand internal-sftp

这是一件好事。它强制用户使用 运行 sftp 而不是某种形式的 shell,这可能会让他们获得您不希望他们拥有的访问权限。这就是问题所在!

这是事情的顺序:

  1. 用户使用SSH登录。使用 /ect/passwd 中的主目录。
  2. Chroot 运行s,更改根文件夹,然后再次从 /etc/passwd 设置主目录。
  3. 内部SFTP 运行s,将当前工作目录更改为根目录。

最后一步没有写入任何调试信息。所以,处理这个问题的每个人都认为 chroot 没有正确地切换到 home directgor​​y。

解决方法很简单:告诉 sftp 使用 home 文件夹作为当前工作目录。对我们来说,主文件夹是 /home/test/here,也就是 chroot 之后的 /here。所以,在sshd_config中,我将force命令行改为:

ForceCommand internal-sftp -d /here

现在,它像宣传的那样工作。