pam 概述(整理中)
官方主頁: http://www.linux-pam.org/linux
PAM (Pluggable Authentication Modules )是由Sun提出的一種認證機制。它經過提供一些動態連接庫和一套統一的API,將系統提供的服務和該服務的認證方式分開,使得系統管理員能夠靈活地根據須要給不一樣的服務配置不一樣的認證方式而無需更改服務程序,同時也便於向系統中添加新的認證手段。PAM最初是集成在Solaris中,目前已移植到其它系統中,如Linux、SunOS、HP-UX 9.0等。session
PAM的安裝文件:
- /usr/lib/libpam.so.* PAM核心庫
- /etc/pam.conf ,/etc/pam.d/* PAM配置文件
- /usr/lib/security/pam_*.so 可動態加載的PAM service module
PAM配置管理
配置文件的語法
配置文件的語法以下所示:ui
- 該文件是由規則列表中,每一個規則一般是放在同一行,但可能會延長線的轉義結束: "<LF>"
- pam 規則對大小寫敏感
- 註釋前面加上'#'標記,並延伸到線下一個結尾。
/etc/pam.conf文件的語法ci
<pre> service type control module-path module-arguments </pre>get
從Linux-PAM 5.6版開始引入了一種基於目錄的配置方式,經過/etc/pam.d/目錄下的文件對PAM進行配置。目錄下的全部配置文件都以某個服務名命名(小寫)。 兩種配置方式不能同時起做用,也就是說,你只能使用其中一種對Linux-PAM進行配置,通常/etc/pam.d/優先。it
/etc/pam.d/目錄下的配置文件的語法和/etc/pam.conf文件的語法類似,形式以下:io
<pre> module-type control-flag module-path arguments </pre>登錄
這種配置方式與單一配置文件相比,具備很大的優越性:require
- 減小了配置錯誤的概率。
- 更易於維護。
- 能夠經過使用不一樣配置文件的符號鏈接決定系統的驗證策略。
- 能夠加快對於配置文件的解析。
- 能夠對單個的Linux-PAM配置文件設置不一樣的存取權限。
更易於軟件包的管理。module
配置實例
配置選項
type
PAM支持的四種管理類型:
- auth 認證管理: 接受用戶名和密碼,進而對該用戶的密碼進行認證,並負責設置用戶的一些祕密信息。
- account 賬戶管理: 檢查賬戶是否被容許登陸系統,賬號是否已通過期,賬號的登陸是否有時間段的限制等等。
- password 密碼管理: 主要是用來修改用戶的密碼。
- session 會話管理: 主要是提供對會話的管理和記帳(accounting)。
control
- required 表示本模塊必須返回成功才能經過認證,可是若是該模塊返回失敗的話,失敗 結果也不會當即通知用戶,而是要等到同一stack 中的全部模塊所有執行完畢再將失敗結果 返回給應用程序。能夠認爲是一個必要條件。
- requisite 與required相似,該模塊必須返回成功才能經過認證,可是一旦該模塊返回 失敗,將再也不執行同一stack內的任何模塊,而是直 接將控制權返回給應用程序。是一個必 要條件。注:這種只有RedHat支持,Solaris不支持。
- sufficient 代表本模塊返回成功已經足以經過身份認證的要求,沒必要再執行同一stack 內的其它模塊,可是若是本模塊返回失敗的話能夠 忽略。能夠認爲是一個充分條件。
- optional 代表本模塊是可選的,它的成功與否通常不會對身份認證起關鍵做用,其返回 值通常被忽略。
module-path
module-arguments