我刚刚friend
在我的服务器上创建了一个新用户,目标是为我的朋友提供 SFTP 访问权限,以便他可以在那里托管他的网站。
我注意到,通过SFTP与用户连接服务器时friend
,默认文件夹是/home/friend/
,但是您可以轻松退出/home/friend/
并访问服务器上具有读取权限的所有文件,例如/home/anotheruser/website2/config.php
!我不想要这个。
我被告知将此用户置于“监禁/隔离模式”,因此,在我的默认值结束时sshd_config
:
...
Subsystem sftp /usr/lib/openssh/sftp-server
...我添加了这个:
Match User friend
ChrootDirectory /home/friend
ForceCommand internal-sftp
并做到了service sshd restart
。
然后我根本无法通过 SFTP 与用户连接服务器friend
,哎呀!我也尝试通过替换Subsystem ...
,Subsystem sftp internal-sftp
但结果是一样的:friend
无法再通过 SFTP 连接服务器。
问题:
如何隔离用户,使他无法通过 SFTP/SSHfriend
出门?/home/friend/
注意:我已经阅读了如何使用 chroot Jail 将 SFTP 用户限制在主目录中,我如何 chroot 仅 sftp 的 SSH 用户进入他们的家? , ETC。
不确定您使用的是什么操作系统,但当我必须配置被监禁的 SFTP 用户时,我使用下面的链接。这是一个关于如何配置被监禁的 SFTP 用户的非常好的教程。
https://access.redhat.com/solutions/2399571
然后,我会将任何目录挂载到您想让您的朋友访问的 chroot 目录。
工作解决方案
这是受教程How to configure an sftp server with limited chroot users with ssh keys 在@HeysusEscobar 的回答中提到的启发。
执行此操作
root
:将此添加到
/etc/ssh/sshd_config
:并做
service sshd restart
。就这样!注意:
ssh
,所以它没有为其他用户修改任何内容friend
不能ssh
friend
可以通过连接sftp
PS:如果您想让
friend
的网站可用于互联网,您可以将其添加到 Apache 配置中:站点注释:即使使用
open_basedir
上述方法,friend
仍然不能使用 PHP 退出他的 chrooted 环境或运行对整个文件系统产生影响的恶意代码?链接问题:chrooted/isolated SFTP 用户仍然可以使用 PHP 访问整个文件系统旧的(仅半工作)解决方案
根据文档,
ChrootDirectory /home/friend
由帮助替换:ChrootDirectory /home
这样,用户
friend
可以再次连接到 SFTP;不能出去/home/
;但仍然可以访问/home/anotheruser/...
,这是不需要的!您可以保留对 .sshd_config 文件的修改,并用于
chmod -R 700 /home/anotheruser
限制其他任何人访问其他用户的家,包括.sshd_config 文件friend
。如果这太严格了,您可以修改 chmod 值,但这正是我个人在此处的问题中所寻找的。(很抱歉将此作为另一个答案发布,我没有足够的声誉将此作为评论添加到您的答案中)