1. 程式人生 > >Linux自學筆記——nsswitch and pam

Linux自學筆記——nsswitch and pam

pam nsswitch


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