如果要定义person 类型,需要定义顶级为top,并且必须定义sn 和cn 两个属性,还可以附加userPassword、telephoneNumber、seeAlso、description 4 个属性值。邮件地址、国家等属性不可以定义,除非读者添加相关的objectClass 条目,否则提示相关属性不允许添加。
objectClass 案例分析示例2
1 2 3 4 5 6 7 8 9
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 的属性信息。
2、属性概述
属性(Attribute)在目录树中主要用于描述条目相关信息,例如用户条目的用途、联系方式、邮件、uid、gid、公司地址等辅助信息。属性由objectClass 所控制,一个objectClass 的节点具有一系列Attribute,Attribute 可以理解为Linux 系统当中的变量,每个变量都有对应的值,OpenLDAPAttribute 也是有对应的值。这些属性的对应值表示每个对象的特点,但有些属性在添加时是必须指定的,有些属性是非必要的(类似于条目更详细的描述)。在目录树中常用的Attribute 有uid、sn、giveName、I、objectClass、dc、ou、cn、mail、telephoneNumber、c 等。
属性(Attribute)类似于程序设计中的变量,可以被赋值。在OpenLDAP中声明了许多常用的Attribute(用户也可自己定义Attribute)。常见的Attribute含义如下:
c:国家。
cn:common name,指一个对象的名字。如果指人,需要使用其全名。
dc:domain Component,常用来指一个域名的一部分。
givenName:指一个人的名字,不能用来指姓。
l:指一个地名,如一个城市或者其他地理区域的名字。
mail:电子信箱地址。
o:organizationName,指一个组织的名字。
ou:organizationalUnitName,指一个组织单元的名字。
sn:surname,指一个人的姓。
telephoneNumber:电话号码,应该带有所在的国家的代码。
uid:userid,通常指某个用户的登录名,与Linux系统中用户的uid不同。
九、LDIF 详解
1、LDIF 用途
LDIF(LDAP Data Interchanged Format)的轻量级目录访问协议数据交换格式的简称,是存储LDAP 配置信息及目录内容的标准文本文件格式,之所以使用文本文件来存储这些信息是为了方便读取和修改,这也是其他大多数服务配置文件所采取的格式。通常用来交换数据并在OpenLDAP服务器之间互相交换数据,并且可以通过LDIF 实现数据文件的导入、导出以及数据文件的添加、修改、重命名等操作,这些信息需要按照LDAP 中schema 的规范进行操作,并会接受schema 的检查,如果不符合OpenLDAP schema 规范要求,则会提示相关语法错误。
2、LDIF 文件特点
LDIF 文件每行的结尾不允许有空格或者制表符。
LDIF 文件允许相关属性可以重复赋值并使用。
LDIF 文件以.ldif 结尾命名。
LDIF 文件中以#号开头的一行为注释,可以作为解释使用。
LDIF 文件所有的赋值方式为:属性:[空格]属性值。
LDIF 文件通过空行来定义一个条目,空格前为一个条目,空格后为另一个条目的开始。
3、LDIF 格式语法
LDIF 文件存取OpenLDAP 条目标准格式:
1 2 3 4
# 注释,用于对条目进行解释 dn:条目名称 objectClass(对象类): 属性值 objectClass(对象类): 属性值 ……
LDIF 格式样例如下:
1 2 3 4 5 6 7 8 9 10 11
dn: uid=water,ou=people,dc=wzlinux,dc=com #DN 描述项,在整个目录树上为唯一的 objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: person objectClass: inetOrgPerson objectClass: hostObject sn: Wang cn: WangZan telephoneNumber:xxxxxxxxxxx mail: xxxx@126.com
注:冒号后面有一个空格,然后才是属性的值,schema 规范定义要求很严格。