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

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

本章介绍如何启用对使用存储在 LDAP 目录中名称信息的 NIS 客户机的支持。通过遵照本章中的过程操作,可以从使用 NIS 名称服务转换为使用 LDAP 名称服务。

要了解转换到 LDAP 的益处,请参见LDAP 名称服务与其他名称服务的比较

本章将介绍以下信息:

NIS 到 LDAP 转换服务概述

NIS 到 LDAP 转换服务(N2L 服务)使用 NIS 到 LDAP 转换守护进程来替换 NIS 主服务器上现有的 NIS 守护进程。N2L 服务还在该服务器上创建一个 NIS 到 LDAP 的转换映射文件。该映射文件指定 NIS 映射项和 LDAP 中目录信息树 (Directory Information Tree, DIT) 等效项之间的映射。已经进行这种转换的 NIS 主服务器称为 N2L 服务器。从属服务器上没有 NISLDAPmapping 文件,因此它们继续以通常的方式工作。从属服务器定期从 N2L 服务器更新其数据,就好像 N2L 服务器是常规的 NIS 主服务器一样。

N2L 服务的行为由 ypservNISLDAPmapping 配置文件控制。脚本 inityp2l 可帮助对这些配置文件进行初始设置。一旦建立了 N2L 服务器,就可以通过直接编辑这些配置文件来维护 N2L。

N2L 服务支持以下功能:

在任何名称系统中,仅有一个信息源可以是权威来源。在传统的 NIS 中,NIS 源是权威信息。在使用 N2L 服务时,权威数据源自 LDAP 目录。如第 9 章,LDAP 的基本组件和概念(概述)中所述,该目录是通过使用目录管理工具进行管理的。

NIS 源仅保留用于紧急备份或卸载。在使用 N2L 服务之后,可以逐步淘汰 NIS 客户机。最终,所有的 NIS 客户机都会被 Solaris LDAP 名称服务客户机所取代。

以下各小节中提供了其他概述信息:

NIS 到 LDAP 转换工具和服务管理工具

NIS 和 LDAP 服务由服务管理工具管理。 可以使用 svcadm 命令对这些服务执行启用、禁用或重新启动等管理操作。使用 svcs 命令可以查询服务的状态。有关使用 SMF 对 LDAP 和 NIS 进行管理的更多信息,请参见LDAP 和服务管理工具NIS 和服务管理工具。有关 SMF 的概述,请参阅System Administration Guide: Basic Administration中的“ Managing Services (Overview)”。另请参阅 svcadm(1M)svcs(1) 手册页以了解更多详细信息。

NIS 到 LDAP 转换的目标用户

您需要熟悉 NIS 和 LDAP 概念、术语和 ID 才能执行本章中的过程。有关 NIS 和 LDAP 名称服务的更多信息,请参见本书中的以下两章:

不应使用 NIS 到 LDAP 转换服务的情况

请勿在以下情况下使用 N2L 服务:

NIS 到 LDAP 转换服务对用户造成的影响

仅安装与 N2L 服务相关的文件不会更改 NIS 服务器的缺省行为。在安装时,管理员将会看到 NIS 手册页发生了一些变化,而且服务器上增加了 N2L 帮助脚本 inityp2lypmap2src。但是,只要在 NIS 服务器上没有运行 inityp2l 或没有手动创建 N2L 配置文件,NIS 组件就会继续在传统的 NIS 模式下启动并像通常那样工作。

运行 inityp2l 之后,用户会看到服务器和客户机行为发生了一些变化。以下是 NIS 和 LDAP 用户类型的列表,其中说明了在部署 N2L 服务之后每种类型的用户应当注意到的情况。

用户类型 

N2L 服务的影响 

NIS 主服务器管理员 

NIS 主服务器转换为 N2L 服务器。NISLDAPmappingypserv 配置文件将会安装在 N2L 服务器上。建立 N2L 服务器之后,可以使用 LDAP 命令来管理名称信息。

NIS 从属服务器管理员 

进行 N2L 转换之后,NIS 从属服务器继续以通常的方式运行 NIS。当 ypmake 调用 yppush 时,N2L 服务器会将已更新的 NIS 映射推送到从属服务器。请参见 ypmake(1M) 手册页。

NIS 客户机 

