Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1315408
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-09 19:21:41


NIS 到LDAP 转换服务概述
第15 章• 从NIS 转换为LDAP(概述/任务) 253
表15–1 与N2L转换相关的术语
术语说明
N2Lconfiguration 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 映射。第255 页中的“支持的标准映射”
中提供了支持的标准映射的列表。
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 客户机。
N2Lserver(N2L服务
器)
已使用N2L服务重新配置为N2L服务器的NIS 主服务器。重新配置过程包括替换NIS 守护进程和
添加新配置文件。
NIS 到LDAP转换命令、文件和映射
共有两个实用程序、两个配置文件和一个映射与N2L转换相关联。
表15–2N2L命令、文件和映射的说明
命令/文件/映射说明
/usr/lib/netsvc/yp/inityp2l 帮助创建NISLDAPmapping 和ypserv 配置文件的实用程序。此实用程序不是
用来管理这些文件的通用工具。高级用户可通过使用文本编辑器检查和自定
义inityp2l 输出来维护N2L配置文件或创建自定义映射。请参见
inityp2l(1M) 手册页。
NIS 到LDAP 转换服务概述
254 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
表15–2 N2L命令、文件和映射的说明(续)
命令/文件/映射说明
/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.home 和
auto.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
NIS 到LDAP 转换服务概述
第15 章• 从NIS 转换为LDAP(概述/任务) 255
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 服务
器)。
第257 页中的“NIS 到LDAP 转换的先决
条件”
设置N2L服务。在NIS 主服务器上运行inityp2l 以设置
以下映射之一:
从NIS 转换为LDAP(任务列表)
256 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
任务说明参考
标准映射第259 页中的“如何使用标准映射设置
N2L服务”
自定义映射或非标准映射第260 页中的“如何使用自定义映射或非
标准映射设置N2L服务”
自定义映射。查看如何为N2L转换创建自定义映射的
示例。
第262 页中的“自定义映射的示例”
使用N2L配置Sun Java System
Directory Server。
将Sun Java System Directory Server 配置并
调整为用于N2L转换的LDAP 服务器。
第265 页中的“使用Sun Java System
Directory Server 进行NIS 到LDAP 转换的
最佳做法”
排除系统故障。确定和解决常见的N2L问题。第267 页中的“NIS 到LDAP 转换疑难解
答”
恢复为NIS。使用相应的映射恢复为NIS:
基于旧NIS 源文件的映射第271 页中的“如何基于旧的源文件恢复
为NIS 映射”
基于当前DIT 的映射第272 页中的“如何基于当前的DIT 内容
恢复为NIS 映射”
NIS 到LDAP转换的先决条件
在实现N2L服务之前,必须检查或完成以下各项操作:
 运行inityp2l 脚本以启用N2L模式之前,确保将系统设置为可正常工作的传统NIS 服务
器。
 在系统上配置LDAP 目录服务器。
NIS 到LDAP 转换迁移工具支持Sun Microsystems, Inc. 提供的Sun Java System Directory
Server(以前称为Sun ONE Directory Server)和兼容版本的目录服务器。如果使用Sun
Java System Directory Server,请在设置N2L服务之前,使用idsconfig 命令来配置服务
器。有关idsconfig 的更多信息,请参见第11 章和idsconfig(1M) 手册页。
其他(第三方)LDAP 服务器可能会使用N2L服务,但是Sun 不支持这些服务器。如果
使用的是Sun Java System Directory Server 或兼容Sun 服务器以外的LDAP 服务器,则必
须在设置N2L服务之前手动配置服务器,使其支持RFC 2307 或其后续版本中的方案。
 确保nsswitch.conf 文件至少针对hosts 和ipnodes 项的查找顺序将files 列在nis 之
前。
 确保N2L主服务器上的hosts 或ipnodes 文件中提供了N2L主服务器和LDAP 服务器的
