欢迎来到之路教程(on itroad-com)

如何设置受限shell

为特定用户设置你想要的环境,可以把它们放在启动文件:$HOME/.bash_profile,如下图:

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then 
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
bash -r

现在使用用户登录并尝试更改目录。

$ cd /etc/
bash: cd: restricted
$ cd /tmp/
bash: cd: restricted

要为所有用户设置受限 Shell,请创建 /bin/bash 到 /bin/rbash 的符号链接:

# cd /bin
# ln -s bash rbash

为什么是 rbash?

如果 bash 以名称 rbash 启动,或者在调用时提供了 -r 选项,则 shell 将受到限制。
受限 shell 用于设置比标准 shell 更受控制的环境。
它的行为与 bash 相同,除了以下内容被禁止或者不执行:

  • 用 cd 改变目录
  • 设置或者取消设置 SHELL、PATH、ENV 或者 BASH_ENV 的值
  • 指定包含/的命令名称
  • 指定包含/的文件名作为内置命令的参数
  • 指定包含斜杠的文件名作为 hash 内置命令的 -p 选项的参数
  • 在启动时从 shell 环境导入函数定义
  • 在启动时从 shell 环境解析 SHELLOPTS 的值
  • 使用 >、>|、<>、>&、&> 和 >> 重定向运算符重定向输出
  • 使用 exec 内置命令将 shell 替换为另一个命令
  • 使用 -f 和 -d 选项向 enable 内置命令添加或者删除内置命令
  • 使用 enable 内置命令启用禁用的 shell 内置命令
  • 指定命令内置命令的 -p 选项。
  • 使用 set +r 或者 set +o 限制关闭受限模式。
rbash - 在 Linux 中设置受限 shell

rbash 表示受限制的 bash shell(restricted bash shell)。
在类似 UNIX 的操作中,当创建用户时会分配一个默认的 shell (/bin/bash)。
所以用户可以移动到任何人的目录,所以为了避免这种情况,我们可以将受限 shell 分配给一个用户,受限 shell 就像一个类似监狱的环境或者 chroot 环境。

日期:2020-09-17 00:14:40 来源:oir作者:oir