NIS 读取操作与传统的 NIS 没有区别。当 Solaris LDAP 名称服务客户机更改 DIT 中的信息时,这些信息会复制到 NIS 映射中。复制操作是在可配置的超时时间过期之后完成的。这类行为与连接到 NIS 从属服务器的常规 NIS 客户机的行为相似。 

如果 N2L 服务器无法绑定到 LDAP 服务器进行读取,则 N2L 服务器将从其自身的缓存副本中返回信息。或者,N2L 服务器还可能会返回内部服务器错误。可以将 N2L 服务器配置为按照上述任一方式响应。有关更多详细信息,请参见 ypserv(1M) 手册页。

所有用户 

当 NIS 客户机请求更改口令时,所做的更改将立即显示在 N2L 主服务器和本地 LDAP 客户机上。 

如果尝试在 NIS 客户机上更改口令,而且 LDAP 服务器不可用,则更改将被拒绝,N2L 服务器将返回内部服务器错误。此行为可防止将不正确的信息写入高速缓存中。 

NIS 到 LDAP 转换术语

以下是与实现 N2L 服务相关的术语。

表 15–1 与 N2L 转换相关的术语

术语 

说明 

N2L configuration file(N2L 配置文件) 

ypserv 守护进程用来在 N2L 模式下启动主服务器的 /var/yp/NISLDAPmapping 文件和 /var/yp/ypserv 文件。有关详细消息,请参见 NISLDAPmapping(4) 和 ypserv(4) 手册页。

map(映射) 

在 N2L 服务的上下文中,术语“映射”的用法有两种:

  • 指代 NIS 用于存储特定类型信息的数据库文件

  • 描述从 LDAP DIT 映射 NIS 信息或将 NIS 信息映射到 LDAP DIT 的过程

mapping(映射) 

NIS 项与 LDAP DIT 项之间的相互转换过程。 

mapping file(映射文件) 

用来指定如何映射 NIS 文件和 LDAP 文件之间各项的 NISLDAPmapping 文件。

standard map(标准映射) 

无需手动修改映射文件即可由 N2L 服务支持的常用 NIS 映射。支持的标准映射中提供了支持的标准映射的列表。

nonstandard map(非标准映射) 

自定义为使用 NIS 和 LDAP DIT 之间映射(RFC 2307 或其后续版本中标识的映射除外)的标准 NIS 映射。 

custom map(自定义映射) 

不是标准映射的任何映射,从 NIS 转换至 LDAP 时,需要手动修改映射文件。 

LDAP client(LDAP 客户机) 

对任何 LDAP 服务器执行读写操作的任何传统的 LDAP 客户机。传统的 LDAP 客户机是对任何 LDAP 服务器执行读写操作的系统。Solaris LDAP 名称服务客户机可处理部分自定义的名称信息。 

LDAP naming services client(LDAP 名称服务客户机) 

用来处理部分自定义名称信息的 Solaris LDAP 客户机。 

N2L server(N2L 服务器) 

已使用 N2L 服务重新配置为 N2L 服务器的 NIS 主服务器。重新配置过程包括替换 NIS 守护进程和添加新配置文件。 

NIS 到 LDAP 转换命令、文件和映射

共有两个实用程序、两个配置文件和一个映射与 N2L 转换相关联。

表 15–2 N2L 命令、文件和映射的说明

命令/文件/映射 

说明 

/usr/lib/netsvc/yp/inityp2l

帮助创建 NISLDAPmappingypserv 配置文件的实用程序。此实用程序不是用来管理这些文件的通用工具。高级用户可通过使用文本编辑器检查和自定义 inityp2l 输出来维护 N2L 配置文件或创建自定义映射。请参见 inityp2l(1M) 手册页。

/usr/lib/netsvc/yp/ypmap2src

用来将标准 NIS 映射转换为近似等效的 NIS 源文件的实用程序。ypmap2src 主要用于将 N2L 转换服务器转换为传统的 NIS。请参见 ypmap2src(1M) 手册页。

/var/yp/NISLDAPmapping

用来指定 NIS 映射项和 LDAP 中目录信息树 (Directory Information Tree, DIT) 等效项之间映射的配置文件。请参见 NISLDAPmapping(4) 手册页。

/var/yp/ypserv

