1. 程式人生 > >Linux 名稱解析服務與

Linux 名稱解析服務與

Linux名稱解析服務(nss)與驗證機制(pam)

名稱解析服務

nsswitch:網路服務轉換開關

配置檔案/etc/nsswitch.conf,這個配置檔案可以為眾多的名稱解析機制提供名稱解析庫。

例如:

hostname:file dns

 當解析主機名時有兩種手段,先去檔案中去找,當找不到了才去dns

root解析到UID必須通過應用程式查詢檔案找到對於的id號,這些應用程式就是庫檔案。

現在看看庫檔案

cd /usr/lib , ubuntu 為 /lib/x86_64-linux-gnu

ls | grep nss可以得到:

Linux名稱解析服務(nss)與驗證機制(pam)

上面例子中指定為file就可以到libnss_files.so庫檔案中查詢。

 下面看下/etc/nsswitch.conf裡面的內容:

檔案nsswitch.conf中的每一行配置都指明瞭如何搜尋資訊,比如使用者的口令。nsswitch.conf每行配置的格式如下:

資訊:方法[動作項]。。。。。

例如 hosts:          dns [!UNAVAIL=return] files   資訊為hosts  方法為dns 動作項為[!UNAVAIL=return] files是另一個方法。

資訊內容可檢視man nsswitch.conf

方法有:

files       搜尋本地檔案,如/etc/passwd和/etc/hosts

nis         搜尋NIS資料庫,nis還有一個別名,即yp

dns         查詢DNS(只查詢主機)

compat      passwd、group和shadow檔案中的±語法

動作項:

STATUS

 STATUS的取值如下。

l    NOTFOUND——方法已經執行,但是並沒有找到待搜尋的值。預設的動作是continue。

l    SUCCESS——方法已經執行,並且已經找到待搜尋的值,沒有返回錯誤。預設動作是return。

l    UNAVAIL——方法失敗,原因是永久不可用。舉例來說,所需的檔案不可訪問或者所需的伺服器可能停機。預設的動作是continue。

l    TRYAGAIN——方法失敗,原因是臨時不可用。舉例來說,某個檔案被鎖定,或者某臺伺服器超載。預設動作是continue。

action

 action的取值如下:

l    return——返回到呼叫例程,帶有返回值,或者不帶返回值。

l    continue——繼續執行下一個方法。任何返回值都會被下一個方法找到的值覆蓋。

** 認證服務**

認證服務也是由庫檔案完成,庫檔案在/lib/security或者/lib64/security下

配置檔案在/etc/pam.d下以login舉例,可以看到如下內容

Linux名稱解析服務(nss)與驗證機制(pam)
auth:認證使用者所輸入的帳號密碼是否匹配

account:稽核使用者帳號是否有效

password:使用者修改密碼是否被允許,密碼是否符合要求。

session:會話定義操作過程相關屬性

多行是指每一種認證有多種手段。

/etc/pam.d/service(必須小寫)格式

type  control  module-path  module-arguments

type:有auth、account、password、session

control :當某一種型別有多個時,多行之間如何建立關係(require:必須的過,如果沒通過則不通過但是還要一定要檢查同組其他的,requisite如果不過,後面不需在檢查,一定不過,sufficient:如果過了則過來,後面不需要檢查,optional:可選,include:權利移交給其它)

module-path:完成功能的模組

幾個常用模組

1、pam_unix在password,shadow驗證使用者時用到,選項nullok(執行為空)shadow(基於shadow格式密碼) md5(加密演算法)

2、pam_permit:執行訪問

3、pam_deny:拒絕訪問

4、pam_cracklib.so:檢查密碼通過字典檢視是否容易破解,選項minlen:密碼最短長度,difok:密碼與此前是否相同,dcredit=N,包含記為數字,ucredit=N,包含幾位大寫字母 lcredit=N,小寫字母 ocredit=N,特殊字元,retry=N,最多嘗試多少次

5、pam_shell:使用者登入預設shell為/etc/shells,檢測合法shell

6、pam_securetty:限定管理員只能特殊裝置登陸, 裝置在/etc/securetty中寫明

7、pam_listfile:到某一檔案驗證某一服務使用者帳號的允許與拒絕item=tty/user/ruser/group/shell/rhost

sense=allow/deny  file=/path/filename onen(出現故障)=[succeed(通過)/fail(不通過)] [apply=[user/@group]][quiet]

8、pam_rootok:只要root使用者就可以

9、pam_limits:一次會話裡面能夠使用系統資源的限定。配置檔案在/etc/security/limits.conf或者是/etc/security/limits.d/,普通使用者只能軟限制,普通使用者用命令ulimit來調整 -u使用者所能開啟最大程序數,-n修改開啟最大檔案數

10、pam_env在使用者登入根據/etc/security/pam_env.conf來為使用者設定環境變數。

11、pam_wheel用來設定哪些使用者可以su到root,只要wheel中使用者才可以

12、pam_succeed_if:檢查使用者的特性來看使用者是否可以登入

13、pam_time:根據使用者設定登入系統的時間,配置檔案/etc/security/time.conf,格式:服務 終端 使用者 時間

module-arguments:模組引數

/etc/pam.d下還有個other檔案,定義預設規則(沒有對應檔案)

實驗:

/etc/pam.d/login只對本地管用。

先備份下/etc/pam.d/system-auth-ac檔案

在第二行加入

auth        required      pam_listfile.so item=group sense=allow file=/etc/pam_allowgroups

建立檔案,並新增內容

vim /etc/pam_allowgroups

Linux名稱解析服務(nss)與驗證機制(pam)
      groupadd allowgrp

檢視hxk這個使用者

[root@hxk pam.d]# id hxk

uid=2527(hxk) gid=2527(hxk) 組=2527(hxk)

不在allowgrp這個組裡,試著讓hxk登入

Linux名稱解析服務(nss)與驗證機制(pam)
       現在將hxk加入到組中去

usermod -a -G hxk allowgrp