打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
schema配置
userphoto

2016.09.04

关注
Schema是作用什么:
定义目录数据库中条目的各种属性和对象。

定义Schema的步骤:
1、获取对象标识符OID
可以到IANA申请免费的OID,如果只是做做实验而不想麻烦地填申请表格的话,可以使用1.1这个OID。 OID用于计算机中对attribute(属性)和objectclass(对象类)的标识。
2、选择一个名称前缀
由于属性名或对象名不能有重复,所以以加前缀的方法以减少自定义的名称与其它相同
3、建立一个用户的schema文件
4、定义用户自定义的属性类型
5、定义用户自定义的对象类

本例中的OID分配规划:

OID 分配 保存的数据类型

1.1 MyLocal
1.1.2 MyLocal中的ldap元素
1.1.2.1 属性类型
1.1.2.1.100 myGraduate UTF-8 字符串
1.1.2.1.101 myStudentID UTF-8 字符串
1.1.2.1.102 myEnrollment 整数型
1.1.2.1.103 mySex UTF-8 字符串
1.1.2.2 对象类型
1.1.2.2.1 myObjectClass

建立用户的schema文件
在openldap中有一个schema目录,这是存放schema文件的地方,你可以将你建立的schema文件放在这里,当然也可以不。
用文本编辑器,如:linux下的vi, 或windows下的记事本新建一个文本文件,名字由你自己取,在本例中这个文件名被叫做:MyLocal.schema
假定用这个文件定义一个objectclass用于放有关的学生的资料,如,学生的毕业学校,学生学号,学生入学时间,学生的性别等。则我将在MyLocal.schema中输入下面的文本:

#########################################################

attributeType ( 1.1.2.1.100 NAME 'myGraduate'
DESC 'Student graduate school with MyLocal'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributeType ( 1.1.2.1.101 NAME 'myStudentID'
DESC 'Student ID with MyLocal'
SUP myGraduate
SINGLE-VALUE )

attributeType ( 1.1.2.1.102 NAME 'myEnrollment'
DESC 'The year of Student first enrollment with MyLocal'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

attributeType ( 1.1.2.1.103 NAME 'mySex'
DESC 'Student Sex with MyLocal'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{20} )

objectclass ( 1.1.2.2.1 NAME 'myObjectClass'
DESC 'My object class with MyLocal'
AUXILIARY
MUST myStudentID
MAY ( myGraduate $ myEnrollment $ mySex ) )

##################################################################

以上由“#”号构成的行的中间部分就是我们自己定义的schema文件中的内容.

文件建立后,需要在openldap的slapd.conf文件中加入一条include,将自定义的schema文件包含进来,例如:
include /etc/openldap/schema/MyLocal.schema

注:
如果你使用phpldapadmin来管理你的openldap服务器,当添加的条目中有使用上例的myObjectClass时会报错,
原因是上例中的myObjectClass中定义了一个必选属性myStudentID(由'MUST myStudentID'定义).
这不是说schema有错,而是phpldapadmin有问题.你可以删除'MUST myStudentID',
将myStudentID加入到MAY后面中去,即: MAY ( myStudentID $ myGraduate $ myEnrollment $ mySex ) )

下面是这些内容中的具体意思。为了说明方便,在每一行前加入一个数字。

1 attributeType ( 1.1.2.1.100 NAME 'myGraduate'
2 DESC 'Student graduate school with MyLocal'
3 EQUALITY caseIgnoreMatch
4 SUBSTR caseIgnoreSubstringsMatch
5 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
6
7 attributeType ( 1.1.2.1.101 NAME 'myStudentID'
8 DESC 'Student ID with MyLocal'
9 SUP myGraduate
10 SINGLE-VALUE )
11
12 attributeType ( 1.1.2.1.102 NAME 'myEnrollment'
13 DESC 'The year of Student first enrollment with MyLocal'
14 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
15
16 attributeType ( 1.1.2.1.103 NAME 'mySex'
17 DESC 'Student Sex with MyLocal'
18 EQUALITY caseIgnoreMatch
19 SUBSTR caseIgnoreSubstringsMatch
20 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
21
22 objectclass ( 1.1.2.2.1 NAME 'myObjectClass'
23 DESC 'My object class with MyLocal'
24 AUXILIARY
25 MUST myStudentID
26 MAY ( myGraduate $ myEnrollment $ mySex ) )

首先,需要知道的是在openldap文件就是用来定义attribute和objectclass的。
定义attribute和objectclass的语句分别如下:
attributetype AttributeTypeDescription
objectclass ObjectclassTypeDescription
其中的AttributeTypeDescription(属性类型描述)和ObjectclassTypeDescription(对象类类型描述)遵循BNF(巴克斯-诺尔形式)

以下是AttributeTypeDescription的BNF形式(参见《OpenLDAP Software Administrator Guide》):

   AttributeTypeDescription = '(' whsp
         numericoid whsp              ; 属性类型标识,如例中第1行中的 1.1.2.1.100
      [ 'NAME' qdescrs ]          ; 属性类型名,如例中第1行中的 NAME 'myGraduate'
      [ 'DESC' qdstring ]          ; 内容描述,如例中第2行中的 DESC 'Student graduate school with MyLocal'
      [ 'OBSOLETE' whsp ] *
      [ 'SUP' woid ]                 ; 本属性从其它属性中派生出来的,如例中第9行 SUP myGraduate
      [ 'EQUALITY' woid              ; Matching Rule name
      [ 'ORDERING' woid              ; Matching Rule name 匹配规则名,其值在《OpenLDAP Software Administrator Guide》第九章'Commonly Used Matching Rules'表有描述
      [ 'SUBSTR' woid ]              ; Matching Rule name 如例中第3、4行
      [ 'SYNTAX' whsp noidlen whsp ] ; Syntax OID 语法的OID,其值在《OpenLDAP Software Administrator Guide》第九章'Commonly Used Syntaxes'表有描述.如例中第5
      [ 'SINGLE-VALUE' whsp ]        ; 定义本属性为单值,默认为多值
      [ 'COLLECTIVE' whsp ]       ; default not collective *
      [ 'NO-USER-MODIFICATION' whsp ]; default user modifiable
      [ 'USAGE' whsp AttributeUsage ]; default userApplications *
      whsp ')'


   AttributeUsage = * 带*号部分不知何用,望老鸟指点!!!
      'userApplications'     / *
      'directoryOperation' / *
      'distributedOperation' / ; DSA-shared *
      'dSAOperation'       ; DSA-specific, value depends on server *


以下是ObjectclassTypeDescription的BNF形式(参见《OpenLDAP Software Administrator Guide》):

       ObjectClassDescription = '(' whsp
            numericoid whsp    ; ObjectClass identifier 对象类标识,如例中22行中的 1.1.2.2.1
            [ 'NAME' qdescrs ]
            [ 'DESC' qdstring ]
            [ 'OBSOLETE' whsp ]
            [ 'SUP' oids ]    ; Superior ObjectClasses 指定上级的对象类
            [ ( 'ABSTRACT' / 'STRUCTURAL' / 'AUXILIARY' ) whsp ] 默认是'STRUCTURAL', 这三者的区别是什么,只用过'AUXILIARY',如例中第24行
            [ 'MUST' oids ]    ; 必须的属性,如例中第25行
            [ 'MAY' oids ]    ; 可选的属性,如例中第26行
            whsp ')'

说明:
以上BNF中whsp表示' '空格; numericoid是全球唯一的用点分十进制数表示的OID; qdescrs可以是一个或多个的名字;
在例子中第5行和第20行有一个{}括号括起的部分,这是指定数据
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Schema和DTD的区别,验证XLM数据合法性...
LDAP基本概念
网页上用idrop控件做个DWG文件库
OpenLDAP的Schema扩展
SNMP入门
MogDB/openGauss 故障排查思路
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服