使用 Oracle® Solaris 11.2 目录和命名服务:LDAP

退出打印视图

更新时间: 2014 年 7 月
 
 

NIS 到 LDAP 转换问题

运行 N2L 服务器时可能会出现以下问题。此处提供了可能的原因和解决方案。

调试 NISLDAPmapping 文件

映射文件 NISLDAPmapping 非常复杂。很多潜在的错误可能会导致映射工作不正常。请使用以下技术解决此类问题。

ypserv -ir(或 –Ir)运行时显示控制台消息

描述: 控制台上显示了一条简单的消息,并且服务器退出(向 syslog 中写入了一条详细描述)。

Cause: 映射文件的语法可能不正确。

解决方法: 检查并更正 NISLDAPmapping 文件中的语法。

NIS 守护进程在启动时退出

描述: ypserv 或其他 NIS 守护进程运行时,记录了一条与 LDAP 相关的错误消息,并且守护进程退出。

Cause: 这可能是下列某一原因造成的:

  • 无法联系 LDAP 服务器。

  • 在 NIS 映射或 DIT 中找到的项与指定的映射不兼容。

  • 尝试对 LDAP 服务器执行读写操作时返回错误。

解决方法: 检查 LDAP 服务器上的错误日志。请参见常见的 LDAP 错误消息中的 LDAP 错误说明。

NIS 操作产生意外的结果

描述: NIS 操作没有返回预期的结果,但是没有记录错误。

Cause: LDAP 或 NIS 映射中可能存在不正确的项,这会导致映射无法按照预期的方式完成。

解决方法: 检查并纠正 LDAP DIT 中以及 N2L 版本的 NIS 映射中的项。

  1. 检查 LDAP DIT 中的项是否正确,并根据需要修复这些项。

    如果您使用的是 Oracle Directory Server Enterprise Edition,则通过运行 dsadm startconsole 命令启动管理控制台。

  2. 检查 /var/yp 目录中 N2L 版本的 NIS 映射是否包含预期的项,方法是将新生成的映射与原来的映射进行比较。请根据需要修复这些项。

    # cd /var/yp/domainname
    # makedbm -u test.byname
    # makedbm -u test.byname

    检查映射的输出时请注意以下情况:

    • 在这两个文件中,各项的顺序可能不同。

      在对输出进行比较之前,请使用 sort 命令。

    • 在这两个文件中,空格的用法可能不同。

      在对输出进行比较之前,请使用 diff -b 命令。

NIS 映射的处理顺序

描述: 发生对象类违规。

Cause: 当运行 ypserv -i 命令时,将读取每个 NIS 映射并将其内容写入到 DIT 中。同一个 DIT 对象的属性可以由多个映射创建。通常,通过一个映射来创建该对象的大部分属性,包括该对象的所有 MUST 属性。其他映射则负责创建其他 MAY 属性。映射是按照 nisLDAPobjectDN 属性在 NISLDAPmapping 文件中的出现顺序来处理的。如果包含 MAY 属性的映射在包含 MUST 属性的映射之前处理,会发生对象类违规。要了解关于该错误的更多信息,请参见常见的 LDAP 错误消息中的错误 65。

解决方法: nisLDAPobjectDN 属性重新排序,以便按照正确的顺序处理这些映射。临时解决方法是多次重新运行 ypserv -i 命令。每次执行命令时,LDAP 项接近完成状态。


注 - 如果映射方式会导致不能从至少一个映射创建某个对象的所有 MUST 属性,则支持以这种方式进行映射。

N2L 服务器超时问题

服务器超时。

Cause: N2L 服务器在刷新映射时,可能会对大型 LDAP 目录进行单一访问。如果 Oracle Directory Server Enterprise Edition 的配置不正确,此操作可能会因超时而无法完成。

解决方法: 要避免目录服务器超时,请手动或者通过运行 idsconfig 命令来修改 Oracle Directory Server Enterprise Edition 属性。有关详细消息,请参见常见的 LDAP 错误消息通过 Oracle Directory Server Enterprise Edition 实现 NIS 到 LDAP 转换的最佳方法

N2L 锁定文件问题

ypserv 命令启动,但未响应 NIS 请求。

Cause: N2L 服务器锁文件没有正确同步对 NIS 映射的访问权限。这种情况绝对不应发生。

解决方法: 在 N2L 服务器上键入以下命令来描述操作:

# svcadm disable network/nis/server:default
# rm /var/run/yp_maplock /var/run/yp_mapupdate
# svcadm enable network/nis/server:default

N2L 死锁问题

N2L 服务器死锁。

Cause: 如果 hostsipnodesypserv 文件中未正确列出 N2L 主服务器和 LDAP 服务器的地址,则可能会出现死锁问题。请参见NIS 到 LDAP 转换的先决条件,了解关于 N2L 正确地址配置的详细信息。

    有关死锁情况的示例,请考虑以下一系列事件:

  1. 一台 NIS 客户机试图查找一个 IP 地址。

  2. N2L 服务器发现 hosts 项已过时。

  3. N2L 服务器尝试从 LDAP 更新 hosts 项。

  4. N2L 服务器从 ypserv 获取其 LDAP 服务器的名称,然后使用 libldap 进行搜索。

  5. libldap 尝试通过调用名称服务转换,将 LDAP 服务器名称转换为 IP 地址。

  6. 名称服务转换可能会对 N2L 服务器进行 NIS 调用,而服务器死锁。

解决方法: 在 N2L 主服务器上的 hostsipnodes 文件中列出 N2L 主服务器和 LDAP 服务器的地址。必须将服务器地址列在 hostsipnodes 还是同时列在这两个文件中,取决于这些文件配置为以何种方式解析本地主机名。另外,请检查 svc:/network/name-service/switch 服务的 config/hosts 属性在查找顺序中是否将 files 列在了 nis 之前。 此死锁问题的另一种解决方案是在 ypserv 文件中列出 LDAP 服务器的地址,而不是其主机名。由于 LDAP 服务器地址将在其他位置中列出,所以更改 LDAP 服务器或 N2L 服务器的地址会使工作量稍有增加。