13.6. 使用 GNU libc 设置 NIS 客户端

现在我们将描述和讨论使用 GNU libc 库支持配置 NIS 客户端。

您的第一步应该是告诉 GNU libc NIS 客户端使用哪个服务器来提供 NIS 服务。我们之前提到过,Linux ypbind 允许您配置要使用的 NIS 服务器。默认行为是在本地网络上查询服务器。如果您正在配置的主机可能会从一个域移动到另一个域,例如笔记本电脑,您可以将/etc/yp.conf文件留空,它会在本地网络上查询本地 NIS 服务器,无论它在哪里。

对于大多数主机来说,更安全的配置是在/etc/yp.conf配置文件中设置服务器名称。对于 Winery 网络上的主机,一个非常简单的文件可能如下所示
# yp.conf - YP configuration for GNU libc library.
#
ypserver vbardolino

ypserver 语句告诉您的主机使用提供的主机作为本地域的 NIS 服务器。在本例中,我们将 NIS 服务器指定为 vbardolino。当然,与 vbardolino 对应的 IP 地址必须在hosts文件中设置;或者,您可以将 IP 地址本身与 server 参数一起使用。

在示例中显示的形式中,ypserver 命令告诉 ypbind 使用指定的服务器,无论当前的 NIS 域是什么。但是,如果您经常在不同的 NIS 域之间移动您的机器,您可能需要在yp.conf文件中保留多个域的信息。您可以在yp.conf中通过使用 domain 语句指定各种 NIS 域的服务器信息。例如,您可能会将之前的示例文件更改为如下所示,用于笔记本电脑
# yp.conf - YP configuration for GNU libc library.
# 
domain winery server vbardolino 
domain brewery server vstout 

这使您可以通过在启动时使用 domainname 命令简单地设置所需的 NIS 域,从而在两个域中的任何一个域中启动笔记本电脑。然后,NIS 客户端将使用与当前域相关的任何服务器。

您可能想要使用第三个选项。它涵盖了您不知道在特定域中要使用的服务器的名称或 IP 地址,但仍希望能够在某些域中使用固定服务器的情况。假设我们想坚持在 Winery 域中操作时使用指定的服务器,但在 Brewery 域中时希望探测要使用的服务器。我们将修改我们的yp.conf文件再次使其如下所示
# yp.conf - YP configuration for GNU libc library.
# 
domain winery server vbardolino 
domain brewery broadcast

broadcast 关键字告诉 ypbind 使用它为域找到的任何 NIS 服务器。

在创建此基本配置文件并确保它是全局可读之后,您应该运行您的第一个测试以连接到您的服务器。确保选择您的服务器分发的映射,例如hosts.byname,并尝试使用 ypcat 实用程序检索它

# ypcat hosts.byname
172.16.2.2      vbeaujolais.vbrew.com    vbeaujolais
172.16.2.3      vbardolino.vbrew.com     vbardolino
172.16.1.1      vlager.vbrew.com         vlager
172.16.2.1      vlager.vbrew.com         vlager
172.16.1.2      vstout.vbrew.com         vstout
172.16.1.3      vale.vbrew.com           vale
172.16.2.4      vchianti.vbrew.com       vchianti

您获得的输出应该类似于刚刚显示的输出。如果您收到错误消息,内容为Can't bind to server which serves domain,那么要么您设置的 NIS 域名在yp.confyp.conf
# rpcinfo -u serverhost ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting