Chroot 用户不会从其主目录启动,也不会加载其 bash_profiles

Chroot 用户不会从其主目录启动,也不会加载其 bash_profiles

如果用户登录,他将从 chroot 的 / 开始(在实际机器上是 /var/jail)。我希望他从主目录开始。此外,他似乎没有加载任何配置文件(.bash.rc 等)。我跟着教程来创建 chroot 环境。我的 /etc/passwd 如下所示:

test:x:1004:1008:,,,:/var/jail/home/test:/bin/bash

这是我的 /var/jail/etc/passwd 文件的样子:

test:x:1004:1008:,,,:/home/test:/bin/bash

我还发现,如果我删除

Match User test
    ChrootDirectory /var/jail
    AllowTCPForwarding no
    X11Forwarding no

从我的 /etc/ssh/sshd_config 中,用户从正确的主文件夹启动,并加载了 bash 设置。但是,如果我删除该部分,他就可以离开 chroot 环境。我之前问过的问题有些相关,因为我认为命令行的错误显示是由于未加载配置文件造成的。那么有什么办法可以解决这个问题吗?

答案1

您的配置是正确的,除了一个小细节:中的主目录/etc/passwd不应包含 chroot 路径部​​分。将其更改为:

test:x:1004:1008:,,,:/home/test:/bin/bash

重新启动sshd并重试。

man sshd_config

Chroot目录

指定在身份验证后 chroot(2) 到的目录的路径名。路径名的所有组件都必须是 root 拥有的目录,并且任何其他用户或组都无法写入。 chroot 之后,sshd(8) 将工作目录更改为用户的主目录。

也就是说,首先sshd执行chroot(在我们的例子中chroot /var/jail),然后sshd将目录更改为用户的主目录(在我们的例子中cd /home/test- 在 chrooted 环境中cd /var/jail/home/test不起作用)。

如果您使用的是 Debian/Ubuntu(因为您提到的教程是针对 Debian 的),您可能需要创建一个名为/var/jail/etc/debian_chroot“chroot”的文件,它将出现在用户提示符中的括号中,如下所示:(chroot)test@servername:~$

/var/jail(我在我的 Ubuntu 12.04 上复制了您的配置,从用户测试的条目中删除后它就可以正常工作了/etc/passwd。)

相关内容