Sun Java 徽标     上一章      目录      索引      下一章     

Sun 徽标
Sun Java(TM) System Directory Server 5 2004Q2 管理指南 

第 3 章
创建目录树

目录树包含服务器中的所有条目,由其标识名称 (DN) 标识。DN 的层次属性创建了在树中组织数据的分支和叶子。为了管理目录树,依照后缀、子后缀和链接后缀的组织方式对其进行定义。Directory Server Console 对创建和管理所有这些元素进行控制,或者您可以使用命令行工具。

有关组织目录数据以及有关后缀的概念性信息,请参阅《Directory Server Deployment Planning Guide》中的 Chapter 4 "The Directory Information Tree"

本章包含以下小节:


创建后缀

可以使用 Directory Server Console 或命令行创建根后缀和子后缀。

使用控制台创建新的根后缀

  1. 在 Directory Server Console 的顶级“配置”选项卡上,右键单击“数据”节点,并从弹出菜单中选择“新建后缀”。
  2. 或者,可以选择“数据”节点,并从“对象”菜单中选择“新建后缀”。

    显示“新建后缀”对话框。

  3. 在“后缀 DN”字段中输入唯一的后缀名称。此名称必须使用由逗号分隔的一个或多个属性-值对组成的标识名称格式。
  4. 按照约定,根后缀使用域组件 (dc) 命名属性。例如,可以为新后缀 DN 输入 dc=example,dc=org


    虽然后缀名称包含 DN 格式的属性-值对,但将其视作单个字符串。因此,所有空格都有意义,都是后缀名称的一部分。


  5. 默认情况下,此后缀的数据库文件的位置由服务器自动选择。另外,默认情况下,此后缀只维护系统索引,将不对属性进行加密,也不对复制进行配置。
  6. 要修改任一默认值,请单击“选项”按钮以显示新后缀选项:

    1. 数据库的名称也是包含数据库文件的目录的名称。默认数据库名称是后缀 DN 中第一个命名属性的值,可能还附加了唯一性数字。要使用其他名称,请选择使用自定义单选按钮,然后输入一个新的、唯一的数据库名称。
    2. 数据库名称只能包含 ASCII(7 位)字母数字字符、连字符(-) 和下划线(_)。例如,可以将此新数据库命名为 example_2

    3. 还可以选择包含数据库文件的目录的位置。默认情况下,此位置是下列路径的子目录:
    4. ServerRoot/slapd-serverID/db

      输入新路径,或单击“浏览”查找数据库目录的新位置。新的路径必须可以在目录服务器主机上访问。

    5. 要加速配置新后缀,可以选择复制现有的后缀。选择“复制后缀配置”,并从下拉菜单中选择要复制的后缀。然后选择下列任一配置进行复制:
      • 复制索引配置-新后缀将对相同属性维护与已复制后缀相同的索引。
      • 复制属性加密配置-新后缀将对与已复制后缀中相同的属性列表和加密方案启用加密。
      • 克隆复制配置-新后缀将与已复制后缀具有相同的副本类型,如果副本是供应商副本,则将复制所有复制协议,而且将启用复制。
    6. 配置所有新后缀的选项后,单击“确定”。“新建后缀”对话框将显示您选择的所有选项。
  7. 在“新建后缀”对话框中单击“确定”以创建新的根后缀。
  8. 根后缀自动出现在数据分支下。有关进一步配置新后缀的信息,请参阅“管理后缀”

    新的根后缀不包含任何条目,甚至不包含后缀 DN 的条目。因而,新的子后缀在被初始化和授予适当的访问权限前,不仅在目录中是不可访问的,而且在控制台的“目录”选项卡中也是不可见的。

    如果从 LDIF 文件初始化此后缀,则可以跳过其余步骤。但是,请确保 LDIF 文件中的根条目都包含部署所需的访问控制指令 (ACI)。

  9. 选择控制台的顶级“目录”选项卡。新后缀在目录树中仍然不可见。
  10. 只有目录管理员有权创建后缀的顶级条目。如果您没有以目录管理员的身份登录,则立即通过选择“控制台”>“以新用户身份登录”菜单项进行登录。输入目录管理员的 DN 和口令进行登录。默认情况下,目录管理员的 DN 是 cn=DirectoryManager
  11. 右键单击目录树的根节点,此根节点包含服务器的主机名和端口。从弹出菜单中选择“新建根对象”项,然后选择新的根后缀的 DN。
  12. 或者,选择目录树的根节点,然后从“对象”菜单中选择“新建根对象”项。

  13. 在显示的“新建对象”对话框中,为该根对象选择单个对象类。此对象类将确定可以添加到根条目中的其他属性。
  14. 按照约定,包含 dc 命名属性的后缀 DN 的根对象属于 domain 对象类。通常情况下,根对象是简单对象,包含很少的数据。

  15. 选择了对象类后,在“新建对象”对话框中单击“确定”。
  16. 控制台立即显示新的根对象的通用编辑器。默认的 ACI 集合被自动添加到该新对象中。有关其他信息,请参阅“默认 ACI”。添加并编辑拓扑所需的任何属性值,包括对 ACI 集合所做的任何修改。

  17. 编辑此条目后,在“通用编辑器”中单击“确定”以创建新后缀的根对象。
  18. 新后缀立即出现在目录树中,可以按照 ACI 授予的权限通过控制台进行管理。

使用控制台创建新的子后缀

下列过程描述在已存在的根或子后缀下如何创建新的子后缀:

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“数据”节点和任何后缀节点以显示父后缀。
  2. 右键单击父后缀节点,从弹出菜单中选择“新建子后缀”。
  3. 或者,可以选择父后缀节点,并从“对象”菜单中选择“新建子后缀”。

    出现“新建子后缀”对话框。

  4. 在“子后缀 RDN”字段中输入唯一名称。此名称必须使用相对标识名称格式,它由一个或多个由逗号分隔的属性-值对组成,例如 ou=Contractors
  5. 文本框下的一行显示此子后缀的完整 DN,由附加到 RDN 的父后缀 DN 组成。


    虽然子后缀名称包含采用 RDN 格式的属性-值对,但将其视作单个字符串。因此,所有空格都有意义,都是后缀 DN 的一部分。


  6. 默认情况下,此后缀的数据库文件的位置由服务器自动选择。另外,默认情况下,此后缀只维护系统索引,将不对属性进行加密,也不对复制进行配置。
  7. 要修改任一默认值,请单击“选项”按钮以显示新后缀选项:

    1. 数据库的名称也是包含数据库文件的目录的名称。默认的数据库名称是 RDN 中第一个命名属性的值,可能还附加了唯一性数字。要使用其他名称,请选择使用自定义单选按钮,然后输入一个新的、唯一的数据库名称。
    2. 数据库名称只能包含 ASCII(7 位)字母数字字符、连字符(-) 和下划线(_)。例如,可以将此新数据库命名为 temps-US

    3. 还可以选择包含数据库文件的目录的位置。默认情况下,此位置是下列路径的子目录:
    4. ServerRoot/slapd-serverID/db

      输入新路径,或单击“浏览”查找数据库目录的新位置。新的路径必须可以通过目录服务器应用程序访问。

    5. 要加速新子后缀的配置,可以选择复制现有的后缀,可以是这个新子后缀的父后缀,也可以是任何其他后缀。选择“复制后缀配置”,并从下拉菜单中选择要复制的后缀。然后选择下列任一配置进行复制:
      • 复制索引配置—新后缀将对相同属性维护与已复制后缀相同的索引。
      • 复制属性加密配置—新后缀将对与已复制后缀中相同的属性列表和加密方案启用加密。
      • 克隆复制配置—新后缀将与已复制后缀具有相同的副本类型,如果副本是供应商副本,则将复制所有复制协议,而且将启用复制。
    6. 配置所有新后缀的选项后,单击“确定”。“新建子后缀”对话框将显示您选择的所有选项。
  8. 在“新建子后缀”对话框中单击“确定”以创建子后缀。
  9. 在“配置”选项卡中,子后缀自动出现在其父后缀下。有关进一步配置新后缀的信息,请参阅“管理后缀”

    新的子后缀不包含任何条目,甚至不包含 RDN 的条目。因而,新的子后缀在被初始化和授予适当的访问权限前,不仅在目录中是不可访问的,而且在控制台的目录选项卡中也是不可见的。

    如果从 LDIF 文件初始化此后缀,则可以跳过其余步骤。但是,请确保 LDIF 文件中的父后缀和新条目都包含部署所需的访问控制指令 (ACI)。

  10. 在控制台的顶级“目录”选项卡中,展开目录树,以显示子后缀的父后缀。新的子后缀仍是不可见的。
  11. 只有目录管理员有权创建后缀的顶级条目和子后缀 (ACI)。如果您没有以目录管理员的身份登录,则立即通过选择“控制台”>“以新用户身份登录”菜单项进行登录。输入目录管理员的 DN 和口令进行登录。默认情况下,目录管理员的 DN 是 cn=DirectoryManager
  12. 右键单击子后缀的父后缀,然后从弹出菜单中选择“新建”项。在新建对象的列表中,选择对应于子后缀的 RDN 的对象类型。例如,如果创建了 ou=Contractors 子后缀,则选择 OrganizationalUnit 项。如果未列出子后缀的对象类,则选择“其他”,然后从显示的“新建对象”对话框中选择此对象类。或者,选择子后缀的父后缀,然后从“对象”菜单中选择“新建”项。
  13. 控制台立即显示新对象的自定义或通用编辑器。添加并编辑拓扑所需的任何属性值,包括对 ACI 集合所做的任何修改。
  14. 编辑此条目后,在“编辑器”中单击“确定”以创建新的子后缀的条目。
  15. 新的子后缀立即出现在目录树中,可以按照 ACI 授予的权限通过控制台进行管理。

