如果只有一两台客户机出现表明存在 NIS 绑定问题的症状,则可能是这些客户机存在问题。如果许多 NIS 客户机都无法正确绑定,则可能是一台或多台 NIS 服务器存在问题。请参见影响许多客户机的 NIS 问题。
一台客户机中存在问题,但同一子网上的其他客户机运行正常。在存在问题的客户机上,在满足以下条件的目录中运行 ls -l:包含由许多用户拥有的文件,而这些用户又包括该客户机 /etc/passwd 文件中没有的一些用户,如 /usr。如果显示结果将不在本地 /etc/passwd 中的文件属主以数字形式列出,而不是名称,则表明 NIS 服务未在该客户机上运行。
这些症状通常意味着客户机 ypbind 进程未运行。请验证 NIS 客户机服务是否正在运行。
client# svcs network/nis/client STATE STIME FMRI disabled Sep_01 svc:/network/nis/client:default |
如果该客户机被禁用,请作为超级用户登录或承担等效角色,并启动 NIS 客户机服务。
client# svcadm enable network/nis/client |
一台客户机中存在问题,其他客户机运行正常,但 ypbind 正在出问题的客户机上运行。该客户机可能有一个域设置得不正确。
在该客户机上,运行 domainname 命令,以查看设置了哪个域名。
client7# domainname neverland.com |
将输出与 NIS 主服务器上 /var/yp 中的实际域名进行比较。实际 NIS 域显示为 /var/yp 目录中的子目录。
Client7# ls /var/yp... -rwxr-xr-x 1 root Makefile drwxr-xr-x 2 root binding drwx------ 2 root doc.com ... |
如果在计算机上运行 domainname 时返回的域名与在 /var/yp 中作为目录列出的服务器域名不同,则在计算机的 /etc/defaultdomain 文件中指定的域名不正确。作为超级用户登录或承担等效角色,并在计算机的 /etc/defaultdomain 文件中更正该客户机的域名。这样可以确保计算机每次引导时,域名都是正确的。立即重新引导计算机。
域名区分大小写。
如果域名设置正确,而且 ypbind 正在运行,但命令仍然挂起,则请通过运行 ypwhich 命令来确保客户机已绑定到服务器。如果刚刚启动 ypbind,则可多运行几次 ypwhich(通常,第一次运行时会报告域未绑定,第二次便会成功)。
如果域名设置正确,而且 ypbind 正在运行,但有消息指出客户机无法与服务器通信,则原因可能有多种:
客户机是否具有包含要绑定到的服务器列表的 /var/yp/binding/domainname/ypservers 文件?如果没有该文件,请运行 ypinit -c 并按优先级顺序指定客户机应绑定到的服务器。
如果客户机有 /var/yp/binding/domainname/ypservers 文件,则该文件中列出的服务器数是否足以应对一台或两台服务器不可用时的情况?如果没有足够多的服务器,请通过运行 yppinit -c 向列表中添加更多服务器。
如果在客户机的 ypservers 文件中列出的服务器都不可用,该客户机将使用广播模式搜索正在运行的服务器。如果在客户机的子网中存在运行正常的服务器,客户机也会找到它(尽管在搜索过程中可能会降低性能)。如果客户机的子网中没有运行正常的服务器,则可通过以下几种方式来解决问题:
出于安全和管理控制的原因,最好在客户机的 ypservers 文件中指定该客户机要绑定到的服务器,而不是让客户机通过广播来搜索服务器。广播将为不同客户机列出不同服务器,从而会降低网络和客户机的运行速度,并妨碍您平衡服务器负载。
在客户机的 ypservers 文件中列出的服务器在 /etc/hosts 文件中是否具有相应项?如果没有,请将这些服务器添加到 NIS 映射主机输入文件,并通过运行 yppinit -c 或 ypinit -s 来重建映射,如使用 NIS 映射中所述。
/etc/nsswitch.conf 文件是否设置为除了 NIS 外还查询计算机的本地 hosts 文件?有关该转换器的更多信息,请参见第 2 章,名称服务转换器(概述)。
/etc/nsswitch.conf 文件是否设置为先在 files 中查询 services 和 rpc?有关该转换器的更多信息,请参见第 2 章,名称服务转换器(概述)。
在同一客户机上多次使用 ypwhich 时,生成的显示会随 NIS 服务器的更改有所不同。这很正常。当网络或 NIS 服务器繁忙时,NIS 客户机到 NIS 服务器的绑定会随着时间而变化。网络总是尽可能趋向于在一个平衡点达到稳定,此平衡点指所有客户机从 NIS 服务器获得响应的时间都可以接受。只要您的客户机能够获得 NIS 服务,服务来源便无关紧要。例如,一台 NIS 服务器计算机可以从网络中的其他 NIS 服务器获取其 NIS 服务。
在无法进行本地服务器绑定的特殊情况下,使用 ypset 命令可以暂时允许绑定到其他网络或子网中的其他服务器(如果可用)。但是,为了使用 -ypset 选项,启动 ypbind 时必须使用 -ypset 或 -ypsetme 选项。
出于安全考虑,应将 -ypset 和 -ypsetme 选项的使用限制于在受控情况下的调试用途。使用 -ypset 和 -ypsetme 选项会严重破坏安全性,因为当这些守护进程运行时,任何人都可以更改服务器绑定,从而给其他用户造成麻烦,并允许对敏感数据进行未经授权的访问。如果必须以这些选项来启动 ypbind,等修复问题后,应立即中止 ypbind,并在不使用这些选项的情况下重新启动。
如果 ypbind 崩溃几乎都发生在每次启动后的瞬间,请查找系统其他某个部分中的问题。通过键入以下内容来检查是否存在 rpcbind 守护进程。
% ps -e | grep rpcbind |
如果 rpcbind 不存在、无法持续运行或行为异常,请查阅 RPC 文档。
您可以通过正常运行的计算机与存在问题的客户机中的 rpcbind 通信。从运行正常的计算机中,键入以下内容。
% rpcinfo client |
如果存在问题的客户机中的 rpcbind 正常,rpcinfo 将生成以下输出。
program version netid address service owner ... 100007 2 udp 0.0.0.0.2.219 ypbind superuser 100007 1 udp 0.0.0.0.2.219 ypbind superuser 100007 1 tcp 0.0.0.0.2.220 ypbind superuser 100007 2 tcp 0.0.0.0.128.4 ypbind superuser 100007 2 ticotsord \000\000\020H ypbind superuser 100007 2 ticots \000\000\020K ypbind superuser ... |
您的计算机将具有不同地址。如果未显示这些地址,则 ypbind 无法注册其服务。请重新引导计算机并再次运行 rpcinfo。如果存在 ypbind 进程并且这些进程在每次重新启动 NIS 服务时都会更改,那么请重新引导系统,即使 rpcbind 守护进程正在运行,也应如此。