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可以得到:
上面例子中指定為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舉例,可以看到如下內容
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
檢視hxk這個使用者
[root@hxk pam.d]# id hxk
uid=2527(hxk) gid=2527(hxk) 組=2527(hxk)
不在allowgrp這個組裡,試著讓hxk登入
usermod -a -G hxk allowgrp