跳过导航链接 | |
退出打印视图 | |
系统管理指南:命名和目录服务(DNS、NIS 和 LDAP) Oracle Solaris 10 8/11 Information Library (简体中文) |
4. 网络信息服务 (Network Information Service, NIS)(概述)
11. 为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)
使用 Sun Java System Directory Server 进行 NIS 到 LDAP 转换的最佳做法
使用 Sun Java System Directory Server 创建虚拟列表视图索引
避免 Sun Java System Directory Server 服务器超时
避免 Sun Java System Directory Server 缓冲区溢出
您可以按照以下两个过程中的说明,使用标准映射或定制映射设置 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.* 映射设置配置和映射文件。
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
# inityp2l
在 NIS 主服务器上运行 inityp2l 脚本并按照提示操作。有关需要提供的信息的列表,请参见设置 NIS 到 LDAP 转换服务。
有关更多详细信息,请参见 inityp2l(1M) 手册页。
如果 DIT 中已包含置备 NISLDAPmapping 文件中所列全部映射所需要的信息,则表明它已完全初始化。
仅当 DIT 尚未完全初始化时,才可执行这些步骤。
# cd /var/yp # make
有关更多信息,请参见 ypmake(1M) 手册页。
# svcadm disable network/nis/server:default
# ypserv -Ir
等待 ypserv 退出。
提示 - 原始的 NIS dbm 文件不会被覆写。您可以根据需要恢复这些文件。
# svcadm enable network/nis/server:default
这样便完成了使用标准映射设置 N2L 服务的过程。您无需完成步骤 6。
仅当 DIT 已完全初始化并且跳过了步骤 5 时,才执行这些步骤。
如果符合以下情况,请使用此过程:
具有支持的标准映射中未列出的映射。
具有要映射到非 RFC 2307 LDAP 映射的标准 NIS 映射。
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
# inityp2l
在 NIS 主服务器上运行 inityp2l 脚本并按照提示操作。有关需要提供的信息的列表,请参见设置 NIS 到 LDAP 转换服务。
有关更多详细信息,请参见 inityp2l(1M) 手册页。
有关如何修改映射文件的示例,请参见定制映射的示例。
如果 DIT 中已包含置备 NISLDAPmapping 文件中所列全部映射所需要的信息,则表明它已完全初始化。
如果未包含,请完成步骤 6、步骤 8 和步骤 9。
如果已包含,请跳过步骤 6 并完成步骤 7、步骤 8 和步骤 9。
# cd /var/yp # make
有关更多信息,请参见 ypmake(1M) 手册页。
# svcadm disable network/nis/server:default
# ypserv -Ir
等待 ypserv 退出。
提示 - 原始的 NIS dbm 文件不会被覆写。您可以根据需要恢复这些文件。
# svcadm enable network/nis/server:default
仅当 DIT 已完全初始化时,才可以执行此步骤。
# svcadm disable network/nis/server:default
# ypserv -r
等待 ypserv 退出。
提示 - 原始的 NIS dbm 文件不会被覆写。您可以根据需要恢复这些文件。
# svcadm enable network/nis/server:default
如果这些项不正确,LDAP 命名服务器客户机将无法找到这些项。
# ldapsearch -h server -s sub -b "ou=servdates, dc=..." \ "objectclass=servDates"
以下样例输出说明如何使用 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 命名服务信息。
本示例说明如何将主机项从缺省位置移到 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), ",")