当您运行局域网时,您的总体目标通常是为您的用户提供一个使网络透明化的环境。实现此目标的重要一步是保持所有主机之间用户帐户信息等重要数据的同步。我们之前已经看到,对于主机名解析,存在一种强大而复杂的服务,即 DNS。 对于其他任务,则没有这种专门的服务。此外,如果您只管理一个没有 Internet 连接的小型 LAN,那么对于许多管理员来说,设置 DNS 可能似乎不值得麻烦。
这就是 Sun 开发 NIS(网络信息系统)的原因。 NIS 提供通用的数据库访问功能,可用于将 passwd 和 groups 文件中包含的信息等分发到您网络上的所有主机。 这使得网络看起来就像一个单独的系统,在所有主机上都具有相同的帐户。 以类似的方式,您可以使用 NIS 将主机名信息从 /etc/hosts 分发到网络上的所有机器。
NIS 基于 RPC,包含服务器、客户端库和多个管理工具。 最初,NIS 被称为黄页或 YP,至今仍被广泛用于非正式地指代此服务。 另一方面,“黄页”是英国电信的商标,这要求 Sun 放弃该名称。 事情就是这样,有些名字会深入人心,因此 YP 作为大多数 NIS 相关命令(如 ypserv、ypbind 等)名称的前缀而延续下来。
如今,NIS 几乎适用于所有平台,甚至有它的免费实现。 其中一个来自 BSD Net-2 版本,并且源自 Sun 捐赠的公共领域参考实现。 此版本的库客户端代码长期以来一直存在于 GNU libc 中,而管理程序直到最近才由 Swen Thümmler 移植到该版本。 参考实现中缺少 NIS 服务器。 Tobias Reber 编写了另一个 NIS 包,包括所有工具和一个服务器; 它被称为 yps。
目前,Peter Eriksson 正在对 NIS 代码进行完全重写,称为 NYS, 它同时支持普通的 NIS 和 Sun 经过大幅修订的 NIS+。 NYS 不仅提供了一套 NIS 工具和一个服务器,还添加了一整套新的库函数,这些函数很可能会最终进入标准 libc。 这包括用于主机名解析的新配置方案,该方案取代了当前使用 host.conf 的方案。 这些功能将在下面讨论。
本章将重点介绍 NYS,而不是其他两个软件包,我将它们称为“传统”NIS 代码。 如果您确实想运行这些软件包中的任何一个,本章中的说明可能足够,也可能不够。 要获得更多信息,请获取有关 NIS 的标准书籍,例如 Hal Stern 的 NFS 和 NIS(参见-[])。
目前,NYS 仍处于开发阶段,因此网络程序或登录程序等标准实用程序尚不了解 NYS 配置方案。 在 NYS 合并到主流 libc 之前,如果您想让它们使用 NYS,则必须重新编译所有这些二进制文件。 在任何这些应用程序的 Makefile 中,将 -lnsl 指定为链接器在 libc 之前的最后一个选项。 这会将 libnsl(NYS 库)中的相关函数链接进来,而不是标准的 C 库。