NIS 的主要应用之一是在 NIS 域中的所有主机上同步用户和帐户信息。为此,您通常只保留一个小的本地 /etc/passwd 文件,并将来自 NIS 映射的站点范围信息附加到该文件。但是,仅仅在 nsswitch.conf 中为此服务启用 NIS 查找是远远不够的。
当依赖于 NIS 分发的密码信息时,您首先必须确保本地 passwd 文件中任何用户的数字用户 ID 与 NIS 服务器对用户 ID 的理解相匹配。您还需要出于其他目的这样做,例如从网络中的其他主机挂载 NFS 卷。
如果 /etc/passwd 或 /etc/group 中的任何数字 ID 与映射中的 ID 不同,则必须调整属于该用户的所有文件的文件所有权。首先,您应该将 passwd 和 group 中的所有 uid 和 gid 更改为新值;然后找到所有属于刚刚更改的用户的用户的文件,最后更改它们的所有权。假设 news 曾经的用户 ID 为 9,而 okir 的用户 ID 为 103,它们被更改为其他值;然后您可以发出以下命令
重要的是,您要使用新安装的 passwd 文件执行这些命令,并且在更改任何文件的所有权之前收集所有文件名。要更新文件的组所有权,您将使用类似的命令。
完成此操作后,系统上的数字 uid 和 gid 将与 NIS 域中所有其他主机上的 uid 和 gid 一致。下一步是将配置行添加到 nsswitch.conf,以启用 NIS 查找用户和组信息
这使得 login 命令及其所有相关程序在用户尝试登录时首先查询 NIS 映射,如果此查找失败,则回退到本地文件。通常,您将从本地文件中删除几乎所有用户,并且仅保留 root 和通用帐户(如 mail)的条目。这是因为某些重要的系统任务可能需要将 uid 映射到用户名或反之亦然。例如,管理 cron 作业可能会执行 su 命令以临时成为 news 用户,或者 UUCP 子系统可能会邮寄状态报告。如果 news 和 uucp 在本地 passwd 文件中没有条目,则这些作业将在 NIS 服务中断期间惨败。
这里有两个重要的注意事项:一方面,到目前为止描述的设置仅适用于不使用 shadow 密码的登录套件,例如 util-linux 包中包含的那些套件。将 shadow 密码与 NIS 一起使用的复杂性将在下面介绍。另一方面,登录命令不是唯一访问 passwd 文件的命令——看看 ls 命令,大多数人几乎 постоянно 使用它。每当进行长列表显示时,ls 将显示文件用户和组所有者的符号名称;也就是说,对于它遇到的每个 uid 和 gid,它都必须查询 NIS 服务器一次。如果您的本地网络拥塞,或者更糟糕的是,当 NIS 服务器不在同一物理网络上时,这将严重拖慢速度,因此数据报必须通过路由器。
但是,这还不是全部内容。想象一下,如果用户想要更改她的密码会发生什么。通常,她会调用 passwd,它会读取新密码并更新本地 passwd 文件。这对于 NIS 来说是不可能的,因为该文件在本地不再可用,但是让用户在每次想要更改密码时都登录到 NIS 服务器也不是一种选择。因此,NIS 提供了一个名为 yppasswd 的 passwd 的直接替代品,它在存在 NIS 的情况下执行类似的操作。要在服务器主机上更改密码,它会通过 RPC 联系该主机上的 yppasswdd 守护进程,并向其提供更新后的密码信息。通常,您可以通过执行类似以下操作的操作将 yppasswd 安装到普通程序之上
同时,您必须在服务器上安装 rpc.yppasswdd 并从 rc.inet2 启动它。这将有效地对用户隐藏 NIS 的任何复杂性。