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’(硬)資源限制
轉載於:https://blog.51cto.com/claude666/2052875