每當一位新的使用者被建立之後,就會建立一個對應的 lnode,也會設定其限制及權限。使用 Solaris Resource Manager 時,管理員應該維護限制資料庫,讓它和一般 Solaris 密碼資料庫保持一致。指令:
# limreport \!flag.real - uid lname |
可以用來列印一份 UID 及沒有對應 lnode 的任何使用者登入名稱清單。
用來建立與刪除帳號的系統指令不會自動建立與刪除 lnode。要由管理員自行決定是否執行這些動作。然而,使用者登入時可以要求自動建立 lnode,請參見 PAM 子系統 中的詳細說明。
同樣地,在從密碼映射中刪除使用者帳號之前,應該使用 limadm(1MSRM) 指令,從限制資料庫中移除對應的 lnode。
刪除 lnode 時請確定將子排程樹由最底層的 lnode 開始刪除。如果您從樹的最上層開始刪除,會失去對刪除的子 lnode 的控制權,因為它們會因為雙親被移除而成為孤兒。
如果一個使用者的 UID 有所變更,應該將其 lnode 的內容複製到對應至新號碼的一個新的 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。
儲存其中 UID 需要變更的 lnode 的狀態:
# limreport 'uid==X' - lname preserve > /var/tmp/savelnode.X |
將使用者密碼映射登錄的 UID 從舊的數值 (X) 變更為新的 UID (Y)。
建立一個新 UID 的 lnode,從先前儲存的狀態中回復:
# limadm set -f /var/tmp/savelnode.X |
若要變更 lnode 的所有子 lnode (UID X),將其排程群組變更為新的 lnode (UID Y):
# limreport 'sgroup==X' '%u\tsgroup=Y\n' uid | limadm set -u -f - |
確定目前沒有任何處理附加在舊的 lnode 之上。
使用 chown(2) 指令來將原始 UID 所擁有的所有檔案所有者變更為新的 UID。舉例來說:
# find / -user X -print | xargs chown Y |
刪除舊的 lnode:
# limadm delete X |
limadm 指令是管理員用來維護使用者 lnode 的主要工具。此指令會變更使用者帳號清單中的 Solaris Resource Manager 屬性值。如果任何使用者都沒有一個 lnode 存在的話,則會先建立一個預設的空白 lnode。新的 lnode 包含下列特性:
flag.real 設為 set;
cpu.shares 和 cpu.myshares 屬性設為 1;
旗標 uselimadm 和 admin 設為 clear;
所有其他旗標設為 inherit;
所有的限制及使用屬性設為 0。
如果該使用者帳號或是 root lnode 有一個 lnode 存在的話,新的 lnode 排程群組會設為 'other' 使用者 (srmother)。
limadm 調用程式需要充份的管理權限以執行指定的變更。它們必須是超級使用者,有一個為 set 的 uselimadm 旗標,或是一位群組管理員而只變更其排程群組成員的屬性。管理員應用限制到 limadm 的使用。
群組管理員無法變更自己屬性的數值。
一個使用者的 sgroup 屬性只能指派給調用程式本身或調用程式的排程群組成員的群組標頭。
群組管理員無法變更排程群組之外的使用者屬性。
無法修改任何用來儲存 usages 的屬性。如果沒有這個限制,那麼群組管理員可以減少使用其子中的一個,因而減少群組使用,以繞過其 lnodes 內的群組限制。
假如它們有一個旗標,用來評量非預設之外的數值,群組管理員只有在他們改變到相同非預設值時,才能為其他組員變更旗幟數值。
這可以確保那些權限被拒的群組管理員無法將權限賦予其影響下的任何使用者。
limadm 指令可以讓管理員移除一個 lnode 而不需要刪除密碼對映的使用者帳號。若要使用 limadm,調用程式必須是超級使用者或擁有一組 uselimadm 旗標。如果調用程式只有一個設定的 admin 旗標,那麼他們便只能刪除其作為群組標頭的使用者 lnode。