OpenLDAP 相关基础概念与ObjectClass 介绍

在OpenLDAP 目录树中,每个条目必须包含一个属于自身条件的对象类,然后再定义其条目属性及对应的值。

OpenLDAP 条目的属性能否添加取决于条目所继承的objectClass 是否包含此属性。objectClass具有继承关系,也就是说,条目添加的属性最终取决于自身所继承的所有objectClass 的集合。如果所添加的属性不在objectClass 范围内,此时目录服务器不允许添加此属性。如果要添加,就必须添加schema 文件产生objectClass 所对应的属性。objectClass 和Attribute 由schema 文件来规定,存放在/etc/openldap/schema 目录下,schema 文件规范objectClass 的构成以及属性和值在目录树中的对应关系。后面章节会介绍如何通过定义schema 文件来产生objectClass,从而生成所需要的属性。
OpenLDAP 相关基础概念与属性介绍-fooher.com

每一个属性和值将用作每个条目在目录树中存储信息的标准,例如能包含哪些属性信息。对于objectClass 的理解,读者可以将objectClass 的属性值理解为一种模板。模板定义哪些信息可以存取,哪些信息不可以存储在目录树中。

1、objectClass 案例分析

下面给出两个对象类案例分析示例。

objectClass 案例分析示例1

所有的objectClass 定义都存放在/etc/openldap/schema/*.schema 文件中。例如,person 属性的定义就存放在core.schema 文件中。

objectclass ( 2.5.6.6 NAME 'person'  
       DESC 'RFC2256: a person'  
       SUP top STRUCTURAL  
       MUST ( sn $ cn )  M
       AY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

分析:

如果要定义person 类型,需要定义顶级为top,并且必须定义sn 和cn 两个属性,还可以附加userPassword、telephoneNumber、seeAlso、description 4 个属性值。邮件地址、国家等属性不可以定义,除非读者添加相关的objectClass 条目,否则提示相关属性不允许添加。

objectClass 案例分析示例2

objectclass: (2.5.6.0 NAME 'top'  
       ABSTRACT  
       MUST (objectClass))  

objectclass: ( 2.5.6.6 NAME 'person'  
       SUP top STRUCTURAL  
       MUST (sn $ cn )  
       MAY (userPassword $ telephoneNumber $  
       seeAlso $ description ))

分析:

对于此案例,如果要定义top 属性,必须定义一个objectClass 属性。因为此案例中还定义了person 属性,所以要必须定义sn 和cn 属性,以及可以附加的属性(userPassword、telephoneNumber、seeAlso、description)。此案例中必须要定义的有3 个属性分别是objectClass、sn 以及cn。通过此案例下一级的objectClass 可以继承上一级objectClass 的属性信息。