适用于 Solaris 2.6 (SPARC 平台版) 的 Solaris Resource Manager 1.0 系统管理指南

代理管理

对 lnode进行管理的主要责任落在中央管理员的肩上。 Solaris Resource Manager 在引进多个可以进行指派和管理的资源控制的同时,还允许有选择地将某些管理特权赋予非根用户,从而分散用户管理的负担。管理特权可以赋予适合的用户,方法是设置用户的 uselimadm 或者 admin 标志。uselimadm 标志经过设置的用户,在 limadm(1MSRM)程序中拥有与超级用户一样的管理特权。而 admin 标志经过设置的组头目用户称作分管理员,拥有高于其调度组内用户的特权(下面有描述)。

中央管理员为将根为作其父节点的调度组创建和指派限制,从而对系统资源的整体分割进行控制。分管理员通常是进行同类的资源控制,但只限于其调度组内的用户。而由分管理员分割的资源,只限于业已分配组的资源(例如,分配给组头目 lnode 的资源)。注意,一个分管理员可以将 admin 标志指派给其调度组内的任意用户,从而进一步将其自己的管理责任分摊出去)。

分管理员可以进行如下操作:

  1. 创建和删除其调度组内用户的 lnode。

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

    注意,尽管某个分管理员可以将某个资源的限制设置为大于组的限制,但组成员所消耗的资源,也同样认为是组头目消耗的,而对单个用户的限制也同样适用于超过组头目限制的企图。

  3. 更改其调度组内的任意 lnode 的标志,只要该标志没有 noadmin 条件。无法向某一用户赋予分管理员尚未拥有的特权,在这一点上分管理员所进行的标志指派进一步受到限制。应用该限制,是为了避免分管理员绕过 Solaris Resource Manager 内的安全机制。

  4. 对拥有 selfadmin 条件的其自己的属性进行调整。

分管理员的主要工具是 limadm(1MSRM)limreport(1SRM) 命令。limadm 程序用于对一个或者多个现有用户的限制、标志以及其它 Solaris Resource Manager 属性进行操作。这些工具与报告生成器 limreport 一起使用,就可以让调度组进行自治性自我管理,而无需触动其它的不相交的调度组的资源分配或资源管理。

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

安全

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

有若干方法可供系统管理员用来确保 Solaris Resource Manager 系统的安全得到维护。对于任何 Solaris系统来讲,最为重要的是确保根口令的隐秘。任何人只要知道根用户的口令,就可以不受限制地访问系统的资源,就如同中央管理员一样。

有将若干特别的管理特权可以赋予 Solaris Resource Manager 内的用户,方法是设置这些用户所在的 lnode 内的某些系统标志。这样做可能有助于提高某一系统的安全性,因为这允许代理用户执行需要他们执行的任务,而无需赋予他们完全的超级用户特权。

不要轻易赋予某些特权,因为这会给予收到特权的用户广泛的权力。应当积极地对拥有特殊特权的用户的口令加以保护,就象保护根用户的口令一样。

有些时候,如果中央管理员对调度树的结构操作不慎,则有可能使系统的安全遭到破坏。让中央管理员了解如何正确地修改调度树,以及如何在当前的结构中监测到潜在的故障,均十分重要。

uselimadm admin 标志

中央管理员可以借助一个用户的 lnode 中的 uselimadm admin 标志,在 Solaris Resource Manager 内部指派管理特权。 limadm(1MSRM)命令使用 uselimadm 标志,使得用户拥有与中央管理员相同的管理特权。而如果为某一组头目设置 admin 标志,则使得该组头目拥有高于其所带领的组成员的管理特权,但不允许其对其组外的任何 lnode 的内容进行更改。

admin标志得到设置的组头目称作分管理员。在 Solaris Resource Manager 内可以采取多个安全防范措施,以避免分管理员滥用赋予其的管理特权:参考 "典型的应用程序服务器""Lnode 维护程序" ,了解详尽的解释。

分管理员删除 lnode 时,应当确保将子树从最低部的 lnode 往上全部删除。如果您从正要删除的子树的顶部开始,您就会丧失对所删除的 lnode 的子节点的控制,因为它们因其父节点被删除而遭到孤立。lnode 一旦遭到孤立,分管理员就无法对其进行更改,因为它们位于调度组之外。

建议的分管理员 lnode 结构

分管理员可能遇到的一个问题是,他们与其组成员共享组限制。例如,如果组头目 lnode 设置有进程限制,则该限制也控制着整个组所能使用的进程的数目,其中包括组头目。除非进一步加以限制,否则调度树的任意用户只要超过其自身的进程限制,就可以阻止分管理员创建新的进程。对此加以防范的一个方法就是让组管理员为每个组成员设置单个的限制。但是,这些限制如要发生作用,就不得不是过渡限制性的。另外,强迫分管理员管理单个的限制,有悖于 Solaris Resource Manager 的分层结构资源控制的目标。解决该问题的一个替代性方法就是让管理员改变其组的lnode 的结构。他们不是将用户直接置于其自身的 lnode 的下面,而是在其自身下面创建一个"控制"lnode,作为其唯一的子 lnode,然后使用户成为该控制 lnode 的子节点。这样就促成了所显示的结构。

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

Graphic

参考上图,分管理员帐户的 UID 与标记为 "实际的" 的 lnode,即树的父节点的 UID 相对应。这就是 admin 标记得到设置的 lnode。要为该"控制"lnode创建一个哑帐户。无需允许该帐户拥有登录权利。标记为 "A"、"B" 和 "C"的 lnode与分管理员控制下的用户相对应。

在这种情况下,"实际的" lnode 的进程限制可以是100,"控制"lnode 可以是90,而单个用户的限制设置为0。这样设置是为了确保,即使用户A、B 和 C 总共使用了90个进程(且全部得到允许),但分管理员仍旧可以创建10个进程。在这种情况下,用户仍旧有可能彼此阻止创建进程。对此加以防止的唯一方法是为这些用户设置单个限制。但在此例中,可以将限制设置为40,从而在防止单一的用户完全饿死其它用户的同时,仍旧留有灵活性。在此例中,请另外注意,分管理员可以为新的用户创建更多的 lnode,作为"控制"lnode 的子节点,而不必担心重新平衡的限制。