1.3. LDAP 后端、对象和属性

LDAP 服务器守护进程称为 SlapdSlapd 支持多种不同的 数据库后端供您使用。

它们包括首选的 BDB,一个高性能的事务数据库后端;LDBM,一个轻量级的基于 DBM 的后端;SHELL,一个连接到任意 shell 脚本的后端接口;以及 PASSWD,一个连接到 passwd(5) 文件的简单后端接口。

BDB 使用 Sleepycat Berkeley DB 4。LDBM 使用 Berkeley DBGDBM

BDB 事务后端适用于多用户读/写数据库访问,支持任意混合的读写操作。BDB 适用于需要以下特性的应用

在本文档中,我假设您选择 BDB 数据库。

为了在基于 LDAP 的目录服务器之间导入和导出目录信息,或者描述要应用于目录的一组更改,通常使用称为 LDIF(LDAP 数据交换格式)的文件格式。LDIF 文件以面向对象的条目层次结构存储信息。您将获得的 LDAP 软件包附带一个实用程序,用于将 LDIF 文件转换为 BDB 格式

一个常见的 LDIF 文件看起来像这样

dn: o=TUDelft, c=NL
o: TUDelft
objectclass: organization
dn: cn=Luiz Malere, o=TUDelft, c=NL
cn: Luiz Malere
sn: Malere
mail: malere@yahoo.com
objectclass: person

如您所见,每个条目都由一个唯一的专有名称(DN)标识。DN 由条目的名称加上一个名称路径组成,该路径将条目追溯到目录层次结构的顶部(就像一棵树)。

在 LDAP 中,对象类定义了可用于定义条目的 属性集合。LDAP 标准提供了以下基本类型的对象类

一个条目可以属于多个对象类。例如,一个人员条目由 person 对象类定义,但也可能由 inetOrgPerson、groupOfNames 和 organization 对象类中的属性定义。服务器的对象类结构(即其模式)决定了特定条目的必需和允许属性的完整列表。

目录数据以属性-值对的形式表示。任何特定的信息都与一个描述性属性相关联。

例如,commonName 或 cn 属性用于存储人员的姓名。名为 Jonas Salk 的人可以在目录中表示为

cn: Jonas Salk

目录中输入的每个人员都由 person 对象类中的属性集合定义。用于定义此条目的其他属性可能包括

givenname: Jonas
surname: Salk
mail: jonass@airius.com

必需属性包括在使用对象类的条目中必须存在的属性。所有条目都需要 objectClass 属性,该属性列出了条目所属的对象类。

允许属性包括在使用对象类的条目中可能存在的属性。例如,在 person 对象类中,cn 和 sn 属性是必需的。description、telephoneNumber、seeAlso 和 userpassword 属性是允许的,但不是必需的。

每个属性都有一个对应的语法定义。语法定义描述了属性提供的信息类型,例如

注意:通常 objectclass 和 attribute 定义位于模式文件,在 OpenLDAP 安装目录下的 schema 子目录中。