地址。必须将服务器地址列在hosts、ipnodes 还是同时列在这两个文件中取决于为解析
本地主机名而配置系统的方式。
替代解决方案是在ypserv 中列出LDAP 服务器地址,而不列出其主机名。这意味着
LDAP 服务器地址列在另一个位置中,因此,在更改LDAP 服务器或N2L主服务器的地
址时需要对文件进行其他修改。
NIS 到LDAP 转换的先决条件
第15 章• 从NIS 转换为LDAP(概述/任务) 257
设置NIS 到LDAP转换服务
可以按照以下两个过程中的说明,使用标准映射或自定义映射来设置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 验
证。
设置NIS 到LDAP 转换服务
258 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
 如何使用标准映射设置N2L服务
如果要转换第255 页中的“支持的标准映射”中所列的映射,请使用此过程。如果要使用
自定义映射或非标准映射,请参见第260 页中的“如何使用自定义映射或非标准映射设置
N2L服务”。
设置LDAP 服务器之后,请运行inityp2l 脚本并在出现提示时提供配置信息。inityp2l 可
为标准映射和auto.* 映射设置配置文件和映射文件。
完成第257 页中的“NIS 到LDAP 转换的先决条件”中所列的先决步骤。
在NIS 主服务器上,成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration
Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
将NIS 主服务器转换为N2L 服务器。
# inityp2l
在NIS 主服务器上运行inityp2l 脚本并遵照提示操作。有关需要提供的信息的列表,请参
见第258 页中的“设置NIS 到LDAP 转换服务”。
有关更多详细信息,请参见inityp2l(1M) 手册页。
确定LDAP 目录信息树(Directory Information Tree, DIT) 是否已完全初始化。
如果DIT 中已包含填充NISLDAPmapping 文件中所列的全部映射所需的信息,则表明它已完
全初始化。
 如果未包含,请继续执行步骤5并跳过步骤6。
 如果已包含,请跳过步骤5 并转至步骤6。
初始化DIT 以便从NIS 源文件进行转换。
仅当DIT 尚未完全初始化时,才可执行这些步骤。
a. 确保旧NIS 映射是最新的版本。
# cd /var/yp
# make
有关更多信息,请参见ypmake(1M) 手册页。
b. 停止NIS 守护进程。
# svcadm disable network/nis/server:default
c. 将旧映射复制到DIT 中,然后针对这些映射初始化N2L 支持。
# ypserv -Ir
等待ypserv 退出。
1
2
3
4
5
设置NIS 到LDAP 转换服务
第15 章• 从NIS 转换为LDAP(概述/任务) 259
提示– 最初的NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。
d. 启动NIS 守护进程,确保其使用新映射。
# svcadm enable network/nis/server:default
这会使用标准映射来完成N2L服务的设置。您无需完成步骤6。
初始化NIS 映射。
仅当DIT 已完全初始化并且跳过了步骤5 时,才可执行这些步骤。
a. 停止NIS 守护进程。
# svcadm disable network/nis/server:default
b. 使用DIT 中的信息初始化NIS 映射。
# ypserv -r
等待ypserv 退出。
提示– 最初的NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。
c. 启动NIS 守护进程,确保其使用新映射。
# svcadm enable network/nis/server:default
 如何使用自定义映射或非标准映射设置N2L服务
如果符合以下情况,请使用此过程:
 具有第255 页中的“支持的标准映射”中未列出的映射。
 具有要映射到非RFC 2307LDAP 映射的标准NIS 映射。
完成第257 页中的“NIS 到LDAP 转换的先决条件”中所列的先决步骤。
在NIS 主服务器上,成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration
Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
将NIS 主服务器配置为N2L 服务器。
# inityp2l
在NIS 主服务器上运行inityp2l 脚本并遵照提示操作。有关需要提供的信息的列表,请参
见第258 页中的“设置NIS 到LDAP 转换服务”。
有关更多详细信息,请参见inityp2l(1M) 手册页。
6
1
2
3
设置NIS 到LDAP 转换服务
260 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
修改/var/yp/NISLDAPmapping 文件。
有关如何修改映射文件的示例,请参见第262 页中的“自定义映射的示例”。
确定LDAP 目录信息树(Directory Information Tree, DIT) 是否已完全初始化。
如果DIT 中已包含填充NISLDAPmapping 文件中所列的全部映射所需的信息,则表明它已完
全初始化。
 如果未包含,请完成步骤6、步骤8 和步骤9。
 如果已包含,请跳过步骤6 并完成步骤7、步骤8 和步骤9。
初始化DIT 以便从NIS 源文件进行转换。
a. 确保旧NIS 映射是最新的版本。
# cd /var/yp
# make
有关更多信息,请参见ypmake(1M) 手册页。
b. 停止NIS 守护进程。
# svcadm disable network/nis/server:default
c. 将旧映射复制到DIT 中,然后针对这些映射初始化N2L 支持。
# ypserv -Ir
等待ypserv 退出。
提示– 最初的NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。
d. 启动NIS 守护进程,确保其使用新映射。
# svcadm enable network/nis/server:default
e. 跳过步骤7 并继续执行步骤8。
初始化NIS 映射。
仅当DIT 已完全初始化时,才可以执行此步骤。
a. 停止NIS 守护进程。
# svcadm disable network/nis/server:default
b. 使用DIT 中的信息初始化NIS 映射。
# ypserv -r
等待ypserv 退出。
4
5
6
7
设置NIS 到LDAP 转换服务
第15 章• 从NIS 转换为LDAP(概述/任务) 261
提示– 最初的NIS dbm 文件不会被覆写。可以根据需要恢复这些文件。
c. 启动NIS 守护进程,确保其使用新映射。
# svcadm enable network/nis/server:default
检验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 文件不会被覆写,因此始终可以恢复这些文件。有关更多信息,请
参见第271 页中的“恢复为NIS”。
自定义映射的示例
以下两个示例说明如何自定义映射。请使用首选的文本编辑器,根据需要修改
/var/yp/NISLDAPmapping 文件。有关文件属性和语法的更多信息,请参见
NISLDAPmapping(4) 手册页以及第9 章中的LDAP 名称服务信息。
示例1-移动主机项
本示例说明如何将主机项从缺省位置移到DIT 中的另一个(非标准)位置。
请将NISLDAPmapping 文件中的nisLDAPobjectDN 属性更改为新的基本LDAP 标识名
(distinguished name, DN)。在本示例中,LDAP 对象的内部结构未更改,因此objectClass 项
也不会更改。
将如下内容:
8
9
设置NIS 到LDAP 转换服务
262 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
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 \
.
.
设置NIS 到LDAP 转换服务
第15 章• 从NIS 转换为LDAP(概述/任务) 263
.
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), ",")
设置NIS 到LDAP 转换服务
264 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
使用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 索引,请按如下方式设置适当的大小限制。
 在Sun Java System Directory Server 上:必须将nsslapd-sizelimit 属性设置为大于或等于
50000 或-1。请参见idsconfig(1M) 手册页。
 在N2L服务器上:必须将nisLDAPsearchSizelimit 属性设置为大于或等于50000 或零。
有关更多信息,请参见NISLDAPmapping(4) 手册页。
创建VLV 索引之后,请立即将其激活,方法是在Sun Java System Directory Server 上运行带有
vlvindex 选项的directoryserver。有关更多信息,请参见directoryserver(1M) 手册页。
标准映射的VLV
如果符合以下条件,请使用Sun Java System Directory Server idsconfig 命令设置VLV:
 使用的是Sun Java System Directory Server。
 要将标准映射映射为RFC 2307LDAP 项。
VLV 特定于域,因此每次运行idsconfig 时,都会为一个NIS 域创建相应的VLV。所以,在
NIS 到LDAP 的转换过程中,必须针对NISLDAPmapping 文件中包含的每个
nisLDAPdomainContext 属性都运行一次idsconfig。
使用Sun Java System Directory Server 进行NIS 到LDAP 转换的最佳做法
第15 章• 从NIS 转换为LDAP(概述/任务) 265
自定义映射和非标准映射的VLV
如果符合以下条件,则必须为映射手动创建新的Sun Java System Directory Server VLV,或者
复制并修改现有的VLV 索引:
 使用的是Sun Java System Directory Server。
 具有大型自定义映射或者映射到非标准DIT 位置的标准映射。
要查看现有的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. 要增加针对客户机搜索查询检验的最大项数,请修改以下属性:
使用Sun Java System Directory Server 进行NIS 到LDAP 转换的最佳做法
266 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
dn: cn=config, cn=ldbm database, cn=plugins, cn=config
nsslapd-lookthroughlimit: -1
为了进行测试,可以使用属性值-1,这表示没有限制。确定最佳限制值之后,请更改属性
值。请勿在生产服务器上保留值为-1 的任何属性设置。如果没有限制,则服务器可能会容
易受到拒绝服务攻击。
如果使用VLV,则应当按照第265 页中的“使用Sun Java System Directory Server 创建虚拟列
表视图索引”中的定义设置sizelimit 属性值。如果未使用VLV,则应当将大小限制设置得
足够大,以便可以容纳最大容器。
有关使用LDAP 配置Sun Java System Directory Server 的更多信息,请参见第11 章。
NIS 到LDAP转换限制
设置N2L服务器之后,就不再使用NIS 源文件。因此,请勿在N2L服务器上运行ypmake。
如果意外运行了ypmake(如针对现有的cron 作业运行了该命令),N2L服务也不会受到影
响。但是,会记录一个警告,提示应当明确调用yppush。
NIS 到LDAP转换疑难解答
本节包括两个方面的疑难解答:
 第267 页中的“常见的LDAP 错误消息”
 第268 页中的“NIS 到LDAP 转换问题”
常见的LDAP错误消息
有时,N2L服务器会记录与内部LDAP 问题相关的错误,并生成与LDAP 相关的错误消息。
尽管这些错误不是致命的,但是它们指明有问题需要检查。例如,N2L服务器可能会继续
工作,但是会提供过时或不完整的结果。
以下列出了在实现N2L服务时可能遇到的一些常见的LDAP 错误消息,以及错误说明、可
能的原因和针对这些错误的解决方案。
超过管理限制
错误号:11
原因:执行的LDAP 搜索大于目录服务器的nsslapd-sizelimit 属性所允许的大小。将
仅返回部分信息。
解决方案:增大nsslapd-sizelimit 属性的值,或者针对失败的搜索实现VLV 索引。
DN 语法无效
NIS 到LDAP 转换疑难解答
第15 章• 从NIS 转换为LDAP(概述/任务) 267
错误号:34
原因:尝试写入的LDAP 项的DN包含非法字符。N2L服务器尝试对DN中生成的非法
字符(如+ 号)转义。
解决方案:检查LDAP 服务器错误日志,确定写入的非法DN,然后修改生成了非法DN
的NISLDAPmapping 文件。
对象类违规
错误号:65
原因:尝试写入无效的LDAP 项。通常,出现此错误是由于缺少MUST 属性,以下任一情
况都可能会导致此错误。
 NISLDAPmapping 文件中存在导致所创建的项缺少属性的错误
 尝试向不存在的对象添加AUXILIARY 属性
例如,如果尚未从passwd.byxxx 映射中创建用户名,则尝试向该用户添加辅助信息
将会失败。
解决方案:对于NISLDAPmapping 文件中的错误,检查写入服务器错误日志中的内容,确
定问题的性质。
无法联系LDAP 服务器
错误号:81
原因:ypserv 文件可能错误配置为指向错误的LDAP 目录服务器。或者,目录服务器当
前可能未运行。
解决方案:
 重新配置ypserv 文件,使其指向正确的LDAP 目录服务器。
 要确认LDAP 服务器是否正在运行,请在目录服务器上成为超级用户或承担等效角
色,然后键入以下内容:
# pgrep -l slapd
超时
错误号:85
原因:LDAP 操作已超时,这通常发生在从DIT 更新映射时。该映射现在可能包含过时
的信息。
解决方案:增大ypserv 配置文件中的nisLDAPxxxTimeout 属性。
NIS 到LDAP转换问题
运行N2L服务器时可能会出现以下问题。此处提供了可能的原因和解决方案。
NIS 到LDAP 转换疑难解答
268 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
调试NISLDAPmapping 文件
映射文件NISLDAPmapping 非常复杂。许多可能的错误都会导致映射出现意外的行为方式。
请使用以下方法来解决这类问题。
运行ypserv -ir(或-Ir)时显示控制台消息
问题:控制台上会显示简单的消息,并且服务器会退出(详细说明将写入syslog)。
原因:映射文件的语法可能不正确。
解决方案:检查并更正NISLDAPmapping 文件中的语法。
NIS 守护进程在启动时退出
问题: 运行ypserv 或其他NIS 守护进程时,会记录一条与LDAP 相关的错误消息,并且
守护进程会退出。
原因: 这可能是由于以下原因之一导致的:
 无法访问LDAP 服务器。
 在NIS 映射或DIT 中找到的项与指定的映射不兼容。
 尝试对LDAP 服务器执行读写操作时返回错误。
解决方案:检查LDAP 服务器上的错误日志。请参见第267 页中的“常见的LDAP 错误
消息”中所列的LDAP 错误。
NIS 操作产生意外的结果
问题:NIS 操作未返回预期的结果,但是未记录错误。
原因:LDAP 或NIS 映射中可能存在不正确的项,这会导致映射无法按照预期的方式完
成。
解决方案:检查并更正LDAP DIT 以及N2L版本的NIS 映射中的各项。
1. 检查LDAP DIT 中的项是否正确,并根据需要更正这些项。
如果使用的是Sun Java System Directory Server,请通过运行directoryserver
startconsole 来启动管理控制台。
2. 检查/var/yp 目录中N2L版本的NIS 映射是否包含预期的项,方法是将新生成的映射
与原来的映射进行比较。请根据需要更正这些项。
# cd /var/yp/domainname
# makedbm -u test.byname
# makedbm -u LDAP_test.byname
检查映射的输出时请注意以下情况:
 在这两个文件中,各项的顺序可能不同。
在对输出进行比较之前,请使用sort 命令。
 在这两个文件中,空格的用法可能不同。
