PAM pluggable authentication modules
由sun提出的一種認證機制。
經過提供一些動態連接庫和一套統一的API,將系統提供的服務和該服務的認證方式分開,使得系統管理員能夠靈活地根據須要給不一樣的服務配置不一樣的認證方式而無需更改服務程序,同時也便於向系統中添加新的認證手段。session
1、PAM的結構
系統管理員經過PAM配置文件來制定認證策略,即制定什麼服務該採用什麼樣的認證方法;應用程序開發者經過在服務程序中使用PAM API而實現對認證方法的調用;而PAM服務模塊(service module)的開發者利用PAM API(service module API)來編寫認證模塊(主要是引出一些函數pam_sm_xxxx()供libpam調用),將不一樣的認證機制(好比傳統的Unix認證方法、Kerberos等)加入到系統中;PAM核心庫(libpam)則讀取配置文件,以此爲根據將服務程序和相應的認證方法聯繫起來。
2、PAM支持的四種管理界面:
一、認證管理(authentication management)
主要是接受用戶名和密碼,進而對該用戶的密碼進行認證,並負責設置用的一些祕密信息。
二、帳戶管理(account management)
主要是檢查帳戶是否被容許登陸系統,帳戶是否已通過期,帳戶的登陸是否有時間段的限制等等。
三、密碼管理(password management)
主要是用來修改用戶的密碼。
四、會話管理(session management)
主要是提供對會話的管理和記帳(accounting)。ide
3、PAM的文件:
/etc/pam.conf或者/etc/pam.d/PAM配置文件
/usr/lib/security/pam_*.so可動態加載的PAM service module
對於Redhat,其目錄不是/usr/lib,而是/lib。函數
4、PAM的配置:
PAM的配置是經過單個配置文件/etc/pam.conf。Redhat還支持另一種配置方式,即經過配置目錄/etc/pam.d/,且這種的優先級要高於單個配置文件的方式。
一、使用配置文件/etc/pam.conf
二、使用配置目錄/etc/pam.d/(只適用於Redhat Linux)開發