JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:命名和目录服务(DNS、NIS 和 LDAP)     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分关于命名和目录服务

1.  命名和目录服务(概述)

2.  名称服务转换器(概述)

第 2 部分DNS 设置和管理

3.  DNS 设置和管理(参考)

第 3 部分NIS 设置和管理

4.  网络信息服务 (Network Information Service, NIS)(概述)

5.  设置和配置 NIS 服务

6.  管理 NIS(任务)

7.  NIS 疑难解答

NIS 绑定问题

症状

影响一台客户机的 NIS 问题

ypbind 未在客户机上运行

缺少域名或域名不正确

客户机未绑定到服务器

没有可用的服务器

ypwhich 显示不一致

当无法进行服务器绑定时

ypbind 崩溃

影响多台客户机的 NIS 问题

rpc.yppasswdd 将以 r 开头的非受限 Shell 视为受限制

网络或服务器过载

服务器出现异常

NIS 守护进程未运行

服务器具有不同版本的 NIS 映射

ypserv 崩溃

第 4 部分LDAP 命名服务的设置和管理

8.  LDAP 命名服务介绍(概述/参考)

9.  LDAP 基本组件和概念(概述)

10.  LDAP 命名服务的规划要求(任务)

11.  为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)

12.  设置 LDAP 客户机(任务)

13.  LDAP 疑难解答(参考)

14.  LDAP 一般参考(参考)

15.  从 NIS 转换为 LDAP(概述/任务)

16.  从 NIS+ 转换为 LDAP

A.  Solaris 10 软件中对 DNS、NIS 和 LDAP 的更新

服务管理工具的更改

DNS BIND

pam_ldap 更改

文档错误

词汇表

索引

NIS 绑定问题

症状

NIS 绑定问题具有以下常见症状。

影响一台客户机的 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 正在运行,但有消息提示客户机无法与服务器通信,则表示问题可能有多种:

ypwhich 显示不一致

在同一客户机上多次使用 ypwhich 时,所显示的结果会随 NIS 服务器的更改而有所不同。这很正常。当网络或 NIS 服务器繁忙时,NIS 客户机到 NIS 服务器的绑定会不时发生变化。只要可以进行绑定,网络便会在某一时间稳定,所有客户机在此期间从 NIS 服务器获取可接受的响应时间。只要您的客户机能够获得 NIS 服务,服务来源无关紧要。例如,一台 NIS 服务器计算机可以从网络中的其他 NIS 服务器获取其 NIS 服务。

当无法进行服务器绑定时

在无法进行本地服务器绑定的特殊情况下,使用 ypset 命令可以暂时允许绑定到其他网络或子网中的另一台服务器(如果可用)。但是,为了使用 -ypset 选项,必须使用 -ypset-ypsetme 选项启动 ypbind。有关更多信息,请参见 ypbind(1M) 手册页。

# /usr/lib/netsvc/yp/ypbind -ypset

有关其他方法,请参见绑定到特定 NIS 服务器


注 - 出于安全考虑,应将 -ypset-ypsetme 选项的使用限制为在受控情况下的调试用途。使用 -ypset-ypsetme 选项可能会导致严重的安全违规,因为在守护进程运行时,任何人都可以更改服务器绑定,这会给其他人带来麻烦,并将允许未经授权的用户访问敏感数据。如果必须使用这些选项启动 ypbind,待问题修复后,应立即终止 ypbind,然后在不使用这些选项的情况下重新启动。

要重新启动 ypbind,请使用服务管理工具 (Service Management Facility, SMF):

# svcadm enable -r svc:/network/nis/client:default

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 守护进程正在运行,也应如此。

影响多台客户机的 NIS 问题

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

rpc.yppasswdd 将以 r 开头的非受限 Shell 视为受限制

  1. 创建包含以下特殊字符串的 /etc/default/yppasswdd"check_restricted_shell_name=1"

  2. 如果将 "check_restricted_shell_name=1" 字符串注释掉,将不会进行 "r" 检查。

网络或服务器过载

如果网络或 NIS 服务器过载,导致 ypserv 无法在超时时间段内将响应返回给客户机的 ypbind 进程,则 NIS 将挂起。

在这些情况下,网络中的每台客户机都会遇到相同或相似的问题。在大多数情况下,这种问题是暂时的。当 NIS 服务器重新引导并重新启动 ypserv 时,或 NIS 服务器或网络自身的负载降低时,通常不会再显示该消息。

服务器出现异常

请确保服务器已启动并且正在运行。如果您的物理位置离服务器较远,请使用 ping 命令。

NIS 守护进程未运行

如果服务器已启动并且正在运行,请尝试找一台能够正常工作的客户机计算机,然后运行 ypwhich 命令。如果 ypwhich 不响应,请将其终止。然后以 root 身份登录 NIS 服务器,并输入以下命令检查 NIS 进程是否正在运行。

# ps -e | grep yp

注 - 不要将 -f 选项与 ps 结合使用,因为此选项会尝试将用户 ID 转换为名称,而这将导致更多命名服务查找可能无法成功。


