nsswitch&PAM認證框架

nsswitch&PAM認證框架


nsswitch


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

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


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

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


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

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

 通用框架:爲應用程序提供簡潔高效的接口;代理程序;

作用:承上啓下;

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

啓下:用戶與各種形式的存儲進行交互;


在Linux中實現名稱解析的通用框架:庫

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

wKiom1nODPHiPTSkAAA1Nz8NE-s777.png

框架:

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/*

wKioL1nODOKTH8dAAABo1jVufAE339.png

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

 wKiom1nODWvSZPN2AAAdely9_4c378.png

   配置文件:每行一個定義;

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

   <domain>:應用於哪些對象

     username

     @group

     *:所有用戶

   <type>:限制的類型

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

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

     -:軟硬使用相同限制;

   <item>:限制的資源類型

     nofile:所能夠同時打開的最大文件數量;默認爲1024;

     nproc:所能夠同時運行的進程的最大數量;默認爲1024;

     maxlogins:此用戶的最大登錄數

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


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