上一主题: 避免用户运行系统的 su 实用程序下一主题: 定义 SUDO 记录


设置 Surrogate DO 工具

操作员、生产人员和最终用户通常需要执行只有超级用户才能执行的任务。 这些任务包括下面的内容:

传统的解决方案是向所有这些用户提供超级用户密码,这会危及到站点的安全。 安全的替代方法(即保持密码的保密性)会使系统管理员因处理用户要执行例行任务的合法请求而导致负担过重。

Surrogate DO (sesudo) 实用程序解决了这个难题。 它允许用户执行 SUDO 类(其中每条记录包含一个脚本)中定义的操作,指定哪些用户和组可以运行脚本,以及基于这一目的借给他们必要的权限。

例如,要以用户 root 的身份定义一个挂接 CD‑ROM 的 SUDO 资源,请输入以下命令:

newres SUDO MountCd data('mount /usr/dev/cdrom /cdr') targuid(root)

该 newres 命令将 MountCd 定义为受保护的操作,某些获得 root 权限的用户才可执行。 该示例使用 targuid(root) 参数指出 root 是目标用户(借出权限的用户)的 ID。 实际上,在此示例中不需要该参数,因为 root 是 SUDO 记录的默认目标 ID

重要说明! 请在数据属性中使用完整的绝对路径名。 相对路径名可能会意外地执行未受保护的目录中植入的特洛伊木马程序。

此外,通过使用 authorize 命令,可以授权用户执行 MountCd 操作。 例如,要允许用户 operator1 挂接 CD‑ROM,请输入下列命令:

authorize SUDO MountCd uid(operator1)

还可以使用 authorize 命令明确防止用户执行受保护的操作。 例如,要防止用户 operator2 挂接 CD‑ROM,请输入下列命令:

authorize SUDO MountCd uid(operator2) access(None)

运行 sesudo 实用程序将执行受保护的操作。 例如,使用下列命令,用户 operator1 将挂接 CD‑ROM:

sesudo MountCd

sesudo 工具首先检查是否授权用户执行 SUDO 操作,然后,如果授权用户使用资源,则执行资源中定义的命令脚本。 在我们的示例中,sesudo 检查 operator1 是否有权执行 MountCd 操作,然后调用命令 mount /usr/dev/cdrom /cdr。

如果您希望 sesudo 在执行前请求用户的密码,请使用包括 PASSWORD 参数的命令来定义或修改 SUDO 记录。 如果不使用该参数,则用户能否执行该命令只取决于 SUDO 对象的访问规则。

注意:有关 sesudo 实用程序与管理 SUDO 记录(editres 命令)的详细信息,请参阅《参考指南》