天天看點

RH423-7 Linux-PAM

 <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

繼續閱讀