如果 NIS 服务器 (ypserv) 和 NIS 客户机 (ypbind) 守护进程都未运行,请键入以下命令重新启动它们。

# svcadm restart network/nis/server
or
# /usr/lib/netsvc/yp/ypstop
# /usr/lib/netsvc/yp/ypstart

如果 ypservypbind 进程都在 NIS 服务器上运行,请运行 ypwhich。如果 ypwhich 不响应,ypserv 可能已挂起,并应重新启动。在以 root 身份登录到服务器后,请键入以下命令重新启动 NIS 服务。

# svcadm restart network/nis/server
or
# /usr/lib/netsvc/yp/ypstop
# /usr/lib/netsvc/yp/ypstart

服务器具有不同版本的 NIS 映射

因为 NIS 在服务器之间传播映射,所以有时您可能会在网络中的不同 NIS 服务器上找到同一个映射的不同版本。如果差别持续的时间不长,则此版本差异正常并且可以接受。

导致映射差异最常见的原因是某些因素阻止了正常的映射传播。例如,NIS 服务器或 NIS 服务器之间的路由器关闭。当所有 NIS 服务器以及它们之间的路由器都在运行时,ypxfr 应该能成功运行。

如果服务器和路由器运行正常,请检查以下各项:

记录 ypxfr 输出

如果特定从属服务器在更新映射时出现问题,请登录该服务器并以交互方式运行 ypxfr。如果 ypxfr 运行失败,则会指出失败原因,然后您可以针对原因解决问题。如果 ypxfr 运行成功,但您怀疑运行有时失败,请创建一个日志文件以便记录消息。要创建日志文件,请在从属服务器上输入以下命令。

ypslave# cd /var/yp
ypslave# touch ypxfr.log

这将创建一个 ypxfr.log 文件,该文件会保存 ypxfr 的所有输出。

该输出与 ypxfr 以交互方式运行时所显示的输出类似,但日志文件中的每行都带有时间标记。(您可能会发现时间标记排序不正常。这是正常情况-时间标记会告诉您 ypxfr 开始运行的时间。如果 ypxfr 的多个副本同时运行,但所用的时间不同,则它们可能实际上按照不同于调用顺序的顺序将摘要状态行写入日志文件。)任何形式的间歇性故障都会在日志中显示。


注 - 解决问题后,请删除日志文件以关闭记录功能。如果忘记删除该文件,它将继续无限制地增大。


检查 crontab 文件和 ypxfr Shell 脚本

检查根 crontab 文件,并检查该文件调用的 ypxfr shell 脚本。这些文件中的排字错误可能会引起传播问题。在 /var/spool/cron/crontabs/root 文件中引用 shell 脚本失败,或者在任何 shell 脚本中引用映射失败,也可能会导致错误。

检查 ypservers 映射

另外,请确保 NIS 从属服务器已列在域的主服务器的 ypservers 映射中。否则,从属服务器虽然仍可作为服务器正常运行,但 yppush 不会将映射的更改传播至从属服务器。

解决方法

如果 NIS 从属服务器的问题不明显,可在调试时解决这一问题,方法是使用 rcpftp 从运行状况良好的 NIS 服务器中复制不一致映射的最新版本。下面显示了如何传送有问题的映射。

ypslave# rcp ypmaster:/var/yp/mydomain/map.\* /var/yp/mydomain

* 字符在命令行中进行了转义,这样它将在 ypmaster 中展开,而不是在 ypslave 本地展开。

ypserv 崩溃

如果 ypserv 进程几乎总是在启动后的瞬间崩溃,并且即使重复启动也无法持续运行,则基本上可按照ypbind 崩溃中所述的过程进行调试。如下所示,检查是否存在 rpcbind 守护进程。

ypserver% ps -e | grep rpcbind

如果找不到该守护进程,请重新引导服务器。否则,如果该守护进程正在运行,请键入以下命令查找类似输出。

% rpcinfo -p ypserver
% program     vers     proto     port     service
100000    4    tcp    111    portmapper
100000    3    tcp    111    portmapper
100068    2    udp    32813    cmsd
...
100007    1    tcp    34900    ypbind
100004    2    udp    731    ypserv
100004    1    udp    731    ypserv
100004    1    tcp    732    ypserv
100004    2    tcp    32772    ypserv

您的计算机可能具有不同的端口号。表示 ypserv 进程的四个项如下所示。

100004     2     udp     731     ypserv
100004     1     udp     731     ypserv
100004     1     tcp     732     ypserv
100004     2     tcp     32772     ypserv

如果不存在任何项并且 ypserv 无法向 rpcbind 注册其服务,请重新引导计算机。如果这些项存在,请在重新启动 ypserv 之前从 rpcbind 取消注册服务。要从 rpcbind 中取消注册服务,请在服务器上键入以下命令。

# rpcinfo -d number 1
# rpcinfo -d number 2

其中,numberrpcinfo 报告的 ID 号(在以上示例中,ID 号为 100004)。