Linux自學筆記——nsswitch and pam


 

 

nsswitch:name service switch

       通用框架,與各種類型存儲進行交互的公共實現;

       實現:/usr/lib64/libnss*,/lib64/libnss*

              框架:libnss

              驅動:libnss_files-

              1.png

       爲每一種用到解析庫的應用通過配置定義其位置:

              /etc/nsswitch.conf

                     db: store1   store2  …

              2.png

                     例如:

                     passwd:files

                     hosts:files   dns

              解析庫:

                     文件、關係型數據管理系統(mysql)、NIS、LDAP、DNS

              每種存儲中的查找結果狀態:

                     STATUS => success | not found | unavail | tryagain

              對應與每種狀態結果的行爲(action):

                     return | continue

              例子:

                     hosts: files nis  [NOTFOUND=return]  dns

              getent命令:

                     getent  DATABASE  [key]

pam:pluggable authentication module

       認證庫:存儲

              多種類型的存儲:文件、關係型數據管理系統、LDAP、NIS

       pam:通用框架,提供了與各種類型存儲進行交互的公共實現、以及多種輔助類的功能:

              /lib64/security/*

       配置文件:爲各種調用了pam的應用提供其專用配置:

              通用配置文件:/etc/pam.conf,可爲每一種調用pam完成認證功能的應用程序提供配置;

              專用配置文件:/etc/pam.d/*,通常專用於爲某種特定的應用程序提供配置;

             

              通常每個應用會使用一個單獨的配置文件;

       配置文件格式:

              通用配置文件:

                     application    type control          module-path module-arguments

              專用配置文件:

                     type      control         module-path   module-arguments

                     3.png

              type:檢查的功能類別

                     auth:賬號的認證和授權;

                     account:與賬號管理相關的非認證類的功能;

                     password:用戶修改密碼時密碼複雜度檢查機制;

                     session:用戶獲取到服務之前或使用服務完成之後需要進行一些附加性操作;

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

                     兩種實現機制:

1)      簡單實現:使用一個關鍵詞來定義

2)      詳細實現:使用一個或多個“status=action”

簡單實現:

required:必須通過檢查;否則,即爲失敗;無論成功還是失敗,都需繼續由後續同種功能的其它模塊進行檢查;

requisite:一票否決;檢測失敗就直接返回失敗;檢測成功,由後續同種功能的其它模塊進行檢查;

sufficient:一票通過,檢測成功就直接返回成功;檢測失敗,則由後續同種功能的其它模塊進行檢查;

optional:可選的,參考性控制機制;

include;調用其他配置文件中的同種功能的檢測機制;

                     詳細實現:

                            [status1=action1,status2=action2,…]

                                   status:返回狀態

                                   action:採取的行爲,比如ok,done,die,bad,ignore,…

              module-path:模塊文件路徑;

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

                     絕對路徑:可位於任何可訪問路徑;

              Module-arguments:模塊的專用參數;

模塊示例:

       pam_limits.so:資源限制

              在用戶級別實現對其可用的資源的限制,例如可打開的文件數量,可運行的進程數量,可用的內存空間;

             

              修改限制的實現方式:

1)      ulimits命令;

2)      配置文件:/etc/security/limits.conf,/etc/security/limits.d/*.conf

4.png

配置文件:每行的定義:

    <domain>    <type>  <item>  <value>

           <domain>:應用於哪些對象

                  username

                  @group

                  *:所有用戶

           <type>:限制的類型

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

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

                  -:軟硬使用相同限制;

           <item>:限制的資源類型

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

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

ulimit命令;用於調整軟限制:

    -n   最多的打開的文件描述符個數;

    -u    最大的用戶進程數

    -S    使用‘soft’(軟)資源限制

    -H   使用‘hard’(硬)資源限制


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