table of contents
NSSWITCH.CONF(5) | Linux Programmer's Manual | NSSWITCH.CONF(5) |
NAME¶
nsswitch.conf - 系統數據庫及名字服務開關配置文件
DESCRIPTION¶
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 中可用數據庫如下:
- aliases
- 郵件別名, sendmail(8) 使用該文件.
- ethers
- 以太網號.
- group
- 用戶組, getgrent(3) 函數使用該文件.
- hosts
- 主機名和主機號, gethostbyname(3) 以及類似的函數使用了該文件.
- netgroup
- 網絡內主機及其用戶的列表, 訪問規則使用該文件.
- network
- 網絡名及網絡號, getnetent(3) 函數使用該文件.
- passwd
- 用戶口令, getpwent(3) 函數使用該文件.
- protocols
- 網絡協議, getprotoent(3) 函數使用該文件.
- publickey
- NIS+及NFS 所使用的secure_rpc的公開密匙.
- rpc
-
遠程過程調用名及調用號, getrpcbyname(3) 及類似函數使用該文件.
- services
- 網絡服務, getservent(3) 函數使用該文件.
- shadow
- shadow用戶口令, getspnam(3) 函數使用該文件.
下面是
/etc/nsswitch.conf 文件的一個例子 (如果在系統中沒有 /etc/nsswitch.conf 文件的話, 這就是缺省的設置):
- passwd:
-
compat
- group:
-
compat
- shadow:
-
compat
- hosts:
-
dns [!UNAVAIL=return] files
- networks:
-
nis [NOTFOUND=return] files
- ethers:
-
nis [NOTFOUND=return] files
- protocols:
-
nis [NOTFOUND=return] files
- rpc:
-
nis [NOTFOUND=return] files
- services:
-
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的值是調用指定服務查找函數的結果, 意義如下:
- success
-
沒有錯誤發生, 得到想要的結果. 缺省action是`return'.
- notfound
- 查找順利, 但是沒有得到所要的結果. 缺省action是`continue'.
- 服務永久不可用. 這可能意味着必要的文件不可用, 或者,DNS 服務不可用或不允許查詢.缺省action是`continue'.
- tryagain
- 服務臨時不可用. 可能是文件被鎖住了或者服務器當前不 接受過多的連接. 缺省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_compat 及 shadow_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手冊頁翻譯計劃》:¶
跋¶
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
11 January 1998 | Linux |