每一个系统、协议都会有属于自己的模型,了解LDAP的基本模型之前需要先了解一些基本概念。
一、 目录树概念简介
- 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目(Entry)。
- 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
- 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来(ObjectClass)。
- 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性(Attribute)。
二 、概念说明
条目 Entry
条目,也叫记录项,是LDAP中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的。
dn
:每一个条目都有一个唯一的标识名(distinguished Name ,DN),如一个 dn:”cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org” 。通过DN的层次型语法结构,可以方便地表示出条目在LDAP树中的位置,通常用于检索。
rdn
:一般指dn逗号最左边的部分,如cn=baby。它与RootDN不同,RootDN通常与RootPW同时出现,特指管理LDAP中信息的最高权限用户。
Base DN
:LDAP目录树的最顶部就是根,也就是所谓的“Base DN”,如”dc=mydomain,dc=org”。
属性 Attribute
每个条目都可以有很多属性(Attribute),比如常见的人都有姓名、地址、电话等属性。每个属性都有名称及对应的值,属性值可以有单个、多个,比如你有多个邮箱。
属性不是随便定义的,需要符合一定的规则,而这个规则可以通过schema制定。比如,如果一个entry没有包含在 inetorgperson 这个 schema 中的 objectClass: inetOrgPerson
,那么就不能为它指定employeeNumber属性,因为employeeNumber是在inetOrgPerson中定义的。
LDAP为人员组织机构中常见的对象都设计了属性(比如commonName,surname)。下面有一些常用的别名:
属性 | 语法 | 描述 | 值(举例) |
---|---|---|---|
cn | Directory String | 姓名 | sean |
sn | Directory String | 姓 | Chow |
ou | Directory String | 单位(部门)名称 | IT_SECTION |
o | Directory String | 组织(公司)名称 | example |
telephoneNumber | Telephone Number | 电话号码 | 110 |
objectClass | 内置属性 | organizationalPerson |
对象类 ObjectClass
对象类是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类。比如人员(person
)含有姓(sn
)、名(cn
)、电话(telephoneNumber
)、密码(userPassword
)等属性,单位职工(organizationalPerson
)是人员(person
)的继承类,除了上述属性之外还含有职务(title
)、邮政编码(postalCode
)、通信地址(postalAddress
)等属性。
通过对象类可以方便的定义条目类型。每个条目可以直接继承多个对象类,这样就继承了各种属性。如果2个对象类中有相同的属性,则条目继承后只会保留1个属性。对象类同时也规定了哪些属性是基本信息,必须含有(Must 活Required,必要属性):哪些属性是扩展信息,可以含有(May或Optional,可选属性)。
对象类有三种类型:结构类型(Structural)、抽象类型(Abstract) 和 辅助类型(Auxiliary)。
- 结构类型是最基本的类型,它规定了对象实体的基本属性,每个条目属于且仅属于一个结构型对象类。
- 抽象类型可以是结构类型或其他抽象类型父类,它将对象属性中共性的部分组织在一起,称为其他类的模板,条目不能直接集成抽象型对象类。
- 辅助类型规定了对象实体的扩展属性。每个条目至少有一个结构性对象类。
Schema
对象类(ObjectClass
)、属性类型(AttributeType
)、语法(Syntax
)分别约定了条目、属性、值。 所以这些构成了模式(Schema)——对象类的集合。 条目数据在导入时通常需要接受模式检查,它确保了目录中所有的条目数据结构都是一致的。
schema(一般在/etc/ldap/schema/
目录)在导入时要注意前后顺序。
过滤器和语法
- (&(A)(B)) 表示 A 与 B
- 或使用"|"标识
- 非使用 "!" 表示