4.2. 设计目录树
- 选择包含数据的后缀。
- 确定数据条目之间的分层关系。
- 命名目录树层次结构中的条目。
4.2.1. 选择 Suffix
4.2.1.1. 后缀命名
- 全局唯一。
- 静态,因此很少会在发生改变的情况下。
- 简而言之,这样,在屏幕上更轻松地阅读条目。
- 易于输入并记住。
dc
属性通过将域名拆分到其组件部分来代表后缀。
dc
定义域名的组件。c
包含代表国家名称的双位代码,由 ISO 定义。l
标识条目所在的数目、城市或其他地理位置,或者与该条目相关联。st
识别条目所在的状态或省去。o
标识条目所属组织的名称。
4.2.1.2. 命名多个 Suffixes
图 4.1. 在数据库中包含多个目录树

4.2.2. 创建目录树结构
4.2.2.1. 对目录进行分支
- 将树分支,仅代表企业中最大的组织细分。所有这些分支点应限制在部门(如公司信息服务、客户支持、销售与工程)。确保用于分支目录树的部门具有稳定的;如果企业经常重新组织,则不执行此类分支。
- 对分支点使用功能或通用名称而不是实际的机构名称。名称更改。虽然子树可以重命名,但它是具有许多子条目的大型后缀的很长和资源密集型过程。使用代表机构功能的通用名称(例如,使用 Engineering 而不是 Widget Research 和 Development)使得在机构或项目更改后需要重命名子树的几率要小。
- 如果有多个机构执行类似的功能,请尝试为该功能创建单个分支点,而不是基于划分行进行分支。例如,即使有多个营销机构,每个营销机构都负责特定的产品行,请创建一个 ou=Marketing 子树。然后,所有营销条目都属于该树。
Enterprise 环境中的分支
如果目录树结构基于可能更改的信息,可以避免名称更改。例如,对树中的对象类型而非组织,对对象类型的结构为基础。这有助于避免在组织单元之间影响一个条目,这需要修改可分辨名称 (DN),这是代价昂贵的操作。
- ou=people
- ou=groups
- ou=services
图 4.2. Environment Directory 树示例

主机环境中的分支
对于托管环境,创建一个树,其中包含对象类 组织
(o
)的两个条目,以及对象类 organizationalUnit
(ou
)下的一个条目。例如,ISP 分支其目录示例,如下所示。
图 4.3. 主机目录树示例

4.2.2.2. 识别分支点
图 4.4. 示例 Corp 的 Directory 树。

图 4.5. 示例 ISP 的目录树

- 保持一致。如果区分名称 (DN) 格式在目录树中不一致,则一些 LDAP 客户端应用程序可能会混淆。也就是说,如果
l
属于目录树的一个部分的ou
,请确保在目录服务的所有其他部分的l
从属为ou
。 - 尝试只使用传统属性(在 第 4.2.2.2 节 “识别分支点”中显示)。使用传统属性会增加保留与第三方 LDAP 客户端应用程序的兼容性的可能性。使用传统属性还意味着它们对默认目录架构所知,这有助于为分支 DN 构建条目。
属性 | 定义 |
---|---|
dc | 域名的一个元素,如 dc=example ;这经常在对中指定,甚至更长,具体取决于域,如 dc=example,dc=com 或 dc=mtv,dc=example,dc=com。 |
c | 国家/地区名称。 |
o | 机构名称。此属性通常用于代表一个大的分部分支,如公司部门、学术线(人类、科学)、子公司,或者企业内的其他主要分支,如 第 4.2.1.1 节 “后缀命名”。 |
ou | 组织单元。此属性通常用来代表比组织较小的部门分支。组织单元一般与上述机构从属。 |
st | 状态或省名称。 |
l 或 locality | 本地性,如城市、国家、办公室或设备名称。 |
4.2.2.3. 复制注意事项
图 4.6. 示例公司的 Directory 树的初始分支。

图 4.7. 为示例公司扩展分支.

图 4.8. 示例 ISP 的目录分支

图 4.9. 用于示例 ISP 的扩展分支

