判斷指令的必要授權

許多系統管理應用程式都需要有授權,才能適當地執行。雖然專用指令資料庫已提供一組預先定義的指令,但是系統管理者可能還是需要新增其環境的特定項目。專用指令資料庫容許新增項目至資料庫。適當的授權必須列在 accessauths 屬性中,才能存取該指令。

在使用加強型 RBAC 架構的 AIX® 作業系統中,有兩種方法可以使用及檢查授權:

  • Access Auths (存取授權):指定於專用指令資料庫的屬性,包含以逗點區隔的授權名稱清單。容許其目前階段作業具有清單中其中一種授權的使用者執行此指令。系統載入器會在執行受保護的專用可執行檔時進行這項檢查。
  • Check Auths (checkauths()):使用 checkauths() API,可以透過程式設計方式來檢查特定授權或授權清單。指定的授權會依據目前階段作業內角色具有的授權來進行檢查。根據這項檢查的結果,程式可能會執行特許作業。

將指令新增至專用指令資料庫之前,必須先判斷授權集,以確定是否容許執行指令。程式或應用程式可能會在內部執行其他的授權檢查。這需要判斷處理程序中所使用而且可以在建立自訂角色時指派的授權清單。

下列基本策略可用來判斷指令的必要授權:
  1. PV_ROOT 專用權指派給呼叫 shell,或假設角色具有 aix 授權。
    重要: 在廣域 WPAR 中,必須將 PV_ROOT 專用權指派給呼叫 shell 處理程序的有效且最大的專用權集。在系統 WPAR 內,此專用權也必須新增至處理程序的繼承專用權集。
  2. 執行指令。
  3. 記錄用於處理程序的授權。
  4. Access Auths 下報告的授權,儲存至專用指令資料庫中指令的 accessauths 屬性內。在系統中建立角色時,可以使用 Check Auths 下報告的授權。
因為 PV_ROOT 專用權已指派給 shell,或假設角色具有 aix 授權,而且因為這兩種方法的權力都非常大,所以應該在受管制的環境中執行這些步驟。此外,執行指令所產生的部分系統影響,可能會影響到其他使用者。實際上,這就像是嘗試錯誤法程序。為了取得完整的授權集,可能需要使用不同的旗標和選項來反覆地執行指令,且長時間執行的應用程式可能需要一段長時間才能執行完成。使用下列其中一項程序,可以輕易地收集到處理程序的必要授權集,程序可由具有適當權限的管理者執行:
traceauth
指定引數 (即要執行的指令)。traceauth 指令會執行指令,並記錄在處理程序使用期限內使用的兩種類型授權。指令完成時,traceauth 指令會顯示在 stdout 上使用的授權。
lssecattr
如果指令是長時間執行的處理程序,則可以使用 lssecattr 指令來顯示處理程序所使用的授權。若要啟用系統中的授權追蹤,請執行下列指令:

setrunmode –c; setsecconf –o traceauth=enable

若要顯示用於處理程序的授權,請如下所示執行 lssecattr 指令,替換要監視的處理程序的 PID:

lssecattr –p –A PID

判斷必要授權之後,請執行新增指令至特許指令資料庫中的步驟,將指令新增至專用指令資料庫。然後,應由授權使用者執行指令,以驗證是否適當地執行。