rbash 将用户限制在其主目录中,关闭 sftp 连接

rbash 将用户限制在其主目录中,关闭 sftp 连接

服务器:Red Hat Enterprise Linux Server 版本 6.5(圣地亚哥)

使用 openssh-server 允许 sftp 连接。

我试图将用户限制在他们自己的个人主目录中。因此我修改了 /etc/passwd,设置用户“john”使用/bin/rbash而不是/bin/bash

john:502:503::/home/john:/bin/rbash

如果我这样做,john 就无法通过 sftp 连接:他一登录,连接就会关闭(sftp 消息是Connection closed)。如果我将 bash 设置为 /bin/bash,他的连接可以正常工作,但是 john 可以使用 cd 遍历整个服务器文件系统。

你能解释一下我做错了什么,以限制用户通过 sftp 连接到他们自己的目录吗?

答案1

rbash不允许您运行以 为开头的命令/,如果有人尝试运行,它就会退出。

除非您使用内部 sftp 服务器,否则执行尝试/usr/libexec/sftp-server将会失败。

使用Subsystem sftp internal-sftpsshd_config解决这个问题。

但是,使用rbash不会阻止 sftp 在你的文件系统中漫游,你可能需要chroot 用户

答案2

您可以使用没有链接的普通 shell,对于受限制的 shell,请在 /etc/profile 中输入以下内容

 if [[ $USER == "pluto" ]]; then
      export PATH=$HOME/bin
      readonly PATH
      set -r
 fi

mkdir /home/pluto/bin as root
ln -s /bin/ls /home/pluto/bin/ls

这样 sftp 就可以工作了,而 pluto 只能使用 ls 命令

相关内容