我正在研究一种解决方案,将用户限制在主目录或特定目录中。
我需要针对以下场景限制用户,我们在 webroot 中安装了多个 Wordpress /var/www/html/wordpress1
,/var/www/html/wordpress2
我需要创建一个用户并设置一个新的用户主目录,并且/var/www/html/wordpress2/wp-content
当这个新用户使用 WinSCP 连接密码时,该用户应该只能访问/var/www/html/wordpress2/wp-content
并且用户不能离开目录。
我按照以下步骤创建用户和组并设置用户主目录并进行更改,sshd_config
但是当用户使用 Winscp 连接到服务器时,用户仍然可以访问服务器上的任何目录。
useradd -g sftpgroup -d /var/www/html/wordpress2/wp-content sftpuser1
sudo passwd sftpuser1
修改了/etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /home
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
配置完成后,新用户仍然可以看到服务器上的所有其他文件夹。
希望此图有助于理解我的问题 在此处输入图片描述
有人可以帮我解决一些问题吗
答案1
如果您将用户 chroot 到 ,/home
并且所有用户的主页都作为 的子文件夹/home
,那么用户确实可以看到所有主页。
你可能想要:
ChrootDirectory /home/%u
或者甚至更好:
ChrootDirectory %h
附注:您将指令缩进到 下Subsystem
,这给人的印象好像它们只应用于 SFTP。它们不会,它们是全局的。实际上,缩进在 中没有任何意义sshd_config
。重要的是某些Match
指令是否在 指令之前。因此,指令通常在 之后缩进Match
。但这只是供人类使用,SSH 服务器并不关心。
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no