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

NIS+ 到 LDAP 的转换概述

NIS+ 服务器守护进程 rpc.nisd 将 NIS+ 数据 以专用文件格式存储到 /var/nis/data 目录中。尽管完全有可能使 NIS+ 数据与 LDAP 同步,但这样的同步以前需要外部代理。不过,现在使用 NIS+ 守护进程,可以将 LDAP 服务器用作 NIS+ 数据的数据仓库。由于这样一来可以使 NIS+ 客户机和 LDAP 客户机共享相同的名称服务信息,因此更易于从使用 NIS+ 作为主名称服务转换为使用 LDAP 作为主名称服务。

缺省情况下,rpc.nisd 守护进程继续按照以前的方式工作,即仅依赖 /var/nis/data NIS+ 数据库。如果需要的话,系统管理员可以选择将 LDAP 服务器用作 NIS+ 数据库任何子集的授权数据仓库。此时,/var/nis/data 文件充当 rpc.nisd 守护进程的高速缓存,这样可以减少 LDAP 查找的通信流量,而且如果 LDAP 服务器暂时不可用,则 rpc.nisd 还可以继续工作。除了可以在 NIS+ 和 LDAP 之间保持持续同步外,还可以将 NIS+ 数据上载到 LDAP 或者将 LDAP 数据下载到 NIS+。

将数据映射到 LDAP 或从 LDAP 映射数据由灵活的配置文件语法来控制。模板映射文件 /var/nis/NIS+LDAPmapping.template 包含所有标准 NIS+ 表(client_info.org_dirtimezone.org_dir 除外),对于大多数 NIS+ 安装来说,无需更改该文件或只需进行很小的改动。(有关 client_info.org_dirtimezone.org_dir 的信息,请参见client_infotimezone 表(从 NIS+ 转换为 LDAP)。)除了提供 NIS+ 数据在 LDAP 目录信息树 (Directory Information Tree, DIT) 中的位置以外,该映射文件还允许为源自 LDAP 的 NIS+ 数据提供生存时间 (time-to-live, TTL)。虽然通常情况下 NIS+ 列的值和 LDAP 属性值之间是一一对应的关系,但是该映射文件还可以用于维护更复杂的关系。

/etc/default/rpc.nisd 文件可用于选择 LDAP 服务器和验证,并控制 rpc.nisd 的一些常规行为。请参见 rpc.nisd( 4)。映射的详细消息可通过 /var/nis/NIS+LDAPmapping 文件来指定。有关更多信息,请参见 NIS+LDAPmapping(4)。映射文件的名称可以通过编辑 /lib/svc/method/nisplus 文件来更改。有关更多信息,请参见NIS+ 到 LDAP 转换工具和服务管理工具

本章使用了以下术语:

rpc.nisd 配置文件

rpc.nisd 操作 由两个配置文件来控制。

配置是通过为预定义的属性赋值来完成的。除了配置文件,配置属性还可以从 LDAP 读取(请参见将配置信息存储到 LDAP 中),或者在 rpc.nisd 命令行中通过 -x 选项指定。如果在多个位置中指定了同一个属性,则优先顺序(从高到低)如下所示:

  1. rpc.nisd -x 选项

  2. 配置文件

  3. LDAP

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

与由 NIS+ 到 LDAP 的转换相关联的大多数命令行管理任务都由服务管理工具来管理。有关 SMF 的概述,请参阅System Administration Guide: Basic Administration中的“Managing Services (Overview)”。有关更多详细信息,另请参阅 svcadm(1M)svcs(1) 手册页。

何时不使用 SMF 进行 NIS+ 到 LDAP 转换

通常,/usr/sbin/rpc.nisd 守护进程是使用 svcadm 命令管理的。但是,当使用 -x nisplusLDAPinitialUpdateOnly=yes 调用 rpc.nisd 时,rpc.nisd 会执行指定的初始更新操作,然后再退出。即,rpc.nisd 不会守护进程化。服务管理工具不应当与 -x nisplusLDAPinitialUpdateOnly=yes 结合使用。SMF 可以在您希望启动、停止或重新启动 rpc.nisd 守护进程的其他任何时间使用。

以下示例说明如何将 rpc.nisd-x nisplusLDAPinitialUpdateOnly=yes 结合使用。


# /usr/sbin/rpc.nisd -m mappingfile \

-x nisplusLDAPinitialUpdateAction=from_ldap \

-x nisplusLDAPinitialUpdateOnly=yes

修改 /lib/svc/method/nisplus 文件

如果要在用服务管理工具调用 rpc.nisd 守护进程时包括特定选项,可以使用 svcprop 命令或者修改 /lib/svc/method/nisplus 文件。有关使用 svcprop 命令的更多信息,请参见 svcprop(1) 手册页。以下过程介绍如何修改 /lib/svc/method/nisplus 文件。

如何修改 /lib/svc/method/nisplus 文件
  1. 成为超级用户或承担等效角色。

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

  2. 停止 NIS+ 服务。


    # svcadm disable network/rpc/nisplus:default
    

  3. 打开 /lib/svc/method/nisplus 文件。

    使用所选的编辑器。

  4. 编辑该文件并添加所需的选项。

    将如下内容:


    if [ -d /var/nis/data -o -d /var/nis/$hostname ]; then
    
                        /usr/sbin/rpc.nisd || exit $

    更改为:


    if [ -d /var/nis/data -o -d /var/nis/$hostname ]; then
    
                         /usr/sbin/rpc.nisd -Y -B || exit $?

    在本示例中,向 rpc.nisd 中添加了 -Y-B 选项,因此这两个选项会在系统启动时自动实现。

  5. 保存并退出 /lib/svc/method/nisplus 文件。

  6. 启动 NIS+ 服务。


    # svcadm enable network/rpc/nisplus:default
    

创建属性和对象类

根据 NIS+/LDAP 映射的配置方式,您可能希望创建许多新的 LDAP 属性和对象类。以下示例说明如何通过指定 LDIF 数据来完成此操作,这些数据可用作 ldapadd 命令的输入。创建一个包含 LDIF 数据的文件,然后调用 ldapadd(1)


# ldapadd -D bind-DN -f ldif -file

此方法适用于 Sun Java System Directory Server,还可能适用于其他 LDAP 服务器。


注意 –

除了 defaultSearchBasepreferredServerListauthenticationMethod 属性以及 SYNTAX 规范,本章中使用的对象标识符 (object identifier, OID) 仅用于说明。由于尚未指定任何正式的 OID,因此您可以自由使用任何适当的 OID。