在对输出进行比较时,请使用diff -b 命令。
NIS 到LDAP 转换疑难解答
第15 章• 从NIS 转换为LDAP(概述/任务) 269
NIS 映射的处理顺序
问题:出现对象类违规。
原因:运行ypserv -i 命令时,会读取每个NIS 映射并将其内容写入DIT 中。同一个DIT
对象的属性可以由多个映射创建。通常,可通过一个映射来创建该对象的大部分属性,
包括该对象的所有MUST 属性。其他映射则负责创建其他MAY 属性。
映射是按照nisLDAPobjectDN 属性在NISLDAPmapping 文件中的出现顺序来处理的。如果
包含MAY 属性的映射在包含MUST 属性的映射之前进行处理,则会出现对象类违规。有关
此错误的更多信息,请参见第267 页中的“常见的LDAP 错误消息”中的错误65。
解决方案:将nisLDAPobjectDN 属性重新排序,以便按照正确的顺序处理这些映射。
临时解决方法是多次重新运行ypserv -i 命令。每次执行该命令,都会增加更多的LDAP
项。
注– 如果这种映射方式会导致不能从至少一个映射创建某个对象的所有MUST 属性,则不支
持以这种方式进行映射。
N2L服务器超时问题
问题:服务器超时。
原因:N2L服务器在刷新映射时,可能会对LDAP 目录进行大量访问。如果Sun Java
System Directory Server 配置不正确,则该操作可能会因超时而无法完成。
解决方案:要避免目录服务器超时,请手动或者通过运行idsconfig 命令来修改Sun Java
System Directory Server 属性。有关详细消息,请参见第267 页中的“常见的LDAP 错误
消息”和第265 页中的“使用Sun Java System Directory Server 进行NIS 到LDAP 转换的最
佳做法”。
N2L锁定文件问题
问题:ypserv 命令可以启动,但是不响应NIS 请求。
原因:N2L服务器锁定文件不能正确地同步对NIS 映射的访问。绝不允许发生这种情
况。
解决方案:在N2L服务器上键入以下命令:
# svcadm disable network/nis/server:default
# rm /var/run/yp_maplock /var/run/yp_mapupdate
# svcadm enable network/nis/server:default
N2L死锁问题
问题:N2L服务器死锁。
NIS 到LDAP 转换疑难解答
270 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
原因:如果hosts、ipnodes 或ypserv 文件中未正确列出N2L主服务器和LDAP 服务器
的地址,则可能会出现死锁问题。有关如何为N2L配置正确地址的详细消息,请参见第
257 页中的“NIS 到LDAP 转换的先决条件”。
有关死锁情况的示例,请考虑以下一系列事件:
1. NIS 客户机尝试查找IP 地址。
2. N2L服务器发现hosts 项已过时。
3. N2L服务器尝试通过LDAP 更新hosts 项。
4. N2L服务器从ypserv 获取其LDAP 服务器的名称,然后使用libldap 进行搜索。
5. libldap 尝试通过调用名称服务转换器来将LDAP 服务器的名称转换为IP 地址。
6. 名称服务转换器可能会对N2L服务器发出NIS 调用,这会造成死锁。
解决方案:在N2L主服务器上的hosts 或ipnodes 文件中列出N2L主服务器和LDAP 服
务器的地址。必须将服务器地址列在hosts、ipnodes 还是同时列在这两个文件中取决于
为解析本地主机名而配置这些文件的方式。另外,还要检查在查找顺序中,
nsswitch.conf 文件中的hosts 和ipnodes 项是否将files 列在nis 之前。
此死锁问题的替代解决方案是在ypserv 文件中列出LDAP 服务器的地址而不是其主机
名。这意味着LDAP 服务器地址将列在其他位置。因此,更改LDAP 服务器或N2L服务
器的地址会使工作量稍有增加。
恢复为NIS
已使用N2L服务从NIS 转换到LDAP 的站点将会逐步使用Solaris LDAP 名称服务客户机替换
所有的NIS 客户机。对NIS 客户机的支持最终会成为多余。但是,N2L服务提供了两种在必
要时返回传统NIS 的方法,如以下两个过程中所述。
提示– 传统的NIS 会忽略N2L版本的NIS 映射(如果存在这些映射)。恢复为NIS 之后,如
果在服务器上保留N2L版本的映射,则N2L映射不会产生问题。因此,如果以后决定重新
启用N2L,则保留N2L映射可能会非常有用。但是,这些映射确实会占用磁盘空间。
 如何基于旧的源文件恢复为NIS 映射
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration
Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
停止NIS 守护进程。
# svcadm disable network/nis/server:default
禁用N2L。
此命令可备份并移动N2L映射文件。
# mv /var/yp/NISLDAPmapping backup_filename
1
2
3
恢复为NIS
第15 章• 从NIS 转换为LDAP(概述/任务) 271
设置NOPUSH 环境变量,以便ypmake 不会推送新映射。
# NOPUSH=1
创建一组基于旧源的新NIS 映射。
# cd /var/yp
# make
(可选)删除N2L 版本的NIS 映射。
# rm /var/yp/domainname/LDAP_*
启动NIS 守护进程。
# svcadm enable network/nis/server:default
 如何基于当前的DIT 内容恢复为NIS 映射
