6.10 受限 shell(The Restricted Shell)

如果是使用的 rbash 启动的 Bash,或在调用 Bash 时提供了“—restricted”或“-r”选项,则 shell 变为受限制的。受限 shell 在用于设置环境时比标准 shell 更可控。除了下面列出的条目在受限 shell 中是不允许的或不会被执行的,其它行为都与 bash 是一样的:

在读取了所有的启动文件之后,强制进入受限模式。

当发现执行的命令是一个 shell 脚本(参见 3.8《shell 脚本》)时,rbash 会在生成的用于执行脚本的 shell 中关闭这些限制。

shell 受限模式只是组成有用受限环境的一个部分。其应该还有:为允许执行很少一部分已验证命令(能够让 shell 规避特定攻击的命令)而设置的 PATH 值;在登录后使用户处于一个不可写入的目录,而不是其家目录;不允许受限 shell 执行 shell 脚本;和清除一些变量环境,使一些命令不能改变其行为(例如,VISUAL 或 PAGER)。

现代系统提供更安全的方式来执行受限环境,例如“jails”、“zones”或“containers”。