Chrooted用户不会在他的主目录中启动,也不会加载他的bash_profiles

如果用户login,他将从/ chroot开始(这是实际机器上的/ var / jail)。 我希望他从他的家里开始。 另外,他似乎不加载任何他的configuration文件(.bash.rc等)。 我按照这个教程创build了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环境。 我之前问过的这个问题有些相关,因为我认为命令行的错误是由未加载的configuration文件引起的。 那么有什么想法如何解决这个问题?

你的configuration是正确的,除了一个小的细节: /etc/passwd的主目录不应该包含chrootpath部分。 将其更改为:

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

重新启动sshd试。

man sshd_config

ChrootDirectory

指定要validation后chroot(2)的目录的path名。 path名的所有组件都必须是不能由任何其他用户或组写入的根拥有的目录。 在chroot之后,sshd(8)将工作目录更改为用户的主目录。

也就是说,首先sshd执行chroot (在我们的例子中是chroot /var/jail ),然后sshd把目录改成用户的homedir(在我们的例子中是cd /home/test – 在chroot环境下cd /var/jail/home/test将无法正常工作)。

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

(我已经在我的Ubuntu 12.04上复制了你的configuration,并且在从/etc/passwd用户testing入口中删除了/var/jail之后它已经工作了。)