當 Solaris Resource Manager 帳號管理 PAM 模組取得控制權時,可以:
決定 Solaris Resource Manager 是否已經安裝與啟動,否則會要求 PAM 系統忽略此模組,
決定使用者是否擁有一個 lnode,否則會呼叫一個可由管理員設置的 'no lnode' 指令集,
決定是否使用者有權使用所要求的服務及裝置,
決定是否使用者已經超出警告的限制,否則拒絕其登入要求,
呼叫一個可由管理員設置的 'every login' 指令集。
如果上述任何一個步驟行不通,其餘的步驟也不會執行,Solaris Resource Manager 帳號管理 PAM 模組會回絕使用服務的要求。解釋訊息可能會透過服務來傳給使用者。
預設的 'missing lnode' 指令集會為使用者建立一個 lnode,並且遞送郵件以通知系統管理員。預設的指令集為 /etc/srm/nolnode,但您也可以編輯 /etc/pam.conf 檔並且變更 Solaris Resource Manager 帳號管理模組文字行中的 nolnode 選項值以改變預設。'every login' 指令集通常沒有設置。可以在 [[/etc/pam.conf]] 的任何 Solaris Resource Manager 帳號管理模組中新增一個 everylogin=pathname 選項以設置 'every login' 指令集。指令集會以 root 使用者的身份來調用。標準輸入、輸出及錯誤會被關閉。如果一個指令集不為零,存取會被拒絕。以環境變數來傳遞所有資訊,直接從下列服務傳給 PAM 的資訊衍生而出:
提供給程式的登入名稱。藉由在密碼對映中查詢此名稱以辨證;如果找不到,帳號管理模組便會回報一個錯誤內碼給 PAM。
被辨證的使用者 UID。就變更 UID 的服務(如su)而言,即為引動此服務的使用者 UID;就設定 UID 的服務(如login)而言,即為目標 UID(如 USER 的)。
就整個網路的存取嘗試而言,即為包含發出嘗試的主機名稱。否則其值會因程式的執行方式各異而有所不同。
存取服務的名稱,例如 rsh, login, ftp 等等。
在其上調用服務的 TTY 名稱。某些沒有控制終端機的服務(如 ftp),則會以稍有意義的內容來填寫此變數(例如ftp12345,其中 12345 是 ftpd 的處理識別器 (PID));否則讓它保持空白或是以服務名稱取而代之。
如果 pam.conf 檔中指定了debug,DEBUG 即設定為真;否則設定為假。不設定其他環境變數,所以任何指令集都必須在必要時設定其本身的 PATH 變數。
預設的 'no lnode' 指令集在預設的排程群組中建立 lnode(如果密碼對映中有此類使用者,則為 other,否則為 root。)並且遞送給系統管理員一個提醒郵件以將新的 lnode 移至排程階層中的適當位置。若需一個指令集範例,請參見 預設 'no lnode' 程序檔。
Solaris Resource Manager PAM 模組會查詢裝置階層的終端機及服務名稱,然後若超出限制或是裝置旗標求值到 'set' 的話,便回傳一個 'permission denied' 給其調用程式。
所檢視的裝置類目為終端機名稱 terminal,以及所要求的服務類型 services。例如,rlogin 可能會嘗試使用網路裝置群組中的檔案,因此為使用者測試的旗標(假設所有旗標已設定為群組)將如下圖所示。依照順序檢查這些旗標:
terminal.flag.network
terminal.flag.all
services.flag.rlogin
services.flag.netservices
只有在所有存取都求值到 set(開啟)的時候才會被准許。此外,會依照對應的類目來檢查限制(terminal及services)。