nsswitch:
Network Service Switch,網絡服務轉換,讓多種應用程序能夠靈活實現名稱解析的通用框架
解析庫:
文件、MySQL、NIS、LDAP、DNS
通用框架,與各存儲交互的實現:
/usr/lib64/libnss*,/lib64/libnss*
配置文件:/etc/nsswitch.conf
db: store1,store2,...
每種存儲中查找的結果狀態:STATUS => success | not found | unavail | tryagain
對應於每種狀態參數的行爲:ACTION => return | continue
pam:Pluggable Authentication Module,插入式認證模塊
關於pam的更詳細的知識請參考《Linux-pam sag.pdf》,百度網盤中有
認證庫:
文件、MySQL、NIS、LDAP
通用框架,與各存儲交互的實現,以及多種輔助性功能:
/usr/lib64/security/,/lib64/security/
配置文件:/etc/pam.conf
/etc/pam.d/*.conf
通常每個應用使用一個單獨的配置文件:
配置文件中每行定義一種檢查規則,其格式如下:
type control module-path module-arguments
type:檢查功能類別,主要有以下幾種
auth:與帳號認證相關的認證和授權檢查
account:與帳號管理相關的非認證功能
password:用戶修改密碼時密碼檢查規則
session:用戶獲取到服務之前或使用服務完成之後(還未退出時)要進行的一些附加性操作
control:同一種功能的多個檢查之間如何進行組合。第一個失敗了第二個怎麼辦
有兩種實現機制:
a) 使用一個關鍵詞來定義。例如sufficient,required,requisite
b) 使用一或多個"status=action"形式的組合表示
簡單機制:
required:若第一個規則檢查通過,後面的同類規則依然要檢查;若第一個規則檢查未通過,後面的同類規則依然要檢查,但是最終其無法通過檢查規則的限制
requisite:若第一個規則檢查通過,後面的同類規則依然要檢查;若第一個規則檢查未通過,後面的同類規則無須再檢查,其擁有一票否決權
sufficient:若第一個規則檢查通過,後面的同類規則無須再檢查,其擁有一票通過權;若第一個規則檢查未通過,而後面的某個同類規則檢查通過,那麼其後面的同類規則無須再檢查
optional:可選,其規則僅供參考,通過也可以,不通過也可以,不影響最終結果
include:包含指定文件中的相同類別的所有規則
複雜機制:[status1=action1,status2=action2,.....]
status:返回狀態
action:
ok:一票通過權
done
die:一票否決權
ignore:可選,其規則僅供參考,通過也可以,不通過也可以,不影響最終結
bad:我說不過就不過,但是沒有一票否決權,後面依然要檢查
reset
module-path:模塊路徑
/lib64/security:此目錄下的模塊引用時可使用相對路徑,否則必須使用絕對路徑
module-arguments:模塊參數
模塊:
pam_shells.so
pam_limits.so
該模塊通過讀取配置文件完成用戶對系統資源的使用控制
/etc/security/limits.conf
/etc/security/limits.d/*
語法:
<domain> <type> <item> <value>
<domain>:
username
@group
*:所有用戶
<type>:
hard:由root設定,通過kernel強制生效
soft:由用戶自行修改,但不能超過hard的限制
-:hard和soft同時限定
<item>:
nofile:所能夠同時打開的最大文件數量
nproc:所能夠同時運行的最大進程數量
msqqueue:使用的POSIX消息隊列能夠佔用的最大內存空間
sigpending:所能夠使用的最大信號數量
<value>
ulimit命令:
ulimit -n #:所能夠同時打開的最大文件數量
ulimit -u #:所能夠同時運行的最大進程數量