Solaris Resource Manager 1.3 系统管理指南

创建和删除 lnode

每创建一个新的用户,就应当创建一个相应的 lnode,并设置其限制和特权。在使用 Solaris Resource Manager 时,管理员应当在维护常规的 Solaris 口令数据库的同时,也对限制数据库进行维护。命令:

# limreport \!flag.real - uid lname

可以用来打印出没有对应 lnode 的任何用户的 UID 和登录名的列表。

在本版本中,用于创建和删除帐户的系统命令并不自动创建和删除 lnode。要由管理员来进行这些操作。但是,用户登录时,可以根据要求自动创建 lnode,请参阅 PAM 子系统,了解更多的细节。

类似地,在从口令图中删除一个用户帐户之前,应该使用 limadm(1MSRM) 命令从限制数据库中删除对应的 lnode。


注意:

在删除 lnode时,应确保从最底层的 lnode 向上删除子树。如果您从您正在删除的子树的顶端开始,您就可能丧失对被删除 lnode 的子节点的控制,因为当它们的父节点被删除时,它们就会孤立。


只要某个用户的 UID 被更改,就应该把该用户的 lnode 的内容复制到一个对应新的 UID 的新的 lnode上,并应该删除原始的 lnode。请参阅 复制和删除 lnode

任何子 lnode 均应当附加到新建的 lnode,或者附加到其它合适的父 lnode。命令:

# limreport 'sgroup==X' '%u\tsgroup=Y\n' uid | limadm set -u -f -

可以用来查找其调度组父节点的 UID 为 X 的所有 lnode,并使其成为 UID 为 Y 的 lnode 的子节点。

下面的步骤演示的是将某一 lnode 的 UID 从 X 更改为 Y。

  1. 保存所要更改 UID 的 lnode 的状态:

    # limreport 'uid==X' - lname preserve > /var/tmp/savelnode.X
    

  2. 将该用户的口令映射条目的 UID 从旧的值(X)更改为新的值(Y)。

  3. 为新的 UID 创建一个 lnode,恢复先前所保存的状态:

    # limadm set -f /var/tmp/savelnode.X
    

  4. 针对将要更改的 lnode(UID X)的所有子 lnode,将其调度组更改到新的 lnode(UID Y):

    # limreport 'sgroup==X' '%u\tsgroup=Y\n' uid | limadm set -u -f -  
    

  5. 确保当前没有进程附加到旧的 lnode 上。

  6. 使用 chown(2) 命令把原始 UID 所拥有的所有文件的所有者更改为新的 UID。例如:

    # find / -user X -print | xargs chown Y
    

  7. 删除旧的 lnode:

    # limadm delete X
    

lnode维护程序

limadm 命令是管理员用来维护用户的 lnode 的主要工具。该命令对某一列表的用户帐户的 Solaris Resource Manager 属性值进行更改。如果有任何用户的 lnode 并不存在,则先创建一个用缺省值填充的空白 lnode。新的 lnode 创建时带有如下属性:

新 lnode 的调度组被设置为用户“其它”(srmother)(如果存在一个针对该用户帐户的 lnode 的话)或者设置为 root lnode。

limadm 调用者需要足够的管理特权才能进行指定的更改。调用者必须是超级用户,有一个已设定的 uselimadm 标志,或者是一个只更改该调用者所属调度组成员的属性的组管理员。限制适用于组管理员对 limadm 的使用。

limadm 命令使得管理员可以删除某一 lnode,而不删除口令映射中相对应的用户帐户。要使用 limadm,调用者必须是超级用户或有一个已设置的 uselimadm 标志。如果调用者只有一个已设置的 admin 标志,那么调用者只可以修改以其为组长的调度组中的用户的 lnode。