1. 程式人生 > 其它 >linux配置檔案之/etc/nsswitch.conf檔案

linux配置檔案之/etc/nsswitch.conf檔案

nsswitch:名稱解析服務,可以實現名稱解析,包括域名到IP,使用者名稱到UID等;配置檔案是/etc/nsswitch.conf,由它規定了通過哪些途徑、按照什麼順序以及查詢哪些特定型別的資訊,還可以指定系統在某個方法生效或者失效時將採取什麼動作。配置檔案設定著使用者(passwd)、口令(shadow)、主機IP和組資訊(group)的搜尋方式

nsswitch.conf 的每一行都規定了以什麼方式進行搜尋,其格式:

Info: methoInfo: method[[action]] [method[[action]]...] 
Info:表示該行所描述的資訊型別
method:表示搜尋資訊的方法
action:表示對前面的method返回結果的響應處理
nsswitch.conf的工作原理

​ 當需要提供nsswitch.conf檔案所描述的資訊的時候,系統將檢查含有info欄位的配置行。它按照從左向右的順序開始執行配置行中指定的方法。在預設情況下,如果找到期望的資訊,系統將停止搜尋。如果沒有指定action,那麼當某個方法未能返回結果時,系統就會嘗試下一個動作,有可能搜尋結束都沒有找到想要的資訊。

1、常用Info資訊
欄位 含義
automount 自動掛載
bootparams 無盤引導選項和其他引導選項
ethers: MAC 地址
group: 使用者所在組(/etc/group),getgrent()函式使用該檔案
hosts: 主機名和主機號(/etc/hosts),gethostbyname()以及類似的函式使用該檔案
networks: 網路名及網路號(/etc/networks),getnetent()函式使用該檔案
passwd: 使用者口令(/etc/passwd),getpwent()函式使用該檔案
protocols: 網路協議(/etc/protocols),getprotoent()函式使用該檔案
publickey: NIS+及NFS所使用的secure_rpc的公開金鑰
rpc: 遠端過程呼叫名及呼叫號(/etc/rpc),getrpcbyname()及類似函式使用該檔案
services: 網路服務(/etc/services),getservent()函式使用該檔案
shadow: 對映口令資訊(/etc/shadow),getspnam()函式使用該檔案
2、對於每一種資訊型別,都可以指定一種或多種方法(method)進行搜尋
Method(方法)欄位 含義
files: 搜尋本地檔案,如/etc/passwd和/etc/hosts
nis: 搜尋NIS資料庫,nis還有一個別名,即yp
dns: 查詢DNS(只查詢主機)
compat: passwd、group和shadow檔案

​ 對一種資訊設定多種方法進行搜尋時,按照配置的方式從左到右進行搜尋,

passwd files nis		#搜尋passwd 資訊 先查詢file對應的本地檔案,再搜尋nis資料庫
host nis files dns      #搜尋host資訊則是先搜尋nis資料庫,再搜尋file對應的本地檔案,仍然失敗的話,搜尋dns以查詢host資訊
3、action

每個方法後面都可以選擇一個action動作項,用來指定該方法搜尋成功或失敗後需要進行的處理操作,動作格式是:

[[!]STATUS =action]   # STATUS是待測試的狀態,action是如果STATUS匹配到所返回的狀態後執行的動作,感嘆號!是可選,作用是動作取反
欄位 取值及其含義
STATUS NOTFOUND:方法已經執行,但是並沒有找到待搜尋的值。 預設的動作是continue。
SUCCESS:方法已經執行,並且已經找到待搜尋的值,沒有返回錯誤。預設動作是return。
UNAVAIL:方法失敗,原因是永久不可用。舉例來說,所需的檔案不可訪問或者所需的伺服器可能停機。預設的動作是continue。
TRYAGAIN:方法失敗,原因是臨時不可用。舉例來說,某個檔案被鎖定,或者某臺伺服器超載。預設動作是continue。
action return:返回到呼叫例程,帶有返回值,或者不帶返回值。
continue:繼續執行下一個方法。任何返回值都會被下一個方法找到的值覆蓋
4、compat方法:passwd、group和shadow檔案中的"±"

可以在/etc/passwd、/etc/group和/etc/shadow檔案中放入一些特殊的程式碼,(如果在nsswitch.conf檔案中指定compat方法的話)讓系統將本地檔案和NIS對映表中的項進行合併和修改。
在這些檔案中,如果在行首出現加號'+',就表示新增NIS資訊;如果出現減號'-',就表示刪除資訊。舉例來說,要想使用passwd檔案中的這些程式碼,可以在nsswitch.conf檔案中指定passwd: compat。然後系統就會按照順序搜尋passwd檔案,當它遇到以+或者 開頭的行時,就會新增或者刪除適當的NIS項。
雖然可以在passwd檔案的末尾放置加號,在nsswitch.conf檔案中指定passwd: compat,以搜尋本地的passwd檔案,然後再搜尋NIS對映表,但是更高效的一種方法是在nsswitch.conf檔案中新增passwd: file nis而不修改passwd檔案。

轉載:Linux系統下的/etc/nsswitch.conf檔案