'\" te .\" Copyright (c) 2001, 2015, Oracle and/or its affiliates.All rights reserved. .\" Copyright 1989 AT&T. .TH rsh 1M "2015 年 9 月 21 日" "SunOS 5.11" "系统管理命令" .SH 名称 rsh, restricted_shell \- 受限 shell 命令解释程序 .SH 用法概要 .LP .nf \fB/usr/lib/rsh\fR [\fB-acefhiknprstuvx\fR] [\fIargument\fR]... .fi .SH 描述 .sp .LP \fBrsh\fR 是标准命令解释程序 \fBsh\fR 的一个限制版本,用于将登录限制到其功能比 \fBsh\fR 的功能受到更多控制的执行环境(有关完整说明和用法,请参见 \fBksh93\fR(1))。命令解释程序 \fBsh\fR 引用 \fBksh93\fR 而不是 Bourne shell。\fB/usr/bin/sh\fR 是指向 ksh93 的链接。 .sp .LP 在调用 shell 后,它将在环境中扫描环境变量 \fBSHELL\fR 的值。如果找到了该变量,并且 \fBrsh\fR 是其值的文件名部分,则 shell 将成为受限 shell。 .sp .LP \fBrsh\fR 的操作与 \fBsh\fR 的操作完全相同,但不允许以下操作: .RS +4 .TP .ie t \(bu .el o 更改目录(请参见 \fBcd\fR(1)), .RE .RS +4 .TP .ie t \(bu .el o 设置 $\fBPATH\fR 的值, .RE .RS +4 .TP .ie t \(bu .el o 指定包含 \fB/\fR 的路径或命令名称, .RE .RS +4 .TP .ie t \(bu .el o 重定向输出(\fB>\fR 和 \fB>>\fR)。 .RE .sp .LP 以上限制在解释了 \fI\&.profile\fR 后强制执行。 .sp .LP 可以通过以下方式之一调用受限 shell: .RS +4 .TP 1. \fBrsh\fR 是 \fB/etc/passwd\fR 文件中最后一个条目的文件名部分(请参见 \fBpasswd\fR(4)); .RE .RS +4 .TP 2. 环境变量 \fBSHELL\fR 存在,并且 \fBrsh\fR 是其值的文件名部分;需要在 \fB\&.login\fR 文件中设置环境变量 \fBSHELL\fR; .RE .RS +4 .TP 3. 已调用 shell,并且 \fBrsh\fR 是参数 0 的文件名部分; .RE .RS +4 .TP 4. 调用 shell 并使用了 \fB-r\fR 选项。 .RE .sp .LP 如果发现要执行的命令为 shell 过程,\fBrsh\fR 则会调用 \fBsh\fR 来执行此命令。因此,可以向最终用户提供有权访问标准 shell 完整功能的 shell 过程,并强制提供有限的命令菜单;此方案假定最终用户在同一目录下不具备写入和执行权限。 .sp .LP 这些规则的实际结果是,通过执行保证的设置操作,并将用户保留在适当的目录(可能\fI\fR不是登录目录)中,.\fI\&.profile\fR 的写入者(请参见 \fBprofile\fR(4))有用户操作的完整控制权。 .sp .LP 系统管理员经常设置可由受限 shell 安全调用的命令目录(即 \fB/usr/rbin\fR)。有些系统还提供受限的编辑器 \fBred\fR。 .SH 退出状态 .sp .LP shell 检测到的错误(例如,语法错误)会导致 shell 返回非零退出状态。如果是以非交互方式使用 shell,则放弃执行 shell 文件。否则 shell 将返回执行的最后一个命令的退出状态。 .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os .TE .SH 另请参见 .sp .LP \fBIntro\fR(1), \fBcd\fR(1), \fBlogin\fR(1), \fBrsh\fR(1), \fBsh\fR(1), \fBksh93\fR(1), \fBexec\fR(2), \fBpasswd\fR(4), \fBprofile\fR(4), \fBattributes\fR(5) .SH 附注 .sp .LP 受限 shell \fB/usr/lib/rsh\fR 不应与远程 shell \fB/usr/bin/rsh\fR 混淆,后者在 \fBrsh\fR(1) 中有介绍。