可以按照以下两个过程中的说明,使用标准映射或自定义映射来设置 N2L 服务。
在 NIS 到 LDAP 转换过程中,需要运行 inityp2l 命令。必须为该命令运行的交互式脚本提供配置信息。以下列出了需要提供的信息类型。有关这些属性的说明,请参见 ypserv(1M) 手册页。
创建的配置文件的名称(缺省为 /etc/default/ypserv)
用来将配置信息存储到 LDAP 中的 DN(缺省为 ypserv)
用来将数据映射到 LDAP 或从 LDAP 映射数据的首选服务器的列表
用来将数据映射到 LDAP 或从 LDAP 映射数据的验证方法
用来将数据映射到 LDAP 或从 LDAP 映射数据的传输层安全性 (Transport Layer Security, TLS) 方法
用来在 LDAP 中读写数据的代理用户绑定 DN
用来在 LDAP 中读写数据的代理用户口令
LDAP 绑定操作的超时值(以秒为单位)
LDAP 搜索操作的超时值(以秒为单位)
LDAP 修改操作的超时值(以秒为单位)
LDAP 添加操作的超时值(以秒为单位)
LDAP 删除操作的超时值(以秒为单位)
LDAP 服务器上搜索操作的时间限制(以秒为单位)
LDAP 服务器上搜索操作的大小限制(以字节为单位)
N2L 是否应当遵循 LDAP 引用
导致 LDAP 检索错误的操作、尝试检索的次数以及各尝试操作的超时值(以秒为单位)
导致存储错误的操作、尝试的次数以及各尝试操作的超时值(以秒为单位)
映射文件的名称
是否为 auto_direct 映射生成映射信息
脚本将与自定义映射相关的信息放入映射文件中的相应位置。
名称上下文
是否启用口令更改功能
是否更改所有映射的缺省 TTL 值
大多数 LDAP 服务器(包括 Sun Java System Directory Server)都不支持 sasl/cram-md5 验证。
如果要转换支持的标准映射中所列的映射,请使用此过程。如果要使用自定义映射或非标准映射,请参见如何使用自定义映射或非标准映射设置 N2L 服务。
设置 LDAP 服务器之后,请运行 inityp2l 脚本并在出现提示时提供配置信息。inityp2l 可为标准映射和 auto.* 映射设置配置文件和映射文件。
完成NIS 到 LDAP 转换的先决条件中所列的先决步骤。
在 NIS 主服务器上,成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
将 NIS 主服务器转换为 N2L 服务器。
# inityp2l |
在 NIS 主服务器上运行 inityp2l 脚本并遵照提示操作。有关需要提供的信息的列表,请参见设置 NIS 到 LDAP 转换服务。
有关更多详细信息,请参见 inityp2l(1M) 手册页。
确定 LDAP 目录信息树 (Directory Information Tree, DIT) 是否已完全初始化。
如果 DIT 中已包含填充 NISLDAPmapping 文件中所列的全部映射所需的信息,则表明它已完全初始化。
初始化 DIT 以便从 NIS 源文件进行转换。
仅当 DIT 尚未完全初始化时,才可执行这些步骤。
确保旧 NIS 映射是最新的版本。
# cd /var/yp # make |
有关更多信息,请参见 ypmake(1M) 手册页。
停止 NIS 守护进程。
# svcadm disable network/nis/server:default |
将旧映射复制到 DIT 中,然后针对这些映射初始化 N2L 支持。
# ypserv -Ir |
等待 ypserv 退出。
最初的 NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。
启动 NIS 守护进程,确保其使用新映射。
# svcadm enable network/nis/server:default |
这会使用标准映射来完成 N2L 服务的设置。您无需完成步骤 6。
初始化 NIS 映射。
仅当 DIT 已完全初始化并且跳过了步骤 5 时,才可执行这些步骤。
如果符合以下情况,请使用此过程:
具有支持的标准映射中未列出的映射。
具有要映射到非 RFC 2307 LDAP 映射的标准 NIS 映射。
完成NIS 到 LDAP 转换的先决条件中所列的先决步骤。
在 NIS 主服务器上,成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
将 NIS 主服务器配置为 N2L 服务器。
# inityp2l |
在 NIS 主服务器上运行 inityp2l 脚本并遵照提示操作。有关需要提供的信息的列表,请参见设置 NIS 到 LDAP 转换服务。
有关更多详细信息,请参见 inityp2l(1M) 手册页。
修改 /var/yp/NISLDAPmapping 文件。
有关如何修改映射文件的示例,请参见自定义映射的示例。
确定 LDAP 目录信息树 (Directory Information Tree, DIT) 是否已完全初始化。
如果 DIT 中已包含填充 NISLDAPmapping 文件中所列的全部映射所需的信息,则表明它已完全初始化。
如果未包含,请完成步骤 6、步骤 8 和步骤 9。
如果已包含,请跳过步骤 6 并完成步骤 7、步骤 8 和步骤 9。
初始化 DIT 以便从 NIS 源文件进行转换。
确保旧 NIS 映射是最新的版本。
# cd /var/yp # make |
有关更多信息,请参见 ypmake(1M) 手册页。
停止 NIS 守护进程。
# svcadm disable network/nis/server:default |
将旧映射复制到 DIT 中,然后针对这些映射初始化 N2L 支持。
# ypserv -Ir |
等待 ypserv 退出。
最初的 NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。
启动 NIS 守护进程,确保其使用新映射。
# svcadm enable network/nis/server:default |
跳过步骤 7 并继续执行步骤 8。
初始化 NIS 映射。
仅当 DIT 已完全初始化时,才可以执行此步骤。
检验 LDAP 项是否正确。
如果这些项不正确,则 LDAP 名称服务器客户机将无法找到各项。
# ldapsearch -h server -s sub -b "ou=servdates, dc=..." \ "objectclass=servDates" |
检验 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 名称服务信息。
本示例说明如何将主机项从缺省位置移到 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。
本示例说明如何实现自定义映射。
虚拟映射 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), ",") |