OpenLDAP 概念与工作原理介绍(3)

默认安装OpenLDAP 组件后,系统的配置定义一组常用的schema 文件,这组文件一般存放在/etc/openldap/schema 目录内,可通过include 引用。当所定义的objectClass 不存在时,该如何获取objectClass?下面就介绍如何获取schema 来包含objectClass。

通过服务器自身软件包的安装来生成schema 文件,本节以sudo 为例演示其过程。

查看软件包生成的文件列表

1

2

3

4

 

[root@test ~]# rpm -ql sudo|grep schema

/usr/share/doc/sudo-1.8.6p3/schema.ActiveDirectory

/usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP

/usr/share/doc/sudo-1.8.6p3/schema.iPlanet

 

通过配置文件引入schema

1

2

 

cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema

echo "include /etc/openldap/schema/sudo.schema" > /etc/openldap/slapd.conf

 

通过schema 产生ldif 文件

1

2

3

 

slapcat -f ~/sudo/sudoSchema.conf -F /tmp/ -n0 -s "cn={0}sudo,cn=schema,cn=config" > ~/sudo/sudo.ldif 

sed -i "s/{0}sudo/{12}sudo/g" ~/sudo/sudo.ldif 

head -n-8 ~/sudo/sudo.ldif > ~/sudo/sudo-config.ldif

 

通过OpenLDAP 指令导入目录树

1

 

ldapadd -Y EXTERNAL -H ldapi:/// -f ~/sudo/sudo-config.ldif

 

此时就可以通过sudo schema 文件定义各种sudo 规则从而实现用户权限的控制。

八、objectClass 详解

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

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

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

1、objectClass 案例分析

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

objectClass 案例分析示例1

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

1

2

3

4

5

 

objectclass ( 2.5.6.6 NAME 'person' 

       DESC 'RFC2256: a person' 

       SUP top STRUCTURAL 

       MUST ( sn $ cn )  M

       AY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

 

分析:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b7ff2616949043e6f3ee2b46abdeca0c.html