Solaris Resource Manager 1.3 系統管理指南

授權管理

lnode 的主要管理責任有賴於中央管理員來肩負。當 Solaris Resource Manager 設立數種用來指派與管理的資源控制時,也可以選擇性地將特定的管理權限指派給非 root 的使用者,以分散管理使用者的負擔。

管理權限可以藉由設定使用者 uselimadmadmin 旗標的方式來指派給適當的使用者。子管理員是 uselimadm 旗標為 set 的一個用戶,其具有與超級使用者相同的 limadm 程式管理特權。一個 admin 旗標為 set 的群組標頭使用者稱為一位群組管理員,並且擁有(如下所述)管理其排程群組內其他使用者的權限。

中央管理員可以建立與限制以 root 為雙親的排程群組來控制整體系統資源的分割。群組管理員一般實行相同種類的資源控制,但限制在它們排成群組裡的使用者。群組管理員所做的資源 分配,只限於已經被分配給群組的資源。(例如,已分給群組標頭 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 使用者密碼的人都會取得無限制的系統資源存取權,就好比是中央管理員一樣。

Solaris Resource Manager 內的使用者可以藉由設定其 lnode 內的特定系統旗標,以取得數種特別的管理權限。這樣有助於加強一個系統的安全性,因為可以讓授權的使用者進行必要的任務,而又不需要賦予他們超級使用者的權限。

其他某些權限則必須謹慎處理,不可隨意賦予他人,因為這樣一來會使授權的使用者取得太廣泛的權力。擁有特殊權限的使用者密碼應該小心保護,正如必須小心保護超級使用者的密碼一樣。

Solaris Resource Manager 會考慮到數項安全上的顧慮以避免授予子管理員的管理權限遭到誤用:請參閱一個典型的應用程式伺服器lnode 維護程式

在某些情況下,中央管理員如果在操控排程樹的結構時不夠小心,很可能會造成系統安全上的問題。因此中央管理員必須清楚地了解應如何正確修正排程樹,並且知道如何偵測目前結構中的潛在問題。請參閱 排程樹結構 中的詳細說明。

建議的群組管理員 lnode 結構

群組管理員可能面臨的一個問題是,他們受到和其群組成員一樣的群組限制。例如,如果群組標頭 lnode 有一個處理限制,那麼該限制也會控制整個群組所用的處理數目,包括群組標頭在內。除非進一步加以限制,否則排程群組中任何使用者都可以設法超出自己的處理限制,不讓群組管理員建立新的處理。

要防止這種情況,群組管理員就必須對每一位群組成員設定個別的限制。然而,這些限制可能要非常嚴格,才能達到預期的效果。同時迫使子管理員去管理個別的限制,也不符合 Solaris Resource Manager 階層式資源控制的目標。

另外一個解決這個問題的方法是,讓中央管理員變更其群組中的 lnode 結構。在群組管理員的 lnode 下方建立一個“控制”lnode,作為唯一的子 lnode,而不得把使用者直接放置於群組管理員自己的 lnode 下方。這樣一來,就會產生如下所示的 lnode 結構。

圖 5-1 群組管理員 lnode 結構

圖表顯示在群組管理員的 lnode 僅作為子代時建立的控制 lnode。 使用者隨後即可製作控制 lnode 的子代。

參看上圖,群組管理員帳號的 UID 會對應標示為"Actual"的 lnode 帳號,也就是樹形的雙親。這也就是有 admin 旗標設定的 lnode。接著會為"Control" lnode 建立一個虛擬帳號,沒有登入會在這帳號上被准許。標示為"A"、"B"和"C"的 lnode 會與群組管理員控制之下的使用者互相對應。

在此例中,"Actual" lnode 的處理限制可以為 100,而"Control" lnode的限制為 90,同時個別使用者的限制則設為 0。這個設定可以確保即使在使用者 A、B 及 C 使用一共 90 個處理(允許的全部)的情形下,子管理員仍然可以另外建立 10 個處理。

不過使用者還是可以互相阻止對方建立處理,唯一的辦法是對那些使用者設定個別的限制。唯一避免這發生的方法,是設定個別使用者的權限。但是在這個例子中,各個限制可以設定為 40,仍然可以在防止單一使用者完全佔用他人資源的同時稍留一點空間。

同時注意,在這一個例子中,中央管理員能為新使用者建立額外的 lnodes。這些 lnodes 是 'Control' lnode 的子節點,並且中央管理員不用重新平衡限制。