,命令运行:
adduser --home /home/user1 user1
nano /etc/ssh/sshd_config
Match User user1
ChrootDirectory /home/user1 #two lines were added
service sshd restart
在客户端,
ssh user@192.168.1.105
user@192.168.1.105's password:
Write failed: Broken pipe
为什么不能在/ home / user1上设置chroot jail?
答案 0 :(得分:1)
可能发生的事情是sshd
发出chroot()
系统调用,但是当系统尝试启动你的shell(可能类似/bin/bash
)时,它没有&# 39;存在...因为你已经chrooted,所以没有/bin
目录。
您可以将shell复制到/home/user1/bin/bash
,但您还需要复制任何所需的共享库。您可以通过运行ldd /bin/bash
:
# ldd /bin/bash
linux-vdso.so.1 => (0x00007ffc3eff5000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f21ceb47000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f21ce943000)
libc.so.6 => /lib64/libc.so.6 (0x00007f21ce586000)
/lib64/ld-linux-x86-64.so.2 (0x00007f21ced71000)
您可以将这些中的每一个复制到chroot
环境中的适当位置,但如果您想运行任何其他命令,则需要重复上述过程。
您可能会发现某些库是动态加载的,您也需要复制这些库。
来自/etc
的所有必需配置文件。可能来自/dev
的一些设备节点。等
换句话说,除非您的目标是限制对单个命令的访问,否则它并不值得付出努力。