用来为 NIS 到 LDAP 转换守护进程指定配置信息的文件。请参见 ypserv(4) 手册页。

ageing.byname

yppasswdd 使用的一种映射,在实现 NIS 到 LDAP 转换时,用于在 DIT 中读写口令生命期信息。

支持的标准映射

缺省情况下,N2L 服务支持以下列出的映射与 RFC 2307 或其后续版本中 LDAP 各项之间的映射。这些标准映射不需要手动修改映射文件。系统上任何未列在以下列表中的映射都被视为自定义映射,需要手动进行修改。

N2L 服务还支持对 auto.* 映射进行自动映射。但是,由于大多数 auto.* 文件名和内容都特定于各自的网络配置,因此该列表并未指定这些文件,但作为标准映射支持的 auto.homeauto.master 映射除外。


audit_user

auth_attr

auto.home

auto.master

bootparams

ethers.byaddr ethers.byname

exec_attr

group.bygid group.byname group.adjunct.byname

hosts.byaddr hosts.byname

ipnodes.byaddr ipnodes.byname

mail.byaddr mail.aliases

netgroup netgroup.byprojid netgroup.byuser netgroup.byhost

netid.byname

netmasks.byaddr

networks.byaddr networks.byname

passwd.byname passwd.byuid passwd.adjunct.byname

printers.conf.byname

prof_attr

project.byname project.byprojectid

protocols.byname protocols.bynumber

publickey.byname

rpc.bynumber

services.byname services.byservicename

timezone.byname

user_attr

在 NIS 到 LDAP 转换过程中,yppasswdd 守护进程使用 N2L 特定的映射 ageing.byname 在 DIT 中读写口令生命期信息。如果没有使用口令生命期,则会忽略 ageing.byname 映射。

从 NIS 转换为 LDAP(任务列表)

下表列出了使用标准的和自定义的 NIS 到 LDAP 转换映射来安装和管理 N2L 服务所需的过程。

任务 

说明 

参考 

完成所有先决条件。 

确保已经正确配置了 NIS 服务器和 Sun Java System Directory Server(LDAP 服务器)。  

NIS 到 LDAP 转换的先决条件

设置 N2L 服务。 

在 NIS 主服务器上运行 inityp2l 以设置以下映射之一:

  

  

标准映射 

如何使用标准映射设置 N2L 服务

  

自定义映射或非标准映射 

如何使用自定义映射或非标准映射设置 N2L 服务

自定义映射。 

查看如何为 N2L 转换创建自定义映射的示例。 

自定义映射的示例

使用 N2L 配置 Sun Java System Directory Server。 

将 Sun Java System Directory Server 配置并调整为用于 N2L 转换的 LDAP 服务器。 

使用 Sun Java System Directory Server 进行 NIS 到 LDAP 转换的最佳做法

排除系统故障。 

确定和解决常见的 N2L 问题。 

NIS 到 LDAP 转换疑难解答

恢复为 NIS。 

使用相应的映射恢复为 NIS: 

  

  

基于旧 NIS 源文件的映射 

如何基于旧的源文件恢复为 NIS 映射

  

基于当前 DIT 的映射 

如何基于当前的 DIT 内容恢复为 NIS 映射

NIS 到 LDAP 转换的先决条件

在实现 N2L 服务之前,必须检查或完成以下各项操作:

设置 NIS 到 LDAP 转换服务

可以按照以下两个过程中的说明,使用标准映射或自定义映射来设置 N2L 服务。

在 NIS 到 LDAP 转换过程中,需要运行 inityp2l 命令。必须为该命令运行的交互式脚本提供配置信息。以下列出了需要提供的信息类型。有关这些属性的说明,请参见 ypserv(1M) 手册页。


注意 –

大多数 LDAP 服务器(包括 Sun Java System Directory Server)都支持 sasl/cram-md5 验证。


如何使用标准映射设置 N2L 服务

如果要转换支持的标准映射中所列的映射,请使用此过程。如果要使用自定义映射或非标准映射,请参见如何使用自定义映射或非标准映射设置 N2L 服务

