隨記:linux-PAM簡介

一.PAM簡介

Linux-PAM(linux可插入認證模塊)是一套共享庫,使本地系統管理員可以隨意選擇程序的認證方式.

換句話說,不用(重新編寫和)重新編譯一個包含PAM功能的應用程序,就可以改變它使用的認證機制.

這種方式下,就算升級本地認證機制,也不用修改程序.

PAM使用配置文件/etc/pam.conf(或/etc/pam.d/下的文件),來管理對程序的認證方式.應用程序調用相應的配置文件,從而調用本地的認證模塊.模塊放置在/lib/security下,以加載動態庫的形式進行調用(dlopen(3)).

像我們使用su命令時,系統會提示你輸入root用戶的密碼.這就是su命令通過調用PAM模塊實現的.

二. PAM的配置文件介紹

1.PAM配置文件的格式

PAM配置文件有兩種寫法:

      a.一種是寫在/etc/pam.conf中.格式如下:

ftpd                auth                    required                   pam_unix.so             nullok

服務名            模塊類型               控制標記                   服務模塊/路徑           模塊參數

ftpd:表示服務名,即針對哪一個服務進行的認證配置.

auth:爲模塊類型.PAM有四中模塊類型,分別代表不同的任務類型.

required:爲控制標記.PAM用來處理和判斷各個模塊的返回值

pam_unix.so:爲模塊路徑.即要調用模塊的位置.

nullok:爲模塊參數,即傳遞給模塊的參數.

 

b.另一種寫法是,將PAM配置文件放到/etc/pam.d/目錄下,使用應用程序名作爲配置文件名.如:

vsftpd,login等.配置文件的格式與pam.conf類似,只是少了最左邊的服務名列.如:/etc/pam.d/cups

#%PAM-1.0

auth    required        pam_stack.so service=system-auth

account required        pam_stack.so service=system-auth

 

2.PAM的模塊類型

Linux-PAM有四種模塊類型,分別代表四種不同的任務.它們是:認證管理,賬號管理,會話管理和密碼管理.一個類型可能有多行,它們按順序依次由PAM模塊調用.

auth:認證管理.用來對用戶的身份進行識別.如:提示用戶輸入密碼,或判斷用戶是否爲root等.

account:賬號管理.對帳號的各項屬性進行檢查.如:是否允許登錄,是否達到最大用戶數,或是root用戶是否允許在這個終端登錄等.

session:會話管理.這個模塊用來定義用戶登錄前的,及用戶退出後所要進行的操作.如:登錄連接信息,用戶數據的打開與關閉,掛載文件系統等.

password:密碼管理.使用用戶信息來更新.如:修改用戶密碼.

 

3.PAM的控制標記

PAM使用控制標記來處理和判斷各個模塊的返回值.

required:這個標記表示需要模塊返回一個成功值.如果返回失敗,則繼續進行同類型的下一個操作,當所有此類型的模塊都執行完後.才返回失敗值.:

requisite:與required相似,但是如果這個模塊返回失敗,則立刻嚮應用程序返回失敗,表示此類型失敗,不再進行同類型後面的操作.

sufficient:如果此模塊返回成功,則直接嚮應用程序返回成功,表示此類型成功.不再進行同類型後面的操作.如果失敗,也不會影響這個類型的返回值.

optional:使用這個標記的模塊,將不進行成功與否的返回.一般返回一個PAM_IGNORE(忽略).

 

4.模塊路徑

模塊路徑.即要調用模塊的位置. 一般保存在/lib/security/

如: pam_unix.so同一個模塊,可以出現在不同的類型中.它在不同的類型中所執行的操作都不相同.這是由於每個模塊針對不同的模塊類型,編制了不同的執行函數.

 

5.模塊參數

模塊參數,即傳遞給模塊的參數.參數可以有多個,之間用空格分隔開,如:

password   required   pam_unix.so nullok obscure min=4 max=8 md5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章