Authentication
PAM - 必需且足夠的控制標誌
我正在研究 PAM,但我對某些控制標誌組合的含義有點不知所措。從 Red Hat 文件中,我們有:
- 此類 PAM所需
的失敗最終將導致 PAM-API 返回失敗,但僅在呼叫了剩餘的堆疊模組(針對此服務和類型)之後
- 但是,如果這樣的模組返回失敗,則需要將控制權直接返回給應用程序。
- 這種模組的足夠
成功足以滿足模組堆棧的身份驗證要求(如果先前所需的模組失敗,則忽略該模組的成功)。該模組的失敗對於滿足該類型已成功的應用程序而言並不被認為是致命的。如果模組成功,PAM 框架立即將成功返回給應用程序,而不嘗試任何其他模組。
所以,在我的理解中,如果一個模組
requisite
發生故障,整個模組堆棧都不會被解析,控制權會立即返回給應用程序。如果一個模組sufficient
成功,其餘的模組堆棧將不會被解析,控制權將立即返回給應用程序。如果一個模組required
失敗,整個堆棧都會被解析。現在,我無法理解當某個模組
required
失敗而另一個模組sufficient
成功時會發生什麼行為。
PAM 依次遍歷堆棧中的項目。它只記住它所處的狀態(成功或拒絕,成功意味著到目前為止的成功),而不是它如何達到那個狀態。
如果標記
sufficient
成功的項目,PAM 庫將停止處理該堆棧。無論是否有以前的required
項目,都會發生這種情況。此時,PAM 返回目前狀態:如果沒有前required
一項失敗則成功,否則拒絕。同樣,如果標記為
requisite
失敗的項目,PAM 庫將停止處理並返回失敗。在這一點上,前一個required
項目是否失敗是無關緊要的。換句話說,
required
不一定會導致整個堆棧都被處理。這只是意味著繼續前進。