dn行类似于关系数据库中一条记录的关键字,不能与其他dn重复。一个LDIF文件中可以包含多个条目,每个条目之间用一个空行分隔。
例如,以下内容组成一个条目:
1: dn: dc=app1, dc=com
2: objectclass: top
3: objectclass: dcobject
4: objectclass: organization
5: dc: app1
6: o: swust
在以上文本中,各行含义如下:
● 第1行的dn定义该条目的标识。
● 第2~4行定义该条目的objectcCass,可以定义多个属性,如上面代码中定义了3个objectClass。条目的属性根据objectClass的不同而不同,有的objectClass有必须设置的属性。在2~4行的3个objectClass中,top没有必须定义的属性,dcobject必须定义属性dc,用来表示一个域名的部分,而organization必须定义属性o,用来表示一个组织的名称。
● 根据objectClass的要求,第5、6行分别定义属性dc和属性o的值。
● 这里只是ldif文件的首部,如果就这样定义仍然无法成功创建,必须接着定义至少一个条目才能成功导入LDAP Browser中。
2.了解objectClass
LDAP中,一个条目必须包含一个j结构型的objectClass
objectClass有着严格的等级之分,最顶层是top和alias。例如,organizationalPerson这个objectClass就隶属于person,而person又隶属于top。
objectClass可分为以下3类:
● 结构型(Structural):如person和organizationUnit;
● 辅助型(Auxiliary):如extensibeObject;
● 抽象型(Abstract):如top,抽象型的objectClass不能直接使用。
在OpenLDAP的schema中定义了很多objectClass,下面列出部分常用的objectClass的名称。
● account
● alias
● dcobject
● domain
● ipHost
● organization
● organizationalRole
● organizationalUnit
● person
● organizationalPerson
● inetOrgPerson
● residentialPerson
● posixAccount
● posixGroup
3.了解Attribute
属性(Attribute)类似于程序设计中的变量,可以被赋值。在OpenLDAP中声明了许多常用的Attribute(用户也可自己定义Attribute)。常见的Attribute含义如下:
1 c:国家。
● cn:common name,指一个对象的名字。如果指人,需要使用其全名。
● dc:domain Component,常用来指一个域名的一部分。
● givenName:指一个人的名字,不能用来指姓。
● l:指一个地名,如一个城市或者其他地理区域的名字。
● mail:电子信箱地址。
● o:organizationName,指一个组织的名字。
● ou:organizationalUnitName,指一个组织单元的名字。
● sn:surname,指一个人的姓。
● telephoneNumber:电话号码,应该带有所在的国家的代码。
● uid:userid,通常指某个用户的登录名,与Linux系统中用户的uid不同。
提示:objectClass是一种特殊的Attribute,它包含其他用到的Attribute以及其自身。
对于不同的objectClass,通常具有一些必设属性值和一些可选属性值。例如,可使用person这个objectClass来表示系统中一个用户的条目,对于系统中用户通常需要有这样一些信息:姓名、电话、密码、描述等。如图14-6所示,对于person,通过cn和sn设置用户的名和姓,这是必须设置的,而其他属性则是可选的。
图14-6 objectClass属性
下面列出部分常用objectClass要求必设的属性。
● account:userid。
● organization:o。
● person:cn和sn。
● organizationalPerson:与person相同。
● organizationalRole:cn。
● organizationUnit:ou。
● posixGroup:cn、gidNumber。
● posixAccount:cn、gidNumber、homeDirectory、uid、uidNumber。
4.创建LDIF文件
对以上内容有一定了解之后,就可以编写输入LDIF文件,编辑需要向目录数据库添加的条目了。
下面根据如图14-7所示的结构,创建LDIF文件wyh.com.ldif。
图14-7 目录的树形结构
对图14-7进行分析,该目录结构分为3层,有4个结点。根据图14-7可创建LDIF文件如下:
提示:每个结点可用一个dn表示,对于每个结点,又可继续添加新的结点。如在根结点中可添加其他部门ou,在ou=managers结点也可继续添加其他管理人员的信息。
dn: dc=app1,dc=com
objectclass: top
objectclass: dcobject
objectclass: organization
dc:app1
o:swust
dn: o=swust,dc=app1,dc=com
objectclass: organization
o: swust
dn: ou=Developer,o=swust,dc=app1,dc=com
objectclass: organizationalUnit
ou: Developer
dn: cn=chen yixing,ou=Developer,o=swust,dc=app1,dc=com
objectclass: person
sn:yixing
cn:chen yixing
dn: ou=Tester,o=swust,dc=app1,dc=com
objectclass: organizationalUnit
ou: Tester