Ldap自定义Schema

Ldap自定义Schema

1.创建 schema 文件

新建一个目录,用于存放 schema 文件

mkdir /schemaTest

创建 schema 文件

cd /schemaTest
//新建 schema 文件
vim demo.schema

编辑 schema 文件

attributetype ( 
    2.16.840.1.113730.3.1.970
    NAME 'usid'
    DESC '用户 ID'
    EQUALITY caseExactMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )
attributetype ( 
    2.16.840.1.113730.3.1.971
    NAME 'dnn'
    DESC 'LDAP DN'
    EQUALITY caseExactMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )
objectClass (
    2.5.6.47
    NAME 'demo'
	DESC 'demo schema'
	AUXILIARY
	MUST ( usid )
	MAY ( dnn ))
#说明
#attribute的第一行为 attribute 的 oid,oid 必须全局唯一;同理,objectclass的oid也需全局唯一
#第二行NAME为 attribue 的名称
#第三行DESC为 attribute 的描述信息
#第四行EQUALITY为字段匹配规则
#第五行SYNTAX为约束该字段的数据类型,类比于Java"String var"中的"String" 
#第六行SINGLE-VALUE表示该attribute字段值唯一

【注意】attribute和objectClass的oid要定义成全局唯一,不可与系统中或其他自定义字段重复!

2.创建编译用的配置文件

vim test.conf
#内容
include /schemaTest/demo.schema

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

#执行slapetest命令,生成ldif文件
slaptest -f test.conf -F /schemaTest

执行结果如下,即为编译成功

在这里插入图片描述

【注意】如果schema中定义了与系统默认的attribute,会产生冲突,弹出 attributetype: Inconsistent duplicate attributeType: “xx”,解决方式见问题1

4.修改ldif文件

找到/schemaTest/cn=config/cn=schema文件夹下cn={num}demo.ldif文件

cd /schemaTest/cn=config/cn=schema

修改num最大的cn={num}demo.ldif文件名称【当前未在第二步中引入其他schema文件,因此最大num为0】

mv cn={0}demo.ldif demo.ldif

修改demo.ldif文件中的内容

vim demo.ldif

修改红框中两个字段的值

在这里插入图片描述

修改后(cn与objectclasss的name保持一致):

在这里插入图片描述

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

slapadd -l demo.ldif -n 0

在这里插入图片描述

如图所示,即为添加成功!

添加成功后,可在/etc/ldap/slap.d/cn=config/cn=schema文件夹下看到新生成的ldif文件

在这里插入图片描述

若弹出 value #0 olcAttributeTypes: Inconsistent duplicate attributeType: “xx”,解决方式见问题2
在这里插入图片描述

6.重启slapd服务

文件夹赋权

chmod -R 777 /etc/ldap/slap.d/cn=config/cn=schema

重启

#ctrl+p+q退出docker
#重启openldap容器
docker restart openLdap

7.通过Apache Directory Studio工具查看并添加

在这里插入图片描述

搜索demo,即可发现新增的ObjectClass

若搜索后不见新增的ObjectClass,且/etc/ldap/slap.d/cn=config/cn=schema文件夹下确实新增了对应的ldif文件,见问题3

问题

1.attributetype: Inconsistent duplicate attributeType: “xx”

与系统默认的attribute重复,产生冲突,例如字段"name"

在这里插入图片描述

若产生冲突,则不必重复定义该attribute,直接在objectclass中使用该字段即可

例:

#attributetype ( 
#    2.16.840.1.113730.3.1.920
#    NAME 'name'
#    DESC '用户姓名'
#    EQUALITY caseExactMatch
#    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
#    SINGLE-VALUE )
objectClass (
    2.5.6.47
    NAME 'user'
	DESC 'Users'
	AUXILIARY
	MUST ( name ))

2.value #0 olcAttributeTypes: Inconsistent duplicate attributeType: “xx”

这个问题是与其他schema中文件定义的attribute重复(如core.schema),产生冲突

不必重复定义该attribute,需引入重复字段对应的schema文件,在demo.schema中直接使用即可

例如 “street” 在core.schema中已经定义

则test.conf应改为:

include /etc/ldap/schema/core.schema
include /schemaTest/demo.schema

然后在demo.schema中即可直接使用street attribute

3.添加到OpenLDAP库后,检索不到新增的ObjectClass

若搜索后不见新增的ObjectClass,且/etc/ldap/slap.d/cn=config/cn=schema文件夹下确实新增了对应的ldif文件

卸载低版本的Apache Directory Studio

安装高版本的JDK与其对应的Apache Directory Studio

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值