我想给一个客户访问我的服务器的权限,但是我希望限制这些用户只能访问他们的家目录。我会通过绑定挂载的方式,将我希望他们能够看到的文件加入进去。
我创建了一个名为"bob"的用户,并将其添加到一个名为"sftponly"的新组中。他们的家目录位于"/home/bob"。我将他们的shell更改为"/bin/false"以阻止SSH登录。以下是他们的"/etc/passwd"行:
我还修改了
当我尝试以他们的身份登录时,这是我看到的内容。
我不完全确定那里发生了什么事,但它暗示用户目录出现了问题。这是
我创建了一个名为"bob"的用户,并将其添加到一个名为"sftponly"的新组中。他们的家目录位于"/home/bob"。我将他们的shell更改为"/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
。 - Franck Dernoncourt