Sun ONE logo     上一章     目录     索引     文档主页     下一章    
Sun ONE Directory Server 管理指南



第 2 章   创建目录条目

本章讨论如何使用 Directory Server 控制台以及 ldapmodifyldapdelete 命令行公用程序来修改目录的内容,包括结构条目、用户条目和引荐的基本类型。本章还讨论了如何使用可选的属性加密功能存储属性,该功能是 Directory Server 5.2 中的新增功能。

在目录部署的计划阶段中,您应当对目录将要包含的数据类型进行描述。在创建条目与修改默认模式之前,应当首先阅读 Sun ONE Directory Server 部署指南 中的第 2 章“设计与访问目录数据”

本章假定读者具备 LDAP 模式和对象类及其定义的属性的一些基础知识。有关模式和所有对象类的定义以及 Directory Server 中提供的属性的简介,请参阅 Sun ONE Directory Server 参考手册 中的第 4 部分“Directory Server 模式”



注意

如果没有定义适当的访问控制指令 (ACI),则不能修改目录。详细信息,请参阅第 6 章“管理访问控制”



本章包含以下小节:

配置条目

目录服务器在以下文件中存储其所有配置信息:

ServerRoot/slapd-serverID/config/dse.ldif

该文件使用 LDAP 数据交换格式 (LDIF) 以文本方式描述 LDAP 条目、属性以及它们的值。该文件中的目录服务器配置由以下部分组成:

  • cn=config 条目的属性和值。
  • 子树中 cn=config 下的所有条目及其属性和值。通常,条目或属性的存在是有意义的。
  • 根条目 ("") 和 cn=monitor 条目的对象类和访问控制指令 (ACI)。这些条目的其他属性由服务器生成。

Directory Server 通过使用 LDAP 使所有配置设置变得可读和可写。默认情况下,只有 Administration Server 中定义的目录系统管理员和目录管理员才能访问目录的 cn=config 分支。这些管理用户可以像查看和修改任何其他目录条目一样查看和修改配置条目。

应该避免在 cn=config 条目下创建条目,因为它们将存储在 dse.ldif 文件中,而不像常规条目一样存储在高伸缩性的数据库中。因此,如果在 cn=config 的下面存储了许多条目(尤其是那些可能需要经常更新的条目),性能将很可能会受到影响。然而,为了能集中配置信息,将特殊用户条目(如“复制管理员”(供应商绑定 DN)条目)存储在 cn=config, 下是十分有用的。

使用控制台修改配置

推荐采用的修改配置方法是使用 Directory Server 控制台的顶级“配置”标签。该标签的面板和对话框提供基于任务的控件以帮助您快速而有效地设置配置。另外,控制台界面为您管理配置的复杂性和相互依赖性。

该文档中名为“...使用控制台”的步骤描述了配置的控制台界面。这些步骤介绍如何使用“配置”标签的面板和对话框执行特定的管理任务。界面本身指明了如何保存配置和何时需要重新启动服务器以使更改生效。

从命令行修改配置

因为可通过 LDAP 访问 cn=config 子树,所以 ldapsearchldapmodifyldapdelete 命令可用于查看和修改服务器配置。可使用“从命令行管理条目” 中说明的步骤和 LDIF 格式修改 cn=config 条目和其下的所有条目。

然而,必须了解这些条目的含义、其属性的目的和可以使用的值。这些重要的注意事项在本文档中名为“...从命令行”的步骤中进行了说明。在这些步骤中,将为您展示配置条目及您可能设置的属性的示例。有关所有配置条目及属性的完整说明,包括允许的值的范围,请参阅 Sun ONE Directory Server 参考手册

从命令行修改配置不像使用控制台那样简单。但是,一些很少使用的配置设置无法使用控制台进行修改,而仅能通过命令行步骤进行。也可以通过编写使用命令行工具的脚本来利用命令行步骤自动执行配置任务。

修改 dse.ldif 文件

dse.ldif 文件包含服务器启动和重新启动时将读取和使用的配置。该文件的 LDIF 内容为 cn=config 条目及其子树。只有安装过程中定义的系统用户能对该文件读取和写入。

通过直接编辑该文件的内容修改配置产生错误的可能性比较大,因此不推荐使用此方法。您应该了解以下行为:

  • 启动时仅读取一次 dse.ldif 文件。此后,服务器配置即基于配置条目在内存中的 LDAP 映像来运作。因此,启动后对该文件所作的修改将在下一次重新启动后生效。
  • 使用控制台或从命令行修改配置会更改配置的 LDAP 映像。某些目录功能在被调用时会读取当前的配置,因此不需要重新启动服务器。
  • 每当配置的 LDAP 映像发生改变时,服务器都将写入 dse.ldif 文件。某些目录功能仅在服务器启动时读取其配置,因此写入文件能确保更改立即生效。
  • 现有的 dse.ldif 文件将被复制为 dse.ldif.bak,原有的 dse.ldif.bak 文件将被覆盖。因此,如果服务器重新启动之前通过 LDAP 对配置进行了更改,则对 dse.ldif 文件所作的任何手动更改都将丢失。

  • 目录每次成功启动后,dse.ldif 文件都将被复制到位于同一位置的 dse.ldif.startOK。如果由于错误的配置更改而导致服务器无法启动,您将需要从此文件还原 dse.ldif

使用控制台管理条目

您可以使用 Directory Server 控制台上的“目录”标签和条目编辑器对话框,单独添加、修改或删除条目。如果想同时对多个条目执行操作,请参阅“使用控制台执行批量操作”

有关启动 Directory Server 控制台和浏览用户界面的信息,请参阅“使用 Directory Server 控制台”

创建目录条目

Directory Server 控制台为创建目录条目提供了几个自定义模板。每个模板都是一个用于特定类型对象类的自定义编辑器。表 2-1 列出了用于每个自定义编辑器的对象类。

表 2-1    条目模板与相应的对象类 

模板

对象类

用户

inetOrgPerson(用于创建和编辑)
organizationalPerson(用于编辑)
person(用于编辑)

groupOfUniqueNames(可能还有其他的)用于动态组和证书组。

组织单位

organizationalUnit

角色

nsRoleDefinition 及其他取决于托管、过滤或嵌套角色的选择。

服务类

cosSuperDefinition 及其他取决于服务类的类型。

口令策略

passwordPolicy

引荐

referral

这些自定义编辑器所包含的字段表示所有必填属性以及它们各自的对象类的某些常用可选属性。要使用这些模板之一创建条目,请遵循“使用自定义编辑器创建条目” 中的说明。要创建其他类型的条目,请参阅“创建其他类型的条目”

使用自定义编辑器创建条目

  1. 在 Directory Server 控制台的顶级“目录”标签上,展开目录树,显示要成为新条目的父级的条目。
  2. 右键单击父条目,选择“新建”菜单项,然后从子菜单中选择条目的类型:用户、组、组织单位、角色、服务类、口令策略或引荐。或者,可以左键单击父条目将其选中,然后从“对象>新建”菜单中选择条目的类型。将显示选中的条目类型的自定义编辑器对话框。
  3. 自定义编辑器在左侧列中显示标签列表,而每个标签的字段则显示在右侧。默认情况下,所有自定义编辑器在打开的时候都会选中顶端的“用户”或“常规”标签,其中包含要命名和描述新条目的字段。

    例如,下图显示用于用户条目的自定义编辑器:

图 2-1    Directory Server 控制台 - 用户条目的自定义编辑器

  1. 在自定义编辑器的字段中,输入要提供的属性的值。必须为所有必填属性输入值,必填属性由字段名旁的星号 (*) 标识。可以将其他任何字段留空。在允许有多个值的字段中,可以键入回车来分隔值。
  2. 单击“帮助”按钮,获取条目类型的自定义编辑器中特定字段的详细帮助信息。有关“用户”和“组织单位”编辑器的“语言”标签的说明,请参阅“设置语言支持属性”

    有关创建组、角色和服务类条目的进一步说明,请参阅第 5 章“高级条目管理”。有关创建口令策略的说明,请参阅第 7 章“用户帐户管理”。有关创建引荐的说明,请参阅“设置引荐”

  3. 单击“确定”创建新条目并关闭自定义编辑器对话框。新条目出现在目录树中。
  4. 自定义编辑器对话框并不为其各自对象类的所有可选属性提供字段。如果希望添加未显示在自定义编辑器中的可选属性,请遵循“使用通用编辑器修改条目”中的说明。

创建其他类型的条目

遵循这些步骤创建除表 2-1中列出的对象类以外的任何对象类条目。也可以使用该步骤创建在目录模式中定义的任何自定义对象类的条目:

  1. 在 Directory Server 控制台的顶级“目录”标签上,展开目录树,显示要成为新条目的父级的条目。
  2. 右键单击父条目,并从子菜单中选择“新建”>“其他”项。或者,可以左键单击父条目将其选中,然后选择“对象”>“新建”>“其他”菜单项。
  3. 将显示“新建对象”对话框。

  4. 在“新建对象”对话框的对象类列表中,选择一个定义新条目的对象类,然后单击“确定”。
  5. 如果选择表 2-1 中列出的对象类,将显示相应的自定义编辑器(请参阅“使用自定义编辑器创建条目”)。在所有其他情况下,将显示通用编辑器。

  6. 创建新条目时,通用编辑器包含一个字段,该字段用于所选的对象类的每个必需的属性。必须为所有必需属性输入值。某些字段具有通用占位符,如 New,应当为您的条目将其替换为有意义的值。
  7. 要定义所选对象类上允许的其他属性,必须显式地添加它们。要为可选的属性提供值,请执行以下操作:
    1. 单击“添加属性”按钮,显示允许的属性的列表。
    2. 从“添加属性”对话框中选择一个或多个属性,然后单击“确定”。
    3. 在通用编辑器中的新属性名称旁输入值。

    有关该对话框中其他控件的详细信息,请参阅“使用通用编辑器修改条目”

  8. 默认情况下,必需属性之一会被选中作为命名属性,并出现在通用编辑器中显示的条目 DN 中。要更改命名属性,请执行以下操作:
    1. 单击“更改”按钮,显示“更改命名属性”对话框。
    2. 在属性表中,选中要在新条目 DN 中使用的一个或多个属性旁的复选框。
    3. 在“更改命名属性”对话框中单击“确定”。通用编辑器中的 DN 显示使用所选命名属性的新 DN。

  9. 在通用编辑器中单击“确定”,保存新条目。
  10. 新条目在目录树中显示为父条目的子级。

使用自定义编辑器修改条目

对于表 2-1 中列出的对象类,可以选择使用相应的自定义编辑器或通用编辑器编辑条目。使用自定义编辑器时,可以轻松访问最常用的字段,且界面会帮助您定义复杂属性的值,如角色或服务类定义中的值。

通用编辑器可以对条目执行更多的高级操作,如添加对象类、添加允许的属性和处理多值属性。要使用通用编辑器编辑条目,请参阅“使用通用编辑器修改条目”



注意

自定义编辑器仅能用于编辑表 2-1 中列出的对象类。包含其他结构对象类的条目(例如从 inetorgperson 继承的自定义类)仅能通过通用编辑器进行编辑。

除了列出的对象类之一以外,还包含辅助对象类的条目,可以使用自定义编辑器进行管理。但是,所有由辅助类定义的属性在自定义编辑器中将不可见。有关辅助对象类的定义,请参阅 Sun ONE Directory Server 参考手册 第 9 章中的“对象类”



调用自定义编辑器

要编辑对象类在表 2-1 中列出的条目,请执行以下操作:

  1. 在 Directory Server 控制台的顶级“目录”标签上,展开目录树,显示要编辑的条目。
  2. 双击该条目。还有其他几种方法也可以调用条目的自定义编辑器:
    • 右键单击该条目,并选择“用自定义编辑器进行编辑”菜单项。
    • 左键单击该条目将其选中,然后选择“对象”>“用自定义编辑器进行编辑”菜单项。
    • 左键单击该条目将其选中,然后使用键盘快捷键 Control-P。

    将显示条目对象类的自定义编辑器。例如,图 2-1 中显示了用户条目的自定义编辑器。

  3. 默认情况下,所有自定义编辑器在打开的时候都会选中顶端的“用户”或“常规”标签,其中包含要命名和描述新条目的字段。在自定义编辑器的字段中,编辑或删除要修改的属性的值。可以修改,但不能删除必填属性的值,必填属性由字段名旁的星号 (*) 标识。可以将其他任何字段留空。在允许有多个值的字段中,可以键入回车来分隔值。
  4. 选择左侧列中的其他标签,修改相应面板上的值。单击“帮助”按钮,获取条目类型的自定义编辑器中特定字段的详细帮助信息。

    有关“用户”和“组织单位”编辑器的“语言”标签的说明,请参阅“设置语言支持属性”。用户和组条目的“帐户”标签字段在第 7 章“用户帐户管理”中进行了说明。为 Directory Server 同步服务提供了“NT 用户”和“Posix 用户”标签,请与 Sun 代表联系以获取详细信息。

    有关修改组、角色和服务类条目的进一步说明,请参阅第 5 章“高级条目管理”。有关修改口令策略的说明,请参阅第 7 章“用户帐户管理”。有关修改引荐的说明,请参阅“设置引荐”

  5. 单击“确定”保存对条目所作的更改并关闭自定义编辑器对话框。如果修改了命名属性,例如用户条目的通用名称,则更改将在目录树中反映出来。

设置语言支持属性

用户条目和组织单位条目的自定义编辑器都提供了用于国际化目录的语言支持。

  1. “调用自定义编辑器”中所述打开条目的自定义编辑器。
  2. 在左侧列中单击“语言”标签。
  3. 对于用户条目,可以使用下拉列表设置一种首选语言。
  4. 对于用户条目和组织单位条目,您都可以在给定的字段中为列表中显示的任何语言输入本地化的值。选择一种语言,然后以该语言输入一个或多个值。当定义了本地化的值时,语言的名称将在列表中以粗体显示。
  5. 某些语言还具有发音字段,可在其中输入本地化值的语音表示法。

  6. 单击“确定”保存对条目所作的更改并关闭自定义编辑器对话框。

使用通用编辑器修改条目

通用编辑器根据用于登录到控制台的绑定 DN,允许您查看条目的所有可读属性并编辑其可写属性。通用编辑器允许您添加和删除属性、设置多值属性以及管理条目的对象类。添加属性时,可以为二进制属性和语言支持定义子类型。

调用通用编辑器

