OpenLDAP中schema 的简单设计

schema 在 openldap 中是作为定义数据结构的描述工具,但是定义规则比较复杂,在这里简单的讨论一下相关的内容。

一般来说如果要使用到一组schema时我们都需要在slapd.conf中定义,例如下面的配中置将会加载三组schema配置。

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema

如果需要定义自己数据结构或者在已有的ldap 对象上添加属性可以通过定义自己ldif信息文件来添加

dn: cn={2}inetorgperson,cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: ( 2.16.840.1.113731.3.1.242 NAME 'enable' DESC 'freeze status' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: ( 2.16.840.1.113731.3.1.243 NAME 'first-name' DESC 'account first name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: ( 2.16.840.1.113731.3.1.244 NAME 'last-name' DESC 'account last name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: ( 2.16.840.1.113731.3.1.245 NAME 'language' DESC 'account language' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: ( 2.16.840.1.113731.3.1.246 NAME 'timezone' DESC 'account timezone' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )

dn: cn={2}inetorgperson,cn=schema,cn=config
changetype: modify
replace: olcObjectClasses
olcObjectClasses: ( 2.16.840.1.113731.3.2.2 NAME 'inetOrgPerson' DESC 'RFC2
 798: Internet Organizational Person' SUP organizationalPerson STRUCTURAL MAY 
 ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ em
 ployeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ ini
 tials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo 
 $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ pre
 ferredLanguage $ userSMIMECertificate $ userPKCS12 $ enable $ first-name $ last-name
 $ language $ timezone ) )

例如,在这一段定义定义中就向inetorgperson 对象添加 enable、first-name、last-name、language、timezone五个属性。这里简单的以enable属性来介绍定义的含义

名称 示例 说明
OID 2.16.840.1.113731.3.1.242 类型或属性描述唯一标识
属性名 NAME ‘enable’ 类型或属性名称
属性描述 DESC ‘freeze status’ 简单的属性说明
属性约束条件 EQUALITY caseIgnoreMatch 保证属性内容正确的验证方式
属性类型定义 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 值类型的定义
存储方式 SINGLE-VALUE 属性可以多值或单值的定义

定义ObjectClasses的方式与AttributeTypes的方式类似这里不再赘述。

在定义好用户信息的方式后就可以使用ldapmodify将定义更新到openldap的config环境中,一般这里都是用的cn=admin,cn=config帐号

ldapmodify -D "cn=admin,cn=config" -w password -x -f $SLAPD_DIR/ldif/inetorgperson_add.ldif

以上就完成了向OpenLdap中添加自定义属性的工作,如果有更多需求可以参考OpenLdap官方相关的文档

猜你喜欢

转载自blog.csdn.net/bigcat133/article/details/77581452