设置 LDAP 服务器之后,请运行 inityp2l 脚本并在出现提示时提供配置信息。inityp2l 可为标准映射和 auto.* 映射设置配置文件和映射文件。

  1. 完成NIS 到 LDAP 转换的先决条件中所列的先决步骤。

  2. 在 NIS 主服务器上,成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  3. 将 NIS 主服务器转换为 N2L 服务器。


    # inityp2l
    

    在 NIS 主服务器上运行 inityp2l 脚本并遵照提示操作。有关需要提供的信息的列表,请参见设置 NIS 到 LDAP 转换服务

    有关更多详细信息,请参见 inityp2l(1M) 手册页。

  4. 确定 LDAP 目录信息树 (Directory Information Tree, DIT) 是否已完全初始化。

    如果 DIT 中已包含填充 NISLDAPmapping 文件中所列的全部映射所需的信息,则表明它已完全初始化。

    • 如果未包含,请继续执行步骤 5并跳过步骤 6。

    • 如果已包含,请跳过步骤 5 并转至步骤 6

  5. 初始化 DIT 以便从 NIS 源文件进行转换。

    仅当 DIT 尚未完全初始化时,才可执行这些步骤。

    1. 确保旧 NIS 映射是最新的版本。


      # cd /var/yp
      
      # make
      

      有关更多信息,请参见 ypmake(1M) 手册页。

    2. 停止 NIS 守护进程。


      # svcadm disable network/nis/server:default
      
    3. 将旧映射复制到 DIT 中,然后针对这些映射初始化 N2L 支持。


      # ypserv -Ir
      

      等待 ypserv 退出。


      提示 –

      最初的 NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。


    4. 启动 NIS 守护进程,确保其使用新映射。


      # svcadm enable network/nis/server:default
      

      这会使用标准映射来完成 N2L 服务的设置。您无需完成步骤 6。

  6. 初始化 NIS 映射。

    仅当 DIT 已完全初始化并且跳过了步骤 5 时,才可执行这些步骤。

    1. 停止 NIS 守护进程。


      # svcadm disable network/nis/server:default
      
    2. 使用 DIT 中的信息初始化 NIS 映射。


      # ypserv -r
      

      等待 ypserv 退出。


      提示 –

      最初的 NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。


    3. 启动 NIS 守护进程,确保其使用新映射。


      # svcadm enable network/nis/server:default
      
如何使用自定义映射或非标准映射设置 N2L 服务

如果符合以下情况,请使用此过程:

  1. 完成NIS 到 LDAP 转换的先决条件中所列的先决步骤。

  2. 在 NIS 主服务器上,成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  3. 将 NIS 主服务器配置为 N2L 服务器。


    # inityp2l
    

    在 NIS 主服务器上运行 inityp2l 脚本并遵照提示操作。有关需要提供的信息的列表,请参见设置 NIS 到 LDAP 转换服务

    有关更多详细信息,请参见 inityp2l(1M) 手册页。

  4. 修改 /var/yp/NISLDAPmapping 文件。

    有关如何修改映射文件的示例,请参见自定义映射的示例

  5. 确定 LDAP 目录信息树 (Directory Information Tree, DIT) 是否已完全初始化。

    如果 DIT 中已包含填充 NISLDAPmapping 文件中所列的全部映射所需的信息,则表明它已完全初始化。

    • 如果未包含,请完成步骤 6、步骤 8 和步骤 9。

    • 如果已包含,请跳过步骤 6 并完成步骤 7、步骤 8 和步骤 9。

  6. 初始化 DIT 以便从 NIS 源文件进行转换。

    1. 确保旧 NIS 映射是最新的版本。


      # cd /var/yp
      
      # make
      

      有关更多信息,请参见 ypmake(1M) 手册页。

    2. 停止 NIS 守护进程。


      # svcadm disable network/nis/server:default
      
    3. 将旧映射复制到 DIT 中,然后针对这些映射初始化 N2L 支持。


      # ypserv -Ir
      

      等待 ypserv 退出。


      提示 –

      最初的 NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。


    4. 启动 NIS 守护进程,确保其使用新映射。


      # svcadm enable network/nis/server:default
      
    5. 跳过步骤 7 并继续执行步骤 8

  7. 初始化 NIS 映射。

    仅当 DIT 已完全初始化时,才可以执行此步骤。

    1. 停止 NIS 守护进程。


      # svcadm disable network/nis/server:default
      
    2. 使用 DIT 中的信息初始化 NIS 映射。


      # ypserv -r
      

      等待 ypserv 退出。


      提示 –

      最初的 NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。


    3. 启动 NIS 守护进程,确保其使用新映射。


      # svcadm enable network/nis/server:default
      
  8. 检验 LDAP 项是否正确。

    如果这些项不正确,则 LDAP 名称服务器客户机将无法找到各项。


    # ldapsearch -h server -s sub -b "ou=servdates, dc=..." \
    
    "objectclass=servDates"
    
  9. 检验 LDAP_ 映射的内容。

    以下样例输出说明如何使用 makedm 来检验 hosts.byaddr 映射的内容。


    # makedbm -u LDAP_servdate.bynumber
    
    plato: 1/3/2001
    
    johnson: 2/4/2003,1/3/2001
    
    yeats: 4/4/2002
    
    poe: 3/3/2002,3/4/2000

    如果内容与预期一致,则表明已成功地从 NIS 转换到 LDAP。

    请注意,最初的 NIS dbm 文件不会被覆写,因此始终可以恢复这些文件。有关更多信息,请参见恢复为 NIS

