Solaris Resource Manager 1.3 系统管理指南

委任管理

中央管理员对 lnode 的管理负主要责任。Solaris Resource Manager 推出了可以被分配和管理的若干资源控制,并可有选择地向非根用户分配特定的管理特权,从而分摊用户管理的任务。

通过设定用户的 uselimadmadmin 标志可向相应的用户分配管理特权。一个次级管理员是一个具有已设定 uselimadm 标志的用户,与超级用户具有相同的 limadm 程序管理特权。一个具有已设定 admin 标志的组长称做组管理员,并比在同一调度组中的用户具有更高的特权 (如下所述)。

中央管理员为将根作为其父节点的调度组创建和指派限制,从而对系统资源的整体分割进行控制。组管理员一般也要执行同样类型的资源管理控制,但仅限于对他们自己调度组内的用户。组管理员可以分配的资源仅限于分配给该组的资源(例如,那些已分配给组长 lnode 的资源)。注意,组管理员可以将 admin 标志指派给其调度组内的任意用户,以将自己的管理责任进一步往下分派。

组管理员可以执行以下任务:

  1. 更改其调度组内任意用户的资源限制。

    注意,尽管某个组管理员可以将某个资源的限制设置为大于组的限制,但组成员所消耗的资源,照样被认为是由组长消耗的,而对单个用户的限制在其试图超过组长限制时会强制实行。

  2. 更改其调度组内的任何 lnode 的任何标志或属性(除 flag.uselimadmcpu.usage 以外)。

    组管理员执行标志分配还受一个限制,即不能把组管理员所没有的特权分配给某个用户。采用这一限制的目的是防止组管理员绕过 Solaris Resource Manager 内的安全。

组管理员的主要工具是 limadm(1MSRM)limreport(1SRM) 命令。limadm 程序可对一个或多个现有用户的限制、标志和其它 Solaris Resource Manager 属性进行操作。与报告生成器 limreport 相结合,这些工具就能使调度组实现自发的自我管理,而无需干扰其它离散的调度组的资源分配或管理。

超级用户豁免于所有的资源限制,无论其标志设置如何,均总是拥有完全的管理特权,借助 limadm 命令,可以添加、删除和更改用户帐户,且能够更改任何 lnode 的利用率、限制或者标志值。

安全

Solaris Resource Manager 对 Solaris 系统管理有着广泛的影响,因而安装和维护时要确保系统的安全,这一点十分重要。

系统管理员可以采用若干种方法来确保 Solaris Resource Manager 系统的安全能得到维护。对于任何 Solaris 系统来说,最重要的就是要确保 root 口令的机密性。掌握 root 用户口令的任何人均可象中央管理员一样不受限制地访问系统资源。

通过在用户各自的 lnode 中设定特定的系统标志,就能向 Solaris Resource Manager 中的用户赋予若干种特殊管理特权。这些特权有助于提高系统的安全性,因为它们可使代理用户无需获得完全超级用户特权就能执行必要的任务。

这些特权中有一些不能轻率地赋予,因为它们可向被赋予特权的用户提供广泛的功能。拥有特殊特权的用户的口令必须得到严格的保护,就象超级用户的口令应该得到保护一样。

在 Solaris Resource Manager 中可以采取若干种安全预防措施预防授予次级管理员的管理特权的错误使用:请参阅典型的应用程序服务器lnode维护程序

在某些情况下,中央管理员可以在对调度树的结构进行粗心操作时使系统对安全破坏保持开放。中央管理员必须了解如何正确修改调度树和如何在当前结构中检测潜在的问题,这一点非常重要。详细介绍,请参阅 调度树结构

推荐的组管理员 lnode 结构

组管理员可能遇到的一个问题就是他们与组成员共享组限制。例如,如果组长 lnode 对组设定了进程限制,则该限制就能控制包括组长在内的整个组所能使用的进程的数目。除非进一步限制,否则调度组内的任何用户都能不让组管理员只通过简单地超过进程限制就可以创建新的进程。

预防这种情况的一种方法是,由组管理员针对每个组成员分别设定限制。但为了有效起见,这些限制可能必须要有过度的限制作用。此外,强迫某个组管理员管理每个限制也与 Solaris Resource Manager 的分层结构资源控制的目标相冲突。

解决这一问题的一种替代方法是,由中央管理员修改组中的 lnode 的结构。在组管理员的 lnode 的下方创建一个“控制” lnode,作为唯一的子 lnode,而不是把用户直接放置到组管理员自己的 lnode 下方,这样,用户就被设定为控制 lnode 的子节点。这样创建的结构如图所示。

图形 5-1 组管理员 lnode 结构

图表显示,在组管理员 lnode 的下方创建一个“控制”lnode 作为唯一的子 lnode。这样,用户就被设定为控制 lnode 的子节点。

如上图所示,组管理员帐户的 UID 对应于标志为“实际的”lnode(即树的父节点)的 UID。这就是具有设定 admin 标志的 lnode。可以为“控制”lnode 创建一个模拟帐户。在这个帐户上不允许登录许可。标志为 'A'、'B' 和 'C' 的 lnode 对应于在组管理员控制之下的用户。

在这种情况下,针对“实际的”lnode 的进程限制可能是 100,而“控制”lnode 的进程限制可能是 90,针对每个用户的限制设定为 0。这种设置可确保即使用户A、B和C使用总共 90 个进程(即允许的全部进程),次级管理员仍可创建 10 个进程。

但是,在这种情况下,用户仍可能互相终止对方创建进程。预防这种情况的唯一方法就是为这些用户设定单独的限制。在本例中,这些限制可分别设定为 40,这样在保证灵活性的同时,还可预防某个单一用户完全关闭其他用户的进程。

还要注意,在此例中,中央管理员可以为新用户创建额外的 lnode,作为“控制”lnode 的子节点,而无须重新平衡限制。