nsswitch&PAM認證框架
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)
本文出自 “12657170” 博客,請務必保留此出處http://12667170.blog.51cto.com/12657170/1969783
nsswitch&PAM認證框架