系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

影响一台客户机的 NIS 问题

如果只有一两台客户机出现表明存在 NIS 绑定问题的症状,则可能是这些客户机存在问题。如果许多 NIS 客户机都无法正确绑定,则可能是一台或多台 NIS 服务器存在问题。请参见影响许多客户机的 NIS 问题

ypbind 未在客户机上运行

一台客户机中存在问题,但同一子网上的其他客户机运行正常。在存在问题的客户机上,在满足以下条件的目录中运行 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 正在运行,但有消息指出客户机无法与服务器通信,则原因可能有多种:


注意 –

出于安全和管理控制的原因,最好在客户机的 ypservers 文件中指定该客户机要绑定到的服务器,而不是让客户机通过广播来搜索服务器。广播将为不同客户机列出不同服务器,从而会降低网络和客户机的运行速度,并妨碍您平衡服务器负载。


ypwhich 显示不一致

在同一客户机上多次使用 ypwhich 时,生成的显示会随 NIS 服务器的更改有所不同。这很正常。当网络或 NIS 服务器繁忙时,NIS 客户机到 NIS 服务器的绑定会随着时间而变化。网络总是尽可能趋向于在一个平衡点达到稳定,此平衡点指所有客户机从 NIS 服务器获得响应的时间都可以接受。只要您的客户机能够获得 NIS 服务,服务来源便无关紧要。例如,一台 NIS 服务器计算机可以从网络中的其他 NIS 服务器获取其 NIS 服务。

当无法进行服务器绑定时

在无法进行本地服务器绑定的特殊情况下,使用 ypset 命令可以暂时允许绑定到其他网络或子网中的其他服务器(如果可用)。但是,为了使用 -ypset 选项,启动 ypbind 时必须使用 -ypset-ypsetme 选项。


注意 –

出于安全考虑,应将 -ypset-ypsetme 选项的使用限制于在受控情况下的调试用途。使用 -ypset-ypsetme 选项会严重破坏安全性,因为当这些守护进程运行时,任何人都可以更改服务器绑定,从而给其他用户造成麻烦,并允许对敏感数据进行未经授权的访问。如果必须以这些选项来启动 ypbind,等修复问题后,应立即中止 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 守护进程正在运行,也应如此。