我需要在我的 RHEL5 生产服务器上创建一个 chroot jail,以允许特定用户使用尽可能少的权限,但使用 GIT。
这是我的系统配置:
- RHEL 5:版本 5.10
- OpenSSH:OpenSSH_6.4p1,OpenSSL 0.9.8e-fips-rhel5 2008 年 7 月 1 日
为了测试,我创建了一个文件夹/chroot带有子文件夹托托我想要 chroot 我的用户。
# ls -la /chroot
total 24
drwxr-xr-x 3 root root 4096 Nov 11 15:22 .
drwxr-xr-x 31 root root 4096 Nov 12 13:02 ..
drwxr-xr-x 5 root root 4096 Nov 11 15:22 toto
# ls -la /chroot/toto
total 40
drwxr-xr-x 5 root root 4096 Nov 11 15:22 .
drwxr-xr-x 3 root root 4096 Nov 11 15:22 ..
drwxr-xr-x 2 root root 4096 Nov 11 15:22 bin
drwxr-xr-x 2 root root 4096 Nov 11 15:22 lib
drwxr-xr-x 5 root root 4096 Nov 11 15:22 usr
我创建了一个名为chroot_www并添加了我的用户托托對它來說。
我已经编辑/etc/ssh/sshd_config并在最后添加了必要的行。
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group chroot_www
# ForceCommand internal-sftp
ChrootDirectory /chroot/toto
AllowTcpForwarding no
但是当我想使用 ssh 连接时出现此错误:
ssh toto@********
toto@********'s password:
Last login: Thu Nov 14 13:22:35 2013 from ********
Could not chdir to home directory /chroot/toto: No such file or directory
Connection to ******** closed.
但目录存在,并且权利良好。
这很奇怪,原因有二:
- 我在 RHEL6 服务器上有相同的配置并且它可以运行。
- 我可以使用 SFTP 连接,并且 chroot 被限制在正确的文件夹中,但是不能使用 SSH。
因此,如果您有使用 chroot jail 的经验或者遇到过类似这样的问题,我真的很感兴趣...