Manpages

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 | notfound | unavail | tryagain

ACTION => return | continue 对 关 键 字 的 大 小 写 并 不 敏 感 . STATUS的 值 是 调 用 指 定 服 务 查 找 函 数 的 结 果 , 意 义 如 下 :

success 没 有 错 误 发 生 , 得 到 想 要 的 结 果 . 缺 省 action是 ’return’.

notfound 查 找 顺 利 , 但 是 没 有 得 到 所 要 的 结 果 . 缺 省 action是 ’continue’.

unavail 服 务 永 久 不 可 用 . 这 可 能 意 味 着 必 要 的 文 件 不 可 用 , 或 者 ,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_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 [AT] 263.net>

[中 文 版 最 新 更 新 ]

2000.11.11

《 中 国 linux论 坛 man手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh