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

自定义映射的示例

以下两个示例说明如何自定义映射。请使用首选的文本编辑器,根据需要修改 /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), ",")