如果只有一两台客户机出现了表明 NIS 绑定问题的症状,则可能是这些客户机存在问题。但是,如果许多 NIS 客户机都无法正确绑定,则可能是一台或多台 NIS 服务器存在问题。请参见排除影响多个客户机的 NIS 问题。
以下是影响单个客户机的常见 NIS 问题:
ypbind 守护进程未在客户机上运行
一台客户机中存在问题,但同一子网上的其他客户机运行正常。在存在问题的客户机上,对满足以下条件的目录运行 ls –l 命令:目录中的文件由许多用户拥有(例如 /usr),并且其中一些文件不在该客户机的 /etc/passwd 文件中。如果显示结果将不在本地 /etc/passwd 中的文件所有者以数字形式(而非名称)列出,表明 NIS 服务未在该客户机上运行。
这些症状通常表示客户机的 ypbind 进程未运行。请验证 NIS 客户机服务是否正在运行,如下所示:
client# svcs \*nis\* STATE STIME FMRI disabled Sep_01 svc:/network/nis/domain:default disabled Sep_01 svc:/network/nis/client:default
如果服务处于 disabled 状态,请以 root 角色登录,然后启动 NIS 客户机服务,如下所示:
client# svcadm enable network/nis/domain client# svcadm enable network/nis/client
缺少域名或域名不正确
一台客户机中存在问题,其他客户机运行正常,但 ypbind 守护进程正在出问题的客户机上运行。在这种情况下,该客户机的域可能设置不正确。
在该客户机上,运行 domainname 命令,查看它设置了哪个域名:
client# domainname example.com
将输出与 NIS 主服务器上 /var/yp 目录中的实际域名进行比较。如以下示例所示,实际的 NIS 域显示为 /var/yp 目录中的子目录:
client# ls -l /var/yp -rwxr-xr-x 1 root Makefile drwxr-xr-x 2 root binding drwx------ 2 root example.com
如果显示在客户机上 domainname 命令输出中的域名与列为 /var/yp 目录中的子目录的服务器域名不同,则 nis/domain 服务的 config/domain 属性中的域名不正确。重置 NIS 域名。有关说明,请参见使用 Oracle Solaris 11.2 目录和命名服务:DNS 和 NIS 中的如何设置计算机的 NIS 域名。
客户机未绑定到服务器
如果域名设置正确,并且 ypbind 守护进程正在运行,但命令仍然挂起,请运行 ypwhich 命令来确保客户机已绑定到服务器。如果您刚启动 ypbind 守护进程,然后运行 ypwhich 命令,则可能需要多次运行 ypwhich 命令。通常情况下,您第一次运行该命令时,它会报告域未绑定。第二次运行该命令时,它应正常执行。
没有可用的服务器
如果域名设置正确,并且 ypbind 守护进程正在运行,但收到消息指示客户机无法与服务器通信,请检查以下内容:
客户机是否具有 /var/yp/binding/domainname/ypservers 文件(该文件中包含要绑定到的服务器的列表)?要查看选定的 NIS 服务器,请使用 svcprop –p config/ypservers nis/domain 命令。如果没有该文件,请运行 ypinit –c 命令并按优先级顺序指定客户机应绑定到的服务器。
如果客户机具有 /var/yp/binding/domainname/ypservers 文件,该文件中列出的服务器数量是否足以应对一台或两台服务器不可用时的情况?要查看选定的 NIS 服务器,请使用 svcprop –p config/ypservers nis/domain 命令。如果没有足够多的服务器,请运行 ypinit –c 命令向列表中添加更多服务器。
选定的 NIS 服务器在 /etc/inet/hosts 文件中是否有相应的条目?要查看选定的 NIS 服务器,请使用 svcprop –p config/ypservers nis/domain 命令。如果这些主机不在本地 /etc/inet/hosts 文件中,请将服务器添加到 hosts NIS 映射并通过运行 ypinit –c 或 ypinit –s 命令重新生成您的映射。有关信息,请参见使用 Oracle Solaris 11.2 目录和命名服务:DNS 和 NIS 中的使用 NIS 映射。
是否已将名称服务转换设置为除了检查 NIS 外还检查系统的本地 hosts 文件?有关更多信息,请参见使用 Oracle Solaris 11.2 目录和命名服务:DNS 和 NIS 中的第 2 章 关于名称服务转换。
是否已将名称服务转换设置为首先在 files 中检查 services 和 rpc?
ypwhich 显示不一致
在同一客户机上多次运行 ypwhich 命令时,所显示的结果会随 NIS 服务器的更改而有所不同。此行为是正常的。当网络或 NIS 服务器繁忙时,NIS 客户机到 NIS 服务器的绑定会不时发生变化。只要可以进行绑定,网络便会在某一时间稳定,所有客户机在此期间从 NIS 服务器获取可接受的响应时间。只要客户机能够接收 NIS 服务,服务来源无关紧要。例如,一台 NIS 服务器可以从网络中的其他 NIS 服务器接收其 NIS 服务。
服务器绑定不可行时怎么办
在无法进行本地服务器绑定的特殊情况下,使用 ypbind 命令的 ypset 选项可以暂时允许绑定到其他网络或子网中的另一台服务器(如果可用)。请注意,要使用 –ypset 选项,必须使用 –ypset 或 –ypsetme 选项启动 ypbind 守护进程。有关更多信息,请参见 ypbind(1M) 手册页。
# /usr/lib/netsvc/yp/ypbind -ypset
有关其他方法,请参见使用 Oracle Solaris 11.2 目录和命名服务:DNS 和 NIS 中的绑定到特定 NIS 服务器。
注意 - 出于安全原因,建议不要使用 –ypset 或 –ypsetme 选项。请仅在可控情况下将这些选项用于调试用途。使用 –ypset 或 –ypsetme 选项可造成严重的安全违规。当这些守护进程运行时,任何人都可以更改服务器绑定,从而允许在未经授权的情况下访问敏感数据。如果必须使用其中一个选项启动 ypbind 守护进程,请在更正问题之后中止 ypbind 进程,然后在不指定这些选项的情况下将其重新启动。 重新启动 ypbind 守护进程,如下所示: # svcadm enable -r svc:/network/nis/client:default请参见 ypset(1M) 手册页。 |
ypbind 守护进程崩溃
如果 ypbind 守护进程几乎每次在启动后都会立即崩溃,请在 svc:/network/nis/client:default 服务日志中查找问题。如下所示,检查是否存在 rpcbind 守护进程:
% ps -e |grep rpcbind
如果 rpcbind 守护进程不存在或者没有保持运行或行为奇怪,请检查 svc:/network/rpc/bind:default 日志文件。有关更多信息,请参见 rpcbind(1M) 和 rpcinfo(1M) 手册页。
您也许能够从正常运行的系统上与存在问题的客户机中的 rpcbind 守护进程通信。
从正在运行的系统中运行以下命令:
% rpcinfo client
如果存在问题的系统上的 rpcbind 守护进程正常,将显示以下输出:
program version netid address service owner ... 100007 3 udp6 ::.191.161 ypbind 1 100007 3 tcp6 ::.135.200 ypbind 1 100007 3 udp 0.0.0.0.240.221 ypbind 1 100007 2 udp 0.0.0.0.240.221 ypbind 1 100007 1 udp 0.0.0.0.240.221 ypbind 1 100007 3 tcp 0.0.0.0.250.107 ypbind 1 100007 2 tcp 0.0.0.0.250.107 ypbind 1 100007 1 tcp 0.0.0.0.250.107 ypbind 1 100007 3 ticlts 2\000\000\000 ypbind 1 100007 2 ticlts 2\000\000\000 ypbind 1 100007 3 ticotsord 9\000\000\000 ypbind 1 100007 2 ticotsord 9\000\000\000 ypbind 1 100007 3 ticots @\000\000\000 ypbind 1 ...
如果未显示任何地址(您的系统会有不同的地址),则 ypbind 守护进程无法注册其服务。重新引导系统并再次运行 rpcinfo 命令。如果存在 ypbind 进程,并且这些进程在每次重新启动 NIS 服务时都会更改,请重新引导系统,即使 rpcbind 守护进程正在运行,也应如此。