第 13 章. 网络信息系统

目录
13.1. 初步了解 NIS
13.2. NIS 与 NIS+ 的比较
13.3. NIS 的客户端
13.4. 运行 NIS 服务器
13.5. NIS 服务器安全
13.6. 使用 GNU libc 设置 NIS 客户端
13.7. 选择正确的映射
13.8. 使用 passwd 和 group 映射
13.9. 将 NIS 与 Shadow 支持结合使用

当您运行局域网时,您的总体目标通常是为用户提供一个使网络透明化的环境。一个重要的垫脚石是在所有主机之间同步诸如用户帐户信息之类的关键数据。这使用户可以自由地从一台机器移动到另一台机器,而无需记住不同的密码以及将数据从一台机器复制到另一台机器的不便。只要有从联网主机访问它的便捷方式,集中存储的数据就不需要复制。通过集中存储重要的管理信息,您可以确保数据的一致性,通过允许用户以透明的方式从主机移动到主机来提高用户的灵活性,并通过维护一份信息副本在需要时进行维护,使系统管理员的生活更加轻松。

我们之前讨论了互联网上使用的这个概念的一个重要例子——域名系统 (DNS)。DNS 服务于有限范围的信息,其中最重要的是主机名和 IP 地址之间的映射。对于其他类型的信息,没有这种专门的服务。此外,如果您只管理一个没有互联网连接的小型局域网,那么设置 DNS 可能看起来不值得麻烦。

这就是为什么 Sun 开发了网络信息系统 (NIS)。NIS 提供了通用的数据库访问功能,可以用于分发,例如,包含在以下文件中的信息passwdgroups文件到您网络上的所有主机。这使得网络看起来像一个单一的系统,所有主机上都有相同的帐户。同样,您可以使用 NIS 从/etc/hosts向网络上的所有机器分发主机名信息。

NIS 基于 RPC,包括服务器、客户端库和几个管理工具。最初,NIS 被称为黄页,或 YP,至今仍用于指代它。不幸的是,这个名称是英国电信的商标,英国电信要求 Sun 放弃这个名称。但事情就是这样,有些名字会深入人心,因此 YP 作为大多数 NIS 相关命令(如 ypservypbind)名称的前缀而继续存在。

今天,NIS 几乎适用于所有 Unix 系统,甚至还有免费的实现。BSD Net-2 发布了一个从 Sun 捐赠的公共领域参考实现派生出来的版本。此版本中的库客户端代码长期以来一直在 Linuxlibc中,管理程序由 Swen Thömmler 移植到 Linux。[1] 但是,参考实现中缺少 NIS 服务器。

Peter Eriksson 开发了一个名为 NYS 的新实现。[2] 它同时支持普通的 NIS 和 Sun 增强版的 NIS+。NYS 不仅提供了一套 NIS 工具和服务器,还添加了一整套新的库函数,如果您希望使用它,则需要编译到您的libc中。这包括用于主机名解析的新配置方案,该方案取代了当前使用host.conf.

的方案。GNU libc,在 Linux 社区中被称为libc6,包含 Thorsten Kukuk 开发的传统 NIS 支持的更新版本。[3] 它支持 NYS 提供的所有库函数,并且还使用了 NYS 的增强配置方案。您仍然需要工具和服务器,但是使用 GNUlibc可以省去您修补和重新编译库的麻烦。

本章重点介绍 GNU 中包含的 NIS 支持libc而不是其他两个软件包。如果您确实想运行这些软件包中的任何一个,本章中的说明可能足够也可能不够。有关更多信息,请参阅 NIS-HOWTO 或 Hal Stern 的管理 NFS 和 NIS等书籍(O'Reilly 出版)。

注释

[1]

可以通过 swen@uni-paderborn.de 联系到 Swen。NIS 客户端以yp-linux.tar.gz的形式从 metalab.unc.edusystem/Network.

[2]

中获得。可以通过 pen@lysator.liu.se 联系到 Peter。NYS 的当前版本是 1.2.8。

[3]

可以通过 kukuk@uni-paderborn.de 联系到 Thorsten。