4.2.2.4. 访问控制注意事项
4.2.3. 命名条目
- 为命名选择的属性应不太可能改变。
- 该名称在目录中必须是唯一的。唯一名称可确保 DN 在 目录中最多可以看到一个条目。
l
来代表一个机构,或者 c
代表组织单元。
4.2.3.1. 命名角色条目
commonName
或 cn
属性来命名其个人条目。也就是说,名为 Babs Jensen 的个人可能具有可区分名称 cn=Babs Jensen,dc=example,dc=com 的条目。
cn
以外的某些属性的 person 条目。考虑使用以下属性之一:
uid
使用uid
属性指定个人的一些唯一值。可能包括用户登录 ID 或员工号码。托管环境中的订阅者应该由uid
属性识别。mail
mail
属性包含个人的电子邮件地址,该地址始终是唯一的。这个选项可能会导致包含重复属性值(如 mail=bjensen@example.com,dc=example,dc=com)的 awkward DNs,因此仅在没有与uid
属性一起使用的其他唯一值时才使用这个选项。例如,如果企业没有为临时或合同员工分配员工数量或用户 ID,则使用mail
属性而不是uid
属性。employeeNumber
对于 inetOrgPerson 对象类的员工,请考虑使用人员分配的属性值,如employeeNumber
。
uid
和 cn
属性使用人类可读的名称。
在托管环境中为 Person 条目的注意事项
如果一个人是服务的订阅者,则条目应该是对象类 inetUser,条目应包含 uid
属性。在客户子树中,属性必须是唯一的。
将 Person Entries 放置到 DIT 中
以下是将人员条目放入目录树的一些准则:
- 企业中的人员应位于组织条目下的目录树中。
- 对托管机构的订阅者需要低于托管机构的 ou=people 分支。
4.2.3.2. 命名组条目
- 静态组 显式定义是成员。groupOfNames 或 groupOfUniqueNames 对象类包含命名组成员的值。静态组适合具有几个成员的组,如目录管理员组。静态组不适用于具有数千个成员的组。静态组条目必须包含 uniqueMember 属性值,因为 uniqueMember 是 groupOfUniqueNames 对象的强制属性。此对象类需要
cn
属性,它可用于组成组条目的 DN。 - 动态组 使用一个代表搜索过滤器和子树的组的条目。与过滤器匹配的条目是组的成员。
- 角色 统一了静态和动态组概念。如需更多信息,请参阅 第 4.3 节 “分组目录条目”。
4.2.3.3. 命名机构条目
organization
(o
)属性作为 naming 属性。
4.2.3.4. 命名其他 Entries 的 Kind
cn
属性(如果可能)。然后,为命名组条目,将其命名为 cn=administrators,dc=example,dc=com 等内容。
commonName
属性。反之,使用条目对象类支持的属性。
4.2.4. 重命名条目和子树
例 4.1. building Entry DNs
dc=example,dc=com => root suffix ou=People,dc=example,dc=com => org unit st=California,ou=People,dc=example,dc=com => state/province l=Mountain View,st=California,ou=People,dc=example,dc=com => city ou=Engineering,l=Mountain View,st=California,ou=People,dc=example,dc=com => org unit uid=jsmith,ou=Engineering,l=Mountain View,st=California,ou=People,dc=example,dc=com => leaf entry
图 4.10. Leaf Entry 的 modrdn Operations

图 4.11. 子树条目的 modrdn 操作

newsuperior
属性,它将条目从一个父项移到另一个父项。
图 4.12. 对一个新父项的 modrdn 操作

entryrdn.db
索引中。每个条目都由其自己的键(一个 self-link)标识,然后是一个子键来标识其父项( 父链接)和任何子项。这是一个层次结构目录树的格式,它将父项和子项视为条目的属性,每个条目都由唯一 ID 及其 RDN 描述,而不是完整的 DN 进行标识。
numeric_id:RDN => self link ID: #; RDN: "rdn"; NRDN: normalized_rdn P#:RDN => parent link ID: #; RDN: "rdn"; NRDN: normalized_rdn C#:RDN => child link ID: #; RDN: "rdn"; NRDN: normalized_rdn
4:ou=people ID: 4; RDN: "ou=People"; NRDN: "ou=people" P4:ou=people ID: 1; RDN: "dc=example,dc=com"; NRDN: "dc=example,dc=com" C4:ou=people ID: 10; RDN: "uid=jsmith"; NRDN: "uid=jsmith"
- 您无法重命名 root 后缀。
- 子树重命名操作对复制的影响最少。复制协议会应用于整个数据库,而不是数据库中的子树,因此子树重命名操作不需要重新配置复制协议。子树重命名操作之后的所有名称都会正常进行复制。
- 重命名子树 可能需要 重新配置任何同步协议。同步协议在后缀或子树级别上设置,因此重命名子树可能会破坏同步。
- 重命名子树 要求 手动重新配置子树级 ACI,以及为子树子条目设置的任何条目级 ACI。
- 您可以将子树重命名为子树,但您无法删除子树。
- 尝试更改子树的组件,如从
ou
移到dc
,可能会因为 schema 违反而失败。例如,organizationalUnit 对象类需要ou
属性。如果该属性作为重命名子树的一部分被删除,则操作将失败。