Linux自學筆記——nsswitch and pam
nsswitch:name service switch
通用框架,與各種類型存儲進行交互的公共實現;
實現:/usr/lib64/libnss*,/lib64/libnss*
框架:libnss
驅動:libnss_files-
為每一種用到解析庫的應用通過配置定義其位置:
/etc/nsswitch.conf
db: store1 store2 …
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
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
配置文件:每行的定義:
<domain> <type> <item> <value>
<domain>:應用於哪些對象
username
@group
*:所有用戶
<type>:限制的類型
soft:軟限制,普通用戶自己可以修改;
hard:硬限制,由root用戶設定,且通過kernel強制生效;
-:軟硬使用相同限制;
<item>:限制的資源類型
nofile:所能夠同時打開的最大文件數量,默認為1024;
nproc:所能夠同時運行的進程的最大數量;默認為1024;
ulimit命令;用於調整軟限制:
-n 最多的打開的文件描述符個數;
-u 最大的用戶進程數
-S 使用‘soft’(軟)資源限制
-H 使用‘hard’(硬)資源限制
Linux自學筆記——nsswitch and pam