openLdap扩展用户信息之自定义objectClass

1.创建新的schema文件

1.1 创建自己的目录

mkdir /etc/openldap/my

1.2 创建schema文件personExt.schema

cd /etc/openldap/my

vim personExt.schema

1.3 编辑personExt.schema文件

attributetype:类属性定义

必须确保每个项的oid全局唯一 如:2.16.840.1.113730.3.1.902

1.3.6.1.4.1.1466.115.121.1.15 为字符串类型的语法

#身份证
attributetype ( 2.16.840.1.113730.3.1.902
  NAME 'idCard'
  DESC 'the id of person'
  EQUALITY caseExactMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
  SINGLE-VALUE )

#性别  
attributetype ( 2.16.840.1.113730.3.1.903
  NAME 'sex'
  DESC 'the sex of person'
  EQUALITY caseExactMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
  SINGLE-VALUE)

#personExt
objectclass	( 1.3.6.1.4.1.42.2.27.4.2.88
    NAME 'personExt'
	DESC 'personExt'
    SUP top
    AUXILIARY
	MAY ( cn $ idCard $ sex ))

2:创建编译用的配置文件,例如ext.conf

[root@xxx my]# vim ext.conf 

include /etc/openldap/my/personExt.schema

3. 执行slaptest命令编译自定义的schema,生成ldif等文件

slaptest -f ext.conf -F /etc/openldap/my

4. 修改ldif文件

进入etc/openldap/my目录下的cn=config/cn=schema目录下可以看到生成的一个ldif文件。此时重命名该文件personext.ldif,并修改其中的cn和dn。(ldif文件中对空格等元素有严格要求,请不要额外添加空格等其他不必要的元素)

cd /etc/openldap/my/cn\=config/cn\=schema

cat personext.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 82df3bb8
dn: cn=personext,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: personext
olcAttributeTypes: {0}( 2.16.840.1.113730.3.1.902 NAME 'idCard' DESC 'the id
  of person' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SI
 NGLE-VALUE )
olcAttributeTypes: {1}( 2.16.840.1.113730.3.1.903 NAME 'sex' DESC 'the sex o
 f person' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SING
 LE-VALUE )
olcObjectClasses: {0}( 1.3.6.1.4.1.42.2.27.4.2.88 NAME 'personExt' DESC 'per
 sonExt' SUP top AUXILIARY MAY ( cn $ idCard $ sex ) )
structuralObjectClass: olcSchemaConfig
entryUUID: 1959ae8c-3443-103a-8a17-3f6499b48a02
creatorsName: cn=config
createTimestamp: 20200527085211Z
entryCSN: 20200527085211.695732Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20200527085211Z

openLdap扩展用户信息之自定义objectClass_第1张图片

5.执行slapadd命令,将该文件添加进OpenLdap库

slapadd -l personext.ldif -n 0

如下图所示即为成功,需要注意是否有提示属性重复或者oid重复,如果提示报错需要修改schema后再次编译。

较为常见的错误是提示你属性重复或者oid重复,此时最好重新修改schema文件然后再次编译。

6.以上步骤完成后可以在/etc/openldap/slapd.d/cn=config/cn=schema路径下看到自己新添加的objectclass对应的ldif文件了

openLdap扩展用户信息之自定义objectClass_第2张图片

7.文件赋权并重启ldap服务

直接重启服务会报错,需要给/etc/openldap/slapd.d/cn=config/cn=schema赋权或直接修改文件所有者为ldap,否则用户ldap无法读取

cd /etc/openldap/slapd.d/cn=config/cn=schema
chmod -R 777 cn=schema
systemctl restart slapd

至此,自定义的objectClass已经生效

8.删除自定义的objectClass

移除/etc/openldap/slapd.d/cn=config/cn=schema下personext.ldif文件,并重启opldap服务即可

你可能感兴趣的:(ldap)