知识准备

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相关推荐

  1. Android自定义schema,android hybird 实现:自定义schema

    android hybird 与h5 app区别 hybird 与h5 app是不一样的,以前对这两者理解有所误解,在实际开发中也并未真正采用hybird,而是使用h5+app外壳实现移动端应用.虽然 ...

  2. java url authority,Java如何解析url,包括自定义schema的url

    比如我要解析下面这个url: myscheme://admin@blog.nihao001.com:8080/index.jsp?username=asdf&password=123456&a ...

  3. 《Linux/UNIX OpenLDAP实战指南》——1.3 OpenLDAP schema概念

    本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第1章,第1.3节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1 ...

  4. 基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)

    2019独角兽企业重金招聘Python工程师标准>>> spring使用了这么长时间, 你真的了解spring bean加载的机制吗? 这个是我们项目中最常见的配置文件中的内容配置, ...

  5. 自定义你的VSCode:主题、文件图标、快捷键、设置、schema、插件

    推荐自己的专栏: 超详细VSCode安装教程(Windows) 请记住一点,VSCode中的一切快捷键操作都可以在控制面板中输入对应的命令来完成,并且常用命令还可以在菜单栏中找到,命令其实就是简单的英 ...

  6. openldap schema

    什么是schema 在openldap的目录树中,schema用来指定一个条目所包含的对象类(objectClass)以及每个对象类所包含的属性值(attribute),其中属性值又包含必要属性和可选 ...

  7. CentOS 6.9下OpenLDAP 的安装与配置

    LDAP 基础教程 LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.LDAP实现提供 ...

  8. 《LDAP》LDAP自定义objectclass和属性

    在几乎所有的 LDAP服务器中,都要根据需要扩展基本的LDAP目录的功能,创建新的对象类或者扩展现存的对象类.所有对象类都从其父对象类继承. objectClass有着严格的等级之分,最顶层是top和 ...

  9. 《Linux/UNIX OpenLDAP实战指南》——1.8 自动化运维解决方案

    本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第1章,第1.8节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1 ...

最新文章

  1. 《连线》杂志:2015年六大安全威胁预测
  2. go标准库的学习-crypto/sha1
  3. 【Groovy基础系列】 Groovy运算符
  4. [Java] 字符串
  5. Java并发学习之玩转线程池
  6. UVa 10047,独轮车
  7. 程序员面试题精选100题(55)-不用+、-、×、÷做加法[算法]
  8. linux fcitx 下载网址(亲测可用)
  9. java项目启动时登录,Java项目启动时报错解决方法
  10. [RabbitMQ]创建Java开发环境_消费者_生产者
  11. linux定时结束java进程_使用zt-exec库定时清理linux休眠进程
  12. 基于Web的浮动图片墙
  13. Ubuntu上安装gcc
  14. 大数(小于10000)N的阶乘准确值(效率)
  15. springboot集成Swagger3.0
  16. 你吃的外卖,半年前就做好了
  17. matlab 拟合光滑曲线图,Matlab光滑曲线多项式拟合与样条曲线拟合的两个案例
  18. 如何让360浏览器打开网页默认为“极速模式”
  19. 3DMAX建模教程:给模型设计逼真的发型!
  20. 干货分享:RS485通信和Modbus通信协议汇总

热门文章

  1. 服务器修改收据库密码,服务器修改收据库密码
  2. 西邮图书馆(UWP)总结
  3. java Document 删除标签
  4. Adam优化器(通俗理解)
  5. 什么是i妇,为什么有用
  6. 零基础入门JAVAweb——JDBC的封装篇
  7. 斯坦福应智韬:Graph Neural Network Applications
  8. Easyui中input标签设置只读
  9. 信息摘要算法:HMAC算法分析
  10. 我就喜欢 6大N饭永不投诚经典语录