自定义映射的示例

以下两个示例说明如何自定义映射。请使用首选的文本编辑器,根据需要修改 /var/yp/NISLDAPmapping 文件。有关文件属性和语法的更多信息,请参见 NISLDAPmapping(4) 手册页以及第 9 章,LDAP 的基本组件和概念(概述)中的 LDAP 名称服务信息。

示例 1-移动主机项

本示例说明如何将主机项从缺省位置移到 DIT 中的另一个(非标准)位置。

请将 NISLDAPmapping 文件中的 nisLDAPobjectDN 属性更改为新的基本 LDAP 标识名 (distinguished name, DN)。在本示例中,LDAP 对象的内部结构未更改,因此 objectClass 项也不会更改。

将如下内容:


nisLDAPobjectDN hosts: \

                        ou=hosts,?one?, \

                        objectClass=device, \

                        objectClass=ipHost

更改为:


nisLDAPobjectDN hosts: \

                        ou=newHosts,?one?, \

                        objectClass=device, \

                        objectClass=ipHost

此更改会导致按如下方式映射这些项:

   dn: ou=newHosts, dom=domain1, dc=sun, dc=com

而不是按如下方式映射:

   dn:ou=hosts, dom=domain1, dc=sun, dc=com

示例 2-实现自定义映射

本示例说明如何实现自定义映射。

虚拟映射 servdate.bynumber 中包含有关为系统提供服务的日期的信息。此映射根据计算机的序列号(在本示例中为 123)建立索引。每一项都由计算机属主的姓名、一个冒号和一个用逗号分隔的服务日期列表组成,如 John Smith:1/3/2001,4/5/2003。

旧映射的结构将映射到以下形式的 LDAP 项上:


dn: number=123,ou=servdates,dc=... \

                 number: 123 \

                 userName: John Smith \

                 date: 1/3/2001 \

                 date: 4/5/2003 \

                  .

                  .

                  .

                 objectClass: servDates

通过检查 NISLDAPmapping 文件,可以看到与所需模式最接近的映射是 group。可以根据 group 映射建立自定义映射的模型。由于仅有一个映射,因此不需要 nisLDAPdatabaseIdMapping 属性。以下是要添加到 NISLDAPmapping 中的属性:


nisLDAPentryTtl servdate.bynumber:1800:5400:3600



nisLDAPnameFields servdate.bynumber: \

                        ("%s:%s", uname, dates)



nisLDAPobjectDN servdate.bynumber: \

                        ou=servdates, ?one? \

                        objectClass=servDates:



nisLDAPattributeFromField servdate.bynumber: \

                        dn=("number=%s,", rf_key), \

                        number=rf_key, \

                        userName=uname, \

                        (date)=(dates, ",")



nisLDAPfieldFromAttribute servdate.bynumber: \

                        rf_key=number, \

                        uname=userName, \

                        dates=("%s,", (date), ",")  

使用 Sun Java System Directory Server 进行 NIS 到 LDAP 转换的最佳做法

N2L 服务支持 Sun Microsystems, Inc. 提供的 Sun Java System Directory Server(以前称为 Sun ONE Directory Server)和兼容版本的目录服务器。其他(第三方)LDAP 服务器可能会使用 N2L 服务,但是 Sun 不支持这些服务器。如果使用的是 Sun Java System Directory Server 或兼容 Sun 服务器以外的 LDAP 服务器,则必须手动配置服务器,使其支持 RFC 2307 或其后续版本中的方案。

