歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux-PAM認證方式

Linux-PAM認證方式

日期:2017/2/28 16:05:47   编辑:Linux教程

在Linux中執行有些程序時,這些程序在執行前首先要對啟動它的用戶進行認證,符合一定的要求之後才允許執行,例如login, su等

在Linux中進行身份或是狀態的驗證程序是由PAM來進行的,PAM(Pluggable Authentication Modules)可動態加載驗證模塊,因為可以按需要動態的對驗證的內容進行變更,所以可以大大提高驗證的靈活性。

Linux各個發行版中,PAM使用的驗證模塊一般存放在/lib/security/目錄下,可以使用ls命令進行查看本計算機支持哪些驗證控制方式,一般的PAM模塊名字例如pam_unix.so,模塊可以隨時在這個目錄下添加和刪除,這不會直接影響程序運行,具體的影響在PAM的配置目錄下。

PAM的配置文件一般存放在/etc/pam.conf文件,或者/etc/pam.d/目錄下。不過現在一般都會存放在/etc/pam.d/目錄下,之下是相對於每個需要被PAM控制的程序的獨立配置文件。當一個程序的驗證方式配置在pam.conf和pam.d/下某文件中出現時,以pam.d/目錄下文件為准。

查看某個程序是否支持PAM,使用命令:
  1. #ldd `which cmd` | grep libpam //cmd就代表查看的程序名
如果包含libpam庫,那麼該程序就支持PAM驗證。

舉個不是特別恰當的例子:PAM機制就相當於給一個房屋安裝防盜門,也就是對要進入這間屋子的人進行控制,不讓這間屋子處於一種任何人都可以隨便進入的狀態。

  1. 支持PAM驗證呢,就是表示這屋子給安裝防盜門預留了空位,
  2. 不支持PAM呢,就是說房子整個就是封閉的,人根本進不了,或者是房子基本沒有牆,不需要對出入進行限制。
  3. 在PAM機制中,PAM模塊就相當於是防盜門上可以安裝的各種鎖具,這些鎖具各有不同的特點和功能,你可以按需要安裝。
  4. 相同的,在PAM中,程序的配置文件就相當於這個防盜門的制作和安裝方案,安在什麼地方,在支持的各種鎖具中選擇合適的鎖,然後是開這些鎖的先後順序等這些具體使用規范。

PAM的各種模塊是開發人員預先開發好的,而我們要做的是合理的使用這些模塊,讓它們保護需要保護的程序。所以要關注的是PAM的配置文件目錄/etc/pam.d/

拿例子說事,以login這個登錄程序為例子,文件名是/etc/pam.d/login,內容是(其中一部分):
  1. auth optional pam_faildelay.so delay=3000000
  2. auth required pam_securetty.so
  3. auth requisite pam_nologin.so
  4. session [success=ok ignore=ignore module_unknow=ignore default=bad] pam_selinux.so close
  5. @include common-auth
從上面可以看出來,配置文件是按行指定的,每一行是一個完整的定義。 一般第一列指定的內容是:module-type,一共就只有4種,分別是:
  1. auth:對用戶身份進行識別,如提示輸入密碼,判斷是root否;
  2. account:對賬號各項屬性進行檢查,如是否允許登錄,是否達到最大用戶數;
  3. session:定義登錄前,及退出後所要進行的操作,如登錄連接信息,用戶數據的打開和關閉,掛載fs;
  4. password:使用用戶信息來更新數據,如修改用戶密碼。
第二列內容是:control-flag,有很多,不過一般常用的是4種,分別是:
  1. optional:不進行成功與否的返回,一般返回一個pam_ignore;
  2. required:表示需要返回一個成功值,如果返回失敗,不會立刻將失敗結果返回,而是繼續進行同類型的下一驗證,所有此類型的模塊都執行完成後,再返回失敗;
  3. requisite:與required類似,但如果此模塊返回失敗,則立刻返回失敗並表示此類型失敗;
  4. sufficient:如果此模塊返回成功,則直接向程序返回成功,表示此類成功,如果失敗,也不影響這類型的返回值。
第三列內容是PAM模塊的存放路徑,默認是在/lib/security/目錄下,如果在此默認路徑下,要填寫絕對路徑。 第四列內容是PAM模塊參數,這個需要根據所使用的模塊來添加。
Copyright © Linux教程網 All Rights Reserved