SUDO 类中的记录存储命令脚本,这样,用户便可以通过借用的权限来运行该脚本。 借用权限的能力由 SUDO 记录以及执行这些脚本的 sesudo 命令严格控制。
注意:如果创建交互式 Windows 应用程序的 SUDO 记录,您必须设置 SUDO 记录的交互式标记。 如果不设置交互式标志,应用程序会在后台运行,而您无法与其进行交互。 有关详细信息,请参阅《疑难解答指南》。
在 SUDO 记录中,注释属性用于特殊用途,通常也称为数据属性。
comment 属性的值是命令脚本,也可以在其中添加一个或多个要禁止或允许使用的脚本参数值。 整个 comment 属性值必须放在单引号中,并且应该使用可执行文件的完整路径名称引用可执行文件,以防止特洛伊木马获取它们的位置。
以下是 comment 属性的格式:
comment('cmd[;[prohibited‑values][;permitted‑values]]')
因为禁止和允许使用的值的列表是可选的,所以简单的 comment 属性值可以是:
newres SUDO NET comment('net use')
该命令中的简单值表示命令 sesudo NET 将执行命令“net use”。 不禁用特定脚本参数值;允许使用所有脚本参数值。
使用通配符和功能强大的变量,可以灵活地指定禁用的参数和允许使用的参数。 可以使用的通配符是标准的 Windows 通配符。 禁止使用的参数和允许使用的参数也可以包含下列变量:
变量 |
说明 |
---|---|
$A |
字母值 |
$G |
现有 CA ControlMinder 组名 |
$H |
(仅适用于 UNIX)以用户的主目录开头的参数 |
$N |
数字值 |
$O |
运行 sesudo 的 CA ControlMinder 用户的名称 |
$U |
现有 CA ControlMinder 用户名 |
$e |
空条目。 使用此变量为规则指定不带任何参数的 SUDO 命令。 |
$f |
现有文件名 |
$g |
现有 Windows 组名 |
$h |
现有主机名 |
$r |
具有 Windows 读访问权限的现有文件 |
$u |
现有 Windows 用户名 |
$w |
具有 Windows 写访问权限的现有文件 |
$x |
具有 Windows 执行访问权限的现有文件 |
如果将禁用参数值的列表附加到脚本,请执行以下操作:
newres SUDO scriptname comment('cmd;-start')
其中 cmd 代表您的脚本。
另外,如果不允许使用任何参数值,但希望默认使用所有参数,请按以下方式定义 SUDO 记录:
newres SUDO scriptname comment('cmd;*')
newres SUDO scriptname comment('cmd;-start -stop')
newres SUDO scriptname comment('cmd;-start -stop | $u')
如果脚本的参数多于列表中的参数,则最后一组禁用参数将适用于所有其余参数。
如果将允许的参数值的列表附加到脚本:
这意味着如果某个参数值在禁用列表中,则即使在允许使用列表中指定了该参数,也不允许使用它。
newres SUDO scriptname comment('cmd;;NAME')
例如,如果您有两个参数,第一个参数必须是数值而不能是 Windows 用户名,第二个参数必须是字母而不能是 Windows 组名,则请输入下面的命令:
newres SUDO scriptname comment('cmd;$u | $g ;$N | $A')
如果脚本的参数多于列表中的参数,则最后一组允许使用的参数将适用于所有剩余参数。
因此,comment 属性的完整格式为:首先是脚本,然后是逐个参数的禁用值,最后是逐个参数的允许值:
comment('cmd; \ param1_prohib1 param1_prohib2 ... param1_prohibN | \ param2_prohib1 param2_prohib2 ... param2_prohibN | \ ... paramN_prohib1 paramN_prohib2 ... paramN_prohibN ; \ param1_permit1 param1_permit2 ... param1_permitN | \ param2_permit1 param2_permit2 ... param2_permitN | ... paramN_permit1 paramN_permit2 ... paramN_permitN')
sesudo 实用程序通过以下方式检查用户输入的每个参数:
如果所有参数都与允许的参数匹配,但任何参数与禁止的参数都不匹配,则 sesudo 执行该命令。
示例:设置允许用户运行 net send 的任务指派
以下过程说明了如何让用户 Takashi 执行 net send 命令,以及如何防止他执行 net start 命令:
“授权和指派”菜单选项将显示在左侧。
将显示“任务指派”页面。
将显示“创建任务”页面。
窗口项 |
值 |
---|---|
名称 |
NET |
数据 |
net;start;send * |
所有者 |
nobody |
默认访问权限 |
None(清除选项) |
授权的访问者 |
USER: Takashi Allow: Execute |
单击“保存”。
将创建新的任务指派 (SUDO) 记录。
sesudo -do NET start
此时出现以下消息:
sesudo:不允许使用“start”作为参数编号 1。
注意:net start 将不执行,因为已将其定义为禁止的值。
sesudo -do NET send comp message
应该执行该命令。
示例:授权用户使用交互式应用程序执行特权操作
用户可以使用任何管理单元 MSC 模块执行高权限操作,如下例所示:
“授权和指派”菜单选项将显示在左侧。
将显示“任务指派”页面。
将显示“创建任务”页面。
窗口项 |
值 |
---|---|
名称 |
服务 |
数据 |
c:\winnt\system32\mmc.exe |
所有者 |
nobody |
选项 |
Interactive(选中选项) |
默认访问权限 |
None(清除选项) |
授权的访问者 |
USER: Tori Allow: Execute |
单击“保存”。
将创建新的任务指派 (SUDO) 记录。 “交互式”选项提供了启动服务后登录者可以使用的桌面用户界面。 仅在服务作为 LocalSystem 帐户运行时,该选项才可用。
sesudo -do services
版权所有 © 2013 CA。
保留所有权利。
|
|