如果使用的是 Sun Java System Directory Server,则可以增强目录服务器以提高性能。必须对 Sun Java System Directory Server 具有 LDAP 管理员权限才能增强目录服务器。另外,还可能需要重新引导目录服务器,此任务必须与服务器的 LDAP 客户机协调进行。docs.sun.com Web 站点上提供了 Sun Java System Directory Server(以及 Sun ONE 和 iPlanet Directory Server)文档。

使用 Sun Java System Directory Server 创建虚拟列表视图索引

对于大型映射,必须使用 LDAP 虚拟列表视图 (virtual list view, VLV) 索引来确保 LDAP 搜索可返回全部结果。有关在 Sun Java System Directory Server 上设置 VLV 索引的信息,请参见位于 docs.sun.com Web 站点上的 Sun Java System Directory Server 文档。

VLV 搜索结果使用固定的页面大小 50000。如果在 Sun Java System Directory Server 上使用 VLV,则 LDAP 服务器和 N2L 服务器都必须可以传送此大小的页面。如果已知所有的映射都小于此限制,则不必使用 VLV 索引。但是,如果使用的映射大于此大小限制,或者不能确定所有映射的大小,请使用 VLV 索引来避免返回不完整的结果。

如果使用 VLV 索引,请按如下方式设置适当的大小限制。

创建 VLV 索引之后,请立即将其激活,方法是在 Sun Java System Directory Server 上运行带有 vlvindex 选项的 directoryserver。有关更多信息,请参见 directoryserver(1M) 手册页。

标准映射的 VLV

如果符合以下条件,请使用 Sun Java System Directory Server idsconfig 命令设置 VLV:

VLV 特定于域,因此每次运行 idsconfig 时,都会为一个 NIS 域创建相应的 VLV。所以,在 NIS 到 LDAP 的转换过程中,必须针对 NISLDAPmapping 文件中包含的每个 nisLDAPdomainContext 属性都运行一次 idsconfig

自定义映射和非标准映射的 VLV

如果符合以下条件,则必须为映射手动创建新的 Sun Java System Directory Server VLV,或者复制并修改现有的 VLV 索引:

要查看现有的 VLV 索引,请键入以下内容:


# ldapsearch -h hostname -s sub -b "cn=ldbm database,cn=plugins,cn=config" \

"objectClass=vlvSearch"

避免 Sun Java System Directory Server 服务器超时

N2L 服务器在刷新映射时,可能会对 LDAP 目录进行大量访问。如果 Sun Java System Directory Server 的配置不正确,则刷新操作可能会因超时而无法完成。要避免目录服务器超时,请手动或者通过运行 idsconfig 命令来修改以下 Sun Java System Directory Server 属性。

例如,要增加服务器执行搜索请求所需的最短时间(以秒为单位),请修改以下属性:


dn: cn=config

nsslapd-timelimit: -1

为了进行测试,可以使用属性值 -1,这表示没有限制。确定最佳限制值之后,请更改属性值。请勿在生产服务器上保留值为 -1 的任何属性设置。如果没有限制,则服务器可能会容易受到拒绝服务攻击。

有关使用 LDAP 配置 Sun Java System Directory Server 的更多信息,请参见本书的System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP)中的“使用 LDAP 客户机设置 Sun Java System Directory Server(任务)”

避免 Sun Java System Directory Server 缓冲区溢出

要避免缓冲区溢出,请手动或者通过运行 idsconfig 命令来修改 Sun Java System Directory Server 属性。

  1. 例如,要增加针对客户机搜索查询返回的最大项数,请修改以下属性:


    dn: cn=config
    
    nsslapd-sizelimit: -1
  2. 要增加针对客户机搜索查询检验的最大项数,请修改以下属性:


    dn: cn=config, cn=ldbm database, cn=plugins, cn=config
    
    nsslapd-lookthroughlimit: -1

为了进行测试,可以使用属性值 -1,这表示没有限制。确定最佳限制值之后,请更改属性值。请勿在生产服务器上保留值为 -1 的任何属性设置。如果没有限制,则服务器可能会容易受到拒绝服务攻击。

