天天看點

nss pam

nsswitch&PAM認證架構

nsswitch

1.nsswitch:Name Service Switch,名稱服務開關;

 名稱解析:将人類使用的自然語言的符号轉換成計算機能夠使用的數字元号

2.應用程式的名稱解析流程:

 應用程式  --> nsswitch(配置檔案(查詢順序)) --> 對應庫檔案 --> 解析庫 --> 完成解析

3.nsswitch(network services switch 網絡服務轉換)

 中間層,本質上上是一些庫檔案。提供了為應用程式向不同的解析庫進行名稱解析的手段和順序。

 通用架構:為應用程式提供簡潔高效的接口;代理程式;

作用:承上啟下;

   承上:提供統一的配置和調用接口;

啟下:使用者與各種形式的存儲進行互動;

在Linux中實作名稱解析的通用架構:庫

/lib64/libnss*, /usr/lib64/libnss*

nss pam

架構:

libnss3.so

驅動(接口):

libnss_files.so, libnss_dns.so, libnss_db.so , ...

4.配置檔案:

 /etc/nsswitch.conf

檔案的格式:

db: store_format1 store_format2 ....

每種存儲中都可以根據查找鍵進行查找,并且會傳回狀态;

STATUS => success | notfound | unavail | tryagain

對于每種狀态傳回值,都有相應的行為(ACTION):

ACTION => return | continue

預設情況下,對于success狀态的行為是return;對于其他狀态的行為都是continue;

可以自定義狀态和行為的關系:

[STATUS=ACTION]

将此項放置于對應的存儲格式之後即可;

hosts: files nis [NOTFOUND=return] dns

5.getent指令:

 從某個解析庫LIB中獲的條目。該指令可以檢測nsswitch配置是否正确。

 getent - get entries from Name Service Switch libraries

 getent database [key]

 例如:

  #getent hosts

  #getent passwd

  #getent passwd root

  #getent hosts www.test.com

------------------------------------------------------------------------------------------

pam

pluggable authentication modules;通用的認證架構

1.其功能實作同樣通過庫;

 子產品的存放路徑:/lib64/security/*

nss pam

2.配置檔案:

 全局認證配置檔案:/etc/pam.conf

格式:

application type control module-path module-arguments

 為每種應用提供的專用的配置檔案:/etc/pam.d/*APP_NAME*

type control module-path module-arguments

3.配置檔案格式詳解

 type:

   檢查的功能類别,可能使用一個或者多個進行限定認證

auth:與賬号的認證和授權有關;

account:與賬号的管理相關,但與認證無關的功能;

password:與使用者修改密碼時密碼的複雜度有關的功能;

session:使用者擷取到服務之前或使用服務完成之後需要進行附加操作;

 control:

   同一種功能的多個檢查之間如何進行組合

required:如果本條目沒有被滿足,那麼最終本次的認證一定失敗;但是本次認證過程并不中斷;整個棧運作完畢之後必定傳回"認證失敗"的信号;具備隐形的一票否決;

requisite:如果本條目沒有被滿足,那麼本次認證一定失敗;而且整個棧立即終止并傳回"認證失敗"信号;顯示的一票否決;

sufficient:如果本條目的條件被滿足,且本條目之前沒有任何的required條目判斷為失敗,則整個棧立即終止并傳回"認證成功"信号;如果本條目的驗證失敗,還需要繼續參考其他的條目規則;一票通過;

optional:可選的,無足輕重的表決;

include:将其他的配置檔案中的流程棧包含在目前位置,就好像把其他的配置檔案的配置内容複制到目前檔案一樣;

substack:運作其他配置檔案的流程,但與include不同的是,其在子棧中運作,其運作結果不影響主棧;

  傳回的狀态 status:user_unknown, success, default, ...

  采取的行為 action: ok, N, bad, die, done, ignore, reset, ...

  module-path:子產品檔案路徑;

   相對路徑:相對于/lib64/security/目錄而言;

   絕對路徑:可位于任何可通路路徑;

  module-arguments:子產品的專用參數;

4.常用到的pam子產品

 pam_limits.so

 pam_listfile.so

 pam_time.so

  例如:

 1.pam_limits.so:資源限制

  在使用者級别實作對其可使用的資源的限制,例如可打開的檔案數量,可運作的程序數量,可用記憶體空間。

 2.修改限制的實作方式:

  (1)ulimit指令:用于調整軟限制;

   -n        最多的打開的檔案描述符個數

   -u        最大使用者程序數

   -S        使用 `soft'(軟)資源限制

   -H       使用 `hard'(硬)資源限制

  (2)配置檔案:/etc/security/limits.conf, /etc/security/limits.d/*.conf

nss pam

   配置檔案:每行一個定義;

   格式:<domain>  <type>  <item>  <value>

   <domain>:應用于哪些對象

     username

     @group

     *:所有使用者

   <type>:限制的類型

     soft:軟限制,普通使用者自己可以修改;

     hard:硬限制,由root使用者設定,且通過kernel強制生效;

     -:軟硬使用相同限制;

   <item>:限制的資源類型

     nofile:所能夠同時打開的最大檔案數量;預設為1024;

     nproc:所能夠同時運作的程序的最大數量;預設為1024;

     maxlogins:此使用者的最大登入數

    rss:最大駐留集大小(KB)