Solaris Resource Manager 1.3 系統管理指南

PAM 子系統

從 Solaris 2.6 發行版開始,Solaris 系統支援可外掛辨證模組 (PAM)。每當一位使用者要求與變更或設定使用者的識別身份有關的操作時(例如登入系統,引動一個如 rcprsh 的 'r' 指令,使用 ftp 或使用 su等),就會使用一組可設置模組來提供辨證、帳號管理、信用管理以及階段作業管理等功能。Solaris Resource Manager 提供一個模組以進行登入會計的功能,並且修正 su 的行為。

用來要求操作的程式被稱為服務。

基本上整個 PAM 系統的說明文件都記載於線上支援頁 pam(3), pam.conf(4), pam_unix(5), 及 pam_srm(5SRM)。

Solaris Resource Manager PAM 模組提供帳號管理及階段作業管理功能。您可以編輯 /etc/pam.conf 檔以控制 PAM 的行為。就一般性的 Solaris Resource Manager 行為,Solaris Resource Manager PAM 模組應被設置為階段作業管理所有登入式服務的 requisite,並且作為所有 PAM 服務帳號管理的 requisite。通常 Solaris Resource Manager 模組應置於其他 requiredrequisite 模組之後,以及任何其他的 sufficientoptional 的模組之前。

安裝時,Solaris Resource Manager 會編輯 /etc/pam.conf 以提供一個適當的行為。它會為每個已設置階段作業或帳號管理的服務插入如下數行文字(包括 other):

login account requisite pam_srm.so.1 nolnode=/etc/srm/nolnode 
other session requisite pam_srm.so.1
other account requisite pam_srm.so.1 nolnode=/etc/srm/nolnode

第一行指定用於服務 登入, 模組 pam_share.so.1 用於提供帳戶管理功能,如果要成功 登入 則必須允許登入,而且必須已指定引數 nolnode=/etc/srm/nolnode。請參見 pam.conf(4) 以取得有關各種控制旗標的詳細說明(required、requisite、optionalsufficient 等)。

第二行意指登入服務會使用 pam_share.so.1 模組來進行階段作業管理。

帳號及階段作業管理模組所有支援的引數清單可於 pam_srm(5SRM)

帳號管理

當 Solaris Resource Manager 帳號管理 PAM 模組取得控制權時,可以:

  1. 決定 Solaris Resource Manager 是否已經安裝與啟動,否則會要求 PAM 系統忽略此模組,

  2. 決定使用者是否擁有一個 lnode,否則會呼叫一個可由管理員設置的 'no lnode' 指令集,

  3. 決定是否使用者有權使用所要求的服務及裝置,

  4. 決定是否使用者已經超出警告的限制,否則拒絕其登入要求,

  5. 呼叫一個可由管理員設置的 '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 的資訊衍生而出:

USER

提供給程式的登入名稱。藉由在密碼對映中查詢此名稱以辨證;如果找不到,帳號管理模組便會回報一個錯誤內碼給 PAM。

UID

被辨證的使用者 UID。就變更 UID 的服務(如su)而言,即為引動此服務的使用者 UID;就設定 UID 的服務(如login)而言,即為目標 UID(如 USER 的)。

RHOST

就整個網路的存取嘗試而言,即為包含發出嘗試的主機名稱。否則其值會因程式的執行方式各異而有所不同。

SERVICE

存取服務的名稱,例如 rsh, login, ftp 等等。

TTY

在其上調用服務的 TTY 名稱。某些沒有控制終端機的服務(如 ftp),則會以稍有意義的內容來填寫此變數(例如ftp12345,其中 12345ftpd 的處理識別器 (PID));否則讓它保持空白或是以服務名稱取而代之。

DEBUG

如果 pam.conf 檔中指定了debug,DEBUG 即設定為真;否則設定為假。不設定其他環境變數,所以任何指令集都必須在必要時設定其本身的 PATH 變數。

預設的 'no lnode' 指令集在預設的排程群組中建立 lnode(如果密碼對映中有此類使用者,則為 other,否則為 root。)並且遞送給系統管理員一個提醒郵件以將新的 lnode 移至排程階層中的適當位置。若需一個指令集範例,請參見 預設 'no lnode' 程序檔

PAM 與裝置群組互動

Solaris Resource Manager PAM 模組會查詢裝置階層的終端機及服務名稱,然後若超出限制或是裝置旗標求值到 'set' 的話,便回傳一個 'permission denied' 給其調用程式

所檢視的裝置類目為終端機名稱 terminal,以及所要求的服務類型 services。例如,rlogin 可能會嘗試使用網路裝置群組中的檔案,因此為使用者測試的旗標(假設所有旗標已設定為群組)將如下圖所示。依照順序檢查這些旗標:

只有在所有存取都求值到 set(開啟)的時候才會被准許。此外,會依照對應的類目來檢查限制(terminalservices)。

階段作業管理

就登入式服務(在 utmp 檔中建立一個登錄)而言,PAM 的階段作業管理功能以及帳號管理功能都會被調用,如果兩者都在 /etc/pam.conf 中設置的話。

Solaris Resource Manager 產品的階段作業管理負責處理裝置的收費。它會查看使用者是否已經超出連結時間限制,或是有 onelogin 旗標求值到 set 而且已經登入;如果是的話,便防止登入。

否則,它會生成一個訊息至 limdaemon 處理以通知它有關登入以及所登入終端機的設置成本。然後會通知 kernel 目前的處理是一個 'login header process ',而必須通知 limdaemon 處理它何時逾時。

然後limdaemon 處理會追蹤連結時間限制,並且在它們快要逾期時發出警告。