6.10 受限制的shell

评论 0 浏览 0 2023-01-26

如果Bash是以rbash的名字启动的,或者在调用时提供了--restricted-r选项,那么shell就变成了受限的。 受限的shell是用来设置一个比标准shell更受控制的环境的。 受限的shell的行为与bash相同,但以下内容是不允许的或不执行的:

  • cd内置程序改变目录。
  • 设置或不设置SHELLPATHHISTFILEENVBASH_ENV等变量的值。
  • 指定含有斜线的命令名称。
  • 指定一个包含斜线的文件名作为.内置命令的参数。
  • 指定一个包含斜线的文件名作为history内置命令的参数。
  • 指定一个包含斜线的文件名作为hash内置命令的-p选项的参数。
  • 在启动时从shell环境中导入函数定义。
  • 在启动时从shell环境中解析出SHELLOPTS的值。
  • 使用‘>’、‘>|’、‘<>;’、‘>&’、‘&>’,以及‘>>’重定向运算符。
  • 使用exec内置命令,用另一个命令来替换shell。
  • -f-d选项向enable内置命令添加或删除内置命令。
  • 使用enable内置命令来启用被禁用的shell内置程序。
  • command内置程序中指定-p选项。
  • 用‘set +r’或‘shopt -u restricted_shell’关闭受限模式。

这些限制在任何启动文件被读取后都会被强制执行。

当一个被发现是shell脚本的命令被执行时(见Shell Scripts),rbash会关闭为执行该脚本而产生的shell中的任何限制条件。

受限的shell模式只是一个有用的受限环境的一个组成部分。它应该伴随着将PATH设置为只允许执行少数经过验证的命令的值(允许shell转义的命令特别容易受到攻击),在登录后将当前目录改为$HOME以外的不可写的目录,不允许受限shell执行shell脚本,以及清理环境中导致一些命令修改其行为的变量(例如VISUALPAGER)。

现代系统提供了更安全的方式来实现受限环境,如jailszonescontainers

最后更新2023-02-20
0 个评论
上一篇: 6.9 控制提示符
当前页面书签