我如何为 Linux(Ubuntu)创建一个新的 SSH 用户,使该用户只允许访问该文件夹而不能返回其他文件夹,我为此搜索了很多教程/支持,但这些都没有帮助我,因为它是在第一次登录 SSH 时工作的,当我返回其他文件夹并断开 ftp 连接并重新连接时,它不会带我到设置的文件。
答案1
处理此问题的标准方法是设置 chroot 环境。这样做会为文件系统建立一个新的基础。在 chroot 环境中,用户拥有自己的基本设置文件来支持该环境。当他们登录时,他们会执行 chroot 并“卡”在该有限的环境中。
为此,请设置一个基本目录来创建受限环境,然后为该环境添加目录。
mkdir -p <base>/{dev,etc,lib,usr,bin}
mkdir -p <base>/usr/bin
chown root.root <base>
你可以制作<base>
任何你想要的东西(即/var/jail
)。
添加其他必要的文件以及用户需要运行的任何二进制文件或可执行文件:
cp /etc/ld.so.cache <base>/etc/
cp /etc/ld.so.conf <base>/etc/
cp /etc/nsswitch.conf <base>/etc/
cp /etc/hosts <base>/etc/
cp /usr/bin/ls <base>/bin/
cp /usr/bin/bash <base>/bin/
添加任何所需的共享库来运行您需要的任何命令(运行ldd <command>
以获取列表)。将 cp
它们放入<base>/lib
目录中。
/etc/ssh/sshd_config
最后...使用以下命令配置 sshd( ):
Match group sshusers
ChrootDirectory <base>
X11Forwarding no
AllowTcpForwarding no
将要被 chroot 的用户添加到“sshuser”组(或者将其创建为您想要的任何组,只要确保它与您在 中的配置方式相匹配即可sshd_config
)。