第 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 属性中的值是唯一的:
- 启用插件配置记录:
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq enable "mail Attribute Uniqueness"
- 配置存储在
邮件
属性中的值必须在内唯一,例如 ou=Engineering,dc=example,dc=com 和 ou=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
- 另外,要选择性地配置此插件配置记录中配置的所有子树的唯一性:
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "mail Attribute Uniqueness" --across--all-subtrees=on
- 重启实例:
# dsctl instance_name restart
7.1.2.2. 使用 Web 控制台通过后缀或子树配置属性唯一性
要配置,例如,存储在 mail 属性中的值是唯一的:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 打开菜单。
- 选择 Attribute Uniqueness 插件。
- 单击。
- 填写字段并启用配置。例如:
图 7.1. 添加属性唯一配置
- 重启实例。请参阅 第 1.5.2 节 “使用 Web 控制台启动和停止目录服务器实例”。
7.1.3. 配置对象类的属性唯一性
您可以配置 Attribute Uniqueness 插件,以确保属性值在包含特定对象类的子树条目中是唯一的。目录服务器在更新对象的父条目中搜索此对象类。如果目录服务器找不到对象类,搜索将继续在目录树的根目录的下一个更高级别的条目中。如果找到对象类,Directory 服务器会验证
uniqueness-attribute-name
中设置的属性值在此子树中是唯一的。
要配置,例如,存储在 mail 属性中的值在包含 nsContainer 对象类的条目下是唯一的:
- 启用插件配置记录:
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq enable "mail Attribute Uniqueness"
- 在包含 nsContainer 对象类的条目下,配置存储在
mail
属性中的值必须是唯一的:# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "mail Attribute Uniqueness" --top-entry-oc=nsContainer
- 另外,您还可以限制正在检查的对象范围。如果您希望服务器只检查包含 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
- 重启实例:
# 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 配置、命令和文件参考 中的相应部分。