nsswitch&PAM認證架構
nsswitch
1.nsswitch:Name Service Switch,名稱服務開關;
名稱解析:将人類使用的自然語言的符号轉換成計算機能夠使用的數字元号
2.應用程式的名稱解析流程:
應用程式 --> nsswitch(配置檔案(查詢順序)) --> 對應庫檔案 --> 解析庫 --> 完成解析
3.nsswitch(network services switch 網絡服務轉換)
中間層,本質上上是一些庫檔案。提供了為應用程式向不同的解析庫進行名稱解析的手段和順序。
通用架構:為應用程式提供簡潔高效的接口;代理程式;
作用:承上啟下;
承上:提供統一的配置和調用接口;
啟下:使用者與各種形式的存儲進行互動;
在Linux中實作名稱解析的通用架構:庫
/lib64/libnss*, /usr/lib64/libnss*

架構:
libnss3.so
驅動(接口):
libnss_files.so, libnss_dns.so, libnss_db.so , ...
4.配置檔案:
/etc/nsswitch.conf
檔案的格式:
db: store_format1 store_format2 ....
每種存儲中都可以根據查找鍵進行查找,并且會傳回狀态;
STATUS => success | notfound | unavail | tryagain
對于每種狀态傳回值,都有相應的行為(ACTION):
ACTION => return | continue
預設情況下,對于success狀态的行為是return;對于其他狀态的行為都是continue;
可以自定義狀态和行為的關系:
[STATUS=ACTION]
将此項放置于對應的存儲格式之後即可;
hosts: files nis [NOTFOUND=return] dns
5.getent指令:
從某個解析庫LIB中獲的條目。該指令可以檢測nsswitch配置是否正确。
getent - get entries from Name Service Switch libraries
getent database [key]
例如:
#getent hosts
#getent passwd
#getent passwd root
#getent hosts www.test.com
------------------------------------------------------------------------------------------
pam
pluggable authentication modules;通用的認證架構
1.其功能實作同樣通過庫;
子產品的存放路徑:/lib64/security/*
2.配置檔案:
全局認證配置檔案:/etc/pam.conf
格式:
application type control module-path module-arguments
為每種應用提供的專用的配置檔案:/etc/pam.d/*APP_NAME*
type control module-path module-arguments
3.配置檔案格式詳解
type:
檢查的功能類别,可能使用一個或者多個進行限定認證
auth:與賬号的認證和授權有關;
account:與賬号的管理相關,但與認證無關的功能;
password:與使用者修改密碼時密碼的複雜度有關的功能;
session:使用者擷取到服務之前或使用服務完成之後需要進行附加操作;
control:
同一種功能的多個檢查之間如何進行組合
required:如果本條目沒有被滿足,那麼最終本次的認證一定失敗;但是本次認證過程并不中斷;整個棧運作完畢之後必定傳回"認證失敗"的信号;具備隐形的一票否決;
requisite:如果本條目沒有被滿足,那麼本次認證一定失敗;而且整個棧立即終止并傳回"認證失敗"信号;顯示的一票否決;
sufficient:如果本條目的條件被滿足,且本條目之前沒有任何的required條目判斷為失敗,則整個棧立即終止并傳回"認證成功"信号;如果本條目的驗證失敗,還需要繼續參考其他的條目規則;一票通過;
optional:可選的,無足輕重的表決;
include:将其他的配置檔案中的流程棧包含在目前位置,就好像把其他的配置檔案的配置内容複制到目前檔案一樣;
substack:運作其他配置檔案的流程,但與include不同的是,其在子棧中運作,其運作結果不影響主棧;
傳回的狀态 status:user_unknown, success, default, ...
采取的行為 action: ok, N, bad, die, done, ignore, reset, ...
module-path:子產品檔案路徑;
相對路徑:相對于/lib64/security/目錄而言;
絕對路徑:可位于任何可通路路徑;
module-arguments:子產品的專用參數;
4.常用到的pam子產品
pam_limits.so
pam_listfile.so
pam_time.so
例如:
1.pam_limits.so:資源限制
在使用者級别實作對其可使用的資源的限制,例如可打開的檔案數量,可運作的程序數量,可用記憶體空間。
2.修改限制的實作方式:
(1)ulimit指令:用于調整軟限制;
-n 最多的打開的檔案描述符個數
-u 最大使用者程序數
-S 使用 `soft'(軟)資源限制
-H 使用 `hard'(硬)資源限制
(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;
maxlogins:此使用者的最大登入數
rss:最大駐留集大小(KB)