/usr/lib/rsh [-acefhiknprstuvx] [argument]...
rsh 是标准命令解释程序 sh 的一个限制版本,用于将登录限制到其功能经 sh 的功能受到更多控制的执行环境(有关完整说明和用法,请参见 sh(1))。
在调用 shell 后,它将在环境中扫描环境变量 SHELL 的值。如果找到了该变量,并且 rsh 是其值的文件名部分,则 shell 将成为受限 shell。
rsh 的操作与 sh 的操作完全相同,但不允许以下操作:
更改目录(请参见 cd(1)),
设置 $PATH 的值,
指定包含 / 的路径或命令名称,
重定向输出(> 和 >>)。
以上限制在解释了 .profile 后强制执行。
可以通过以下方式之一调用受限 shell:
rsh 是 /etc/passwd 文件中最后一个条目的文件名部分(请参见 passwd(4));
环境变量 SHELL 存在,并且 rsh 是其值的文件名部分;需要在 .login 文件中设置环境变量 SHELL;
已调用 shell,并且 rsh 是参数 0 的文件名部分;
调用 shell 并使用了 –r 选项。
如果发现要执行的命令为 shell 过程,rsh 则会调用 sh 来执行此命令。因此,可以向最终用户提供有权访问标准 shell 完整功能的 shell 过程,并强制提供有限的命令菜单;此方案假定最终用户在同一目录下不具备写入和执行权限。
这些规则的实际结果是,通过执行保证的设置操作,并将用户保留在适当的目录(可能不是登录目录)中,..profile 的写入者(请参见 profile(4))有用户操作的完整控制权。
系统管理员经常设置可由受限 shell 安全调用的命令目录(即 /usr/rbin)。有些系统还提供受限的编辑器 red。
shell 检测到的错误(例如,语法错误)会导致 shell 返回非零退出状态。如果是以非交互方式使用 shell,则放弃执行 shell 文件。否则 shell 将返回执行的最后一个命令的退出状态。
有关下列属性的说明,请参见 attributes(5):
|
Intro(1)、cd(1)、login(1)、rsh(1)、sh(1)、exec(2)、passwd(4)、profile(4)、attributes(5)
受限 shell /usr/lib/rsh 不应与远程 shell /usr/bin/rsh 混淆,后者在 rsh(1) 中有介绍。