第 7 章 管理属性和值

Red Hat Directory Server 为动态和自动维护目录条目上的某些属性提供几种不同的机制。这些插件和配置选项简化了管理目录数据并表达条目之间的关系。
条目特性的一部分是它们相互 的关系。值得注意的是,经理有一个员工,因此这两个条目都相关。组与其成员关联。也有不太明显的关系,如共享一个通用物理位置的条目之间。
Red Hat Directory Server 提供了几种不同方法,这些条目间的关系可以平稳且一致地维护。有几个插件可作为目录中的数据的一部分自动应用或生成属性,包括服务类、链接属性和生成唯一的数字属性值。

7.1. 强制属性唯一性

为确保属性值在目录或子树之间是唯一的,请使用 属性唯一 插件。
如果您希望多个属性是唯一的,或者想要使用不同的条件,请创建插件的多个配置记录。

7.1.1. 创建 属性唯一插件的新配置 记录

对于值必须是唯一的的每个属性,请创建一个 属性插件的 新配置记录。
注意
您只能从命令行创建插件的新配置记录。
为插件创建一个新的未配置和禁用的配置记录,名为 Example Attribute Uniqueness
dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq add "Example" --attr-name uid

7.1.2. 通过后缀或子树配置属性唯一性

您可以配置 属性唯一 插件,以确保属性值在某些后缀、子树或后缀和子树中是唯一的。

7.1.2.1. 使用命令行通过后缀或子树配置属性唯一性

要配置,例如,存储在 mail 属性中的值是唯一的:
  1. 属性唯一 插件创建一个新的配置记录,例如,邮件属性唯一性。详情请查看 第 7.1.1 节 “创建 属性唯一插件的新配置 记录”
  2. 启用插件配置记录:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq enable "mail Attribute Uniqueness"
  3. 配置存储在 邮件 属性中的值必须在内唯一,例如 ou=Engineering,dc=example,dc=comou=sales,dc=example,dc=com 子树:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "mail Attribute Uniqueness" --attr-name mail --subtree ou=Engineering,dc=example,dc=com ou=Sales,dc=example,dc=com
  4. 另外,要选择性地配置此插件配置记录中配置的所有子树的唯一性:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "mail Attribute Uniqueness" --across--all-subtrees=on
  5. 重启实例:
    # dsctl instance_name restart

7.1.2.2. 使用 Web 控制台通过后缀或子树配置属性唯一性

要配置,例如,存储在 mail 属性中的值是唯一的:
  1. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  2. 选择实例。
  3. 打开 Plugins 菜单。
  4. 选择 Attribute Uniqueness 插件。
  5. 单击 Add Config
  6. 填写字段并启用配置。例如:

    图 7.1. 添加属性唯一配置

    添加属性唯一配置

7.1.3. 配置对象类的属性唯一性

您可以配置 Attribute Uniqueness 插件,以确保属性值在包含特定对象类的子树条目中是唯一的。目录服务器在更新对象的父条目中搜索此对象类。如果目录服务器找不到对象类,搜索将继续在目录树的根目录的下一个更高级别的条目中。如果找到对象类,Directory 服务器会验证 uniqueness-attribute-name 中设置的属性值在此子树中是唯一的。
要配置,例如,存储在 mail 属性中的值在包含 nsContainer 对象类的条目下是唯一的:
  1. 属性唯一 插件创建一个新的配置记录,例如,邮件属性唯一性。详情请查看 第 7.1.1 节 “创建 属性唯一插件的新配置 记录”
  2. 启用插件配置记录:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq enable "mail Attribute Uniqueness"
  3. 在包含 nsContainer 对象类的条目下,配置存储在 mail 属性中的值必须是唯一的:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "mail Attribute Uniqueness" --top-entry-oc=nsContainer
  4. 另外,您还可以限制正在检查的对象范围。如果您希望服务器只检查包含 nsContainer 对象类的条目子集,请在 uniqueness-subtree-entries-oc 参数中设置额外的对象类。另外,还需要存在这个其他类。
    例如,mail 属性在包含 nsContainer 对象类集的条目下的所有条目中必须是唯一的。但是,您希望插件只在包含提供此属性的对象类的条目中搜索 邮件,如 inetOrgPerson。在这种情况下,请输入:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "mail Attribute Uniqueness" --subtree-entries-oc=inetOrgPerson
  5. 重启实例:
    # dsctl instance_name restart

7.1.4. 属性唯一插件配置参数

要配置 属性唯一插件配置 记录,请在 cn=attribute_uniqueness_configuration_record_name,cn=plugins,cn=config 条目中设置插件的配置属性。

例 7.1. 使用特定于插件的属性的属性进行属性插件插件配置

dn: cn=Example Attribute Uniqueness,cn=plugins,cn=config
nsslapd-pluginEnabled: on
uniqueness-attribute-name: attribute_name
uniqueness-top-entry-oc: objectclass1 
uniqueness-subtree-entries-oc: objectclass2
有关您可以配置 属性唯一 插件的参数列表,请查看 Red Hat Directory Server 配置、命令和文件参考 中的相应部分