<b>Linux-PAM</b>
一.PAM簡介
Linux-PAM(linux可插入認證子產品)是一套共享庫,使本地系統管理者可以随意選擇程式的認證方式.不用(重新編寫和)重新編譯一個包含PAM功能的應用程式,就可以改變它使用的認證機制.
PAM使用配置檔案(/etc/pam.d/下的檔案),來管理對程式的認證方式.應用程式調用相應的配置檔案,進而調用本地的認證子產品.子產品放置在/lib/security下,以加載動态庫的形式進行調用.
二. PAM的配置檔案介紹
1. PAM配置檔案的格式
PAM配置檔案放到/etc/pam.d/目錄下,使用應用程式名作為配置檔案名.如:sshd,login等.
如:
[root@station2 ~]# vi /etc/pam.d/cups
#%PAM-1.0
auth include system-auth
account include system-auth
2. PAM的子產品類型
PAM有四種子產品類型,分别代表四種不同的任務.它們是:認證管理,賬号管理,會話管理和密碼管理.一個類型可能有多行,它們按順序依次由PAM子產品調用.
l auth:用來對使用者的身份進行識别.如:提示使用者輸入密碼,或判斷使用者是否為root等.
l account:對帳号的各項屬性進行檢查.如:是否允許登入,是否達到最大使用者數,或是root使用者是否允許在這個終端登入等.
l session:定義使用者登入前的,及使用者退出後所要進行的操作.如:登入連接配接資訊,使用者資料的打開與關閉,挂載檔案系統等.
l Password:使用使用者資訊來更新.如:修改使用者密碼.
3. PAM的控制标記
PAM使用控制标記來處理和判斷各個子產品的傳回值.
l required:這個标記表示需要子產品傳回一個成功值.如果傳回失敗,則繼續進行同類型的下一個操作,當所有此類型的子產品都執行完後.才傳回失敗值.
l requisite:與required相似,但是如果這個子產品傳回失敗,則立刻向應用程式傳回失敗,表示此類型失敗.不再進行同類型後面的操作.
l sufficient:如果此子產品傳回成功,則直接向應用程式傳回成功,表示此類型成功.不再進行同類型後面的操作.如果失敗,也不會影響這個類型的傳回值.
l optional:使用這個标記的子產品,将不進行成功與否的傳回.一般傳回一PAM_IGNORE(忽略).
4. 子產品路徑
子產品路徑.即要調用子產品的位置. 一般儲存在/lib/security/下,如: pam_unix.so同一個子產品,可以出現在不同的類型中.它在不同的類型中所執行的操作都不相同.這是由于每個子產品針對不同的子產品類型,編制了不同的執行函數.
5. 子產品參數
子產品參數,即傳遞給子產品的參數.參數可以有多個,之間用空格分隔開,如:
password required pam_unix.so nullok obscure min=4 max=8 md5
三.常用PAM子產品
1. pam_unix.so子產品:
auth類型: 提示使用者輸入密碼,并與/etc/shadow檔案相比對.比對傳回0(PAM_SUCCESS).
account類型: 檢查使用者的賬号資訊(包括是否過期等).帳号可用時,傳回0.
password類型: 修改使用者的密碼. 将使用者輸入的密碼,作為使用者的新密碼更新shadow檔案
2. pam_cracklib.so子產品:
password類型: 這個子產品可以插入到一個程式的密碼棧中,用于檢查密碼的強度.
這個子產品的動作是提示使用者輸入密碼,并與系統中的字典進行比對,檢查其強度.
3. pam_loginuid.so子產品:
session類型:用來設定已認證認證的程序的uid.以使程式通過正常的稽核(audit).
4. pam_securetty.so子產品:
auth類型: 如果使用者要以root登入時,則登入的tty必須在在/etc/securetty中法之前.
5. pam_rootok.so子產品:
auth類型: pam_rootok子產品用來認證使用者id是否為0.為0傳回”PAM_SUCCESS”.
6. pam_console.so子產品:
session類型: 當使用者登入到終端時,改變終端檔案檔案的權限.在使用者登出後,再将它們修改回來.
7. pam_permit.so子產品:
auth,account,password,session類型: pam_permit子產品任何時候都傳回成功.
8. pam_env.so子產品 :
auth類型: pam_env允許設定環境變量.預設下,若沒有指定檔案,将依據/etc/security/pam_env.conf進行環境變量的設定.
9. pam_xauth.so子產品:
session類型: pam_xauth用來在使用者之間轉發xauth-key.
#如果不進行pam_xauth,當使用者調用su成為另一個使用者時,這個使用者将不可以再通路原來使用者的X顯示,因為新使用者沒有通路顯示的key.pam_xauth解決了當會話建立時,從原始使用者到目标使用者轉發key和使用者退出時銷毀key的問題.
10. pam_stack.so子產品:
auth,account,password,session: pam_stack可以調用另一個服務.也就是多個服務可以包含到一個設定中.當需要修改時,隻修改一個檔案就可以了.
11. pam_warn.so子產品:
auth,account,password,session: pam_warn用來記錄服務,終端,使用者,遠端使用者和遠端主機的資訊到系統日志.子產品總是傳回PAM_IGNORE,意指不希望影響到認證處理.
本文轉自netsword 51CTO部落格,原文連結:http://blog.51cto.com/netsword/544185