![]() |
iPlanet Directory Server 5.1 管理员指南 |
第 3 章 配置目录数据库
目录由数据库组成,您可以在这些数据库上分配目录树。本章介绍如何创建后缀(目录树的分支点)及如何创建与每个后缀相关联的数据库。文中同时还将介绍如何创建到远程服务器上参考数据库的数据库链接,以及如何使用引荐将客户机指向目录数据的外部资源。
创建和维护后缀 有关分配目录数据的概念性信息,请参阅 iPlanet Directory Server 部署指南。
创建和维护后缀
您可在不同的数据库中存储不同的目录树块,然后跨多个服务器分配这些数据库。目录树中包含称为节点的分支点。这些节点可以与数据库相关联或不相关联。节点是使用 Directory Server Console 中的“目录”选项卡创建的。从中,您可以对出现在目录树中的条目进行自由编辑。
后缀是与特定数据库相关联的目录树节点。使用 Directory Server Console 上的“数据库”选项卡可以创建这些特殊的节点。例如,一个简单的目录树可能表现为:
后缀 ou=people 及其下面的所有条目和节点均存储于一个数据库中,后缀 ou=groups 位于另一个数据库中,而后缀 ou=contractors 则在其它数据库中。
本部分介绍如何在目录服务器上创建后缀并使之与数据库相关联。本部分包含以下过程:
“创建后缀”
创建后缀
可创建根后缀和子后缀以对目录树的内容加以组织。根后缀是子后缀的父项。它可以是为目录服务器所设计的大目录树的一部分。子后缀是根后缀下面的一个分支。根后缀和子后缀的数据都包含在数据库中。
目录中可能包含多个根后缀。例如,一个 ISP 可能为多个 Web 站点提供主机服务:一个为 siroe.com,而另一个则为 i-zed.com。ISP 将创建两个根后缀,分别对应于 dc=siroe,dc=com 命名环境和 dc=i-zed,dc=com 命名环境。如下所示,目录树显示为:
也可创建根后缀以从搜索操作中排除部分目录树。例如,siroe.com Corporation 可能需要从常规 siroe.com Corporation 目录搜索中排除其欧洲办事处。为此,他们需要创建两个根后缀。一个根后缀 dc=siroe,dc=com 与常规 siroe.com Corporation 目录树相对应,而另一个根后缀 l=europe,dc=siroe,dc=com则与目录树的欧洲分支相对应。在客户机应用程序看来,目录树形如:
如果客户机应用程序对 siroe.com Corporation 目录的 dc=siroe,dc=com 分支执行搜索,则不会返回目录中 l=europe,dc=siroe,dc=com 分支下的条目,因为这是一个独立的根后缀。
如果 siroe.com Corporation 决定在常规搜索中包含其目录树欧洲分支中的条目,则需要使欧洲分支成为常规分支的子后缀。为此,他们需要创建 siroe.com Corporation 根后缀 dc=siroe,dc=com,然后在其下为欧洲目录条目创建子后缀 l=europe,dc=siroe,dc=com。在客户机应用程序看来,目录树形如:
本部分介绍使用 Directory Server Console 或命令行为目录创建根后缀和子后缀的方法。本部分包括以下过程:
“使用控制台创建新的根后缀”
使用控制台创建新的根后缀
下列过程介绍创建后缀并使之与数据库相关联的方法:
在 Directory Server Console 上,选择“配置”选项卡。
右键单击左侧导航窗口中的“数据”,然后从弹出菜单中选择“新根后缀”。
此时显示“创建新的根后缀”对话框。
在“新后缀”字段中输入一个唯一性的后缀名。
后缀的命名必须遵循域组件 (dc) 命名约定。例如,可以输入名为 dc=siroe,dc=com 的新后缀。
如果想在创建新根后缀的同时在当前目录下创建该数据库,请选中“自动创建相关联的数据库”复选框。
如果想在不同的目录下创建新根后缀的数据库或者想在稍后创建,请不要选中此复选框。在创建数据库之前,新的根后缀将处于禁用状态。
如果在步骤 4 中选中“自动创建相关联的数据库”复选框,则在“数据库名称”字段中为新数据库输入具有唯一性的名称。
数据库名称只能包含 ASCII(7 位)字母数字字符、连字符 (-)和下划线 (_)。例如,可以将新数据库命名为 siroe_2。
单击“确定”以创建该新根后缀。
根后缀将自动出现在左侧导航窗口的“数据”分支下。
使用控制台创建新的子后缀
下面的过程介绍如何在现有的根后缀或子后缀下创建子后缀:
在 Directory Server Console 上,选择“配置”选项卡。
在左侧导航窗口的“数据”下,选择想在其下添加新子后缀的后缀。右键单击该后缀,然后从弹出菜单中选择“新建子后缀”。
此时显示“创建新的子后缀”对话框。
在“新后缀”字段中输入一个唯一性的后缀名。
后缀应该遵循它的根后缀的命名约定。根后缀将被自动添加到名称中。例如,如果是在 dc=siroe,dc=com 后缀下创建 ou=groups 子后缀,则控制台将自动把它命名为 ou=groups,dc=siroe,dc=com。
如果想在创建新根后缀的同时在当前目录下创建该数据库,请选中“自动创建相关联的数据库”复选框。
如果想在其它目录下为新的子后缀创建数据库或者想在稍后创建,请不要选中此框。在创建数据库之前,新的后缀将处于禁用状态。
如果在步骤 4 中选中“自动创建相关联的数据库”复选框,则在“数据库名称”字段中为新数据库输入具有唯一性的名称。
数据库名称只能包含 ASCII(7 位)字母数字字符、连字符 (-)和下划线 (_)。例如,可以将新数据库命名为 siroe_sub2。
单击“确定”以创建新的子后缀。
新后缀将自动出现在左侧导航窗口“数据”树中它的根后缀下。
从命令行创建根后缀和子后缀
使用 ldapmodify 命令行实用程序可以将新后缀添加到目录配置文件中。后缀配置信息存储在 cn=mapping tree,cn=config 条目中。
例如,假定您想使用 ldapmodify 实用程序将新的根后缀添加到配置文件中。按如下所示运行 ldapmodify:
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
ldapmodify 实用程序将绑定到服务器并准备向配置文件中添加条目。
接着,按如下所示为 siroe.com Corporation 创建根后缀条目:
dn: cn="dc=siroe,dc=com",cn=mapping tree,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
nsslapd-state: backend
nsslapd-backend: UserData
cn: dc=siroe,dc=com
要为该根后缀下的组创建子后缀,您需要执行 ldapmodify 操作以添加下列条目:
dn: cn="ou=groups,dc=siroe,dc=com",cn=mapping tree,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
nsslapd-state: backend
nsslapd-backend: GroupData
nsslapd-parent-suffix: "dc=siroe,dc=com"
cn: ou=groups,dc=siroe,dc=com
注意 如果想使用 Directory Server Console 来维护后缀,则需要使用与通过命令行来命名根后缀和子后缀时相同的间隔。
例如,如果命名根后缀 ou=groups ,dc=siroe,dc=com(groups 后有两个空格),则在该根后缀下创建的子后缀中也需要在 ou=groups 后面指定两个空格。
属性名称
值
定义后缀的 DN。DN 包含在引号中。所输入的值格式如下:cn="dc=domain,dc=com",cn=mapping tree,
cn=config
定义由后缀返回的引荐的 LDAP URL。该属性可有多个值,每个值有一个引荐。当 nsslapd-state 属性值是 referral 或 referral on update 时,该属性为必需项。
指定数据库或数据库链接用于处理请求的的名称。该属性可有多个值,每个值有一个数据库或数据库链接。有关数据库链接的详细信息,请参阅“创建和维护数据库链接”。
当 nsslapd-state 属性值设置为 backend 或 referral on update 时,该属性为必需项。
指定要与自定义分配函数共用的共享库。仅当在 nsslapd-backend 属性中指定多个数据库时,该属性才是必需项。
有关自定义分配函数的详细信息,请参阅“创建和维护数据库”。
指定自定义分配函数的名称。仅当在 nsslapd-backend 属性中指定多个数据库时,该属性才是必需项。
有关自定义分配函数的详细信息,请参阅“创建和维护数据库”。
提供子后缀父项的 DN。默认情况下该属性并不出现。这意味着该后缀被视作根后缀。
例如,假定您想在根后缀 dc=siroe,dc=com 下创建子后缀 o=sales,dc=siroe,dc=com。请将下列值添加到子后缀的 nsslapd-parent-suffix 属性中:
nsslapd-parent-suffix: "dc=siroe,dc=com"
“在后缀中使用引荐”
在后缀中使用引荐
引荐可用于临时将客户机应用程序指向另一个服务器。例如,您可将引荐添加到后缀,这样当对与后缀有关的数据库进行脱机维护时,后缀可指向另外的服务器。
有关引荐的一般详细信息,请参阅 iPlanet Directory Server 部署指南。
在 Directory Server Console 上,选择“配置”选项卡。
单击“引荐”选项卡。在“输入新引荐”字段中输入 LDAP URL,或者单击“构造”,从而在指导下完成 LDAP URL 的创建。
有关 LDAP URL 结构的详细信息,请参阅附录 C“LDAP URL”。
单击“添加”可将引荐添加到列表中。
您可以输入多个引荐。为响应客户机应用程序的请求,目录将返回整个引荐列表。
单击“保存”。
仅在更新操作期间启用引荐
您可以对目录进行配置,以便将客户机应用程序的更新和写入请求重定向到只读数据库。
例如,如果有目录数据(非您所拥有)的本地副本,则可为更新操作启用引荐。假定您想使该数据可用于搜索,但不可用于更新。为此,只需在更新请求期间启用引荐。当客户机应用程序请求更新条目时,客户机将被引荐到拥有该数据的服务器,从中继续处理修改请求。
在 Directory Server Console 上,选择“配置”选项卡。
单击“后缀设置”选项卡。选择“使用有关更新的引荐”单选按钮。
单击“引荐”选项卡。在“输入新引荐”字段中输入 LDAP URL,或者单击“构造”,从而在指导下完成 LDAP URL 的创建。
有关 LDAP URL 结构的详细信息,请参阅附录 C“LDAP URL”。
单击“添加”可将引荐添加到列表中。
您可以输入多个引荐。为响应客户机应用程序的请求,目录将返回整个引荐列表。
单击“保存”。
禁用后缀
有时可能需要关闭数据库以进行维护,但该数据库中的数据不会被复制。您可禁用负责该数据库的后缀,而非返回引荐。
禁用后缀后,当客户机应用程序执行 LDAP 操作(例如搜索、添加和修改)时,它们将看不到与该后缀相关的数据库内容。
在 Directory Server Console 上,选择“配置”选项卡。
此时“后缀设置”选项卡上将出现一个红点,提醒用户有需要进行保存的更改内容。
单击“保存”。
后缀将不再处于启用状态。
删除后缀时,将同时删除与该后缀有关的所有数据库条目和复制信息。
在 Directory Server Console 上,选择“配置”选项卡。
也可右键单击后缀,然后从弹出菜单中选择“删除...”。
如果想删除后缀及其下面的所有后缀,请选择“删除该后缀以及它所有的子后缀”。
如果只想删除该特定后缀,而不删除其子后缀,请选择“只删除该后缀”。
单击“确定”以删除该后缀。
此时将显示进度对话框,告诉您控制台正在完成相应的操作。
创建和维护数据库
完成后缀创建以对目录数据加以组织后,请创建包含目录数据的数据库。数据库用于存储目录数据。
本部分中包括有关创建用于包含目录数据的数据库、删除数据库和将数据库设置为临时只读的信息。
创建数据库
iPlanet Directory Server 5.0 支持使用多个数据库:您可以将目录树中的内容分配到这些数据库中。跨多个数据库分配数据的方式有两种:
每个后缀一个数据库。
每个后缀的数据都包含在独立的数据库中。例如,目录树形如:
您可以按下列方式添加三个数据库,用于存储包含在独立后缀中的数据:
目录树的这种分割对应于以下三个数据库:
数据库 1 包含 ou=people 的数据外加 dc=siroe,dc=com 的数据,这样客户机即可基于 dc=siroe,dc=com 执行搜索。数据库 2 包含 ou=groups 的数据,而数据库 3 包含 ou=contractors 的数据。
一个后缀多个数据库。
例如,假设目录树的 ou=people 分支中条目数很大,因此需要用两个数据库进行存储。这种情况下,可将 ou=people 中包含的数据跨两个数据库进行分配。如下所示:
数据库 1 包含姓名从 A 到 K 的人,数据库 2 则包含姓名从 L 到 Z 的人。数据库 3 包含 ou=groups 数据,而数据库 4 包含 ou=contractors 数据。
您需要使用自定义分配插件将单个后缀的数据跨多个数据库进行分配。有关如何为目录服务器创建分布逻辑的信息,请联系 iPlanet 专业服务。有关 iPlanet 专业服务的详细信息,请访问 http://www.iplanet.com/services/。
使用控制台为现有的后缀创建新数据库
下列过程介绍如何将数据库添加到已创建的后缀中:
在 iPlanet Directory Server Console 上,选择“配置”选项卡。
此时显示“创建新数据库”对话框。
在“创建新数据库”对话框中,为该数据库输入一个唯一性的名称。
该值不能包含逗号、制表符、等号 (=)、星号 (*)、反斜杠 (\)、斜杠 (/)、加号 (+)、单引号 (')、双引号 (") 或问号 (?)。例如,可以将新数据库命名为 siroe2。
在“创建数据库位置”字段中,输入用于存储新数据库的目录路径。也可单击“浏览”以查找本机目录。
缺省情况下,该目录在以下目录存储新数据库:
/var/ds5/slapd-serverID/db
单击“确定”。单击确认对话框中的“是”以创建该新数据库。
注意 要在“目录”选项卡中查看新后缀,首先需要创建与该后缀关联的根条目。请参阅第 43 页上的“创建目录项”。
从命令行为单个后缀创建新数据库
使用 ldapmodify 命令行实用程序可以将新数据库添加到目录配置文件中。数据库配置信息存储在 cn=ldbm database,cn=plugins,cn=config 条目中。
例如,假定您想将新数据库添加到服务器 siroe1 中。如下所示,通过执行 ldapmodify 将新条目添加到配置文件中:
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
ldapmodify 实用程序将绑定到服务器并准备向配置文件中添加条目。
dn: cn=UserData,cn=ldbm database,cn=plugins,cn=config
objectclass: extensibleObject
objectclass: nsBackendInstance
nsslapd-suffix: ou=people,dc=siroe,dc=com
所添加的条目对应于名为 UserData 的数据库,其中包含用于 ou=people,dc=siroe,dc=com 根后缀或子后缀的数据。
要从命令行创建根后缀或子后缀,请参阅“从命令行创建根后缀和子后缀”。DN 属性中给出的数据库名称必须与后缀条目 nsslapd-backend 属性中的值相对应。
为单个后缀添加多个数据库
可以跨多个数据库分配单个后缀。但是,若要分配后缀,需要创建自定义分配函数以扩展目录。有关创建自定义分配函数的详细信息,请联系 iPlanet 专业服务。有关 iPlanet 专业服务的详细信息,请访问 http://www.iplanet.com/services/l。
注意 分配完条目后,将无法再对其进行重新分配。下列限制条件适用:
违背这些限制条件将妨碍 iPlanet Directory Server 进行正确的条目查找和返回。
一旦 iPlanet 专业服务帮您创建完自定义分布逻辑插件后,您需要将其添加到目录中。下面介绍如何将分布逻辑添加到目录后缀的步骤。
向后缀中添加自定义分配函数
分布逻辑是在后缀中声明的函数。任何到达该后缀的操作(包括从该后缀以上开始的子树搜索操作)都会调用该函数。使用控制台和命令行可以将分配函数插入到后缀中。
有关创建自定义分布逻辑的详细信息,请联系 iPlanet 专业服务。
在 Directory Server Console 上,选择“配置”选项卡。
展开左侧导航窗口中的“数据”。选择要对其应用分配函数的后缀。
此时显示“数据库列表”对话框。从列表中选择数据库,然后单击“确定”。
在“分配库”字段中输入到分配库的路径,或者单击“浏览”以查找本机上的分配库。
从命令行添加自定义分配函数
使用 ldapmodify 命令行实用程序可以将下列属性添加到后缀条目中。
nsslapd-backend: Database1
nsslapd-backend: Database2
nsslapd-backend: Database3
nsslapd-distribution-plugin: /full/name/of/a/shared/library
nsslapd-distribution-funct: distribution-function-name
nsslapd-backend 属性指定与该后缀关联的所有数据库。nsslapd-distribution-plugin 属性指定插件所用的库名称。nsslapd-distribution-funct 属性提供分配函数自身的名称。
有关使用 ldapmodify 命令行实用程序的详细信息,请参阅第 53 页上的“使用 ldapmodify 添加和修改条目”。
维护目录数据库
本部分介绍与维护目录数据库有关的作业。其中包括以下操作:
“将数据库置于只读模式”
将数据库置于只读模式
当数据库处于只读模式时,将无法创建、修改或删除任何条目。例如,如果要手动初始化客户服务器,则必须将数据库置于只读模式。
如果目录服务器管理着多个数据库,则通过将整个服务器置于只读模式,即可将所有数据库同时置于只读模式下。有关详细信息,请参阅第 37 页上的“将整个 Directory Server 置于只读模式”。
“使用控制台将数据库设为只读”
使用控制台将数据库设为只读
要从服务器控制台将数据库设为只读模式:
从命令行将数据库设为只读
如果要手动将数据库设为只读模式,则必须将只读属性 nsslapd-readonly 更改为 on。为此,请使用 ldapmodify 命令行实用程序。特定数据库的 nsslapd-readonly 属性位于 cn=database_name,cn=ldbm database,cn=plugins,cn=config 条目中( database_name 是数据库名)。
注意 默认情况下,安装时所创建的数据库名为 userRoot。
删除数据库
下列步骤介绍如何使用 Directory Server Console 来删除目录数据库。删除数据库时,删除的只是该数据库的配置信息和条目,而非实际的物理数据库。
在 iPlanet Directory Server Console 上,选择“配置”选项卡。
也可右键单击数据库,然后从弹出菜单中选择“删除”。
此时显示要求您确认删除数据库的对话框。
单击“是”以确认删除数据库。
此时将显示进度对话框,告诉您删除过程中目录服务器所完成的步骤。
删除后,数据库就不会再出现在右侧窗口中。
创建和维护数据库链接
所谓链接,就是服务器代表客户机应用程序与其它服务器进行联系,然后返回组合结果的一种方法。该方法是通过数据库链接实现的。数据库链接指向远程存储的数据。当客户机应用程序从数据库链接请求数据时,数据库链接将从远程数据库检索数据,然后将其返回给客户机。
下列部分介绍如何创建和配置数据库链接。有关链接的一般信息,请参阅 iPlanet Directory Server 部署指南中的“设计目录拓扑结构”。
您可以使用 Directory Server Console 或命令行来创建和配置数据库链接。下列部分介绍创建和维护数据库链接的过程。
有关监控数据库活动的详细信息,请参阅第 410 页上的“监控数据库链接活动”。
配置链接策略
下面部分介绍目录服务器如何将客户机应用程序的请求链接到包含数据库链接的目录服务器的配置过程。链接策略适用于目录服务器上所创建的所有数据库链接。
“链接组件操作”
链接组件操作
组件可以是服务器中使用内部操作的任何功能单元。例如,插件可视为组件,就象前端功能那样。但是,实际上,一个插件可能由多个组件组成(例如 ACI 插件)。
有些组件向服务器发送内部 LDAP 请求,希望只访问本地数据。对此类组件,您需要控制链接策略,以确保它们能成功地完成自己的操作。例如,不妨考虑证书查验功能。如果链接该功能所生成的 LDAP 请求以检查证书,则意味着您信任远程服务器。如果远程服务器不被信任,则存在安全问题。
默认情况下,所有内部操作都无法进行链接。但是,可使用控制台或命令行来指定所要链接的组件,从而忽略该默认情况。默认情况下不允许链接组件。
同时,还必须在远程服务器上创建 ACI,从而允许指定的插件在远程服务器上执行操作。ACI 是在分配给数据库链接的后缀中创建的。
下表列出了组件名、允许将组件链接到内部操作的潜在副作用,以及组件在远程服务器上创建的 ACI 中所需的权限。
组件名称
说明
权限
该插件执行访问控制功能。不要链接用于检索和更新 ACI 属性的操作,这是因为将本地及远程 ACI 属性混合在一起并不安全。但是,可以链接用于检索用户条目的请求。在 nsActiveChainingComponents 属性中指定下列值:
nsActiveChainingComponents: cn=ACI
Plugin,cn=plugins,cn=config
该组件名代表所有的 Directory Server 4.0 插件。4.0 插件共享相同的链接策略。在 nsActiveChainingComponents 属性中指定下列内容:
nsActiveChainingComponents: cn=old
Plugin,cn=plugins,cn=config
该组件将根据用户绑定 DN 来设置服务器限制。 如果允许链接到资源限制组件,则可对远程用户应用资源限制。要链接该组件的操作,请指定下列内容:
nsActiveChainingComponents: cn=resource
limits,cn=components,cn=config
如果使用 SASL 外部绑定方法,则使用该组件。它将从远程服务器上的数据库中检索用户证书。如果允许该组件进行链接,则可以将基于证书的验证与数据库链接一起使用。要链接该组件的操作,请指定下列内容:
nsActiveChainingComponents:
cn=certificate-based
authentication,cn=components,cn=config
该插件可确保对包含 DN 的属性所做的更新将被传播到包含指向该属性之指针的所有条目中。例如,如果所删除的条目是某个组的成员,则该条目将会自动从该组中被删除。如果组成员是静态组定义的远程对象,则将该插件和链接一起使用将有助于简化静态组的管理。
nsActiveChainingComponents:
cn=referential integrity
postoperation,cn=plugins,cn=config
该插件将检查所指定的 uid 属性的所有属性值是否唯一(无重复)。如果允许该插件进行链接,则即使通过数据库链接更改 uid 属性的值,该插件也将确认其是否具有唯一性。要链接该组件的操作,请指定下列内容:
nsActiveChainingComponents: cn=uid
uniqueness,cn=plugins,cn=config
注意 不能链接到下列组件:
有关围绕 ACI 和链接的限制的详细信息,请参阅第 190 页上的“ACI 限制”。
在 Directory Server Console 上,选择“配置”选项卡。
在右侧窗口中,选择“设置”选项卡。要将组件添加到“允许链接的组件”列表中,请单击“添加”。
此时显示“选择要添加的组件”对话框。从列表中选择组件,然后单击“确定”。
要从列表中删除组件,请选中该组件,然后单击“删除”。
修改组件列表后,选项卡上将出现一个红点,同时文件名将变为灰色。单击“保存”可保存更改结果。
重新启动服务器以使更改生效。
允许组件进行链接后,必须在操作将要链接的远程服务器后缀中创建 ACI。 例如,可以为参照完整性插件创建下列 ACI:
aci: (targetattr "*")(target="ldap:///ou=customers,l=us,dc=siroe,dc=com")
(version 3.0; acl "RefInt Access for chaining"; allow
(read,write,search,compare) userdn = "ldap:///cn=referential
integrity postoperation,cn=plugins,cn=config";)
从命令行链接组件操作
可以使用配置文件 cn=config,cn=chaining database,cn=plugins,cn=config 条目中的 nsActiveChainingComponents 属性来指定要包含在链接中的组件。
例如,如果想允许参照完整性组件链接某些操作,则可将下列内容添加到数据库链接配置文件中:
nsActiveChainingComponents: cn=referential integrity postoperation,
cn=components,cn=config
有关允许链接的组件列表,请参阅表 3-2。
修改完 nsActiveChainingComponents 属性后,必须重新启动服务器以使更改生效。
允许组件进行链接后,必须在操作将要链接的远程服务器后缀中创建 ACI。 例如,可以为参照完整性组件创建下列 ACI:
aci: (targetattr "*")(target="ldap:///ou=customers,l=us,dc=siroe,dc=com")
(version 3.0; acl "RefInt Access for chaining"; allow
(read,write,search,compare) userdn = "ldap:///cn=referential
integrity postoperation,cn=plugins,cn=config";)
链接 LDAP 控件
您可以选择不链接 LDAP 控件的操作请求。默认情况下,下列控件的请求将被数据库链接转发给远程服务器:
受管理的 DSA — 该控件将智能引荐作为条目返回,而非遵从引荐。这样即允许修改或删除智能引荐自身。
循环检测 — 该控件跟踪服务器与其它服务器进行链接的次数。当计数达到配置的数目时,就会检测到循环并通知客户机应用程序。
有关使用该控件的详细信息,请参阅“检测循环”。
服务器端排序 — 该控件根据条目的属性值对条目进行排序。
虚拟列表视图 (VLV) — 该控件提供包含部分结果的列表,而不是一次返回搜索结果的所有条目。
注意 当搜索范围是单个服务器时,只通过链接就支持服务器端排序和 VLV 控件。当客户机应用程序向多个数据库发出请求时,数据库链接将无法支持 VLV 控件。
下列部分介绍如何使用控制台和命令行来改变数据库链接所转发的控件。
在 Directory Server Console 上,选择“配置”选项卡。
展开左侧窗口中的“数据”文件夹,然后单击“数据库链接设置”。
在右侧窗口中,选择“设置”选项卡。要将 LDAP 控件添加到列表中,请单击“添加”。
此时显示“选择要添加的控件 OID”对话框。选择要添加到列表中的控件 OID,然后单击“确定”。
要从列表中删除控件,请从“转发给远程服务器的 LDAP 控件”列表中选定该控件,然后单击“删除”。
从命令行链接 LDAP 控件
通过更改 cn=config,cn=chaining database, cn=plugins,cn=config 条目的 nsTransmittedControls 属性,可以改变数据库链接所转发的控件。例如,要转发虚拟列表视图控件,请将下列内容添加到配置文件的数据库链接条目中:
nsTransmittedControls: 2.16.840.1.113730.3.4.9
另外,如果目录服务器的客户机还创建有自己的控件,而您也希望将其操作链接到远程服务器上,则需要将自定义控件的 OID 添加到 nsTransmittedControls 属性中。
控件名称
OID
有关 LDAP 控件的详细信息,请参阅 http://docs.iplanet.com/docs/manuals/directory.html 上的 LDAP C-SDK 文档。
后缀信息。您需要在由数据库链接(而不是常规数据库)管理的目录树中创建后缀。该后缀与包含此数据的远程服务器后缀相对应。
绑定凭证。当数据库链接绑定到远程服务器时,它将扮演用户。对于每个数据库链接,您需要指定希望其在绑定远程服务器时使用的 DN 和凭证。
LDAP URL。提供数据库链接所连接的远程服务器的 LDAP URL。
故障替换服务器列表。可以为数据库链接提供一个备用服务器列表,以便在出现故障时进行连接。该配置项为可选项。
下列部分介绍从 Directory Server Console 和命令行创建新数据库链接。
使用控制台创建新的数据库链接
要使用 Directory Server Console 创建新的数据库链接:
在 iPlanet Directory Server Console 上,选择“配置”选项卡。
右键单击左侧导航窗口中的“数据”,然后从弹出菜单中选择“新根后缀”或“新子后缀”。
此时显示“创建新后缀”对话框。
在“新后缀”字段中,输入所要链接的远程服务器的后缀名。
后缀的命名必须遵循 dc 命名约定。例如,可以输入名为 dc=siroe,dc=com 的新后缀。
取消选中“自动创建相关联的数据库”复选框。
之所以取消该复选框,是因为您无法将数据库链接添加到与数据库相关联的后缀中。该后缀仅供数据库链接使用。
单击“确定”以创建新的后缀。
后缀将自动出现在左侧导航窗口的“数据”分支下。
在左侧窗口中,右键单击刚创建的后缀,然后从弹出菜单中选择“新数据库链接”。
此时显示“创建新数据库链接”对话框。
在“数据库链接名称”字段中,输入新数据库链接的名称。
命名数据库链接时只能使用 ASCII(7 位)字符。该值不能包含逗号、制表符、等号 (=)、星号 (*)、反斜杠 (\)、斜杠 (/)、加号 (+)、单引号 (')、双引号 (") 或问号 (?)。例如,可以将新数据库链接命名为 siroelink1。
在“绑定 DN”字段中,输入数据库链接绑定到远程服务器时所用的 DN。
例如,可在“绑定 DN”字段中输入 cn=dblink。
在“口令”字段中,输入数据库链接绑定到远程服务器时所用的口令。
如果希望数据库链接使用 SSL 来与远程服务器进行通信,请选中“使用服务器之间的安全 LDAP 连接”复选框。
在“远程服务器”字段中输入远程服务器的名称。在“远程服务器端口”字段中,输入绑定所用的服务器端口号。缺省端口号为 389。
在“故障替换服务器”字段中输入故障替换服务器的名称,同时在“端口”字段中指定端口号。缺省端口号为 389。单击“添加”以将故障替换服务器添加到列表中。
您可以指定多个故障替换服务器。如果主远程服务器出现故障,则数据库链接将与“故障替换服务器”列表中的第一个服务器进行连接。如果失败,则连接列表中的下一个服务器,依此类推。
单击“确定”以创建新的数据库链接。单击“确定”以关闭创建完数据库后出现的成功对话框。
从命令行创建数据库链接
使用 ldapmodify 命令行实用程序可以从命令行创建新的数据库链接。
新的实例必须位于 cn=chaining database,cn=plugins, cn=config 条目中。
缺省配置属性包含在 cn=default config, cn=chaining database,cn=plugins,cn=config 条目中。这些配置属性将在创建期间应用于所有数据库链接。对缺省配置所做的更改将仅影响新的数据库链接。您无法更改现有数据库链接上的缺省配置信息。
每个数据库链接包含自己的特定配置信息。该信息与数据库链接条目自身 cn=database_link_name,cn=chaining database,cn=plugins,cn=config 一起存储。有关配置属性的详细信息,请参阅 iPlanet Directory Server 配置、命令和文件参考指南。
提供后缀信息
使用 nsslapd-suffix 属性可以定义数据库链接所管理的后缀。例如,如果想使数据库链接指向公司远程站点的人员信息,则输入下列后缀信息:
nsslapd-suffix: l=Zanzibar,ou=people,dc=siroe,dc=com
后缀信息存储在 cn=database_link_name,cn=chaining database,cn=plugins,cn=config 条目中。
注意 创建后,对 nsslapd-suffix 属性所做的任何修改都将在重新启动包含该数据库链接的服务器后才生效。
提供绑定凭证
对于来自要链接到远程服务器的客户机应用程序的请求,可以为该客户机应用程序提供特殊的绑定凭证。该操作赋予远程服务器链接操作所需的代理验证权限。如果未指定绑定凭证,则数据库链接将以匿名方式绑定到远程服务器。
在远程服务器上,需要执行下列操作:
为数据库链接创建管理级用户。
有关添加条目的信息,请参阅第 41 页上的“创建目录项”。
在数据库链接所链接的子树上,为上面步骤中创建的管理级用户提供代理访问权限。
有关配置 ACI 的详细信息,请参阅第 187 页上的“管理访问控制”。
在包含数据库链接的服务器上,需要执行下列操作:
例如,假定客户机应用程序向服务器 A 发送请求。服务器 A 中包含将该请求链接到服务器 B 之数据库的数据库链接。
服务器 A 上的数据库链接使用在 nsMultiplexorBindDN 属性中定义的特殊用户及在 nsMultiplexorCredentials 属性中定义的用户口令绑定到服务器 B。在本例中,服务器 A 使用下列绑定凭证:
nsMultiplexorBindDN: cn=proxy admin,cn=config
nsMultiplexorCredentials: secret
服务器 B 必须包含与 nsMultiplexorBindDN 相对应的用户条目,且您必须为该用户设置代理验证权限。要设置代理验证权限,需要与设置其它任何 ACI 一样设置代理 ACI。
启用链接时,请仔细检查访问控制,以免赋予对目录受限区域的访问权。例如,如果在分支上创建默认代理 ACI,则通过该数据库链接进行连接的用户将能看到该分支下的所有条目。有时您并不希望用户看见所有子树。为避免出现安全漏洞,可以创建附加的 ACI,用于限制对子树的访问。
有关 ACI 的详细信息,请参阅第 187 页上的“管理访问控制”。有关代理验证控件的详细信息,请参阅 http://developer.iplanet.com/docs/manuals/directory.html上的 C-SDK 文档。
注意 如果客户机应用程序使用数据库链接来创建或修改条目,则属性 creatorsName 和 modifiersName 将不会反映该条目的实际创建者或修改者。这些属性中包含远程数据服务器上被授予代理验证权限的管理级用户的姓名。
提供 LDAP URL
在包含数据库链接的服务器上,必须标识数据库链接使用 LDAP URL 来进行连接的远程服务器。与标准 LDAP URL 格式不同,远程服务器的 URL 不指定后缀。其格式如下所示:
使用配置文件的 cn=database_link_name,cn=chaining database,cn=plugins,cn=config 条目中的 nsFarmServerURL 属性可以指定远程服务器的 URL。例如,nsFarmServerURL 格式可能为如下所示:
nsFarmServerURL: ldap://siroe.com:389/
如果想使用 SSL 环境下的 LDAP 将数据库链接连接到远程服务器上,则远程服务器的 LDAP URL 格式如下所示:
ldaps://servername:portnumber/
有关链接和 SSL 的详细信息,请参阅“使用 SSL 链接”。
提供故障替换服务器列表
您可以提供出现故障时服务器所用的附加 LDAP URL。为此,请将备用服务器添加到 nsFarmServerURL 属性中,二者之间以空格分隔。例如,可以键入下列内容:
nsFarmServerURL: ldap://siroe.com us.siroe.com:389 africa.siroe.com:1000/
在该 LDAP URL 示例中,数据库链接将首先连接标准端口上的 siroe.com 服务器,从而执行相应的操作。如果没有响应,则数据库链接将转而连接端口 389 上的服务器 us.siroe.com。如果该服务器出现故障,则连接端口 1000 上的 africa.siroe.com 端口。
数据库链接配置属性概要
下表列出了可用于配置数据库链接的属性。其中的某些属性已在前面的章节中讨论过。
标有星号 (*) 的属性既可能是全局属性,也可能是实例属性。所有实例属性均在 cn=database_link_name,cn=chaining database,cn=plugins,cn=config 条目中定义。
这两个全局配置属性位于 cn=config,cn=chaining database,cn=plugins,cn=config 条目中。全局属性是动态的,即所做的任何更改都将自动在目录的所有数据库链接实例中生效。
属性
值
给出包含数据的远程服务器(或 FARM 服务器)的 LDAP URL。该属性可包含用于故障替换的可选服务器,二者之间以空格分隔。如果使用级联链接,则该 URL 可指向其它数据库链接。
用于和远程服务器进行通信的管理条目的 DN。属性名称中的 multiplexor 一词表示包含数据库链接并与远程服务器进行通信的服务器。
列出使用链接的组件。组件指服务器中的任何功能性装置。该属性在数据库链接实例中的值将取代全局配置属性中相应的值。要在特定的数据库实例上禁用链接,请使用值 none。
默认策略为不允许链接。有关详细信息,请参阅“链接组件操作”。
控制按范围搜索时是否返回引荐。该属性旨在优化目录,因为按范围进行搜索时,返回引荐更为有效。取值为 on 或 off。默认值为 off。
数据库链接配置示例
假设您拥有 us.siroe.com 域中的某台服务器,且该服务器中包含数据库上的 l=Walla Walla,ou=people,dc=siroe,dc=com 子树,并且您希望将 l=Zanzibar,ou=people,dc=siroe,dc=com 的操作请求连接到 africa.siroe.com 域的另一台服务器上。该操作图示如下:
首先,使用 ldapmodify 命令行实用程序将数据库链接添加到服务器 A 中:
ldapmodify -a -h us.siroe.com -p port \
-D "cn=Directory Manager" -w password
然后为数据库链接指定配置信息:
dn: cn=DBLink1,cn=chaining database,cn=plugins,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsBackendInstance
nsslapd-suffix: l=Zanzibar,ou=people,dc=siroe,dc=com
nsfarmserverurl: ldap://africa.siroe.com:389/
nsmultiplexorbinddn: cn=proxy admin,cn=config
nsmultiplexorcredentials: secret
cn: DBLink1
dn: cn="l=Zanzibar,ou=people,dc=siroe,dc=com",cn=mapping tree,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
nsslapd-state: backend
nsslapd-backend: DBLink1
nsslapd-parent-suffix: "ou=people,dc=siroe,dc=com"
cn: l=Zanzibar,ou=people,dc=siroe,dc=com
在第一部分中,nsslapd-suffix 属性内包含要从服务器 A 链接的服务器 B 上的后缀。nsFarmServerURL 属性中包含服务器 B 的 LDAP URL。
第二部分将创建新后缀,允许服务器为面向新数据库链接所发出的请求进行路由选择。cn 属性内包含的后缀与数据库链接的 nssalpd-suffix 属性所指定的相同。nsslapd-backend 属性包含数据库链接的名称。nsslapd-parent-suffix 属性则指定该新后缀的父项:ou=people,dc=siroe,dc=com。
dn: cn=proxy admin,cn=config
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: proxy admin
sn: proxy admin
userPassword: secret
description: Entry for use by database links
不要将“目录管理员”用户当作远程服务器上的代理管理级用户使用。这会造成安全漏洞。
将下列代理验证 ACI 添加到服务器 B 的 l=Zanzibar,
ou=people,dc=siroe,dc=com 条目中:
aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=proxy admin,cn=config";)
该 ACI 只允许代理管理级用户对l=Zanzibar,ou=people,dc=siroe,dc=com 子树中远程服务器上所含的数据进行只读访问。
注意 当用户绑定到数据库链接时,用户的标识将被发送给远程服务器。访问控制的评估总是在远程服务器上进行。为确保用户能成功地修改数据或将数据写入到远程服务器中,需要在远程服务器上设置正确的访问控制。
有关如何在链接操作环境中评估访问控制的详细信息,请参阅 “数据库链接和访问控制评估”。
使用 SSL 链接
可以对数据库链接进行配置,从而使用 SSL 与远程服务器进行通讯。要在链接时使用 SSL,请执行下列步骤:
在远程服务器上启用 SSL。
有关启用 SSL 的详细信息,请参阅第 376页上的“启用 SSL:步骤摘要”。
以 SSL 格式指定远程服务器的 LDAP URL。
在 nsFarmServerURL 属性中指定 LDAP URL。有关该属性的详细信息,请参阅“提供 LDAP URL”。
例如,可以指定下列 LDAP URL:
nsFarmServerURL: ldaps://africa.siroe.com:636/
在包含数据库链接的服务器上启用 SSL。
有关启用 SSL 的详细信息,请参阅第 376页上的“启用 SSL:步骤摘要”。
将数据库链接和远程服务器配置为使用 SSL 进行通讯时,并不表示发出操作请求的客户机应用程序也必须使用 SSL 进行通讯。客户机可使用正常的端口进行绑定。
维护数据库链接
本部分介绍如何更新和删除现有的数据库链接。其中包括以下过程:
“更新远程服务器验证信息”
更新远程服务器验证信息
要更新数据库链接连接到远程服务器时所用的绑定 DN 和口令:
在 iPlanet Directory Server Console 上,选择“配置”选项卡。
在左侧窗口中,展开“数据”,然后查找某个后缀下要更新的数据库链接。选定该数据库链接。
要更新远程服务器信息,请在“远程服务器 URL”字段中输入新的 LDAP URL。
与标准 LDAP URL 格式不同,远程服务器的 URL 不指定后缀。其格式如下所示:
ldap://servername:portnumber/
在“数据库链接绑定 DN”字段中,输入新的 DN,从而更新数据库链接与远程服务器绑定时所用的绑定 DN。
在“数据库链接口令”字段中,输入新的口令,从而更新数据库链接与远程服务器绑定时所用的口令。在“确认数据库链接口令”字段中,请重新输入口令以进行确认。
远程服务器检验表框将列出管理级用户条目、后缀,同时还将列出为确保数据库链接成功绑定而需要的远程服务器 ACI。
单击“保存”可保存更改结果。
在 iPlanet Directory Server Console 上,选择“配置”选项卡。
也可右键单击数据库链接,然后从弹出菜单中选择“删除”。
此时显示“删除数据库链接”确认对话框。
单击“是”以确认要删除数据库链接。
此时将显示进度对话框,告诉您删除过程中目录服务器所完成的步骤。
删除后,数据库链接就不会再出现在右侧窗口中。
数据库链接和访问控制评估
当用户绑定到包含数据库链接的服务器时,数据库链接将把用户的标识发送给远程服务器。访问控制的评估总是在远程服务器上进行。远程服务器上所评估的每个 LDAP 操作都使用由代理验证控件传递的客户机应用程序原始标识。只有在用户对远程服务器上所含的子树具有正确的访问控制权限时,对远程服务器的操作才能成功进行。这就意味着在向远程服务器添加常规访问控制时,需要设置一定的限制条件:
不能使用所有类型的访问控制。
例如,基于角色或基于过滤器的 ACI 需要具有对用户条目的访问权。因为是通过数据库链接来访问数据,所以只能验证代理控件中的数据。设计目录时,应确保用户条目位于与用户数据相同的数据库中。
由于客户机的原始域在链接期间丢失,因此所有基于客户机 IP 地址或 DNS 域的访问控制都可能无法正常工作。
在远程服务器看来,客户机应用程序与数据库链接的 IP 地址和 DNS 域相同。
对于旨在与数据库链接一起使用的 ACI 而言,下列限制条件适用:
ACI 必须与它所用的组放在一起。如果组是动态的,则组内的所有用户都必须与 ACI 和组放在一起。如果组为静态的,则它可能指向远程用户。
ACI 必须与所用的任何角色定义及计划使用这些角色的用户放在一起。 尽管访问控制始终在远程服务器上进行评估,但也可选择在包含数据库链接的服务器上及在远程服务器上进行评估。这会产生一些限制条件:
在访问控制评估期间,用户条目的内容不一定可用(例如,如果是在包含数据库链接的服务器上评估访问控制,而条目位于远程服务器上)。
由于性能方面的原因,客户机不能执行远程查询和评估访问控制。
对于客户机应用程序正在修改的条目,数据库链接不一定具有访问该条目的权限。
高级功能:调整数据库链接性能
下列部分提供有关通过连接和线程管理来调整数据库链接性能的信息。其中包含以下部分:
“管理到远程服务器的连接”
管理到远程服务器的连接
每个数据库链接都维护一个到远程服务器的连接池。您可以对连接进行配置,从而优化目录资源。
可以使用 Directory Server Console 或通过命令行来更改连接属性。
在 Directory Server Console 上,选择“配置”选项卡。
展开左侧窗口中的“数据”文件夹,然后查找要更改的数据库链接。单击数据库链接,然后单击右侧导航窗口中的“限制和控制”选项卡。
最大 TCP 连接数。数据库链接与远程服务器建立的 TCP 连接的最大数量。默认值为 3 个连接。
绑定超时。数据库链接的绑定尝试在超时前的时间(以秒计)。默认值为 15 秒。
每个连接的最多绑定数。每个 TCP 连接未完成的绑定操作的最大数量。默认值为每个连接 10 个未完成的绑定操作。
放弃前的超时时间(秒)。服务器在决定是否放弃已超时连接前的秒数。默认值为 2 秒。
最大 LDAP 连接数量。数据库链接与远程服务器建立 LDAP 连接的最大数量。默认值为 10 个连接。
最大绑定条目数。数据库链接尝试绑定到远程服务器的次数。值取 0 时,表示数据库链接将仅尝试绑定一次。默认值为尝试 3 次。
每个连接的最多操作数量。每个 LDAP 连接未完成操作的最大数量。默认值为每个连接 10 个操作。
连接使用期(秒)。数据库链接和远程服务器间连接持续打开的时间。可以使数据库链接与远程数据库之间的连接始终处于打开状态,也可使之在指定时间后关闭。
使连接保持打开状态可以提高操作速度,但会占用更多的资源。例如,如果正在使用拨号连接,则可能希望限制连接时间。
值取 0 时,表示没有限制。默认情况下,此值设为 0。
单击“保存”可保存更改结果。
通过命令行管理到远程服务器的连接
使用 ldapmodify 可以将连接属性添加到数据库链接条目中。
默认的连接管理属性存储在下列条目中:cn=default instance config, cn=chaining database,cn=plugins,cn=config。
特定数据库链接的连接管理属性存储在下列条目中:cn=database_link_name,cn=chaining database,cn=plugins,cn=config,其中 database_link_name 是该数据库链接的名称。该条目中指定的连接管理属性优先于 cn=default instance config 条目中指定的属性。
有关数据库链接配置属性的列表,请参阅“数据库链接配置属性”。
正常处理过程中检测错误
通过在正常链接操作期间检测数据库链接和远程服务器之间的错误,可有助于保护服务器的性能。同时使用数据库链接的两个属性,即可确定远程服务器是否不再予以响应。
第一个属性即 nsMaxResponseDelay,用于设置完成 LDAP 操作的最长持续时间。如果操作的时间超过此属性中指定的值,则数据库链接服务器将怀疑远程服务器是否仍然在线。
达到 nsMaxResponseDelay 的时间后,数据库链接将对远程服务器执行 ping 操作。在 ping 操作过程中,数据库链接将发出另一个 LDAP 请求:一个针对远程服务器中并不存在的对象的简单搜索请求。使用 nsMaxTestResponseDelay 可以设置 ping 的持续时间。
如果远程服务器在超出 nsMaxResponseDelay 时间限制后仍未响应,系统就会返回错误信息,同时将连接标记为关闭。数据库连接和远程服务器之间的所有连接都将阻塞 30 秒,以防止服务器的性能降低。30 秒后,数据库链接向远程服务器发出的操作请求将恢复常规状态。
这两个属性都存储于 cn=config,cn=chaining database,cn=plugins,cn=config 条目中。下表介绍这两个属性的详细信息:
属性名称
说明
在怀疑出错以前,远程服务器对数据库链接发出的 LDAP 操作请求做出响应的最长时间。该期限以秒计。默认的延迟时间为 60 秒。
由数据库链接发出的、用于检查远程服务器是否仍在响应的持续时间测试。如果远程服务器在该时间段后仍未做出响应,则数据库链接假定远程服务器处于关闭状态,该连接将不会用于后续操作。
管理线程操作
一般情况下,iPlanet Directory Server 在使用有限的线程来执行处理操作时性能最佳。如果线程数目有限,执行操作时通常就会较快,从而可防止等待可用线程的操作队列过长。
不过,数据库链接会将操作转发给远程服务器进行处理。数据库链接将连接远程服务器,转发操作,等待结果,然后再将结果发回给客户机应用程序。整个操作可能比本地操作的时间长得多。
数据库链接在等待远程服务器的结果时,可同时处理其它操作。默认情况下,服务器使用的线程数为 20 个。但在使用数据库链接时,可以通过增加处理操作的可用线程数来改善性能。在本机 CPU 等待远程服务器的响应时,它可处理其它操作,而非一直处于空闲状态。
为更改处理操作所用的线程数,请更改 cn=config 条目中的 nsslapd-threadnumber 全局配置属性。默认的线程数为 20。例如,可以将线程数增加到 50,从而提高性能。更改线程数后,请重新启动服务器以使更改生效。
高级功能:配置级联链接
可以对数据库链接进行配置,使之指向另一个数据库链接,从而创建级联链接操作。如果要求多个路由段以访问目录树中的所有数据,即可随时建立级联链接。
级联链接概述
如果目录要求多个路由段以处理客户机应用程序的请求,就会产生级联链接。
假定客户机应用程序向服务器 1 发送修改请求。服务器 1 中包含将操作转发给服务器 2 的数据库链接,而服务器 2 则包含了另一个数据库链接。服务器 2 上的数据库链接将把操作转发到服务器 3 ,而服务器 3 则包含客户机所要修改的数据库数据。如果想访问客户机所要修改的数据块,则需要两个路由段。
正常操作请求期间,客户机将绑定到服务器,然后评估应用于该客户机的任何 ACI。使用级联链接,客户机绑定请求可在服务器 1 上进行评估,但应用于客户机的 ACI 将仅在该请求已被链接到目标服务器(上例中为服务器 2)后才进行评估。
请考虑下例。在服务器 A 上,假定目录树按如下所示进行拆分:
根后缀 dc=siroe,dc=com 以及子后缀 ou=people 和 ou=groups 存储在服务器 A 上。后缀 l=europe,dc=siroe,dc=com 和 ou=groups 存储在服务器 B 上,后缀 l=europe,dc=siroe,dc=com 上的分支 ou=people 存储在服务器 C 上。
利用在服务器 A、B 和 C 上配置的级联,目录将以下列方式路由以 ou=people,l=europe,dc=siroe,dc=com 条目为目标的客户机请求:
首先,客户机绑定到服务器 A 并通过数据库链接 1 链接到服务器 B。然后服务器 B 通过数据库链接 2 链接到服务器 C 上的目标数据库,以访问 ou=people,l=europe,dc=siroe,dc=com 分支中的数据。因为目录要求至少两个路由段来处理客户机请求,因此我们将其视为级联链接。
使用控制台配置级联链接的默认值
要为目录服务器中的所有数据库链接设置级联链接默认值:
在 Directory Server Console 上,选择“配置”选项卡。
展开左侧窗口中的“数据”文件夹,然后单击“数据库链接设置”。单击“默认创建参数”选项卡。
如果想在级联链接所涉及的中间数据库上进行本地 ACI 的评估,请选中“检查本地 ACI”复选框。如果选中该复选框,则需要将相应的本地 ACI 添加到包含中间数据库链接的服务器数据库中。
这属于高级功能。详细信息,请参见“启用本地 ACI 评估”。
在“最大路由段”字段中,输入数据库链接可指向其它数据库的最多次数。
默认情况下,最大值为 10 个路由段。在 10 个路由段后,服务器检测到循环并向客户机应用程序返回错误。
单击“保存”可保存更改结果。
注意 对数据库链接默认设置所做的更改是不可逆的。只有在保存完对默认设置所做的更改后,所创建的数据库链接才会反映这些更改。
使用控制台配置级联链接
要为特定的数据库链接集配置级联链接,请执行下列操作:
在 Directory Server Console 上,选择“配置”选项卡。
展开左侧窗口中的“数据”文件夹,然后查找要包含在级联链接中的数据库链接。单击数据库链接,然后单击右侧导航窗口中的“限制和控制”选项卡。
如果想在级联链接所涉及的中间数据库链接上启用本地 ACI 评估,请选中“检查本地 ACI”复选框。如果选中该复选框,则可能需要将相应的本地 ACI 添加到数据库链接中。
这属于高级功能。详细信息,请参见“启用本地 ACI 评估”。
在“最大路由段”字段中,输入数据库链接可指向其它数据库的最多次数。
默认情况下,最大值为 10 个路由段。在 10 个路由段后,服务器检测到循环并向客户机应用程序返回错误。
单击“保存”可保存更改结果。
从命令行配置级联链接
通过命令行配置数据库级联链接时涉及下列步骤:
将一个数据库链接指向包含中间数据库链接的服务器的 URL。
配置中间数据库链接(示例中为服务器 2)以传送代理验证控件。 该部分包含下列主题:
“指向另一个数据库链接”
指向另一个数据库链接
要创建级联链接,其中一个数据库链接的 nsFarmServerURL 属性必须有包含另一个数据库链接的服务器的 URL。例如,假设名为 siroe1.com 的服务器上的数据库链接指向名为 africa.siroe.com 的服务器上的数据库链接。服务器 1 上数据库链接中的 cn=database_link_name,cn=chaining database, cn=plugins,cn=config 条目将包含下列内容:
nsFarmServerURL: ldap://africa.siroe.com:389
传送代理验证控件
默认情况下,数据库链接不传送代理验证控件。不过,当一个数据库链接连接另一个数据库链接时,该控件将用于传送最终的目标服务器所需的信息。中间数据库链接需要传送此控件。要配置数据库链接以传送代理验证控件,请将下列内容添加到中间数据库链接的 cn=config,cn=chaining database,cn=plugins,cn=config 条目中:
nsTransmittedControls: 2.16.840.1.113730.3.4.12
OID 值代表代理验证控件。有关链接 LDAP 控件的详细信息,请参阅“链接 LDAP 控件”。
创建代理管理级用户 ACI
在包含中间数据库链接的服务器上需要创建 ACI,其中的数据库链接在将请求转换到另一个服务器之前会检查第一个数据库链接的权限。例如,如果服务器 2 不检查服务器 1 的凭证,则任何人都可以匿名的方式进行绑定并通过代理验证控件的验证,从而使自己获得更多并不适宜的管理特权。
为防止这种安全漏洞,需要在包含中间数据库链接的服务器上创建 ACI。要创建 ACI,您需要执行下列操作:
如果现在没有数据库,则在包含中间数据库链接的服务器上创建数据库。该数据库将包含管理级用户条目和 ACI。有关创建数据库的详细信息,请参阅“创建数据库”。
为那些目标后缀正确的管理级用户创建 ACI。该操作可确保管理员仅能访问数据库链接的后缀。将下列 ACI 添加到管理级用户的条目中:
aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=proxy admin,cn=config";)
该 ACI 与在配置简单链接时在远程服务器上创建的 ACI 类似。
启用链接时,请仔细检查访问控制,以免赋予对目录受限区域的访问权。例如,如果在分支上创建默认代理 ACI,则通过该数据库链接进行连接的用户将能看到该分支下的所有条目。有时您并不希望用户看见所有子树。为避免出现安全漏洞,可以创建附加的 ACI,用于限制对子树的访问。
启用本地 ACI 评估
为确认使用了代理管理 ACI,需要在链接所涉及的所有中间数据库链接上启用本地 ACI 评估。为此,请将下列属性添加到每个中间数据库链接的 cn=database_link_name,cn=chaining database,cn=plugins,cn=config 条目中:
nsCheckLocalACI: on
如果在 cn=default instance config,cn=chaining database,cn=plugins,cn=config条目中将该属性设置为“on”,则意味着所有新数据库链接实例都会在其 cn=database_link_name,cn=chaining database,cn=plugins,cn=config 条目中将 nsCheckLocalACI 属性设置为“on”。
创建客户机 ACI
因为您已启用本地 ACI 评估,所以需要在所有中间数据库链接和最终的目标数据库上创建相应的客户机应用程序 ACI。
要在中间数据库链接上创建相应的 ACI,您需要首先创建一个包含后缀的数据库,其中的后缀表示最终目标后缀的根后缀。
例如,如果是在链接对远程服务器上的 c=africa,ou=people,dc=siroe,dc=com 后缀发出的客户机请求,则所有中间数据库链接都需要包含与 dc=siroe,dc=com 后缀相关联的数据库。
然后,您需要将所有客户机 ACI 添加到上一级后缀条目中。例如,可以添加下列内容
aci: (targetattr = "*")(version 3.0; acl "Client authentication for database link users"; allow (all) userdn = "ldap:///uid=* ,cn=config";)
如果客户机应用程序在服务器 1 的 cn=config 条目中具有 uid,则此 ACI 将允许该客户机应用程序对服务器 3 上 ou=people,dc=siroe,dc=com 后缀下的数据执行任何操作。
检测循环
随 Directory Server 提供的 LDAP 控件可防止出现循环问题。首次尝试链接时,服务器将把该控件设置为所允许的最大路由段数(或称最大链接数)。后续的每台服务器将使计数减 1。如果服务器接收到的计数为 0 时,就会断定已检测到循环,然后通知客户机应用程序。
允许的路由段数是使用 nsHopLimit 属性定义的。如果未指定,则默认值为 10。
要使用该控件,请将下列 OID 添加到 cn=config,cn=chaining database,cn=plugins,cn=config 条目的 nsTransmittedControl 属性中。
nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12
如果该控件并非在每个数据库链接的配置文件中都存在,则不会进行循环检测。
级联链接配置属性概要
下表介绍用于配置级联链接内中间数据库链接的属性:
级联链接配置示例
要创建包含三台服务器的级联链接,必须在这三台服务器上配置级联组件,如下图所示。本部分介绍创建包含三台服务器的级联链接的配置步骤,并分为以下几部分:
配置服务器 1
首先,使用 ldapmodify 命令行实用程序将数据库链接添加到服务器 1 中。如下所示,运行该实用程序:
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
然后按如下所示,为服务器 1 上的数据库链接 DBLink1 指定配置信息:
dn: cn=DBLink1,cn=chaining database,cn=plugins,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsBackendInstance
nsslapd-suffix: l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com
nsfarmserverurl: ldap://africa.siroe.com:389/
nsmultiplexorbinddn: cn=server1 proxy admin,cn=config
nsmultiplexorcredentials: secret
cn: DBLink1
nsCheckLocalACI:off
cn="l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com",cn=mapping tree,cn=config
objectclass=nsMappingTree
nsslapd-state=backend
nsslapd-backend=DBLink1
nsslapd-suffix: l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com
cn: l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com
第一部分将创建与 DBLink1 关联的条目。第二部分则创建新后缀,从而使服务器可将向数据库链接发出的请求转发给正确的服务器。无需配置 nsCheckLocalACI 属性来检查本地 ACI,因为只有在服务器 2 的数据库链接 DBLink2 上才需要该属性。
由于要实现循环检测,因此需要在 nsTransmittedControl 属性中指定循环检测控件的 OID,该属性存储于服务器 1 的 cn=config,cn=chaining database,cn=plugins,cn=config 条目中。按如下方式指定 OID:
dn: cn=config,cn=chaining database,cn=plugins,cn=config
changeType: modify
add: nsTransmittedControl
nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12
因为 nsTransmittedControl 属性一般通过循环检测控件 OID 1.3.6.1.4.1.1466.29539.12 值被默认配置,所以不管该配置是否已经存在,事先对其进行检查是明智的做法。如果已经存在,则无需执行这一配置步骤。
配置服务器 2
接着,在服务器 2 上创建一个代理管理级用户。该管理级用户将用于允许服务器 1 绑定到服务器 2 并为其提供验证。请记住,为服务器 1 选择一个专用的代理管理级用户名称是很有用的,因为只有代理管理用户才允许服务器 1 绑定到服务器 2。如下所示,创建代理管理级用户:
dn: cn=server1 proxy admin,cn=config
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: server1 proxy admin
sn: server1 proxy admin
userPassword: secret
description: Entry for use by database links
不要将目录管理员或管理员 ID 用户当作远程服务器上的代理管理级用户使用。这会造成安全漏洞。
接着,在服务器 2 上配置数据库链接 DBLink2。利用 ldapmodify,按如下所示指定 DBLink2 的配置信息:
dn: cn=DBLink2,cn=chaining database,cn=plugins,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsBackendInstance
nsslapd-suffix: l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com
nsfarmserverurl: ldap://zanz.africa.siroe.com:389/
nsmultiplexorbinddn: cn=server2 proxy admin,cn=config
nsmultiplexorcredentials: secret
cn: DBLink2
nsCheckLocalACI:on
dn: cn="l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com",cn=mapping tree,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
nsslapd-state: backend
nsslapd-backend: DBLink2
nsslapd-parent-suffix:"c=africa,ou=people,dc=siroe,dc=com"
cn: l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com
由于数据库链接 DBLink2 是级联链接配置中的中间数据库链接,因此需要将 nsCheckLocalACI 设置为 on,以便让服务器检查它是否应允许客户机和代理管理级用户访问数据库链接。
服务器 2 上的数据库链接必须配置为可传送代理验证控件和循环检测控件。要事实代理验证控件和循环检测控件,您需要指定两个相应的 OID。将下列信息添加到服务器 2 的 cn=config,cn=chaining database, cn=plugins,cn=config 条目中:
dn: cn=config,cn=chaining database,cn=plugins,cn=config
changeType: modify
add: nsTransmittedControl
nsTransmittedControl: 2.16.840.1.113730.3.4.12
nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12
其中 nsTransmittedControl: 2.16.840.1.113730.3.4.12 是代理验证控件的 OID,nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12 是循环检测控件的 OID。
同样,请记住要事先检查循环检测控件是否已经配置,然后相应地采用上述命令。
下一步是配置 ACI。在服务器 2 上,必须确保在 l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com 后缀之上的现有后缀上有一个后缀,以便完成以下任务:
添加数据库链接后缀
添加本地代理验证 ACI,用于支持通过在服务器 2 上创建的管理级用户与服务器 1 的连接
添加本地客户机 ACI,它可以保证客户机操作在服务器 2 上成功进行,以便可以传递到服务器 3。因为已经为 DBLink2 数据库链接打开了本地 ACI 检查,所以这个本地 ACI 是必需的。 这两个 ACI 放置在包含 c=africa,ou=people,dc=siroe,dc=com 后缀的数据库中。
注意 为创建这些 ACI,假定已经存在与 c=africa,ou=people,dc=siroe,dc=com 后缀相对应的数据库以容纳该条目。该数据库需要与每个数据库链接的 nsslapd-suffix 属性中所指定后缀的上级后缀相关联。也就是说,最终目标服务器上的后缀应该是中间服务器上所指定后缀的子后缀。
将本地代理验证 ACI 添加到 c=africa,ou=people,dc=siroe,dc=coml 条目中:
aci:(targetattr="*")(target="l=Zanzibar,c=africa,ou=people,
dc=siroe,dc=com")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=server1 proxy admin,cn=config";)
然后添加本地客户机 ACI,在 ACI 检查打开的情况下,它可以保证客户机操作在服务器 2 上成功进行。该 ACI 与将在目标服务器上创建的 ACI 一样,以便提供对 l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com 分支的访问权限。您可以决定让 c=us,ou=people,dc=siroe,dc=com 的所有用户对服务器 3 上 l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com 中的条目都具有更新访问权限。下列 ACI 是为实现上述目标需要在服务器 2 的 c=africa,ou=people,dc=siroe,dc=com 后缀上创建的 ACI:
aci:(targetattr="*")(target="l=Zanzibar,c=africa,ou=people,
dc=siroe,dc=com")(version 3.0; acl "Client authorization for database links"; allow (all) userdn = "ldap:///uid=*,c=us,ou=people,dc=siroe,dc=com";)
如果客户机在服务器 1 的 c=us,ou=people,dc=siroe,dc=com 条目中具有 uid,则该 ACI 将允许此客户机对服务器 3 的 l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com 后缀树中执行任何操作。如果服务器 2 中另一个后缀下的用户需要对服务器 3 具有额外的权限,则需要在服务器 2 上添加额外的客户机 ACI。
配置服务器 3
在该级联链接示例中,最后一个配置步骤是配置服务器 3。首先,在服务器 3 上为服务器 2 创建管理级用户,以供代理验证使用:
dn: cn=server2 proxy admin,cn=config
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: server2 proxy admin
sn: server2 proxy admin
userPassword: secret
description: Entry for use by database links
然后,需要按照与服务器 2 相同的操作步骤,将同样的代理验证 ACI 添加到服务器 3 中。将下列代理验证 ACI 添加到 l=Zanzibar,ou=people,dc=siroe,dc=com 条目中:
aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=server2 proxy admin,cn=config";)
该 ACI 仅授予服务器 2 对 l=Zanzibar,ou=people,dc=siroe,dc=com 子树中远程服务器(即服务器 3)上的数据拥有代理管理级只读访问的权限。
随即,您需要在与原始客户机应用程序相对应的 l=Zanzibar,ou=people,dc=siroe,dc=com 子树上创建本地客户机 ACI。使用与为服务器 2 上客户机所创建的 ACI 相同的 ACI:
aci: (targetattr = "*")(target="l=Zanzibar,c=africa,ou=people,
dc=siroe,dc=com")(version 3.0; acl "Client authentication for database link users"; allow (all) userdn =
"ldap:///uid=*,c=us,ou=people,dc=siroe,dc=com";)
一旦完成了所有这些步骤,您的级联链接配置就设置完毕。该级联配置将允许用户绑定到服务器 1 并修改服务器 3 的 l=Zanzibar,c=africa,ou=people,dc=siroe,dc=com 分支中的信息。根据您的安全需要,您可能想或可能不想提供更详细的访问控制。
使用引荐
使用引荐可以通知客户机应用程序在查看特定信息时所要连接的服务器。如果客户机应用程序所请求的目录项在本地服务器上不存在,或者数据库已进行脱机维护,就会出现该重定向现象。本部分包含有关引荐的下列信息:
设置缺省引荐 有关如何在目录中使用引荐的概念性信息,请参阅 iPlanet Directory Server 部署指南。
设置缺省引荐
对于并不包含于目录所维护的任何后缀中的 DN 而言,默认引荐将被返回给提交该 DN 操作的客户机应用程序。下列过程介绍如何使用控制台和命令行实用程序设置目录的默认引荐。
在 iPlanet Directory Server Console 上,选择“配置”选项卡。
在“引荐”文本框中输入 LDAP URL,然后单击“确定”。
例如:
ldap://directory.siroe.com:389/dc=siroe,dc=com
也可按如下所示输入多个引荐 URL,各引荐 URL 之间以空格隔开并加引号:
"ldap://d1.siroe.com:389/dc=siroe,dc=com" "ldap://d2.siroe.com/"
有关 LDAP URL 的详细信息,请参阅附录 C“LDAP URL”。
从命令行设置默认引荐
使用 ldapmodify 命令行实用程序可以将默认引荐添加到目录配置文件中的 cn=config 条目中。.
例如,要从 siroe.com 目录服务器将新的默认引荐添加到名为 Zanzibar.com 的服务器上,则在 cn=config 条目中新增一行。如下所示,运行 ldapmodify 实用程序:
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
ldapmodify 实用程序绑定到服务器上并准备更改配置文件中的条目。
接着,将默认引荐添加到 Zanzibar.com 服务器中:
dn: cn=config
changetype: modify
replace: nsslapd-referral
nsslapd-referral: ldap://zanzibar.com/
将默认引荐添加到目录的 cn=config 条目中后,该目录在响应客户机应用程序的请求时将返回默认引荐。此时无须重新启动服务器。
创建智能引荐
智能引荐允许将目录条目或目录树映射到特定的 LDAP URL 上。利用智能引荐,可以将客户机应用程序指向特定的服务器或特定服务器上的特定条目。
例如,假定客户机应用程序请求下列目录项:uid=bjensen,ou=people,dc=siroe,dc=com。那么,指向 directory.europe.siroe.com 服务器上 cn=Babs Jensen,o=people,l=europe,dc=siroe,dc=com 条目的智能引荐会返回至该客户机。
目录使用智能引荐的方式符合 RFC 2251 中 4.1.11 一节所指定的标准。有关详细信息,请参阅 RFC,网址是 http://www.ietf.org/rfc/rfc2251.txt。
在 iPlanet Directory Server Console 上,选择“目录”选项卡。
此时显示“编辑引荐”对话框。如果这是为该条目创建的第一个引荐,则引荐列表为空白。
选中“启用引荐”复选框。
在“输入新引荐”字段中输入一个 LDAP URL,或者单击“构造” ,显示有助于您创建正确的 URL 的对话框。
URL 的组成元素包括保存引荐条目的目录服务器的主机名和 LDAP 端口号,以及引荐条目的 DN(目标 DN)。该 DN 可以是后缀、子树或叶条目。
在“编辑引荐”对话框中,单击“添加”将新的 LDAP URL 添加到引荐列表中。
仍然在“编辑引荐”对话框中,单击“验证”显示一个对话框,提示当前服务器需要使用凭证来进行绑定,从而遵循到远程服务器的引荐。
输入已授权访问该引荐 DN 的用户的 DN 和口令,然后单击“确定”退出该对话框。
在导航树中,应该可以在为其创建了引荐的原始条目位置处看到该引荐子树或条目。如果发现原始条目仍存在,则会在该条目旁边有一个警告图标。该图标表示还没有执行步骤 7,或者提供的绑定 DN 和口令没有获得访问引荐 DN 的权限。
从命令行创建智能引荐
使用 ldapmodify 命令行实用程序可以从命令行创建智能引荐。
要创建智能引荐,请创建相关目录条目并添加 Referral 对象类。该对象类允许使用单个属性 ref。该 ref 属性中应包含一个 LDAP URL。
例如,添加下列内容可返回现有条目 uid=bjensen 的智能引荐 :
dn: uid=bjensen,ou=people,dc=siroe,dc=com
objectclass: referral
ref: ldap://directory.europe.siroe.com/cn=babs%20jensen,ou=people,
l=europe,dc=siroe,dc=com
注意 服务器将忽略 LDAP URL 中空格后面的任何信息。因此,在要用作引荐的所有 LDAP URL 中,必须使用 %20 来替代空格。
要将带有引荐的条目 uid=ssarette,ou=people,dc=siroe,dc=com 添加到 directory.europe.siroe.com 中,请在导入前在 LDIF 文件中包含下列内容:
dn: uid=ssarette, ou=people, dc=siroe,dc=com
objectclass: top
objectclass: person
objectclass: organizationalperson
objectclass: inetOrgPerson
objectclass: referral
cn: somi sarette
sn: sarette
uid: ssarette
ref: ldap://directory.europe.siroe.com/cn=somi%20sarette,ou=people,
l=europe,dc=siroe,dc=com
有关智能引荐的详细信息,请参阅 iPlanet Directory Server 部署指南。有关 ldapmodify 实用程序的详细信息,请参阅 iPlanet Directory Server 配置、命令和文件参考指南。
创建后缀引荐
下列过程介绍如何在后缀中创建引荐。这意味着后缀将使用引荐(而非数据库或数据库链接)来处理操作。有关引荐的详细信息,请参阅 iPlanet Directory Server 部署指南。
将后缀配置为返回引荐后,将忽略与该后缀相关联的数据库中所含的 ACI。
在 Directory Server Console 上,选择“配置”选项卡。
使用引荐。这意味着当该后缀收到客户机应用程序的任何请求时,都将返回引荐。
使用有关更新的引荐。这意味着当该后缀收到客户机应用程序的更新请求时,将返回引荐。该选项将用于将客户机应用程序发出的更新和写入请求重定向到某个只读数据库。
单击“引荐”选项卡。在“输入新引荐”字段中输入 LDAP URL,或者单击“构造”,从而在指导下完成 LDAP URL 的创建。
有关 LDAP URL 结构的详细信息,请参阅附录 C“LDAP URL”。
单击“添加”可将引荐添加到列表中。
您可以输入多个引荐。为响应客户机应用程序的请求,目录将返回整个引荐列表。
单击“保存”。
从命令行创建后缀引荐
使用 ldapmodify 命令行实用程序可以将后缀引荐添加到目录配置文件的条目中。后缀引荐信息将被添加到 cn=mapping tree,cn=config 分支下的根后缀或子后缀条目中。
例如,要将新后缀引荐添加到 ou=people,dc=siroe,dc=com 根后缀中,需要执行 ldapmodify。按如下所示运行 ldapmodify:
ldapmodify -a -h host -p port -D "cn=directory manager" -w password
ldapmodify 实用程序将绑定到服务器上并准备向配置文件中添加信息。
接着,按如下所示将后缀引荐添加到 ou=people,dc=siroe,dc=com 根后缀中:
dn: cn="ou=people,dc=siroe,dc=com",cn=mapping tree,cn=config
objectclass: extensibleObject
objectclasss: nsmappingtree
nsslapd-state: referral
nsslapd-referral: ldap://zanzibar.com/
将 nsslapd-state 属性设置为 referral 意味着将为对该后缀发起的请求返回引荐。 nsslapd-referral 属性包含由后缀返回的引荐的 LDAP URL。本例中为指向 Zanzibar.com 服务器的引荐。
也可将 nsslapd-state 属性设置为 referral on update。这意味着该数据库可用于除更新请求以外的所有操作。当客户机应用程序对设置为 referral on update 的后缀发出更新请求时,客户机会收到引荐。
有关后缀配置属性的详细信息,请参阅表 3-1“后缀属性”。
上一页 目录 索引 文档主页 下一页
版权所有 © 2001 Sun Microsystems, Inc.。部分版权所有 © 2001 Netscape Communications Corp.。保留所有权利。
最近更新时间:2002 年 2 月 15 日