NSSWITCH.CONF(5) Linux Programmer's Manual NSSWITCH.CONF(5)

nsswitch.conf - 系統資料庫及名字服務開關配置檔案

C 程式庫裡很多函式都需要配置以便能在本地環境正常工作, 習慣上是使用檔案(例如`/etc/passwd') 來完成這一任務. 但別的名字服務, 如網路資訊服務NIS, 還有域名服務DNS等, 逐漸通用起來, 並且被加入了C 程式庫裡, 而它們使用的是固定的搜尋順序.

在有NYS 支援的Linux libc5以及GNU C Library 2.x (libc.so.6)裡, 依靠一個更清晰完整的方案來解決該問題. 該方案模仿了Sun Microsystems公司在Solaris 2 的C 程式庫裡的方法, 也沿襲了它們的命名, 稱為 "名字服務開關(NSS)". 所用 "資料庫" 及其查詢順序在檔案 /etc/nsswitch.conf 裡指明.

NSS 中可用資料庫如下:

郵件別名, sendmail(8) 使用該檔案.
乙太網號.
使用者組, getgrent(3) 函式使用該檔案.
主機名和主機號, gethostbyname(3) 以及類似的函式使用了該檔案.
網路內主機及其使用者的列表, 訪問規則使用該檔案.
網路名及網路號, getnetent(3) 函式使用該檔案.
使用者口令, getpwent(3) 函式使用該檔案.
網路協議, getprotoent(3) 函式使用該檔案.
NIS+及NFS 所使用的secure_rpc的公開密匙.

遠端過程呼叫名及呼叫號, getrpcbyname(3) 及類似函式使用該檔案.

網路服務, getservent(3) 函式使用該檔案.
shadow使用者口令, getspnam(3) 函式使用該檔案.

下面是

/etc/nsswitch.conf 檔案的一個例子 (如果在系統中沒有 /etc/nsswitch.conf 檔案的話, 這就是預設的設定):

compat

compat

compat

dns [!UNAVAIL=return] files

nis [NOTFOUND=return] files

nis [NOTFOUND=return] files

nis [NOTFOUND=return] files

nis [NOTFOUND=return] files

nis [NOTFOUND=return] files

第一欄就是上面的表裡所說的資料庫, 每行的其餘部分指明如何查詢. 對每個資料庫都可以分別指明其查詢方法.

每個資料庫的配置規範包含兩個不同的項:

* 服務規範, 如`files', `db', 或者`nis'.
* 對查詢結果的反應, 如`[NOTFOUND=return]'.

在有NYS支援的libc5裡允許服務規範`files', `nis'及`nisplus',此外,還可以對hosts 指明`dns' 為額外服務, 對passwd及group 指明`compat', 但不能對shadow指明`compat'.

在GNU C Library裡, 每個可用的SERVICE都必須有檔案 /lib/libnss_SERVICE.so.1 與之對應. 在標準安裝時, 可以使用`files',`db', `nis'以及`nisplus'. 此外, 還可以對hosts 指明`dns' 為額外服務, 對passwd, group, shadow 指明`compat', 而在有NYS 支援的libc5中, 不支援最後一項服務.

說明中的第二項使使用者可以更好地控制查詢過程. Action項處於兩個服務名之間, 被括弧括著, 常規格式如下:

`[' ( `!'? STATUS `=' ACTION )+ `]'

這裡

對關鍵字的大小寫並不敏感. STATUS的值是呼叫指定服務查詢函式的結果, 意義如下:

沒有錯誤發生, 得到想要的結果. 預設action是`return'.

查詢順利, 但是沒有得到所要的結果. 預設action是`continue'.
服務永久不可用. 這可能意味著必要的檔案不可用, 或者,DNS 服務不可用或不允許查詢.預設action是`continue'.
服務臨時不可用. 可能是檔案被鎖住了或者伺服器當前不 接受過多的連線. 預設action是`continue'.

使用+/-語法的互動(compat 模式)無NYS支援的linux libc5沒有名字服務開關, 但允許使用者做一些簡單的策略控制. 在 /etc/passwd 裡可以使用+user或+@netgroup條目(即包括NIS passwd對映所指定使用者), 以及-user或-@netgroup條目(即不包括被指定使用者), 還有 + 條目(即包括每個使用者, 除了NIS passwd對映所排除的). 大多數人只放一個 + 在 /etc/passwd 末尾, 以此包括NIS 的所有東西. 對該情況, 開關提供更快捷的替代方式(`passwd: files nis'), 這使得無需再往 /etc/passwd, /etc/group/etc/shadow 裡新增單個 + 條目. 如果這還不夠, NSS 的`compat' 服務提供了完全的+/-語法. 我們可以對偽資料庫 passwd_compat, group_compatshadow_compat 指明`nisplus'服務來覆蓋預設服務`nis', 但請注意只在GNU C Library裡可以使用偽資料庫.

檔案 FILES

名為SERVICE的服務是透過位於/lib的共享物件libnss_SERVICE.so.1實現的.

/etc/nsswitch.conf
配置檔案
/lib/libnss_compat.so.1
為GNU C Library 2.x實現`compat'
/lib/libnss_db.so.1

為GNU C Library 2.x實現`db'

/lib/libnss_dns.so.1
為GNU C Library 2.x實現`dns'
/lib/libnss_files.so.1

為GNU C Library 2.x實現`files'

/lib/libnss_hesoid.so.1
為GNU C Library 2.x實現`hesoid'
/lib/libnss_nis.so.1
為GNU C Library 2.x實現`nis'
/lib/libnss_nisplus.so.1
為GNU C Library 2.x實現`nisplus'

注意 NOTES

每個用到了nsswitch.conf 檔案的程序只完整地讀一次檔案, 如果該檔案後面被改變了, 程序將仍然使用原來的配置.

在Solaris 下, 不能靜態連線使用了NSS Service 的程式, 但是在Linux 下, 則毫無問題.

<mapping@263.net>

2000.11.11

《中國linux論壇man手冊頁翻譯計劃》:

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

11 January 1998 Linux