我想让客户端访问我的服务器,但我想将这些用户限制在其主目录中。我将绑定安装在我希望它们能够看到的任何文件中。
我创建了一个名为的用户bob
,并将其添加到名为的新组中sftponly
。他们有一个主目录/home/bob
。我将其外壳更改/bin/false
为停止SSH登录。这是他们的/etc/passwd
台词:
bob:x:1001:1002::/home/bob:/bin/false
我还更改了/etc/ssh/sshd_config
以包括以下内容:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
当我尝试以他们的身份登录时,这就是我看到的内容
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
如果我注释掉该ChrootDirectory
行,则可以使用SFTP,但他们可以自由控制服务器。我已经找到了ChrootDirectory /home
可行的方法,但是仍然可以让他们访问任何主目录。我已经明确尝试过,ChrootDirectory /home/bob
但这也不起作用。
我究竟做错了什么?如何限制bob
到/home/bob/
?
- - 编辑 - - -
好的,所以我看了一下就/var/log/auth.log
看到了:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
我不完全确定发生了什么,但这表明用户目录出了点问题。这是ls -h /home
输出:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%u
可以替代ChrootDirectory %h
。