从命令行创建后缀

还可以使用 ldapmodify 命令行公用程序在目录中创建后缀。由于根后缀和子后缀都由服务器采用相同方式在内部进行管理,所以从命令行创建根后缀和子后缀的过程几乎相同。

虽然在以下示例中使用了 "cn=Directory Manager",但配置条目可由任一管理用户创建。不过,后缀的顶级条目必须由目录管理员创建。

  1. 使用以下命令为根后缀在 cn=mapping tree,cn=config 下创建后缀配置条目:
  2. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn: cn="suffixDN",cn=mapping tree,cn=config
    objectclass: top
    objectclass: extensibleObject
    objectclass: nsMappingTree
    cn: suffixDN
    nsslapd-state: backend
    nsslapd-backend: databaseName
    ^D

    对于子后缀,请使用带另一属性的相同命令:
    nsslapd-parent-suffix: "parentSuffixDN"

    suffixDN 是新后缀的完整 DN。对于根后缀,按约定是使用域组件 (dc) 命名属性,例如,dc=example,dc=org。对于子后缀,suffixDN 包括子后缀的 RDN 和其父后缀的 DN,例如,ou=Contractors,dc=example,dc=com

    databaseName 是与此后缀相关的内部管理的数据库的名称。此名称在所有后缀的 databaseNames 中是唯一的,按照约定,它是 suffixDN 的第一个命名组件的值。databaseName 也是包含后缀的数据库文件的目录的名称,因此应仅包含 ASCII(7 位)字母数字字符、连字符(-) 和下划线(_)。

    对于子后缀,parentSuffixDN 即是父后缀的 DN。

  3. 使用以下命令创建数据库配置条目:
  4. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=databaseName,cn=ldbm database,cn=plugins,cn=config
    objectclass: top
    objectclass: extensibleObject
    objectclass: nsBackendInstance
    cn: databaseName
    nsslapd-suffix: suffixDN
    ^D

    其中,databaseNamesuffixDN 的值必须与上一个步骤中使用的值相同。

    当将此条目添加到目录中时,服务器的数据库模块将在下列目录中自动创建数据库文件:

    ServerRoot/slapd-serverID/db/databaseName

    要使服务器在另一个位置创建数据库文件,请使用下列属性创建数据库配置条目:

    nsslapd-directory: path/databaseName

    服务器将自动在给定的位置创建一个名为 databaseName 的目录以存放数据库文件。

  5. 创建根后缀或子后缀的基本条目。
  6. 例如,可以使用以下命令创建 dc=example,dc=org 根后缀的基本条目:

    ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn: dc=example,dc=org
    objectclass: top
    objectclass: domain
    dc: example
    ^D

    必须包括 DN 的第一个命名属性及其值。还必须包括基本条目的对象类的架构所需的所有属性。根据约定,使用域组件 (dc) 的根后缀 DN 包含 domain 对象类,此对象类不需要任何其他属性。

    还应向根后缀中添加访问控制指令 (ACI) 属性,以强制执行您的访问策略。下面是一些 aci 属性值,可以添加这些属性值以允许匿名读取,确保自我修改和以完全的管理员特权进行访问:

    aci: (targetattr != "userPassword") (version 3.0; acl
     "Anonymous access";
     allow (read, search, compare)userdn = "ldap:///anyone";)
    aci: (targetattr != "nsroledn || aci || nsLookThroughLimit ||
     nsSizeLimit || nsTimeLimit || nsIdleTimeout ||
     passwordPolicySubentry || passwordExpirationTime ||
     passwordExpWarned || passwordRetryCount || retryCountResetTime
     || accountUnlockTime || passwordHistory ||
     passwordAllowChangeTime")(version 3.0; acl "Allow self entry
     modification except for nsroledn, aci, resource limit
     attributes, passwordPolicySubentry and password policy state
     attributes"; allow (write)userdn ="ldap:///self";)
    aci: (targetattr = "*")(version 3.0; acl
     "Configuration Administrator";
     allow (all) userdn = "ldap:///uid=admin,ou=Administrators,
     ou=TopologyManagement, o=NetscapeRoot";)
    aci: (targetattr ="*")(version 3.0;acl
     "Configuration Administrators Group";
     allow (all) (groupdn =
     "ldap:///cn=Configuration Administrators, ou=Groups,
     ou=TopologyManagement, o=NetscapeRoot");)

    作为子后缀的一个示例,可以使用以下命令创建 ou=Contractors,dc=example,dc=com 的基本条目:

    ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn: ou=Contractors,dc=example,dc=com
    objectclass: top
    objectclass: organizationalUnit
    description: base of separate subsuffix for contractor identities
    ^D

    必须包括 DN 的命名属性及其值。还必须包括基本条目的对象类的架构所需的所有属性,可以添加允许的任何其他属性。子后缀将具有其父后缀上的 ACI 定义的访问控制,只要这些 ACI 的范围包括此新的子后缀即可。要在子后缀上定义不同的访问策略,请在创建基本条目时指定 aci 属性。


管理后缀

创建后缀允许您管理其全部内容。本节说明如何管理对后缀的访问,包括禁用所有操作、使后缀为只读和创建后缀级别的引用。

可以在后缀级别配置许多其他目录管理任务,但在本书的不同章节进行说明:

禁用或启用后缀

某些时候可能因维护而需要使后缀不可用,或出于安全考虑使其内容不可用。禁用后缀使服务器无法因响应尝试访问此后缀的任何客户机操作而读写此后缀的内容。如果定义了默认引用,则在客户机尝试访问已禁用的后缀时,将返回该默认引用。

使用控制台禁用或启用后缀

  1. 在 Directory Server Console 的顶级配置选项卡上,展开数据节点,然后选择要禁用的后缀。
  2. 在右侧面板中选择设置选项卡。默认情况下,所有后缀在创建时都将启用。
  3. 如果已启用此后缀的复制操作,则您将看到一条通知,告知此选项卡的内容可能已自动更新。禁用复制的后缀还将中断对此后缀的复制。只要中断复制的时间不比恢复设置的时间长,复制机制就会在此后缀再次启用时恢复对此副本的更新。复制恢复设置包括此使用者副本的清除延迟及其供应商更改日志的最大大小和存留期(请参阅“高级使用者配置”)。

  4. 取消选中“启用对该后缀的访问权限”复选框以禁用此后缀,或选中此复选框以启用此后缀。
  5. 单击“保存”应用更改并立即禁用或启用此后缀。
  6. 可选地,禁用此后缀时,也可为对此后缀执行的所有操作设置将返回的全局默认引用。此设置位于顶级“配置”选项卡的根节点的“网络”选项卡上。有关详细信息,请参阅“使用控制台设置默认引用”

从命令行禁用或启用后缀

  1. 使用以下命令在后缀的配置条目中编辑 nsslapd-state 属性:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn="suffixDN",cn=mapping tree,cn=config
    changetype: modify
    replace: nsslapd-state
    nsslapd-state: disabled or backend
    ^D

    其中,suffixDN 是后缀 DN 定义时的完整字符串,包含所有空格。将 nsslapd-state 属性设置为值 disabled 可禁用后缀,设置为值 backend 可实现完全访问。

    成功执行命令后,将立即禁用后缀。

  3. 可选地,禁用此后缀时,也可为对此后缀执行的所有操作设置将返回的全局默认引用。有关详细信息,请参阅“从命令行设置默认引用”

设置访问权限和引用

如果要限制对后缀的访问,而不完全禁用它,则可以修改访问权限以允许只读访问。在此情况下,必须定义对另一个服务器的引用,以用于写操作。还可以同时拒绝读写访问,为对后缀执行的所有操作定义引用。

还可以使用引用将客户机应用程序临时指向其他服务器。例如,可以添加对某个后缀的引用,以便在备份此后缀的内容时,此后缀指向其他服务器。

复制机制依赖写权限和引用来配置后缀以进行复制。启用复制、升级副本或降级副本都将修改引用设置。


警告

如果复制此后缀,则修改引用可能会影响此后缀的已复制的行为。


使用控制台设置访问权限和引用

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“数据”节点,然后选择要设置引用的后缀。
  2. 在右侧面板中选择“设置”选项卡。如果启用了已链接的后缀,则将只能设置权限和引用。如果已启用此后缀的复制操作,则您将看到一条通知,告知此选项卡的内容可能已自动更新。
  3. 选择以下某一单选按钮,以设置对此后缀中条目进行任何写操作时的响应:
    • 处理读写请求—默认情况下将选择此单选按钮,它代表后缀的正常行为。可以定义引用,但不会返回它们。
    • 处理读请求并返回写请求引用—如果要使后缀为只读并在列表中输入要作为写请求引用返回的一个或多个 LDAP URL,请选择此单选按钮。
    • 为读写请求返回引用—如果要同时拒绝读写访问,请选择此单选按钮。此行为类似于禁用对后缀的访问,不同的是,此行为可以为此后缀专门定义引用,而不是使用全局默认引用。
  4. 通过“添加”和“删除”按钮编辑引用列表。单击“添加”按钮将显示一个对话框,用于创建新引用的 LDAP URL。可以在远程服务器中创建对任何分支的 DN 的引用。有关 LDAP URL 结构的详细信息,请参阅《Directory Server Administration Reference》中的 Chapter 6 "LDAP URL Reference"
  5. 可输入多个引用。该目录将返回此列表中的所有引用,以响应来自客户机应用程序的请求。

  6. 单击“保存”应用更改并立即开始执行新的权限和引用设置。

从命令行设置访问权限和引用

标记为 URL 的引用(即 LDAP URL)后边可能跟有空格字符和标签。由于空格字符很重要,所以必须使用 %20 命令将引用的 URL 部分中的所有空格字符进行转义。

在下面的命令中,suffixDN 是后缀 DN 定义时的完整字符串,包含所有空格。LDAPURL 是有效的 URL,它包含主机名、端口号和目标的 DN,例如:

ldap://phonebook.example.com:389/ou=All%20People,dc=example,dc=com

  1. 使用以下命令编辑后缀的配置条目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn="suffixDN",cn=mapping tree,cn=config
    changetype: modify
    replace: nsslapd-state
    nsslapd-state: referral on update or referral
    -
    add: nsslapd-referral
    nsslapd-referral: LDAPURL
    ^D

    可以重复最后一个更改语句以将所有 LDAP URL 添加到 nsslapd-referral 属性中。

    当 nsslapd-state 的值是 referral on update 时,此后缀为只读且所有 LDAP URL 都将作为写操作引用返回。当值是 referral 时,系统将拒绝读写操作并为任一请求返回引用。

  3. 此后缀将变为只读或不可访问,并准备在成功执行命令后立即返回引用。

删除后缀

删除后缀将从目录中删除其整个分支。可以删除父后缀,并将其子后缀作为新的根后缀保存在目录中。


警告

删除后缀时,将从目录中永久删除此后缀的所有条目,并删除此后缀的所有配置(包括其复制配置)。


使用控制台删除后缀

  1. 在 Directory Server Console 的“配置”选项卡上,展开“数据”节点。
  2. 右键单击要删除的后缀,从弹出菜单中选择“删除”。
  3. 或者,可以选择后缀节点,并从“对象”菜单中选择“删除”。

  4. 出现确认对话框,告知将从该目录中删除所有后缀条目。
  5. 另外,对于父后缀,可以选择采用递归方式删除其所有子后缀。如果要删除整个分支,请选择“删除此后缀及其所有子后缀”。否则,如果只想删除此特定后缀并在目录中保存其子后缀,请选择“只删除此后缀”。

  6. 单击“确定”以删除此后缀。
  7. 显示进程对话框,告知您这些步骤正在由控制台完成。

从命令行删除后缀

要从命令行删除后缀,请使用 ldapdelete 命令从目录中删除其配置条目。

如果要删除包含子后缀的整个分支,则必须找到已删除的父后缀的子后缀,并对每个后缀及其可能的子后缀重复此过程。

  1. 使用以下命令删除后缀配置条目:
  2. ldapdelete -h host -p port -D "cn=Directory Manager" -w password \
               -v ’cn="suffixDN",cn=mapping tree,cn=config’

    此命令从服务器删除后缀,从 suffixDN 处的基本条目开始删除。现在,此后缀在目录中既不可见,也不能访问。-v 选项指定详细输出模式:显示有关删除操作的其他信息。

  3. 删除位于 cn=databaseName,cn=ldbm database,cn=plugins,cn=config 中的相应数据库配置条目及其下的所有条目。以下命令使用 ilash 命令实现此递归删除。
  4. % ilash -call http://host:port/ -user cn=Directory Manager[...]Enter password for cn=Directory Manager: password[...][example,com]% dcd cn=config[config]% ddelete -subtree \cn=databaseName,cn=ldbm database,cn=plugins,cn=config

    ldapdelete -h host -p port -D "cn=Directory Manager" -w password
    cn=monitor,cn=dbName,cn=chaining database,cn=plugins,cn=config
    cn=dbName,cn=chaining database,cn=plugins,cn=config

    Removed cn=aci, cn=index, cn=databaseName, cn=ldbm database,cn=plugins, cn=config

    Removed cn=entrydn, cn=index, cn=databaseName, cn=ldbm database,cn=plugins, cn=config

    [...]

    Removed cn=encrypted attributes, cn=databaseName, cn=ldbm database,cn=plugins, cn=config

    Removed cn=index, cn=databaseName, cn=ldbm database, cn=plugins,cn=config

    Removed cn=monitor, cn=databaseName, cn=ldbm database, cn=plugins,cn=config

    Removed cn=databaseName,cn=ldbm database,cn=plugins,cn=config

此输出显示与数据库相关和需要删除的所有索引配置条目。完全删除数据库配置后,服务器将删除与此后缀相关的所有数据库文件和目录。


创建已链接的后缀

根后缀和子后缀都可以链接到另一台服务器,这两个过程都可以通过控制台或从命令行来执行。

但是,在创建任何已链接的后缀前,应在远程服务器上创建代理身份。本地服务器在通过已链接后缀转发操作时,将使用代理身份绑定到远程服务器上。

如果配置的许多已链接后缀都具有相同参数,则还应为新的已链接后缀的链接参数设置默认值。在创建已链接后缀前后的任何时间,还可以为 LDAP 控件和服务器组件设置链接策略,如“配置链接策略”中所述。

创建代理身份

代理身份是本地服务器将用于绑定和转发已链接操作的远程服务器上的用户。出于安全考虑,配置代理时,一定不要使用目录管理员或管理用户 (admin) 的身份。

相反,从给定服务器创建将只用于已链接操作的新身份。在将链接的所有服务器上以及在“使用控制台创建已链接的后缀”“使用控制台修改链接策略”中定义的所有故障切换服务器上创建此身份。代理身份必须具有对已链接后缀的完全访问权。

使用控制台创建代理身份

此过程适用于已连接到远程服务器(作为已链接后缀的目标)的 Directory Server Console。

  1. 在 Directory Server Console 的顶级“目录”选项卡上,展开目录树。
  2. 右键单击 cn=config 条目并从弹出菜单中选择“新建”>“用户”项。或者,选择 cn=config 条目并从“对象”菜单中选择“新建”>“用户”项。
  3. 在“创建新用户”对话框的字段中填写值以描述代理身份,例如:
    • First Name:       proxy
      Last Name:       host1
      Common Name:       host1 chaining proxy
      User ID:       host1_proxy
      Password:       password
      Confirm Password:       password

      其中,host1 是包含已链接后缀的服务器的名称。对已有后缀链接到服务器的各个服务器,应使用不同的代理身份。

  4. 单击“确定”以保存此新的代理身份。

从命令行创建代理身份

此过程使用 host1host2 分别表示包含已链接后缀的本地服务器,以及作为已链接后缀目标的远程服务器。

  1. 使用以下命令在 host2 上创建代理身份:
  2. ldapmodify -a -h host2 -p port2 -D "cn=Directory Manager" -w password2
    dn: uid=host1_proxy,cn=config
    objectclass: top
    objectclass: person
    objectclass: organizationalPerson
    objectclass: inetorgperson
    uid: host1_proxy
    cn: host1 chaining proxy
    sn: host1
    userpassword: password
    description: proxy entry to be used for chaining from host1
    ^D


    警告

    应通过加密端口执行 ldapmodify 命令以避免发送明文口令。


设置默认链接参数

链接参数确定服务器如何连接到已链接的服务器上,以及如何处理对该已链接后缀执行的操作。在每个已链接后缀上配置这些参数。Directory Server 提供每次创建已链接后缀时使用的默认值。可以在所有新的已链接后缀上编辑这些默认值以指定链接参数。

修改默认参数后创建的每个新的已链接后缀将具有您指定的值。但是,一旦创建了后缀,则只能修改“管理已链接的后缀”中描述的参数。

链接参数的属性和默认值在下面进行了描述。有关允许值的描述,请参阅《Directory Server Administration Reference》Chapter 2 "Chained Suffix Plug-in Attributes"

客户机返回参数

级联链接参数

连接管理参数

错误检测参数

使用控制台设置默认链接参数

  1. 在 Directory Server Console 的顶级“目录”选项卡上,展开目录树并选择以下条目:cn=default instance config,cn=chaining database,cn=plugins,cn=config
  2. 双击此条目或选择“对象”>“使用通用编辑器编辑”菜单项。从以上列表中根据需要修改属性值。
  3. 在通用编辑器对话框中单击“保存”,所做的更改将立即生效。

从命令行设置默认链接参数

  1. 使用 ldapmodify 命令编辑条目 cn=default instance config,cn=chaining database,cn=plugins,cn=config。此条目的所有属性成为新的已链接后缀中参数的默认值。
  2. 例如,在新的已链接后缀中,以下命令将默认大小限制增加到 5000 个条目,将默认时间限制减少到 10 分钟。

    ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=default instance config,cn=chaining database,
     cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-sizelimit
    nsslapd-sizelimit: 5000
    -
    replace: nsslapd-timelimit
    nsslapd-timelimit: 600
    ^D

    对此条目所做的修改将立即生效。

使用控制台创建已链接的后缀

下列过程与创建已链接的根后缀和已链接的子后缀的过程几乎相同:

  1. 选择 Directory Server Console 的“配置”选项卡。
    • 对于已链接的根后缀,右键单击“数据”节点,然后从弹出菜单中选择“新建已链接的后缀”。或者,可以选择“数据”节点,并从“对象”菜单中选择“新建已链接的后缀”。
    • 对于已链接的子后缀,展开“数据”节点和任何后缀节点以显示父后缀。右键单击父后缀节点,从弹出菜单中选择“新建已链接的子后缀”。或者,可以选择父后缀节点,并从“对象”菜单中选择“新建已链接的子后缀”。
    • 显示“新建已链接的(子)后缀”对话框。

  2. 在要链接到的远程服务器上输入条目的 DN。远程条目不一定是远程后缀的基本条目:
    • 对于根后缀,在“后缀 DN”字段中输入远程条目的完整 DN。可以输入作为远程目录树中一个条目的任一 DN。该条目将是已链接的根后缀的基础,此条目下的所有内容都将通过已链接的后缀获得。
    • 对于子后缀,输入将要链接的条目的子后缀 RDN。该条目将是已链接的子后缀的基础。文本字段下出现的完整的子后缀名称必须是存在于远程服务器中的条目。
  3. 输入包含后缀数据(如有必要,也包括域)的远程服务器的主机名。
  4. 输入用于访问远程服务器的端口号,如果该端口是安全端口,请选中该复选框。使用安全端口时,将通过 SSL 对链接操作进行加密。有关详细信息,请参阅“使用 SSL 链接”
  5. 对话框底部的文本将显示远程服务器的完整 URL。

  6. 在远程服务器上输入代理身份的绑定 DN 和口令。访问远程服务器上后缀的内容时,本地服务器将此 DN 用作代理。例如,使用在“创建代理身份”中定义的 uid=host1_proxy,cn=config DN。
  7. 不能使用远程服务器上目录管理员的 DN。通过已链接后缀执行的操作将在 creatorsNamemodifiersName 属性中使用此代理身份。可以忽略代理DN,在此情况下,本地服务器将在访问远程服务器时匿名进行绑定。

  8. 单击“确定”以创建已链接的后缀。新后缀将出现在配置树中,并带有链接图标。
  9. 单击新的已链接后缀以选择它,然后在右侧面板中选择“远程服务器”选项卡。
  10. 可选地,可为此已链接的后缀定义一个或多个故障切换服务器。如果此服务器无法与远程服务器联系,则它将按定义的顺序尝试每个故障切换服务器,直到有一个服务器响应为止。故障切换服务器必须包含正在链接的相同后缀,并允许使用同一个绑定 DN 执行代理。
  11. 要定义故障切换服务器,请在“远程服务器 URL”字段中输入多个由空格分隔的主机名和端口号对。此字段采用下列格式:

    ldap[s]://hostname[:port][ hostname[:port]].../

  12. 在“远程服务器”选项卡底部,文本框显示允许通过链接执行代理操作所需的 ACI。必须将此 ACI 添加到其 suffixDN 位于远程服务器上的条目中。如果定义了任何故障切换服务器,则应将此 ACI 添加到所有这些服务器中。使用“复制 ACI”按钮将 ACI 文本复制到系统的剪贴板上进行粘贴。
  13. 一旦将此 ACI 添加到远程服务器上的基本条目,已链接的后缀在本地服务器的目录树中将是可见的。


    警告

    可能需要在同一个条目上定义其他 ACI 以限制对目前通过链接而公开的远程服务器进行访问。请参阅“通过已链接的后缀进行的访问控制”


  14. 如果已为服务器组件配置了链接策略,则还必须添加将允许这些组件访问远程服务器的 ACI。例如,如果允许对引用完整性插件进行链接,则必须将下列 ACI 添加到已在步骤 2 给出其 DN 的基本条目中:
  15. aci: (targetattr "*")
     (target="ldap:///suffixDN")
     (version 3.0; acl "RefInt Access for chaining"; allow
     (read,write,search,compare) userdn = "ldap:///cn=referential
     integrity postoperation,cn=plugins,cn=config";)

从命令行创建已链接的后缀

还可以使用 ldapmodify 命令行公用程序在目录中创建已链接的后缀。由于已链接的根后缀和已链接的子后缀都由服务器以相同方式在内部进行管理,所以从命令行创建已链接的根后缀和已链接的子后缀的过程几乎相同。

  1. 使用以下命令为已链接的根后缀在 cn=mapping tree,cn=config 下创建已链接的后缀条目:
  2. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=suffixDN,cn=mapping tree,cn=config
    objectclass: top
    objectclass: extensibleObject
    objectclass: nsMappingTree
    cn: suffixDN
    nsslapd-state: backend
    nsslapd-backend: databaseName
    ^D

    对于已链接的子后缀,请使用带另一属性的相同命令:
    nsslapd-parent-suffix: parentSuffixDN

    对于已链接的子后缀,suffixDN 是子后缀的 RDN 和其父后缀的 DN,例如,l=Europe,dc=example,dc=comsuffixDN 必须是通过远程服务器可用的条目的 DN,但它不一定是远程后缀的基本条目。

    虽然后缀名称采用 DN 格式,但将其视作单个字符串。因此,所有空格都有意义,都是后缀名称的一部分。为了使服务器访问远程条目,suffixDN 字符串必须采用远程后缀中使用的间隔。

    databaseName 是链接插件组件用于标识这个已链接后缀的。此名称在所有后缀的 databaseNames 中是唯一的,按照约定,它是 suffixDN 的第一个命名组件的值。与本地后缀不同,已链接的后缀在本地服务器上没有任何数据库文件。

    对于子后缀,parentSuffixDN 即是父后缀的 DN。父后缀可以是本地后缀,也可以是已链接的后缀。

  3. 使用以下命令创建链接配置条目:
  4. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
    objectclass: top
    objectclass: extensibleObject
    objectclass: nsBackendInstance
    cn: databaseName
    nsslapd-suffix: suffixDN
    nsfarmserverurl: LDAPURL
    nsmultiplexorbinddn: proxyDN
    nsmultiplexorcredentials: ProxyPassword
    ^D

    其中,databaseNamesuffixDN 的值必须与上个步骤中使用的值相同。LDAPURL 是远程服务器的 URL,但它不包含任何后缀信息。URL 可以包含采用下列格式列出的故障切换服务器:

    ldap[s]://hostname[:port][ hostname[:port]].../

    在 LDAP URL 中列出的所有远程服务器都必须包含 suffixDN。有关指定安全端口的信息,请参阅“使用 SSL 链接”

    proxyDN 是远程服务器上代理身份的 DN。访问远程服务器上后缀的内容时,本地服务器将此 DN 用作代理。通过已链接后缀执行的操作将在 creatorsNamemodifiersName 属性中使用此代理身份。如果未指定代理DN,本地服务器在访问远程服务器时将匿名进行绑定。

    ProxyPassword 是代理DN 的未加密的口令值。如果口令存储在配置文件中,则将对口令进行加密。例如:

    nsmultiplexorbinddn: uid=host1_proxy,cn=config
    nsmultiplexorcredentials: secret


    警告

    应通过加密端口执行 ldapmodify 命令以避免发送明文口令。


    新条目将自动包括所有链接参数,默认值已在 cn=default instance config,cn=chaining database,cn=plugins,cn=config 中定义。创建链接配置条目时,可以通过设置具有不同值的属性覆盖其中的任何值。有关可定义其值的属性列表,请参阅“设置默认链接参数”

  5. 使用以下命令在远程条目上创建 ACI。需要此 ACI 以允许通过链接执行代理操作。有关 ACI 的详细信息,请参阅第 6 章“管理访问控制”
  6. ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
    dn: suffixDN
    changetype: modify
    add: aci
    aci: (targetattr=*)(target = "ldap:///suffixDN")(version 3.0;acl
     "Allows use of admin for chaining"; allow (proxy)
     (userdn="ldap:///proxyDN");)
    ^D


    警告

    可能需要在同一个条目上定义其他 ACI 以限制对目前通过此服务器而公开的远程服务器进行访问。请参阅“通过已链接的后缀进行的访问控制”


  7. 如果已为服务器组件配置了链接策略,则还必须添加将允许这些组件访问远程服务器的 ACI。例如,如果允许对引用完整性插件进行链接,则必须将下列 ACI 添加到基本条目中,该条目的 suffixDN 为:
  8. aci: (targetattr "*")
     (target="ldap:///suffixDN")
     (version 3.0; acl "RefInt Access for chaining"; allow
     (read,write,search,compare) userdn = "ldap:///cn=referential
     integrity postoperation,cn=plugins,cn=config";)

下列命令给出创建已链接的子后缀的示例。注意,只有当逗号出现在 DN 的命名属性中时,suffixDN 中的逗号才必须用反斜杠进行转义 (\)。

ldapmodify -a -h host1 -p port1 -D "cn=Directory Manager" -w password1
dn: cn=l=Europe\,dc=example\,dc=com,cn=mapping tree,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsMappingTree
cn: l=Europe,dc=example,dc=com
nsslapd-state: backend
nsslapd-backend: Europe
nsslapd-parent-suffix: dc=example,dc=com

dn: cn=Europe,cn=chaining database,cn=plugins,cn=config
objectclass: top
objectclass: extensibleObject
objectclass: nsBackendInstance
cn: Europe
nsslapd-suffix: l=Europe,dc=example,dc=com
nsfarmserverurl: ldap://host2:port2/
nsmultiplexorbinddn: uid=host1_proxy,cn=config
nsmultiplexorcredentials: proxyPassword
^D

ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
dn: l=Europe,dc=example,dc=com
changetype: modify
changetype: modify
aci: (targetattr=*)(target =
 "ldap:///l=Europe,dc=example,dc=com")(version 3.0;acl
 "Allows use of admin for chaining"; allow (proxy)
 (userdn="ldap:///uid=host1_proxy,cn=config");)
^D

通过已链接的后缀进行的访问控制

当已验证的用户访问已链接后缀时,服务器会将此用户的身份发送到远程服务器。访问控制始终在远程服务器上进行评估。在远程服务器上评估的每个 LDAP 操作使用客户机应用程序(通过已代理的授权控件进行传递)的原始身份。只有当用户对远程服务器上包含的子树具有正确的访问控制时,操作才能在远程服务器上获得成功。这表示需要向远程服务器添加仅有少许限制的常规访问控制:

以下限制适用于所创建的与已链接后缀一起使用的 ACI:

虽然通常在远程服务器上评估访问控制,但仍可选择在包含已链接后缀的服务器和远程服务器上都进行评估。这会有一些限制:

默认情况下,包含已链接后缀的服务器上设置的访问控制将不被评估。要覆盖此默认设置,请使用 cn=databaseName,cn=chaining database,cn=plugins,cn=config 条目中的 nsCheckLocalACI 属性。但是,除非使用级联链接,否则不推荐在包含已链接后缀的服务器上评估访问控制。有关详细信息,请参阅“配置级联链接”

使用 SSL 链接

当对已链接的后缀执行操作时,可配置服务器以使用 SSL 与远程服务器进行通讯。使用 SSL 进行链接包括以下步骤:

  1. 在远程服务器上启用 SSL。
  2. 在包含已链接后缀的服务器上启用 SSL。
  3. 有关启用 SSL 的详细信息,请参阅第 11 章“管理验证和加密”

  4. 在创建或修改已链接后缀的过程中指定 SSL 和远程服务器的安全端口。
  5. 当使用控制台时,请在已链接后缀的创建或配置过程中选中安全端口复选框。请参阅“使用控制台创建已链接的后缀”“使用控制台修改链接策略”

    当使用命令行过程时,请指定 LDAPS URL 和远程服务器的安全端口,例如:ldaps://example.com:636/。请参阅“从命令行创建已链接的后缀”“从命令行修改链接策略”

当配置已链接的后缀和远程服务器以使用 SSL 进行通讯时,并不表示进行操作请求的客户机应用程序也必须使用 SSL 进行通讯。客户机可使用 LDAP 协议或 DSML 协议的两个端口之一。


管理已链接的后缀

本节说明如何更新和删除现有已链接的后缀以及如何控制链接机制。

配置链接策略

服务器的链接策略确定哪些 LDAP 控件将拓展到链接的服务器,以及允许哪些服务器组件访问链接的后缀。应了解这些设置及其对涉及已链接后缀的操作的影响。链接策略将用于服务器上的所有已链接后缀。

默认设置用于允许透明完成一般操作。但是,如果操作涉及 LDAP 控件,或者使用引用完整性插件之类的服务器组件,则应确保按需要配置链接策略。

最好在创建任何已链接后缀之前先配置链接策略,以便一启用已链接后缀就可应用策略。不过,也可在以后任何时间修改策略。

LDAP 控件的链接策略

LDAP 控件由客户机作为请求的一部分发送,以便以某种方式对操作或其结果进行修改。服务器链接策略确定服务器将哪些控件随操作转发给已链接的后缀。默认情况下,以下控件将被转发给已链接后缀的远程服务器:

表 3-1 默认情况下允许链接的 LDAP 控件

控件的 OID

控件的名称和说明

1.2.840.113556.1.4.473

服务器端排序—与搜索关联以根据其属性值对结果条目进行排序。1

1.3.6.1.4.1.1466.29539.12

链接循环检测—跟踪服务器与另一服务器链接的次数。当链接计数达到配置的数字时,将放弃操作并通知客户机应用程序。有关详细信息,请参阅“传输用于级联的 LDAP 控件”

2.16.840.1.113730.3.4.2

智能引用的受管 DSA—以条目返回智能引用,而非遵循引用。这将允许更改或删除智能引用本身。

2.16.840.1.113730.3.4.9

虚拟列表视图 (VLV)—提供搜索的部分结果,而非一次返回所有结果条目。1

1服务器端排序和 VLV 控件仅当搜索范围为单一后缀时才可通过链接受支持。当客户机应用程序对多个后缀发出请求时,已链接的后缀无法支持 VLV 控件。

下表列出了通过配置链接策略可允许链接的其他 LDAP 控件:

表 3-2 可链接的 LDAP 控件

控件的 OID

控件的名称和说明

1.3.6.1.4.1.42.2.27.9.5.2

获得有效的权限请求—要求服务器在结果中返回有关条目和属性的访问权限和 ACI 的信息。

2.16.840.1.113730.3.4.12

已代理的授权(旧规范)—允许客户机在一个请求期间内采用另一个身份。1

2.16.840.1.113730.3.4.14

特定的数据库搜索—用于搜索操作以指定搜索必须在控件中命名的数据库上执行。

2.16.840.1.113730.3.4.16

验证请求—提供绑定请求以要求服务器在绑定响应中提供其证书。

2.16.840.1.113730.3.4.17

仅真实属性请求—表明服务器应仅返回真实包含在返回条目中的属性,并不需要解决虚拟属性。

2.16.840.1.113730.3.4.18

已代理的授权(新规范)—允许客户机在一个请求期间内采用另一个身份。1

2.16.840.1.113730.3.4.19

仅虚拟属性请求—表明服务器应仅返回由角色和服务类功能生成的属性。

1应用程序可以使用任何一种已代理的授权控件。对于两种控件的 OID 而言,应该具有相同的链接策略。有关详细信息,请参阅“传输用于级联的 LDAP 控件”

服务器组件的链接策略

组件是服务器中使用内部操作的任何属性或功能单元。例如,插件就被视为组件。对于大多数组件而言,要执行其任务,必须访问目录内容,包括配置数据或存储在目录中的用户数据。

默认情况下,不允许链接任何服务器组件。如果要让组件访问已链接的后缀,则必须明确允许链接。可访问已链接数据的组件按其 DN 列出如下。

“使用控制台创建已链接的后缀”中所述,必须在远程服务器上的 ACI 中授予一定的权限以允许链接。当链接服务器组件时,必须在此 ACI 中允许搜索、读取和比较,以便服务器组件可以执行这些操作。此外,某些组件要求在远程服务器上的写入权限,如列表中所述:

使用控制台修改链接策略

  1. 在 Directory Server Console 的“配置”选项卡上,选择“数据”节点,并在右侧面板中选择“链接”选项卡。
  2. 从右侧列表中选择一个或多个 LDAP 控件,然后单击“添加”以允许它们链接。使用“添加”和“删除”按钮创建允许链接的控件列表。
  3. 按其 OID 列出 LDAP 控件。请参阅“LDAP 控件的链接策略”,以获取每个控件的名称和说明。

  4. 允许链接的服务器组件列在同一选项卡的底端。从右侧列表中选择一个或多个组件名称,然后单击“添加”以允许它们链接。使用“添加”和“删除”按钮创建允许链接的组件列表。
  5. 请参阅“服务器组件的链接策略”,以获取每个组件的说明。

  6. 单击“保存”以保存链接策略。
  7. 重新启动服务器以使更改生效。

从命令行修改链接策略

cn=config,cn=chaining database,cn=plugins,cn=config 条目包含链接策略配置的属性。使用 ldapmodify 命令编辑此条目:

  1. 修改 nsTransmittedControls 多值属性,以使其包含所有允许链接的 LDAP 控件的 OID。请参阅“LDAP 控件的链接策略”,以获取所有可被链接的控件的 OID。
  2. 例如,以下命令将有效的权限控件添加到已链接控件的列表中:

    ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=config,cn=chaining database,cn=plugins,cn=config
    changetype: modify
    add: nsTransmittedControls
    nsTransmittedControls: 1.3.6.1.4.1.42.2.27.9.5.2
    ^D

    如果客户机应用程序使用自定义控件,而且您希望允许它们链接,则也可将其 OID 添加到 nsTransmittedControls 属性。

  3. 修改 nsActiveChainingComponents 多值属性,以使其包含所有允许链接的服务器组件的 DN。请参阅“服务器组件的链接策略”,以获取每个组件的说明。
  4. 例如,以下命令将引用完整性组件添加到已链接组件的列表中:

    ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=config,cn=chaining database,cn=plugins,cn=config
    changetype: modify
    add: nsActiveChainingComponents
    nsActiveChainingComponents: cn=referential integrity
     postoperation,cn=components,cn=config
    ^D

  5. 一旦修改了链接策略配置条目,就必须重新启动服务器以使更改生效。

禁用或启用已链接的后缀

某些时候可能由于维护或安全原因需要使已链接的后缀不可用。禁用后缀可防止服务器与远程服务器联络以响应任何试图访问后缀的客户机操作。如果定义了默认引用,则在客户机尝试访问已禁用的后缀时,将返回该默认引用。

使用控制台禁用或启用已链接的后缀

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“数据”节点,然后选择要禁用的已链接后缀。
  2. 在右侧面板中选择“设置”选项卡。默认情况下,所有已链接的后缀在创建时已启用。
  3. 取消选中“启用对该后缀的访问权限”复选框以禁用此后缀,或选中此复选框以启用此后缀。
  4. 单击“保存”应用更改并立即禁用或启用此后缀。
  5. 可选地,禁用此后缀时,也可为对此后缀执行的所有操作设置将返回的全局默认引用。此设置位于顶级“配置”选项卡的根节点的“网络”选项卡上。有关详细信息,请参阅“使用控制台设置默认引用”

从命令行禁用或启用后缀

  1. 请用以下命令编辑已链接的后缀条目中的 nsslapd-state 属性:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=suffixDN,cn=mapping tree,cn=config
    changetype: modify
    replace: nsslapd-state
    nsslapd-state: disabled or backend
    ^D

    其中,suffixDN 为后缀 DN 定义时的完整字符串,包括空格或反斜杠 (\) 以避免在值中使用逗号。将 nsslapd-state 属性设置为值 disabled 可禁用后缀,设置为值 backend 可实现完全访问。

    成功执行命令后,将立即禁用后缀。

  3. 可选地,禁用此后缀时,也可为对此后缀执行的所有操作设置将返回的全局默认引用。有关详细信息,请参阅“从命令行设置默认引用”

设置访问权限和引用

如果要限制对已连接后缀的访问而不完全禁用它,则可以修改访问权限以允许只读访问。在此情况下,必须定义对另一个服务器的引用,以用于写操作。还可以同时拒绝读写访问,为对后缀执行的所有操作定义引用。

有关一般引用的详细信息,请参阅《Directory Server Deployment Planning Guide》中的 Chapter 5 "Distribution, Chaining, and Referrals"

使用控制台设置访问权限和引用

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“数据”节点,然后选择要设置引用的已链接后缀。
  2. 在右侧面板中选择“设置”选项卡。如果启用了已链接的后缀,则将只能设置权限和引用。
  3. 选择以下某一单选按钮,以设置对此后缀中条目进行任何写操作时的响应:
    • 处理读写请求—默认情况下将选择此单选按钮,它代表正常行为。读取和写入操作都将转发到远程服务器,并将结果返回客户机。可以定义引用,但不会将它们返回到客户机。
    • 处理读请求并返回写请求引用—服务器将仅转发读请求并将其结果返回客户机。请在列表中输入将作为写请求引用返回的一个或多个 LDAP URL。
    • 为读写请求返回引用—在列表中输入将作为所有操作引用返回的一个或多个 LDAP URL。此行为类似于禁用对后缀的访问,不同的是,此行为可以为此后缀专门定义引用,而不是使用全局默认引用。
  4. 通过“添加”和“删除”按钮编辑引用列表。单击“添加”按钮将显示一个对话框,用于创建新引用的 LDAP URL。可以在远程服务器中创建对任何分支的 DN 的引用。有关 LDAP URL 结构的详细信息,请参阅《Directory Server Administration Reference》中的 Chapter 5 "LDAP URL Reference"
  5. 可输入多个引用。该目录将返回此列表中的所有引用,以响应来自客户机应用程序的请求。

  6. 单击“保存”应用更改并立即开始执行新的权限和引用设置。

使用控制台设置访问权限和引用

在以下命令中,suffixDN 是已链接后缀定义时的完整字符串,包括所有空格。LDAPURL 是有效的 URL,它包含主机名、端口号和目标的 DN,例如:

ldap://alternate.example.com:389/ou=People,dc=example,dc=com

  1. 使用以下命令编辑已链接的后缀条目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=suffixDN,cn=mapping tree,cn=config
    changetype: modify
    replace: nsslapd-state
    nsslapd-state: referral on update or referral
    -
    add: nsslapd-referral
    nsslapd-referral: LDAPURL
    ^D

    可以重复最后一个更改语句以将 LDAP URL 的任何数字添加到 nsslapd-referral 属性中。

    当 nsslapd-state 的值是 referral on update 时,此后缀为只读且所有 LDAP URL 都将作为写操作引用返回。当值是 referral 时,系统将拒绝读写操作并为任一请求返回引用。

  3. 此后缀将变为只读或不可访问,并准备在成功执行命令后立即返回引用。

修改链接参数

一旦定义了已链接的后缀,就可修改控制链接的参数。可以指定如何访问远程服务器、如何更改用于代理的 DN,甚至如何更改远程服务器。还可修改性能参数,这些参数控制服务器如何建立和维护与已链接服务器的连接。

使用控制台修改链接参数

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“数据”节点,然后选择要修改的已链接后缀。
  2. 在右侧面板中选择“远程服务器”选项卡。
  3. 要更改远程服务器的名称或端口,请修改“远程服务器 URL”字段。该 URL 包含以下格式的一个或多个远程服务器的主机名和可选端口号:
  4. ldap[s]://hostname[:port][ hostname[:port]].../

    此 URL 不包括任何后缀信息。有关指定安全端口的信息,请参阅“使用 SSL 链接”。当 URL 中的第一个服务器响应链接请求失败时,将按列出的顺序与 URL 中的其他服务器联系。所有在 LDAP URL 中列出的远程服务器必须包含 suffixDN,它是已链接后缀的基本条目。

  5. 要更改代理用户的 DN,请在“绑定 DN”字段中输入一个新值。在“口令”字段中输入并确认此 DN 的相应口令。
  6. proxyDN 是远程服务器上的用户的 DN。访问远程服务器上后缀的内容时,本地服务器将此 DN 用作代理。通过已链接后缀执行的操作将在 creatorsNamemodifiersName 属性中使用此代理身份。如果未指定代理DN,本地服务器在访问远程服务器时将匿名进行绑定。

  7. 选项卡底部的文本框显示允许链接此后缀所需要的 ACI。如果更改了远程服务器 URL,则必须将该 ACI 添加到其 suffixDN 位于新的一台或多台远程服务器上的条目中。如果修改了代理 DN, 则应更新所有已链接服务器上的 ACI。使用“复制 ACI”按钮将 ACI 文本复制到系统的剪贴板上进行粘贴。
  8. 选择“限制和控制”选项卡以配置用于链接请求的参数。在“配置级联链接”中描述了级联链接参数。
  9. 设置“控制客户机返回”参数以限制已链接操作的大小和时间:
    • 返回范围搜索的引用—范围完全在已链接后缀中的搜索是效率低的搜索,因为结果被传输了两次。默认情况下,服务器将返回对已链接服务器的引用,强制客户机直接在已链接服务器上执行搜索。如果取消选择此选项,则应设置以下参数以限制将被链接的结果的大小。
    • 大小限制或无大小限制—此参数确定为响应已链接的搜索操作而将返回的条目数量。默认值大小限制是 2000 个条目。如果要限制对涉及的已链接后缀进行大范围搜索,请将此参数设置为较低的值。在任何情况下,操作将受远程服务器上的任何大小设置所限制。
    • 时间限制或无时间限制—此参数控制已链接操作的时间长度。默认时间限制是 3600 秒(1 小时)。如果要限制对已链接后缀执行操作的时间,则将此参数设置为较低的值。在任何情况下,操作将受远程服务器上的任何时间设置所限制。
  10. 设置“连接管理”参数以控制服务器如何管理网络连接以及与远程服务器的绑定:
    • 最大的 LDAP 连接数。已链接的后缀通过远程服务器可以建立的最大同时发生的 LDAP 操作连接数。默认值是 10 个连接。
    • 最大的绑定连接数。已链接的后缀通过远程服务器可以建立的最大同时发生的绑定连接数。默认值是 3 个连接。
    • 每个连接最大的绑定数。每个 LDAP 连接最大的同时绑定操作数。默认值是每个连接有 10 个突出绑定操作。
    • 最大的绑定重试次数。出错时,已链接的后缀尝试重新绑定到远程服务器上的次数。值 0 表示已链接的后缀将仅尝试绑定一次。默认值为尝试 3 次。
    • 每个连接最大的操作数。每个 LDAP 连接最大的同时操作数。默认值是每个连接有 10 个操作。
    • 绑定超时或无绑定超时。链接服务器上绑定尝试超时之前的时间长度(以秒为单位)。默认值为 15 秒。
    • 放弃前的超时或无超时。服务器检查是否已放弃某个操作之前的秒数。默认值为 2 秒。
    • 连接生命周期或无限制。已链接的后缀与远程服务器之间的连接保持打开状态以便可以重新使用的时间长度。将连接保持为打开状态可以加快访问速度,但要使用更多的资源。例如,如果使用拨号连接,则希望限制连接时间。默认情况下,连接不受限制。
    • 错误检测参数无法通过控制台获取。请参阅“从命令行修改链接参数”

  11. 完成链接参数的设置后请单击“保存”。

从命令行修改链接参数

从命令行,可设置使用控制台时设置的所有相同参数,并且也可配置“错误检测参数”中描述的其他参数:

  1. 使用以下命令编辑对应于要修改的后缀的链接配置条目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
    changetype: modify
    replace: attributeName
    attributeName: attributeValue
    -
    replace: attributeName2
    attributeName2: attributeValue2
    ...
    ^D

    以下步骤说明了可能的属性名和值。可在命令中包括多个更改语句,以便一次更改任意多个参数。

  3. 修改 nsfarmserverURL 属性以更改远程服务器的名称或端口。该属性值为包含以下格式的一个或多个远程服务器的主机名和可选端口号的 URL:
  4. ldap[s]://hostname[:port][ hostname[:port]].../

    此 URL 不包括任何后缀信息。有关指定安全端口的信息,请参阅“使用 SSL 链接”。当 URL 中的第一个服务器响应链接请求失败时,将按列出的顺序与 URL 中的其他服务器联系。所有在 LDAP URL 中列出的远程服务器必须包含 suffixDN,它是已链接后缀的基本条目。

  5. 修改 nsmultiplexorBindDNnsmultiplexorCredentials 属性以更改用于代理访问远程服务器的 DN。
  6. 访问远程服务器上后缀的内容时,本地服务器将此 DN 用作代理。通过已链接后缀执行的操作将在 creatorsNamemodifiersName 属性中使用此代理身份。如果未指定代理DN,本地服务器在访问远程服务器时将匿名进行绑定。

  7. 如果修改代理 DN 或其凭证,则必须在远程服务器上创建相应的 ACI。需要此 ACI 以允许通过链接执行代理操作:
  8. ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
    dn: suffixDN
    changetype: modify
    add: aci
    aci: (targetattr=*)(target = "ldap:///suffixDN")(version 3.0;acl
     "Allows use of admin for chaining"; allow (proxy)
     (userdn="ldap:///proxyDN");)
    ^D

  9. 设置“设置默认链接参数”中描述的任何属性,以控制远程服务器上的连接和操作处理。在“配置级联链接”中进一步说明了级联参数。

优化线程使用

也可设置服务器全局使用的线程数以考虑用于链接的线程资源。已链接的操作可能会占用很长时间,因为必须将它们转发到远程服务器,但当远程服务器处理操作时它们的线程为空闲状态。如果已链接的服务器严重延迟,则应增加线程数,以便有更多的资源可用于同时处理本地操作。

默认情况下,服务器使用的线程数为 30 个。但是,当使用已链接的后缀时,可通过增加可用于处理操作的线程数来提高性能。根据已链接后缀的数量、在其执行的操作数和操作类型,以及在远程服务器上处理操作需要的平均时间来确定需要的线程数。

通常,应将每个已链接后缀的线程数增加 5 到 10 个(假定已链接的后缀是与本地后缀相同数量的操作的目标)。

使用控制台设置线程资源

  1. 在 Directory Server Console 的顶级“配置”选项卡上,单击“性能”节点,然后在右侧面板中选择“杂项”选项卡。
  2. 在“最大线程数”字段中输入新值。
  3. 单击“确定”以保存更改,并确认需要重新启动服务器以使更改生效的消息。
  4. 重新启动 Directory Server 以使用新的线程数。

从命令行设置线程资源

  1. 使用以下命令编辑全局配置条目以修改线程数:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=config
    changetype: modify
    replace: nsslapd-threadnumber
    nsslapd-threadnumber: newThreadNumber
    ^D

  3. 重新启动 Directory Server 以使用新的线程数。

删除已链接的后缀

删除一个已链接的后缀将使其不可通过本地目录树访问,但不会删除已链接服务器上的条目或后缀。可以删除父后缀,并将其子后缀作为新的根后缀保存在目录中。

使用控制台删除已链接的后缀

  1. 在 Directory Server Console 的“配置”选项卡上,展开“数据”节点。
  2. 右键单击要删除的后缀,从弹出菜单中选择“删除”。
  3. 或者,可以选择后缀节点,并从“对象”菜单中选择“删除”。

  4. 出现确认对话框,告知可通过此已链接后缀访问的条目将不会从远程目录中删除。
  5. 另外,对于父后缀,可以选择采用递归方式删除其所有子后缀。如果要删除整个分支,请选择“删除此后缀及其所有子后缀”。否则,如果只想删除此特定后缀并在目录中保存其子后缀,请选择“只删除此后缀”。

  6. 单击“确定”以删除此后缀。
  7. 显示进程对话框,告知您这些步骤正在由控制台完成。

从命令行删除后缀

要从命令行删除后缀,请使用 ldapdelete 命令从目录中删除其配置条目。

如果要删除包含子后缀的整个分支,则必须找到已删除的父后缀的子后缀,并对每个后缀及其可能的子后缀重复此过程。

  1. 使用以下命令删除后缀配置条目:
  2. ldapdelete -h host -p port -D "cn=Directory Manager" -w password
    cn=suffixDN,cn=mapping tree,cn=config

    此命令使此已链接后缀及其远程条目在目录中再也不可见。

  3. 删除位于 cn=databaseName,cn=chaining database,cn=plugins,cn=config 中的相应数据库配置条目及其下面的监视器条目:
  4. ldapdelete -h host -p port -D "cn=Directory Manager" -w password
    cn=monitor,cn=dbName,cn=chaining database,cn=plugins,cn=config
    cn=dbName,cn=chaining database,cn=plugins,cn=config


配置级联链接

在级联链接中,从一个服务器链接的子树可能自身也是一个已链接后缀或包含已链接的子后缀。当操作包含一个服务器中的已链接后缀时,它将被转发到中间服务器,该中间服务器将与第三个服务器联系,以此类推。无论何时发生的多于一个跃点的服务器间的级联链接都必须访问目录树中的所有数据。

例如,下面的图表显示对条目 ou=People,l=Europe,dc=example,dc=com 的访问是如何从服务器 A 链接到服务器 B,最后到达服务器 C。服务器 A 包含根后缀 dc=example,dc=com,以及分支 l=Europe,dc=example,dc=com 的到服务器 B 的已链接子后缀。服务器 B 包含条目 l=Europe,dc=example,dc=com,但分支 ou=People,l=Europe,dc=example,dc=com 是到服务器 C 的已链接子后缀。服务器 C 实际包含条目 ou=People,l=Europe,dc=example,dc=com

图 3-1 通过三个服务器进行级联链接

显示服务器 C 上的根后缀 dc=example,dc=com on A, subsuffix l=Europe,dc=example,dc=com on B, and subsuffix ou=People,l=Europe,dc=example,dc=com 的图表

设置级联参数

可配置两个链接参数用于级联:

使用控制台设置级联参数

  1. 在 Directory Server Console 的顶级“配置”选项卡上,展开“数据”节点,然后选择要修改的已链接后缀。
  2. 在右侧面板中,选择“限制和控制”选项卡,可在此处修改级联链接参数。
  3. 在级联链接中的所有中间服务器上,选中检查本地 ACI 的复选框。
  4. 在单级链接中,未选中此复选框是因为用户的访问权限不在第一个服务器上评估,而是在第二个服务器上通过代理进行评估。但是,在级联链接的中间服务器上,必须启用 ACI 检查以允许在再次转发操作之前执行访问控制。

  5. 在级联链接中的所有服务器上,设置允许拓扑中所有链接操作的最大跃点数。每次将同一个操作转发到另一个已链接后缀计为一个跃点,当达到最大跃点数限制时,已链接后缀将不再转发操作。
  6. 应设置一个比最长级联链接中跃点数更大的数字。所有达到此限制的操作都将被放弃,因为服务器将假定它为拓扑中的一个意外循环。

    还必须设置链接配置以允许循环检测控制,如“传输用于级联的 LDAP 控件”中所述。

  7. 完成级联参数的设置后请单击“保存”。

从命令行设置级联参数

  1. 在所有中间服务器上,使用以下命令编辑用于级联后缀的链接配置条目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
    changetype: modify
    replace: nsCheckLocalACI
    nsCheckLocalACI: on
    -
    changetype: modify
    replace: nsHopLimit
    nsHopLimit: maximumHops
    ^D

    应将 maximumHops 设置为大于最长级联链接中的跃点数。所有达到此限制的操作都将被放弃,因为服务器将假定它为拓扑中的一个意外循环。还必须设置链接配置以允许循环检测控制,如“传输用于级联的 LDAP 控件”中所述。

  3. 在级联链接中的所有其他服务器上,使用以下命令编辑用于级联后缀的链接配置条目:
  4. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
    replace: nsHopLimit
    nsHopLimit: maximumHops
    ^D

    其中,maximumHops 具有与上一步中相同的定义。

传输用于级联的 LDAP 控件

默认情况下,已链接的后缀不传输“代理授权”控件。但是,当一个已链接后缀与另一个后缀联系时,则需要用此控件来传输远程服务器上的访问控制所需的用户标识。中间的已链接后缀必须允许链接此控件。

最近,已为“代理授权”控件定义第二个协议。因为不同服务器版本可能使用两种控件之一,所以应配置所有级联服务器允许链接新旧两种“代理授权”控件。

“循环检测”控件也是级联链接中防止循环所需的控件。默认情况下,允许此控件随已链接的操作转发,但应对该配置进行验证。如果服务器不允许此控件链接,则将不检测任何涉及该服务器的循环。

按照“配置链接策略”中的步骤执行操作,以确保允许链接以下三个控件:



上一章      目录      索引      下一章     


版权所有 2004 Sun Microsystems, Inc. 保留所有权利。