执行此过程之前请先备份旧的NIS 源文件。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration
Guide: Security Services中的“使用基于角色的访问控制(任务)”。
停止NIS 守护进程。
# svcadm disable network/nis/server:default
从DIT 更新映射。
# ypserv -r
等待ypserv 退出。
禁用N2L。
此命令可备份并移动N2L映射文件。
# mv /var/yp/NISLDAPmapping backup_filename
重新生成NIS 源文件。
# ypmap2src
手动检查重新生成的NIS 源文件是否具有正确的内容和结构。
将重新生成的NIS 源文件移到相应的目录中。
(可选)删除N2L 版本的映射文件。
# rm /var/yp/domainname/LDAP_*
4
5
6
7
1
2
3
4
5
6
7
8
恢复为NIS
272 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
启动NIS 守护进程。
# svcadm enable network/nis/server:default
9
恢复为NIS
第15 章• 从NIS 转换为LDAP(概述/任务) 273
274
从NIS+ 转换为LDAP
本章介绍如何从使用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_dir 和
timezone.org_dir 除外),对于大多数NIS+ 安装来说,无需更改该文件或只需进行很小的
改动。(有关client_info.org_dir 和timezone.org_dir 的信息,请参见第306 页中的
“client_info 和timezone 表(从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 文件来更改。有关更多信息,请参见第276 页中的“NIS+ 到
LDAP 转换工具和服务管理工具”。
16 第1 6 章
275
本章使用了以下术语:
 Container(容器)
容器是指LDAP DIT 中用于存储所有相关项的位置。例如,用户帐户信息通常存储在
ou=People 容器中,而主机地址信息可以存储在ou=Hosts 容器中。
 Netname(网络名)
网络名是安全RPC(用户或计算机)中可被验证的实体。
 Mapping(映射)
映射是指NIS+ 对象和LDAP 项之间的关系。例如,passwd.org_dir NIS+ 表中name 列的
数据(如帐户的用户名)与ou=People 容器中posixAccount 对象类的LDAP uid 属性相
对应。该配置可以在name 列和uid 属性之间建立映射。还可以理解为将name 列映射到
uid 属性(反之亦然)。
 Principal(主体)
主体是指NIS+(用户或计算机)中可被验证的实体。通常,网络名和主体名之间存在
一一对应关系。
rpc.nisd 配置文件
rpc.nisd 操作由两个配置文件来控制。
 /etc/default/rpc.nisd
此文件包含有关LDAP 服务器和验证、NIS+ 基本域、LDAP 缺省搜索库、异常处理和常
规rpc.nisd 配置(无论LDAP 映射是否有效,都将应用此配置)的信息。
 /var/nis/NIS+LDAPmapping
此文件包含有关在NIS+ 数据和LDAP 之间相互映射的信息。模板文件
(/var/nis/NIS+LDAPmapping.template) 包含除client_info.org_dir 和timezone.org_dir
以外的所有标准NIS+ 对象。请参见第306 页中的“client_info 和timezone 表(从
NIS+ 转换为LDAP)”和NIS+LDAPmapping(4)。
配置是通过为预定义的属性赋值来完成的。除了配置文件,配置属性还可以从LDAP 读取
(请参见第315 页中的“将配置信息存储到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) 手册页。
NIS+ 到LDAP 的转换概述
276 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
 可以使用svcadm 命令对NIS+ 到LDAP 转换服务执行管理操作(如启用、禁用或重新启
动)。
提示– 使用-t 选项暂时禁用服务可为服务配置提供一些保护。如果禁用服务时使用了-t
选项,则将在重新引导后恢复服务的初始设置。如果禁用服务时未使用-t,则服务在重
新引导后仍将保持禁用状态。
 NIS+ 故障管理资源标识符(Fault Managed Resource Identifier, FMRI) 是
svc:/network/rpc/nisplus:。LDAP 客户机服务的FMRI 是
svc:/network/ldap/client:
 可以使用svcs 命令来查询NIS+ 的状态。
 svcs 命令和输出示例。
# svcs \*nisplus\*
STATE STIME FMRI
online Sep_01 svc:/network/rpc/nisplus:default
 svcs -l 命令和输出示例。要获得如下所示的输出,必须在FMRI 中使用实例名称。
# svcs -l network/rpc/nisplus:default
fmri svc:/network/rpc/nisplus:default
enabled false
state disabled
next_state none
restarter svc:/system/svc/restarter:default
dependency require_all/none svc:/network/rpc/keyserv (online)
 可使用ps 命令检查守护进程是否存在。
# ps -e | grep rpc.nisd
root 23320 1 0 Aug 27 ? 16:30 ./ns-slapd -D \
/usr/iplanet/ds5/slapd-lastrev -i /usr/iplanet/ds5/slapd-lastrev/
root 25367 25353 0 15:35:19 pts/1 0:00 grep slapd
 
 

以上文章转自于 : http://developers.sun.com.cn/
阅读(832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~