6.10 受限制的shell
评论 0
浏览 0
2023-01-26
如果Bash是以rbash
的名字启动的,或者在调用时提供了--restricted或-r选项,那么shell就变成了受限的。 受限的shell是用来设置一个比标准shell更受控制的环境的。 受限的shell的行为与bash
相同,但以下内容是不允许的或不执行的:
- 用
cd
内置程序改变目录。 - 设置或不设置
SHELL
、PATH
、HISTFILE
、ENV
或BASH_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脚本,以及清理环境中导致一些命令修改其行为的变量(例如VISUAL
或PAGER
)。
现代系统提供了更安全的方式来实现受限环境,如jails
、zones
或containers
。
最后更新2023-02-20
0 个评论
上一篇:
6.9 控制提示符
下一篇:
6.11 Bash的POSIX模式