1. 程式人生 > >nsswitch&PAM認證框架

nsswitch&PAM認證框架

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認證框架