25.2. LDAP 目录树的结构

LDAP 目录具有树形结构。目录中的所有项(称为对象)在此层次结构中都有确定的位置。此层次结构称为目录信息树 (DIT)。指向所需项的完整路径(可以明确标识该项)被称为判别名或 DN。沿路径指向此项的单个节点称为相对判别名或 RDN。通常可以向以下两种可能类型之一指派对象:

树枝

这些对象本身可以包含其它对象。这些对象类包括 root(目录树的根元素,实际并不存在)、c(国家/地区)、ou(组织单元)和 dc(域组件)。此模型类似文件系统中的目录(文件夹)。

这些对象位于分支的末梢,没有任何从属对象。personInetOrgPersongroupofNames 都属于此类对象。

目录层次的顶端有一个根元素 root。其中可包含 c(国家/地区)、dc(域组件)或 o(组织)作为从属元素。LDAP 目录树中的关系在下例中尤为明显,如 图 25.1 “LDAP 目录的结构” 所示。

图 25.1. LDAP 目录的结构

LDAP 目录的结构

完整的图中包含虚构的目录信息树。其中描述了三个层次上的项。每一项都对应图中的一个框。在本例中,虚构的 SUSE 雇员 Geeko Linux 的完整有效判别名cn=Geeko Linux,ou=doc,dc=suse,dc=de。该名称是通过将 RDN cn=Geeko Linux 添加到前一项的 DN ou=doc,dc=suse,dc=de 而构成的。

要从总体上决定应将哪类对象储存在 DIT 中,需要遵照方案来执行。对象类型由对象类决定。对象类决定必须或可以给相关对象指派哪些特性。因此,方案中必须包含所需应用方案中使用的所有对象类和特性的定义。已存在一些常用方案(请参见 RFC 2252 和 2256)。不过,可以创建自定义方案或使用多个互补的方案(如果 LDAP 服务器的运行环境要求这样做)。

表 25.1 “常用对象类和特性” 提供了示例所用的 core.schemainetorgperson.schema 中的对象类的简要概览(包括必需特性和有效特性值)。

表 25.1. 常用对象类和特性

对象类

含义

示例项

必需特性

dcObject

domainComponent(域的名称组件)

suse

dc

organizationalUnit

organizationalUnit(组织单元)

doc

ou

inetOrgPerson

inetOrgPerson(内部网或因特网中与个人有关的数据)

Geeko Linux

sn 和 cn

例 25.1 “引自 schema.core ” 引自一个方案指令,并附有解释(为便于解释对行进行了编号)。

例 25.1. 引自 schema.core

#1 attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName')
#2        DESC 'RFC2256: organizational unit this object belongs to'
#3        SUP name )

...
#4 objectclass ( 2.5.6.5 NAME 'organizationalUnit'
#5        DESC 'RFC2256: an organizational unit'
#6        SUP top STRUCTURAL
#7        MUST ou
#8 MAY (userPassword $ searchGuide $ seeAlso $ businessCategory 
    $ x121Address $ registeredAddress $ destinationIndicator 
    $ preferredDeliveryMethod $ telexNumber 
    $ teletexTerminalIdentifier $ telephoneNumber 
    $ internationaliSDNNumber $ facsimileTelephoneNumber 
    $ street $ postOfficeBox $ postalCode $ postalAddress 
    $ physicalDeliveryOfficeName
    $ st $ l $ description) )
...

特性类型 organizationalUnitName 和相应的对象类 organizationalUnit 在此仅作为示例。第 1 行说明特性的名称、其唯一 OID(对象标识符)(数字),及特性缩写方式。

第 2 行通过 DESC 对该特性进行了简要说明。在此还提到了定义所基于的相应 RFC。第 3 行中的 SUP 表明此特性所属的上级特性类型。

从第 4 行开始是对象类 organizationalUnit 的定义;与特性定义类似,该定义也包含对象类的 OID 和名称。第 5 行对该对象类进行了简要说明。第 6 行通过项 SUP top 表明此对象类不从属于其它对象类。第 7 行以 MUST 开头,列出必须与类型为 organizationalUnit 的对象一同使用的所有特性类型。第 8 行以 MAY 开头,列出可以与此对象类一同使用的所有特性类型。

有关方案用法的详尽介绍,请参见文档 OpenLDAP。安装 OpenLDAP 之后,可以在 /usr/share/doc/packages/openldap2/admin-guide/index.html 中找到该文档。