Chrooted 用户不在他的主目录中启动并且不加载他的 bash_profiles

Stu*_*ffy 4 linux ssh bash chroot

如果用户登录,他会从 chroot 的 / 开始(在真机上是 /var/jail)。我希望他从他的家庭目录开始。此外,他似乎没有加载任何他的个人资料文件(.bash.rc 等)。我按照教程创建了 chroot 环境。这是我的 /etc/passwd 的样子:

test:x:1004:1008:,,,:/var/jail/home/test:/bin/bash
Run Code Online (Sandbox Code Playgroud)

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

test:x:1004:1008:,,,:/home/test:/bin/bash
Run Code Online (Sandbox Code Playgroud)

我还发现,如果我删除

Match User test
    ChrootDirectory /var/jail
    AllowTCPForwarding no
    X11Forwarding no
Run Code Online (Sandbox Code Playgroud)

从我的 /etc/ssh/sshd_config 中,用户从他正确的主文件夹中开始,并加载了他的 bash 设置。但是,如果我删除该部分,他就可以离开 chroot 环境。我之前问过的这个问题有些相关,因为我认为命令行的错误外观是由未加载的配置文件引起的。那么任何想法如何解决这个问题?

jau*_*ume 5

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

test:x:1004:1008:,,,:/home/test:/bin/bash
Run Code Online (Sandbox Code Playgroud)

重新启动并重sshd试。

来自man sshd_config

根目录

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

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

如果您使用的是Debian / Ubuntu的(因为你提到的教程是Debian),你可能希望创建一个文件名为/var/jail/etc/debian_chroot的内容是“chroot环境”,这将显示在用户在这样的括号提示:(chroot)test@servername:~$

(我已经在我的 Ubuntu 12.04 上复制了您的配置,并且/var/jail/etc/passwd.

  • 我发现如果你只写 `/home/test` 作为主目录,ftp 和 sftp 不能正常工作。我必须编写 `/home/test/./` 来解决 ftp/sftp 的问题!现在一切正常。 (2认同)