我可以仅使用 OpenSSH 配置将用户限制在其 /home/%u 目录中吗?根据我在 Internet 上找到的说明,我停止了 SSH 服务器并将以下内容附加到文件中sshd_config
:
Match group sftpusers
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
然后我再次启动 SSH 服务器。
仅供参考,我已将用户添加到sftpusers
组中
我的用户仍然可以浏览 ie,cd /
并且能够使用 cat 命令列出cat /usr/bin/test.sh
我系统上整个文件结构中的文件内容 ( )
我正在运行 Ubuntu Server 12.04 LTS。
答案1
首先,我建议使用,ChrootDirectory %h
而不是/home/%u
, as%h
扩展到用户的家,即使它不是/home/$USER
。
现在解决您的实际问题:您需要强制internal-sftp
运行命令。以下配置对我来说效果很好,也应该适合你:
Match group sftp
ForceCommand internal-sftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
用户的 home 应该是root
-owned 的并且有上面提到的 755 权限:
drwxr-xr-x 22 root root 4.0K Nov 24 2011 /home/testuser
答案2
使用fakechroot
准备要用于 SSH 的用户和目录。例如,您可能想要将某些命令从
/bin
目录复制到用户的bin
目录中。认为用户名为test
,用户目录为/home/test
。安装
fakechroot
包。# Debian-based distros sudo apt install fakechroot
打开 OpenSSH 服务器配置文件进行编辑(例如
/etc/ssh/sshd_config
)。将以下行添加到配置文件(或替换现有行(如果存在)):
# Replace test with your user of choice Match User test ForceCommand fakechroot chroot /home/test # Other options
保存文件。在您想要的特定端口上启动 OpenSSH 服务器。现在,尝试通过 SSH 登录。一切都应该按预期进行。
希望能帮助到你!
答案3
我知道这个问题很老了,但这对我有帮助。
chmod o-x /home/*
从 sudo 运行上述命令,它将限制用户到其自己的主目录。