OpenLDAP自定义Schema
知识准备
Schema是LDAP的一个重要组成部分,类似于数据库的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,比如一个 objectclass会有哪些属性,这些属性又是什么结构等等,schema给LDAP服务器提供了LDAP目录中类别,属性等信息的识别方式,让这些 可以被LDAP服务器识别。
在LDAP的schema中,有四个重要的元素:
1. Objectclass
objectclass定义了一个类别,这个类别会被不同的目录(在LDAP中就是一个Entry)用到,它说明了该目录应该有哪些属性,哪些属性是必须 的,哪些又是可选的。一个objectclass的定义包括名称(NAME),说明(DESC),类型(STRUCTURAL或AUXILARY ,表示是结构型的还是辅助型的),必须属性(MUST),可选属性(MAY)等信息。
2. Attribute
attribute就是一个上面objectclass中可能包含的属性,对其的定义包括名称,数据类型,单值还是多值以及匹配规则等。后面用具体的例子来说明。
3. Syntax
syntax是LDAP中的“语法”,其实就是LDAP中会用到的数据类型和数据约束,这个语法是遵从X.500中数据约束的定义的。其定义需要有一个ID(遵从X.500)以及说明(DESP)
4. Matching Rules
是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配
很多常用schema的定义都在了RFC2252中,LDAP服务器都应该支持这些基本的schema。下面进行定义自己的schema。
正文
1.创建新的schema文件
创建目录
mkdir testSchema
创建schema文件
cd testSchema
//新建schema文件
vim test.schema
编辑schema文件
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)objectclass ( 1.3.6.1.4.1.42.2.27.4.2.133
NAME 'personExt'
DESC 'personExt'
SUP top
AUXILIARY
MAY ( cn $ idCard $ sex ))
根据我们添加的schema,
attributetype的第一项为oid,oid必须唯一
name表示属性名称
desc是说明
SYNTAX是表示字段的数据类型,1.3.6.1.4.1.1466.115.121.1.15表示字符类型,可在ldap admin上查看
SINGLE-value表示这个属性只有一个值,有些属性可以有多个值,比如联系地址等。默认的话,是多值的。
2.创建编译用的配置文件
vim test.conf
#内容
include /home/song/testSchema/test.schema
3.执行slaptest命令编译自定义的schema,生成.ldif等文件
slaptest -f test.conf -F /home/song/testSchema
slaptest命令是把test.conf的内容转成ldif格式
4.修改ldif文件
找到/ testSchema/cn=config/cn=schema/cn={0}test.ldif文件
修改文件名
mv cn=config/cn=schema/cn={0}test.ldif cn=config/cn=schema/personExt.ldif
修改文件内容
vim cn=config/cn=schema/personExt.ldif
修改dn和cn
5.执行slapadd命令,将该文件添加进OpenLDAP库
slapadd -l cn=config/cn=schema/personExt.ldif -n 0
如果提示报错,报错原因可能是oid冲突,需要按上面步骤重新编译
6.文件赋权并重启slapd服务
chmod -R 777 /etc/openldap/slapd.d/cn=config/cn=schemasystemctl restart slapd
至此,自定义的schema已生效
7.通过LDAP admin工具查看并添加
选择一个用户进行编辑
找到我们新增的personExt
右边进行编辑对应的属性
8.删除修改自定义的schema
目前没找到直接命令修改或删除相应的schema,暴力点的方式为直接删除对应的.ldif文件,如
rm -r /etc/openldap/slapd.d/cn\=config/cn=schema/cn={15}wtcertserial.ldif
重启slapd服务
systemctl restart slapd
删除后重新导入修改后的schema即可
9.自定义数据关联自带的schema
上面创建的schema格式算是独立的schema。我们也可以创建继承现有的objectclass或现有的attribute
如
objectclass ( 1.3.6.1.4.1.42.2.27.4.2.136
NAME 'wtCertSerial'
DESC 'certificate serialNumber'
SUP top
AUXILIARY
MAY ( serialNumber ))
这是自定义的一个objectclass,包含一个serialNumber,这个属性是在core.ldif中定义的,生成配置文件的时候我们需要包含core.schema,不然按照上面的步骤生成ldif文件会报错serialNumber未定义。
即上文第二步编辑配置文件中,在include自定义文件之前先include ./core.chema,就想c语言要调用某个库需要包含头文件一样,并把core.schema文件复制到当前目录,core.schema在/etc/openldap/schema,其他自带的schema也是在这个目录下
接下来的步骤和上面一样。
实际使用中,根据自己定义的schema用到的objectclass和attribute,找到对应的现有的schema文件,进行包含编译
参考文章:
https://www.cnblogs.com/ForsakenCoder/p/12149910.html
OpenLDAP自定义Schema相关推荐
- Android自定义schema,android hybird 实现:自定义schema
android hybird 与h5 app区别 hybird 与h5 app是不一样的,以前对这两者理解有所误解,在实际开发中也并未真正采用hybird,而是使用h5+app外壳实现移动端应用.虽然 ...
- java url authority,Java如何解析url,包括自定义schema的url
比如我要解析下面这个url: myscheme://admin@blog.nihao001.com:8080/index.jsp?username=asdf&password=123456&a ...
- 《Linux/UNIX OpenLDAP实战指南》——1.3 OpenLDAP schema概念
本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第1章,第1.3节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1 ...
- 基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)
2019独角兽企业重金招聘Python工程师标准>>> spring使用了这么长时间, 你真的了解spring bean加载的机制吗? 这个是我们项目中最常见的配置文件中的内容配置, ...
- 自定义你的VSCode:主题、文件图标、快捷键、设置、schema、插件
推荐自己的专栏: 超详细VSCode安装教程(Windows) 请记住一点,VSCode中的一切快捷键操作都可以在控制面板中输入对应的命令来完成,并且常用命令还可以在菜单栏中找到,命令其实就是简单的英 ...
- openldap schema
什么是schema 在openldap的目录树中,schema用来指定一个条目所包含的对象类(objectClass)以及每个对象类所包含的属性值(attribute),其中属性值又包含必要属性和可选 ...
- CentOS 6.9下OpenLDAP 的安装与配置
LDAP 基础教程 LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.LDAP实现提供 ...
- 《LDAP》LDAP自定义objectclass和属性
在几乎所有的 LDAP服务器中,都要根据需要扩展基本的LDAP目录的功能,创建新的对象类或者扩展现存的对象类.所有对象类都从其父对象类继承. objectClass有着严格的等级之分,最顶层是top和 ...
- 《Linux/UNIX OpenLDAP实战指南》——1.8 自动化运维解决方案
本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第1章,第1.8节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1 ...
最新文章
- 《连线》杂志:2015年六大安全威胁预测
- go标准库的学习-crypto/sha1
- 【Groovy基础系列】 Groovy运算符
- [Java] 字符串
- Java并发学习之玩转线程池
- UVa 10047,独轮车
- 程序员面试题精选100题(55)-不用+、-、×、÷做加法[算法]
- linux fcitx 下载网址(亲测可用)
- java项目启动时登录,Java项目启动时报错解决方法
- [RabbitMQ]创建Java开发环境_消费者_生产者
- linux定时结束java进程_使用zt-exec库定时清理linux休眠进程
- 基于Web的浮动图片墙
- Ubuntu上安装gcc
- 大数(小于10000)N的阶乘准确值(效率)
- springboot集成Swagger3.0
- 你吃的外卖,半年前就做好了
- matlab 拟合光滑曲线图,Matlab光滑曲线多项式拟合与样条曲线拟合的两个案例
- 如何让360浏览器打开网页默认为“极速模式”
- 3DMAX建模教程:给模型设计逼真的发型!
- 干货分享:RS485通信和Modbus通信协议汇总