如果使用 VLV,则应当按照使用 Sun Java System Directory Server 创建虚拟列表视图索引中的定义设置 sizelimit 属性值。如果未使用 VLV,则应当将大小限制设置得足够大,以便可以容纳最大容器。

有关使用 LDAP 配置 Sun Java System Directory Server 的更多信息,请参见第 11 章,为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)

NIS 到 LDAP 转换限制

设置 N2L 服务器之后,就不再使用 NIS 源文件。因此,请勿在 N2L 服务器上运行 ypmake。如果意外运行了 ypmake(如针对现有的 cron 作业运行了该命令),N2L 服务也不会受到影响。但是,会记录一个警告,提示应当明确调用 yppush

NIS 到 LDAP 转换疑难解答

本节包括两个方面的疑难解答:

常见的 LDAP 错误消息

有时,N2L 服务器会记录与内部 LDAP 问题相关的错误,并生成与 LDAP 相关的错误消息。尽管这些错误不是致命的,但是它们指明有问题需要检查。例如,N2L 服务器可能会继续工作,但是会提供过时或不完整的结果。

以下列出了在实现 N2L 服务时可能遇到的一些常见的 LDAP 错误消息,以及错误说明、可能的原因和针对这些错误的解决方案。

超过管理限制

DN 语法无效

对象类违规

无法联系 LDAP 服务器

超时

NIS 到 LDAP 转换问题

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

调试 NISLDAPmapping 文件

映射文件 NISLDAPmapping 非常复杂。许多可能的错误都会导致映射出现意外的行为方式。请使用以下方法来解决这类问题。

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

NIS 守护进程在启动时退出

NIS 操作产生意外的结果

NIS 映射的处理顺序


注意 –

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


N2L 服务器超时问题

N2L 锁定文件问题

N2L 死锁问题

恢复为 NIS

已使用 N2L 服务从 NIS 转换到 LDAP 的站点将会逐步使用 Solaris LDAP 名称服务客户机替换所有的 NIS 客户机。对 NIS 客户机的支持最终会成为多余。但是,N2L 服务提供了两种在必要时返回传统 NIS 的方法,如以下两个过程中所述。


提示 –

传统的 NIS 会忽略 N2L 版本的 NIS 映射(如果存在这些映射)。恢复为 NIS 之后,如果在服务器上保留 N2L 版本的映射,则 N2L 映射不会产生问题。因此,如果以后决定重新启用 N2L,则保留 N2L 映射可能会非常有用。但是,这些映射确实会占用磁盘空间。


如何基于旧的源文件恢复为 NIS 映射
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 停止 NIS 守护进程。


    # svcadm disable network/nis/server:default
    
  3. 禁用 N2L。

    此命令可备份并移动 N2L 映射文件。


    # mv /var/yp/NISLDAPmapping backup_filename
    
  4. 设置 NOPUSH 环境变量,以便 ypmake 不会推送新映射。


    # NOPUSH=1
    
  5. 创建一组基于旧源的新 NIS 映射。


    # cd /var/yp
    
    # make
    
  6. 可选)删除 N2L 版本的 NIS 映射。


    # rm /var/yp/domainname/LDAP_*
    
  7. 启动 NIS 守护进程。


    # svcadm enable network/nis/server:default
    
如何基于当前的 DIT 内容恢复为 NIS 映射

执行此过程之前请先备份旧的 NIS 源文件。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“使用基于角色的访问控制(任务)”

  2. 停止 NIS 守护进程。


    # svcadm disable network/nis/server:default
    
  3. 从 DIT 更新映射。


    # ypserv -r
    

    等待 ypserv 退出。

  4. 禁用 N2L。

    此命令可备份并移动 N2L 映射文件。


    # mv /var/yp/NISLDAPmapping backup_filename
    
  5. 重新生成 NIS 源文件。


    # ypmap2src
    
  6. 手动检查重新生成的 NIS 源文件是否具有正确的内容和结构。

  7. 将重新生成的 NIS 源文件移到相应的目录中。

  8. 可选)删除 N2L 版本的映射文件。


    # rm /var/yp/domainname/LDAP_*
    
  9. 启动 NIS 守护进程。


    # svcadm enable network/nis/server:default