要调用目录中任何条目的通用编辑器,请执行以下操作:

  1. 在 Directory Server 控制台的顶级“目录”标签上,展开目录树,以显示要编辑的条目。
  2. 右键单击该条目,并选择“用通用编辑器进行编辑”菜单项。还有其他几种方法也可以调用通用编辑器:
    • 左键单击该条目将其选中,然后选择“对象”>“用通用编辑器进行编辑”菜单项。
    • 如果条目的对象类未在表 2-1 中列出,请双击该条目。对于不具有自定义编辑器的对象类,默认情况下将使用通用编辑器。

    将显示通用编辑器,如下图中所示。

图 2-2    Directory Server 控制台 - 通用编辑器

在通用编辑器中,条目的属性按字母顺序列出,每个属性具有一个文本框,其中包含每个属性的值。所有属性(包括只读属性和可操作属性)都会显示出来。右边的控件允许您修改编辑器的显示方式并编辑属性列表。

  • 或者,可以使用“视图”框中的控件修改通用编辑器的显示方式。
    • 选择“显示属性名称”选项以查看属性的名称,该名称是最先在模式中定义的名称。将重新安排属性列表,以便按名称的字母顺序排列。
    • 选择“显示属性说明”选项,按照其属性的备用名称(如果已在模式中定义)列出属性。备用名称通常是属性更清楚明了的说明。将重新安排属性列表,以便按说明的字母顺序排列。
    • 取消选中“仅显示具有值的属性”复选框,列出所有由条目对象类的模式明确允许的属性。如果该条目包括 extensibleObject 对象类,则所有条目将暗中允许,但不会列出。默认情况下,仅显示具有定义值的属性。
    • 选中或取消选中“显示 DN”复选框,切换属性列表下条目的标识名称的显示。
    • “刷新”按钮将访问服务器以根据条目当前内容更新所有属性的值。


    • 警告

      单击“刷新”按钮将立即删除在通用编辑器中所做的所有修改,而不进行保存。



    以下小节说明用于设置属性值、管理对象类和更改条目的命名属性的控件。

    修改属性值

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 滚动查看属性列表并单击要修改的值。
    3. 选中的属性将突出显示,且编辑光标出现在包含所选值的文本字段中。

    4. 使用鼠标和键盘将文本编辑为所需的值。可使用系统的剪贴板在该字段中复制、剪切和粘贴文本。
    5. 如果不能编辑文本字段中的内容,则属性为只读或没有写权限以修改属性。

    6. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,以保存更改并关闭通用编辑器。

    编辑多值属性

    在目录模式中定义为多值的属性在通用编辑器中可具有多值字段。详细信息,请参阅第 9 章“扩展目录模式”

    要为多值属性添加一个新值,请执行以下操作:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 滚动属性列表,单击属性或属性的一个值。所选属性突出显示,且激活了“添加值”按钮。如果该按钮未激活,则所选属性未定义为多值属性,或属性为只读,或者您不具有写权限,无法修改属性。
    3. 单击“添加值”按钮。列表中属性名称旁边将显示一个新的空白文本字段。
    4. 在新文本字段中输入该属性的新值。可使用系统的剪贴板在该字段中复制、剪切和粘贴文本。
    5. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,保存更改并关闭通用编辑器。

    要删除多值属性的一个值,请执行以下操作:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 滚动查看属性列表并单击要删除的特定值。所选属性突出显示,且激活了“删除值”按钮。如果该按钮未激活,则所选属性为只读,或者您不具有写权限,无法修改属性。
    3. 单击“删除值”按钮。包含所选值的文本字段被删除。
    4. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,保存更改并关闭通用编辑器。

    添加属性

    条目必须包含需要或允许该属性的对象类,您才能向其中添加属性。详细信息,请参阅“管理对象类”第 9 章“扩展目录模式”

    要向条目中添加属性,请执行以下操作:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 确保“仅显示具有值的属性”选项已选中。
    3. 单击“添加属性”按钮,显示带有属性列表的对话框。该列表仅包含为条目定义的对象类所允许的属性。
    4. 在“添加属性”对话框中,选择要添加的一个或多个属性。
    5. 或者,可从对话框顶部的下拉列表中选择以下两种子类型或其中之一:
      • Language 子类型 - 使用该子类型表示属性的值中使用的语言。可使用不同的语言多次添加属性以在目录中存储本地化信息。
      • 或者,在 language 子类型的基础上,还可选择 Pronunciation 子类型表示该属性的值包含与给定语言的值相当的语音。

      • Binary 子类型 - 为属性分配 binary 子类型表示该属性值是二进制数据。虽然可以无需 binary 子类型而在属性中存储二进制数据,但它向客户机表示可能存在多种属性类型。

    6. 选择属性及其可选的子类型后,请单击“确定”。属性即按字母顺序添加到通用编辑器中的列表中。
    7. 在新属性名称旁的空白文本字段中为该属性输入一个新值。可使用系统的剪贴板在该字段中复制、剪切和粘贴文本。
    8. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,以保存更改并关闭通用编辑器。

    删除属性

    要从条目中删除属性及其所有值,请执行以下操作:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 滚动查看属性列表并单击要删除的属性名称。所选属性突出显示,且“删除属性”按钮被激活。如果该按钮未激活,则所选属性为只读,或者您不具有写权限,无法修改属性。


    3. 注意

      通用编辑器允许您删除对象类所需的属性,该对象类可能为此属性定义。如果试图在没有所需对象类的情况下保存条目,则服务器将响应“对象类违规”。确保条目包括所有定义的对象类的所需属性。



    4. 单击“删除属性”按钮。将删除属性及其所有文本字段值。
    5. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,保存更改并关闭通用编辑器。

    管理对象类

    条目的对象类由多值 objectclass 属性定义。修改该属性时,通用编辑器提供特殊的对话框以帮助管理定义的对象类。

    要向条目中添加对象类,请执行以下操作:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 滚动查看属性列表,然后选择 objectclass 属性。“添加值”按钮被激活。如果该按钮未激活,则说明您没有权限修改该条目的对象类。
    3. 单击“添加值”按钮。
    4. 将显示“添加对象类”对话框。它会显示可向条目中添加的对象类的列表。

    5. 选择要添加到该条目的一个或多个对象类,并单击“确定”。所选对象类将出现在 objectclass 属性值的列表中。
    6. 如果新的对象类需要未存在于条目中的属性,则通用编辑器将自动添加这些属性。必须为所有必需属性提供值。
    7. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,保存更改并关闭通用编辑器。

    要从条目中删除对象类,请执行以下操作:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. 滚动查看属性列表并单击要删除的 objectclass 属性的特定值。如果模式允许删除所选的对象类,且您具有修改该条目的对象类的权限,则“删除值”按钮将被激活。
    3. 单击“删除值”按钮。特定的对象类被删除。
    4. 删除对象类时,通用编辑器将自动删除剩下的对象类不允许或不需要的所有属性。如果删除了命名属性之一,将自动选中另一个,且控制台将把此更改告知您。

    5. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,保存更改并关闭通用编辑器。

    重命名条目

    命名属性是出现在条目的标识名称 (DN) 中的条目属性值对。命名属性从条目的现有属性中进行选择。修改命名属性以重命名条目:

    1. “调用通用编辑器”中所述,打开通用编辑器。
    2. “更改”按钮旁的文本显示了该条目当前的命名属性。如果选中了“显示 DN”复选框,则您可以在属性值列表下的 DN 中查看这些属性。

    3. 单击“更改”按钮。如果该按钮未激活,则说明您不具有重命名该条目的权限。
    4. 显示“更改命名属性”对话框。

    5. 滚动查看属性列表,选择希望该条目的 DN 具有的属性。分别选中或取消选中属性旁的复选框以从命名属性中添加或删除该属性。
    6. 同一父级下的条目 DN 必须是唯一的。因此,必须选择值或值组合为唯一的命名属性。如果条目的 DN 不唯一,服务器将拒绝保存该条目。按照约定,所有条目(如那些代表用户的条目)应该使用相同的命名属性。

    7. 在“更改命名属性”对话框中单击“确定”。通用编辑器中会显示该条目的新 DN。
    8. 对该条目编辑其他任何值或执行其他所需修改,然后单击“确定”,保存更改并关闭通用编辑器。

    删除目录条目

    要使用 Directory Server 控制台删除条目,请执行以下操作:

    1. 在 Directory Server 控制台的顶级“目录”标签上,展开目录树,显示要删除的条目。
    2. 也可以通过选中子树的根节点来删除目录的整个分支。

    3. 右键单击该条目并选择“删除”菜单项。还有其他几种操作也可以删除条目:
      • 左键单击该条目将其选中,然后选择“编辑”>“删除”菜单项。如果希望将该条目粘贴到目录中的其他地方,也可以使用“编辑”>“剪切”菜单项。
      • 左键单击该条目将其选中,然后使用键盘快捷键 Control-D。

      如果您已经选择了“视图”>“布局”选项以在 Directory Server 控制台的右侧面板中显示子级,则可以按住 Control 键或 Shift 键单击以选择多个条目进行删除。

    4. 确认您希望删除条目或子树及其所有内容。
    5. 服务器会立即删除条目。条目删除后不可恢复。如果删除多个条目,控制台将显示一个信息对话框,其中包含删除的条目数目以及删除过程中可能发生的错误。

    使用控制台执行批量操作

    可以使用 LDIF 文件添加多个条目、执行混合操作或导入整个后缀。要使用 LDIF 文件和 Directory Server 控制台来添加条目,请执行以下操作:

    1. 使用前一节中显示的语法在 LDIF 文件中定义条目或操作。如果仅添加条目或初始化后缀,则您不需要 changetype 关键字,且 LDIF 文件可能仅包含条目。如果执行混合操作,则每个 DN 后都应跟一个 changetype 以及特定的操作或属性值(如果适用)。
    2. 从 Directory Server 控制台导入 LDIF 文件。详细信息,请参阅“导入 LDIF 文件”
    3. 如果执行混合操作,一定要取消选中“导入 LDIF”对话框上的“仅添加”,这样服务器才能执行所有的 LDIF 操作。

    从命令行管理条目

    ldapmodifyldapdelete 命令行公用程序提供完整的功能性,用于添加、编辑和删除目录内容。可以使用它们管理服务器的配置条目和用户条目中的数据。这些公用程序还可以用于编写脚本,以便对一个或多个目录执行批量管理。

    全书中的步骤都用到了 ldapmodifyldapdelete 命令。以下各节说明了执行这些管理步骤所需的所有基本操作。更多功能、所有的命令行选项以及这些命令的返回值在 Sun ONE Directory Server Resource Kit 工具参考第 4 章“ldapmodify”第 5 章“ldapdelete”中进行了说明。

    对这些命令行公用程序的输入总是采用 LDAP 数据交换格式 (LDIF),您可以直接从命令行输入或通过输入文件输入。LDIF 是条目、属性以及它们的值的文本表示。LDIF 是一种标准格式,在 RFC 2849 (http://www.ietf.org/rfc/rfc2849.txt) 中对其进行了说明。以下小节提供了有关 LDIF 输入的信息,而后继的小节则说明了每种修改类型的 LDIF。

    提供 LDIF 输入

    向命令行公用程序提供 LDIF 时,请记住一些关于命令行输入、特殊字符、模式检查以及条目的顺序和大小的特殊注意事项。

    在命令行上终止 LDIF 输入

    ldapmodifyldapdelete 公用程序读取您在命令后输入的 LDIF 语句的方式与从文件读取时相同。提供输入完成后,请输入您的 shell 将其识别为文件结束 (EOF) 转义序列的字符。

    通常,根据操作系统的具体情况,EOF 转义序列为以下几种之一:

    • UNIX - 几乎始终为 Control-D (^D)。
    • Windows - 通常为 Control-Z 后接回车 (^Z<Return>)。

    以下示例说明如何在 UNIX 系统上终止对 ldapmodify 命令的输入:

    prompt> ldapmodify -h 主机端口 -D bindDN -w 口令
    dn:cn=Barry Nixon,ou=People,dc=example,dc=com
    changetype:modify
    delete:telephonenumber
    ^D
    prompt>

    出于简化性以及可移植性的考虑,本文档中的示例未显示提示或 EOF 序列。

    使用特殊字符

    在命令行上输入命令选项时,您可能需要对对于命令行解释器具有特殊意义的字符执行转义操作,如空格 ( )、星号 (*)、反斜杠 (\) 等。例如,很多 DN 包含空格,且对于大多数 UNIX shell,您必须用双引号 ("") 将值括起来。

    -D "cn=Barbara Jensen,ou=Product Development,dc=example,dc=com"

    根据命令行解释器的具体情况,应使用单引号或双引号达到此目的。详细信息,请参阅操作系统文档。

    另外,如果使用包含逗号的 DN,则必须用反斜杠 (\) 对逗号进行转义。例如:

    -D "cn=Patricia Fuentes,ou=People,o=example.com Bolivia\,S.A."

    请注意 ldapmodify 命令后的 LDIF 语句由命令而不是 shell 来解释,所以不需要考虑特殊的注意事项。

    模式检查

    添加或修改条目时,您使用的属性必须是条目中的对象类必需或允许的,且属性必须包含匹配其定义语法的值。

    修改条目时,Directory Server 对整个条目执行模式检查,而不仅仅是对正被修改的属性进行检查。因此,如果条目中任何对象类或属性不符合模式要求,则操作可能会失败。详细信息,请参阅“模式检查”

    LDIF 条目排序

    在用于添加条目的 LDIF 文本的任何序列中(不管是在命令行上还是文件中),父条目必须在其子级之前列出。这样,当服务器处理 LDIF 文本时,它将在子条目之前创建父条目。

    例如,如果要在不存在于目录中的“人员”子树中创建条目,然后在子树中的条目前列出代表“人员”容器的条目,请执行以下操作:

    dn:dc=example,dc=com
    dn:ou=People,dc=example,dc=com
    ...
    People subtree entries
    ...
    dn:ou=Group,dc=example,dc=com
    ...
    Group subtree entries
    ...

    可以使用 ldapmodify 命令行公用程序在目录中创建任何条目,但是,后缀或子后缀的根条目是一个特殊的条目,它必须与必需的配置条目相关联。要添加新的根后缀或子后缀及其相关配置条目,请参阅“从命令行创建后缀”

    管理大型条目

    添加或修改具有非常大的属性值的条目之前,可能需要配置服务器以接受它们。为防止服务器超过负载,默认情况下客户机被限制为只能发送不大于 2 MB 的数据。

    如果添加大于 2 MB 的条目,或将属性修改为大于 2 MB 的值,服务器将拒绝执行此操作并立即关闭连接。例如,二进制数据(如条目的一个或多个属性中的多媒体内容)可能会超过此限制。

    定义了一个大型静态组的条目也可能包括过多的成员,以致它们的表示会超出此限制。但是,出于性能考虑,不推荐使用这样的组,您应该考虑重新设计目录结构。详细信息,请参阅“管理组”

    要修改服务器强制执行的客户机发送数据的大小限制,请执行以下操作:

    1. cn=config 条目的 nsslapd-maxbersize 属性设置新值。
    2. 要使用控制台执行此操作,请以“管理员”或“目录管理员”的身份登录,并按照“使用通用编辑器修改条目”中所述的步骤编辑 cn=config 条目。将 nsslapd-maxbersize 属性设为客户机可以一次发送的最大字节数。
    3. 要从命令行执行此操作,请使用以下命令:
    4. ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
      dn:cn=config
      changetype:modify
      replace:nsslapd-maxbersize
      nsslapd-maxbersize:sizeLimitInBytes

      详细信息,请参阅 Sun ONE Directory Server 参考手册 第 4 章中的nsslapd-maxbersize

    5. “启动和停止 Directory Server”中所述,重新启动服务器。

    错误处理

    命令行工具按顺序处理 LDIF 输入中的所有条目或修改。默认行为是当第一个错误发生时停止处理。使用 -c 选项继续处理所有输入而不管任何错误。在工具的输出中将看到错误状态。

    除了以上列出的注意事项,常见错误有:

    • 不具有适当的操作访问权限。
    • 添加条目的 DN 在目录中已存在。
    • 将条目添加到一个不存在的父级下面。

    有关错误状态和如何避免这些错误的详细信息,请参阅 Sun ONE Directory Server Resource Kit 工具参考第 4 章“ldapmodify”第 5 章“ldapdelete”

    使用 ldapmodify 添加条目

    可使用 ldapmodify-a 选项将一个或多个条目添加到目录。以下示例创建一个结构条目以包含用户,然后创建一个用户条目:

    ldapmodify -a -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:ou=People,dc=example,dc=com
    objectclass:top
    objectclass:organizationalUnit
    ou:People
    description:Container for user entries

    dn:uid=bjensen,ou=People,dc=example,dc=com
    objectclass:top
    objectclass:person
    objectclass:organizationalPerson
    objectclass:inetorgPerson
    uid:bjensen
    givenName:Barbara
    sn:Jensen
    cn:Babs Jensen
    telephoneNumber: (408) 555-3922
    facsimileTelephoneNumber: (408) 555-4000
    mail:bjensen@example.com
    userPassword:clearPassword

    -D-w 选项分别给出具有权限创建这些条目的用户的绑定 DN 和口令。-a 选项表示将添加 LDIF 中的所有条目。然后每个条目由其 DN 和属性值给定,每个条目间有一个空白行。ldapmodify 公用程序在条目输入和报告所有错误后将创建每个条目。

    按照约定,条目的 LDIF 按照以下顺序列出属性:

    • 对象类列表。
    • 命名属性或属性。这是在 DN 中使用的属性,且不一定是必需的属性。
    • 所有对象类的必需属性列表。
    • 所有希望包含的允许的属性。

    当为 userpassword 属性输入值时,请给出明文形式的口令。服务器会将该值加密并仅存储加密值。一定要限制读取权限以保护 LDIF 文件中的明文口令。

    也可使用 LDIF 的另一种形式,该形式在命令行中不需要 -a 选项。该形式的优点是可将条目条件和下一段中显示的条目修改语句合并。

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:ou=People,dc=example,dc=com
    changetype:add
    objectclass:top
    objectclass:organizationalUnit
    ou:People
    description:Container for user entries

    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:add
    objectclass:top
    objectclass:person
    objectclass:organizationalPerson
    objectclass:inetorgPerson
    uid:bjensen
    givenName:Barbara
    sn:Jensen
    cn:Barbara Jensen
    telephoneNumber: (408) 555-3922
    facsimileTelephoneNumber: (408) 555-4000
    mail:bjensen@example.com
    userPassword:clearPassword

    changetype:add 关键字表示具有给定 DN 的条目在创建时应带有所有后续的属性。所有其他选项和 LDIF 约定都一样。

    两个示例中都可使用 -f filename 选项从文件读取 LDIF,而非从终端输入。按照 -a 选项的用法,LDIF 文件必须包含与终端输入相同的格式。

    使用 ldapmodify 修改条目

    使用 changetype:modify 关键字添加、替换或删除现有条目中的属性及其值。当指定 changetype:modify 时,必须也提供一个或多个更改操作以表示条目将如何修改。以下示例中显示了三个可能的 LDIF 更改操作:

    dn:entryDN
    changetype:modify
    add:attribute
    attribute
    :value
    ...
    -
    replace:attribute
    attribute
    :newValue
    ...
    -
    delete:attribute
    [attribute:value]
    ...

    在一行中使用连字号 (-) 以分开在同一条目上的操作,使用一空白行分开多组在不同条目上的操作。也可为每个操作给出多个 attribute:value 对以同时添加、替换或删除它们。

    添加属性值

    以下示例显示如何使用同一 add LDIF 语法将值添加到现有多值属性中或尚不存在的属性中:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modify
    add:cn
    cn:Babs Jensen
    -
    add:mobile
    mobile: (408) 555-7844
    mobile: (408) 555-7845

    处于以下情况时,这些操作可能失败且服务器将返回一个错误:

    • 属性的给定值已存在。
    • 值未遵从为属性定义的语法。
    • 属性类型不是条目的对象类必需的或允许的。
    • 属性类型不是多值的且属性已有一个值。

    添加二进制属性值

    二进制属性值以 attribute;binary 子类型标记。虽然该子类型不是必需的,但可帮助用户和客户机确定属性的内容。可在与 ldapmodify 命令一起使用的任何 LDIF 语句中为属性名称添加适当的子类型。

    要输入二进制值,可直接在 LDIF 文本中输入或从另一个文件中读取。以下示例显示了从文件读取二进制值的 LDIF 语法:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    version: 1
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modify
    add:jpegphoto;binary
    jpegphoto;binary:< file:///path/filename.jpg

    < 前后的空格非常重要,必须完全按照显示的形式保留空格。要使用 < 语法来指定文件名,您必须以行 version:1 作为 LDIF 语句的开头。ldapmodify 处理此语句时,会将该属性设置为可以从给定文件的全部内容中读取的值。

    添加具有 Language 子类型的属性

    属性的 Language 和 pronunciation 子类型指定本地化的值。当为属性指定 language 子类型时,该子类型将按照以下方式添加到属性名称中:

    attribute;lang-CC

    其中 attribute 是现有属性类型,CC 是两个字母的国家(地区)代码以指定语言。可选择为 language 子类型添加 pronunciation 子类型以指定本地化值的等效语音。在这种情况下,属性名称变为:

    attribute;lang-CC;phonetic

    要对具有子类型的属性执行操作,必须明确地匹配其子类型。例如,如果要修改包含 lang-fr language 子类型的属性值,则必须按如下所示在修改操作中包含 lang-fr

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modify
    replace:homePostalAddress;lang-fr
    homePostalAddress;lang-fr:34\, avenue des Champs-Elysées

    修改属性值

    以下示例显示如何使用 LDIF 中的 replace 语法修改单值属性和多值属性的所有值:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modify
    replace:sn
    sn:Morris
    -
    replace:cn
    cn:Barbara Morris
    cn:Babs Morris

    当使用 replace 语法时,将删除指定属性的所有当前值并添加所有给定值。

    删除属性值

    以下示例显示如何完全删除属性和仅删除多值属性的值:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modify
    delete:facsimileTelephoneNumber
    -
    delete:cn
    cn:Babs Morris

    当使用 delete 语法而未指定 attribute:value 对时,将删除属性的所有值。如果指定一对 attribute:value,则将仅删除该值。

    修改多值属性的值

    为了使用 ldapmodify 命令修改多值属性的值,必须执行以下示例中显示的两个操作:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modify
    delete:mobile
    mobile: (408) 555-7845
    -
    add:mobile
    mobile: (408) 555-5487

    使用 ldapmodify 重命名条目

    当为条目重命名时,将修改条目的相对标识名称 (RDN),该名称位于条目 DN 中的 attribute=value 对的最左边。该属性称为命名属性,且必须以同一值存在于条目的属性中。

    当为条目重命名时,不能更改 DN 的其他任何部分(如将条目移动到不同的子树)。要将条目移至完全不同的分支,必须使用旧条目的属性在其他子树中创建新条目,然后删除旧条目。

    也不能重命名具有任何子条目的条目,因为父条目的 RDN 已用在子条目的 DN 中,且 DN 中的所有条目必须存在。要删除整个树,必须在新位置重建树。

    使用 changetype:modrdn 关键字在 LDIF 语句中重命名条目。以下示例将为 Barbara Morris 重命名 uid 命名属性:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:modrdn
    newrdn:uid=bmorris
    deleteoldrdn: 1

    newrdn 行使用 attribute=value 语法给出新的命名属性。deleteoldrdn 行表示是否应同时将前命名属性从条目中删除(1 为是,0 为否)。在两种情况下,新的命名属性都将被添加到条目。

    使用 ldapdelete 删除条目

    使用 ldapdelete 命令行公用程序从目录中删除条目。此公用程序绑定到目录服务器并删除一个或多个由其 DN 给定的条目。必须提供具有权限以删除指定条目的绑定 DN。

    基于同样的原因,不能重命名父条目,不能删除具有子条目的条目。LDAP 协议禁止出现子条目将不再拥有父条目的情形。例如,不能删除组织单位条目,除非首先删除了属于组织单位的所有条目。



    警告

    不要删除后缀 o=NetscapeRoot。Sun ONE Administration Server 使用此后缀存储有关已安装的 Sun ONE 服务器的信息。删除此后缀会强制您重新安装所有的 Sun ONE 服务器,包括目录服务器。



    以下示例中,组织单位中仅有一个条目,因此可删除它,然后删除父条目:

    ldapdelete -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    uid=bjensen,ou=People,dc=example,dc=com
    ou=People,dc=example,dc=com

    使用 ldapmodify 删除条目

    也可使用 changetype:delete 关键字以使用 ldapmodify 公用程序删除条目。当使用以上说明的 ldapdelete 时,也同样具有这些限制。使用 LDIF 语法删除条目的优点在于,您可以在单个 LDIF 文件中执行混合操作。

    下面的示例将执行与前面的示例相同的删除操作:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:delete

    dn:ou=People,dc=example,dc=com
    changetype:delete

    设置引荐

    使用引荐告诉客户机应用程序在信息本地不可用时应联系哪个服务器。引荐是指向远程后缀或条目的指针,Directory Server 将其作为结果返回到客户机。然后,客户机必须在引荐中指定的远程服务器上再次执行该操作。在三种情况下,会发生重定向:

    • 当客户机应用程序请求一个本地服务器上不存在的条目时,服务器将返回默认引荐。
    • 当整个后缀由于安全原因或需要维护而脱机时,服务器将返回该后缀定义的引荐。后缀级的引荐在“设置访问权限和引荐”中进行了说明。当客户机请求写入操作时,后缀的只读副本也会将引荐返回到主服务器。
    • 可以创建名为智能引荐的条目。当客户机专门访问智能引荐时,服务器将返回其定义的引荐。Directory Server 控制台自动采用智能引荐,所以它们作为本地条目出现在顶级“目录”标签上。

    在所有情况下,引荐即包含主机名、端口号以及其他服务器上的 DN(可选)的 LDAP URL。详细信息,请参阅 Sun ONE Directory Server 参考手册 中的附录 D“LDAP URL”。有关如何在目录部署中使用引荐的概念性信息,请参阅 Sun ONE Directory Server 部署指南

    以下小节说明定义目录的默认引荐和智能引荐的过程。

    设置默认引荐

    当客户机应用程序提交一个 DN 上的操作,而由目录维护的任何后缀都不包含此 DN 时,会将默认引荐返回到客户机应用程序。默认引荐有时称为全局引荐,因为默认引荐应用于目录中的所有后缀。服务器将返回所有定义的引荐,但返回的顺序没有定义。

    使用控制台设置默认引荐

    1. 在 Directory Server 控制台的顶级“配置”标签上,选择配置树根的服务器节点,然后在右侧面板中选择“网络”标签。
    2. 选中“返回引荐”复选框,并在文本字段中输入 LDAP URL。或者,单击“构造 URL”以指导定义 LDAP URL。到安全端口的 LDAP URL 示例如下:
    3. ldaps://east.example.com:636/dc=example,dc=com

      可输入多个用空格分隔并用引号括起的引荐 URL,如下所示:

      "ldap://east.example.com:389/" "ldap://backup.example.com:389/"

    4. 单击“保存”以使更改立即生效。

    从命令行设置默认引荐

    使用 ldapmodify 命令行公用程序将一个或多个默认引荐添加或替换到目录配置文件中的 cn=config 条目。例如:

    ldapmodify -a -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:cn=config
    changetype:modify
    replace:nsslapd-referral
    nsslapd-referral:ldap://east.example.com:389/
    nsslapd-referral:ldap://backup.example.com:389/

    无需重新启动服务器。

    创建智能引荐

    智能引荐允许将目录条目或目录树映射到特定的 LDAP URL。使用智能引荐,可将客户机应用程序引荐到特定服务器或特定服务器上的特定条目。

    通常,智能引荐指向实际的条目,该条目在另一个服务器上有相同的 DN。然而,可定义对相同服务器或不同服务器上的任何条目的智能引荐。例如,可定义具有以下 DN 的条目:

    uid=bjensen,ou=People,dc=example,dc=com

    作为指向服务器 east.example.com 上的另一个条目的智能引荐。

    cn=Babs Jensen,ou=Sales,o=east,dc=example,dc=com

    目录使用智能引荐的方法符合 RFC 2251 (http://www.ietf.org/rfc/rfc2251.txt) 4.1.11 小节中指定的标准。

    使用控制台创建智能引荐

    1. 在 Directory Server 控制台的顶级“目录”标签上,展开目录树,显示要成为智能引荐的父级的条目。
    2. 右键单击父条目,选择“新建”>“引荐”菜单项。或者,可以左键单击父条目将其选中,然后选择“对象”>“新建”>“引荐”菜单项。显示引荐条目的自定义编辑器对话框。
    3. 显示引荐的自定义编辑器。

    4. 在编辑器的“常规”标签上,输入引荐的名称并从下拉列表中选择其命名属性。该名称将成为所选的命名属性的值。也可选择输入引荐的说明字符串。
    5. 在编辑器的“URL”标签上,单击“构造”按钮以定义智能引荐的 URL。在显示的对话框中输入 LDAP URL 的元素。
    6. URL 的元素包括持有引荐条目的目录服务器的主机名和 LDAP 端口号,以及服务器上目标条目的 DN。默认情况下,目标 DN 就是智能引荐条目的 DN。不过,目标 DN 可为任何后缀、子树或叶条目。

    7. 在 LDAP URL 构造对话框中单击“确定”。URL 显示在新引荐文本框中。
    8. 单击新引荐文本框旁的“添加”按钮,将引荐添加到列表中。
    9. 可定义多个 URL 以作为该条目的引荐返回。使用“构造”、“添加”、“删除”和“更改”按钮创建和管理“引荐列表”。
    10. 单击“引荐验证”按钮显示对话框,其中可设置凭证,Directory Server 控制台将使用此凭证更随引荐以绑定到远程服务器。可定义访问服务器时要使用的绑定 DN 和口令。所有对同一服务器的引荐将使用相同的凭证。
    11. 使用“添加”、“编辑”和“删除”按钮管理服务器列表和相应的凭证。完成后单击“确定”。
    12. 在引荐的自定义编辑器中,单击“确定”以保存智能引荐条目。
    13. 在控制台的目录树中,应可在智能引荐条目的位置看到目标子树或目标条目。如果智能引荐条目上有黄色警告图标,则 URL 或凭证无效。双击条目,当看到“引荐错误”时单击“继续”,并修改 URL 或“引荐验证”以更正错误。

    从命令行创建智能引荐

    要创建智能引荐,请使用 referral 对象类和 extensibleObject 对象类创建条目。引荐对象类允许 ref 属性,该属性将包含 LDAP URL。extensibleObject 对象类允许您使用任何模式属性作为命名属性,从而匹配目标条目。

    例如,定义以下条目以返回智能引荐,而非条目 uid=bjensen

    ldapmodify -a -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    objectclass:top
    objectclass:extensibleObject
    objectclass:referral
    uid:bjensen
    ref:ldap://east.example.com/cn=Babs%20Jensen,ou=Sales,
     o=east,dc=example,dc=com



    注意

    服务器将忽略 LDAP URL 中空格后的所有信息。基于这个原因,必须在要作为引荐使用的 LDAP URL 内使用 %20 以代替空格。



    定义了智能引荐后,对 uid=bjensen 条目的修改将实际在另一个服务器的 cn=Babs Jensen 条目上执行。ldapmodify 命令将自动更随引荐,例如:

    ldapmodify -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:replace
    replace:telephoneNumber
    telephoneNumber: (408) 555-1234

    为了修改智能引荐条目,必须使用 ldapmodify-M 选项,例如:

    ldapmodify -M -h 主机 -p 端口 -D "cn=Directory Manager" -w 口令
    dn:uid=bjensen,ou=People,dc=example,dc=com
    changetype:replace
    replace:ref
    ref:ldap://east.example.com/cn=Babs%20Jensen,ou=Marketing,
     o=east,dc=example,dc=com

    为属性值加密

    属性加密是 Sun ONE Directory Server 5.2 中的新功能,它在敏感数据存储于目录中时对其进行保护。属性加密允许您指定条目的某些属性以加密格式进行存储。这将防止数据存储在数据库文件、备份文件和导出的 LDIF 文件时可读。

    使用此功能,属性值会在存储于 Directory Server 中之前被加密,并在返回之前解密。应当使用 ACI 之类的其他机制以防止 LDAP 客户访问受限数据,使用 SSL 加密通讯。有关数据安全性常规信息和属性加密详细信息的结构性概述,请参阅 Sun ONE Directory Server 部署指南 中的第 7 章“设计安全目录”

    仅当服务器上配置并启用了 SSL 时,属性加密才有效。但是,在默认情况下所有属性都是不加密的。属性加密在后缀级别进行配置。这意味着属性加密应用于它在其中显示为某一后缀的所有条目。如果要在整个目录中对属性进行加密,则必须对每个后缀中的该属性启用加密。



    警告

    属性加密将影响到与后缀相关联的所有数据和索引文件。如果修改了现有后缀的加密配置,您必须首先导出其内容,进行配置更改,然后重新导入内容。控制台将帮助您执行这些步骤。

    此外,当启用加密时,必须手动删除数据库缓存文件,该文件可能仍然包含未加密的值。

    最好在以新的后缀加载或创建数据之前启用加密属性。



    如果选择加密一个属性,且该属性是某些条目的命名属性,DN 中显示的值将不加密,但条目中存储的值将被加密。

    可选择 userPassword 属性用于加密,不过这不会真正提高安全性,除非口令是以明文方式存储的,如 DIGEST-MD5 SASL 验证。如果口令已具有口令策略中定义的加密机制,则进一步的加密对安全性不会提高太多,反而会影响每个绑定操作的性能。

    使用控制台配置属性加密

    1. 在 Directory Server 控制台中选择“配置”标签,展开“数据”节点,然后选择要加密属性值的后缀。在右侧面板中选择“属性加密”标签。
    2. 该标签包含一个表格,表格中列出了此后缀的所有当前已加密的属性的名称和加密模式。

    3. 要启用属性的加密,请执行以下操作:
      1. 单击“添加属性”按钮,显示属性列表。
      2. 从列表中选择要加密的属性并单击“确定”。该属性将被添加到表格的“属性名称”列中。
      3. 从属性名称旁边的下拉列表中选择此属性的“加密模式”。

    4. 要使属性不再加密,请从表格中选择属性名称,并单击“删除属性”按钮。
    5. 单击“保存”。系统会提示您在修改配置之前将后缀的内容导出到 LDIF 文件。
    6. 单击“导出后缀”打开“导出”对话框,或单击“继续”修改属性加密配置而不进行导出操作。新配置随后将被保存。
    7. 如果还未导出后缀,则必须现在导出以保存其内容。当您计划使用该 LDIF 文件在下一步中重新初始化后缀时,如果后缀包含加密属性,则可在已导出的 LDIF 中继续保持加密。

      系统现在会提示您从 LDIF 文件初始化后缀。

    8. 单击“初始化后缀”打开“初始化”对话框,然后输入 LDIF 文件的名称以加载到目录中。
    9. 如果在上一步中导出了具有加密属性的后缀,则现在必须使用该文件进行初始化,因为后缀重新初始化后,已加密的值将无法恢复。文件加载完成并创建了索引后,指定属性的所有值就被加密了。

      如果不想立即初始化后缀,请单击“关闭”。使用“导入数据”中所述的步骤,可以稍后导入数据。

    10. 如果已更改配置对一个或多个属性进行加密,且这些属性在导入操作前具有值,则那些未加密的值中的一部分可能在数据库缓存中仍然可见。要清除数据库缓存,请执行以下操作:
      1. “启动和停止 Directory Server”中所述,停止目录服务器。
      2. 作为 root 或具有管理员特权的用户,从文件系统中删除数据库缓存文件:
      3. ServerRoot/slapd-serverID/db/__db.*

      4. 再次启动目录服务器。服务器将自动创建新的数据库缓存文件。

    从命令行配置属性加密

    1. 如果要配置属性加密的后缀包含任何条目,则必须先将该后缀的内容导出到 LDIF 文件。详细信息,请参阅“导出数据”
    2. 当您计划使用该 LDIF 文件在步骤 5 中重新初始化后缀时,如果后缀包含加密属性,则可在已导出的 LDIF 中继续保持加密。

    3. 要启用属性的加密,请使用 ldapmodify 命令添加以下配置条目:
    4. ldapmodify -a -h 主机 -p 端口 -D cn=Directory Manager -p 口令
      dn:cn=attributeName, cn=encrypted attributes, cn=databaseName,
       cn=ldbm database, cn=plugins, cn=config
      objectclass:top
      objectclass:dsAttributeEncryption
      cn:attributeName
      dsEncryptionAlgorithm:cipherName

      其中 attributeName 是要加密的属性的类型名称,databaseName 是与后缀对应的数据库的符号名称,而 cipherName 是以下各项之一:

      • ckm_des_cbc - DES 块密码
      • ckm_des3_cbc - Triple-DES 块密码
      • ckm_rc2_cbc - RC2 块密码
      • ckm_rc4 - RC4 流密码

    5. 要使属性不再加密,请使用 ldapmodify 命令修改以下配置条目:
    6. ldapmodify -h 主机 -p 端口 -D cn=Directory Manager -p 口令
      dn:cn=attributeName, cn=encrypted attributes, cn=databaseName,
       cn=ldbm database, cn=plugins, cn=config
      changetype:modify
      replace:dsEncryptionAlgorithm
      dsEncryptionAlgorithm:clearText

      其中 attributeName 是要加密的属性的类型名称,databaseName 是与后缀对应的数据库的符号名称。



      注意

      不要删除属性加密配置条目。下次后缀初始化时,该条目将被自动删除。



    7. 如果已更改配置对一个或多个属性进行加密,且这些属性在导入操作前具有值,则那些未加密的值中的一部分可能在数据库缓存中仍然可见。要清除数据库缓存,请执行以下操作:
      1. “启动和停止 Directory Server”中所述,停止目录服务器。
      2. 作为 root 或具有管理员特权的用户,从文件系统中删除数据库缓存文件:
      3. ServerRoot/slapd-serverID/db/__db.*

      4. 再次启动目录服务器。服务器将自动创建新的数据库缓存文件。该后缀中操作的性能将受到轻微的影响,直到缓存被重新填充。

    8. “导入数据”中所述,使用 LDIF 文件初始化后缀。如果在步骤 1 中导入后缀,请使用该文件确保后缀具有最新的内容。如果在步骤 1 中导出了具有加密属性的后缀,则现在必须使用该文件进行初始化,因为后缀重新初始化后,已加密的值将无法恢复。
    9. 文件加载完成并创建了相应的索引后,指定属性的所有值就被加密了。

    维护引荐完整性

    引荐完整性是确保相关条目之间的关系得以维持的一种插件机制。几种属性类型(如用于组成员身份的属性)包含另一个条目的 DN。引荐完整性可用于确保当条目被删除时,所有包含其 DN 的属性也将被删除。

    例如,如果从目录中删除了某个用户的条目且启用了引荐完整性,则服务器还从包含此用户成员的任何组中删除此用户。如果未启用引荐完整性,则必须由管理员手动从组中删除此用户。如果您要将目录服务器与依赖用于用户和组管理的目录的其他 Sun ONE 产品集成,则这是一个重要功能。

    引荐完整性的工作方式

    启用引荐完整性插件时,它在执行了删除或重命名操作后,立即对特定属性执行完整性更新。但默认情况下,系统禁用引荐完整性插件。

    不论何时删除或重命名目录中的用户条目或组条目,操作都记录到引荐完整性日志文件中:

    ServerRoot/slapd-serverID/logs/referint

    在指定的时间(即更新时间间隔)后,服务器对已启用引荐完整性的所有属性执行搜索,并将此搜索获得的条目与日志文件中已删除或已修改的条目的 DN 进行匹配。如果日志文件显示已删除条目,则删除对应的属性。如果日志文件显示已更改条目,则相应地修改对应的属性值。

    当启用了引荐完整性插件的默认配置时,每次执行删除或重命名操作后,此插件对 memberuniquememberownerseeAlsonsroledn 属性执行完整性更新。但是,可以配置引荐完整性插件的行为以适合您的需要:

    • 在另一文件中记录引荐完整性更新。
    • 修改更新时间间隔。如果要减少引荐完整性更新对系统的影响,则要增加更新之间的时间。
    • 选择将引荐完整性应用到的属性。如果使用或定义包含 DN 值的属性,则需要使用引荐完整性插件监视这些属性。

    配置引荐完整性

    使用以下步骤从 Directory Server 控制台启用或禁用引荐完整性以及配置插件:

    1. 在 Directory Server 控制台的顶级“配置”标签上,展开“插件”节点,并选择“referential integrity postoperation”插件。
    2. 该插件的设置显示在右侧面板中。

    3. 选中“启用插件”复选框可启用该插件,取消选中此复选框可禁用该插件。
    4. 设置参数 1 的值以修改更新时间间隔(以秒为单位)。通用值为:
      • 0 - 每次操作后立即更新。请注意,每次删除或修改操作以后立即进行引荐完整性检查可能严重影响服务器的性能。
      • 90 - 每 90 秒钟更新一次
      • 3600 - 每小时更新一次
      • 10,800 - 每 3 小时更新一次
      • 28,800 - 每 8 小时更新一次
      • 86,400 - 每天更新一次
      • 604,800 - 每周更新一次

    5. 将参数 2 的值设置为要使用的引荐完整性日志文件的绝对路径。
    6. 参数 3 未使用,但是必须存在。

    7. 为引荐完整性而监视的属性从参数 4 开始列出,单击“添加”和“删除”按钮管理该列表以及添加自己的属性。


    8. 注意

      为获得最佳性能,由引荐完整性插件更新的属性也应该被编制索引。有关信息,请参阅第 10 章“管理索引”



    9. 单击“保存”保存更改。
    10. 为使更改生效,必须重新启动 Directory Server。

    将引荐完整性与复制一起使用

    当需要在复制环境中使用引荐完整性插件时,存在一定的限制:

    • 必须在包含主副本的所有服务器上启用引荐完整性。
    • 必须在每个主副本上使用相同的配置启用它。
    • 在仅包含集线器副本或使用者副本的服务器上启用引荐完整性是没有意义的。

    要在复制拓扑结构中配置引荐完整性插件,请执行以下操作:

    1. 确保所有副本已配置且所有复制协议已定义。
    2. 确定要为其维护引荐完整性的属性集。也请确定要在主服务器上使用的更新时间间隔。
    3. 使用相同的属性集和相同的更新时间间隔,在所有主服务器上启用引荐完整性插件。此过程在“配置引荐完整性”中已说明。
    4. 确保在全部的使用者服务器上禁用引荐完整性插件。


    上一章     目录     索引     文档主页     下一章    
    版权所有 2003 Sun Microsystems, Inc. 保留所有权利。