Ladp数据库安装和配置自定义schema ,Centos7环境

news2024/11/19 16:41:22

最近安装ldap看了不少教程,整理下用到的有用的资料,并把自己的搭建过程分享。

参考

  • ldap介绍:openLDAP入门与安装

  • 官方文档:https://www.openldap.org/doc/admin22/schema.html

  • 安装配置:Centos7 搭建openldap完整详细教程(真实可用)

  • bug解决:ldap运维中遇到的问题

  • schema自定义:导入schema到openLdap window文件转为unix文件

1,安装和配置

yum 安装相关包

yum install -y openldap openldap-clients openldap-servers

拷贝数据库配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap. /var/lib/ldap/DB_CONFIG

启动服务,先启动服务,配置后面再进行修改

systemctl start slapd
systemctl enable slapd
#查看状态
systemctl status slapd

修改配置

从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。配置文件的后缀为 ldif,ldap的配置在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,需要使用ldapmodify命令进行修改。

设置用户密码,生成的加密密码后面需要用到(ldap的加密是同样的密码加密后都不一样)

slappasswd -s 123456
{SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW

开始修改,创建一个修改文件。

vim changepwd.ldif

添加内容

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW

然后执行,在执行下面的命令前,你可以先查看原本的/etc/openldap/slapd.d/olcDatabase={0}config文件,里面是没有olcRootPW这个项的,执行命令后,你再看就会新增了olcRootPW项,而且内容是我们文件中指定的值加密后的字符串

ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

备注:如果/etc/openldap/slapd.d/下cn=config/olcDatabase={0}config文件已经存在olcRootPW 使用replace
changepwd.ldif内容:

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW
ldapmodify -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

导入配置

# 我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入,
# 依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中core.ldif是默认已经加载了的,不用导入
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

修改域名

域名的信息保存在/etc/openldap/slapd.d/cn=config文件夹下
olcDatabase={1}monitor,cn=config配置中可以查看,不能直接修改。这边使用命令修改。
创建一个changedomain.ldif修改文件。

vim changedomain.ldif

比如我域名是dc=sichuan,dc=cmcc ,用户为cn=Manager,changedomain.ldif文件配置如下:

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=sichuan,dc=cmcc" read by * none
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sichuan,dc=cmcc
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sichuan,dc=cmcc
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}7j4lLAvS1mToAZpIyefQdTYqCvL0hiVa
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=sichuan,dc=cmcc" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sichuan,dc=cmcc" write by * read

执行:

ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

创建组织单元

在dc=sichuan,dc=cmcc组织下 创建Account 和Role两个组织单元:

新增cmcc.ldif文件

vim  cmcc.ldif
dn: dc=sichuan,dc=cmcc
objectClass: domain
objectClass: top
o: cmcc
dc: sichuan

dn: ou=Account,dc=sichuan,dc=cmcc
objectClass: organizationalUnit
ou: Account
description: account for cmcc

dn: ou=Role,dc=sichuan,dc=cmcc
objectClass: organizationalUnit
ou: Role
description: role for cmcc

执行命令,添加配置, 这里要注意修改域名为自己配置的域名,然后需要输入上面我们的密码(123456)

ldapadd -x -D cn=Manager,dc=sichuan,dc=cmcc -W -f cmcc.ldif

2,schema自定义格式

schema,是一个标准,定义了ldap的对象和属性,也就是ldap能够存储什么数据,数据有什么属性等。

/etc/openldap/slapd.d/cn=config/cn=schema/文件夹保存了运行使用的schema文件,我们需要生成cmcc.schema放进来。

由于ldap中的对象不满足现有需求,需要自定义对象和属性。
创建两个对象cmcc-Account和cmcc-Role
cmcc-Account对象包含Uid,accPassword ,accRole , accstatus , accReserve1 , accReserve2 , accReserveList1 , accReserveList2属性
cmcc-Role对象包含roleName, roleDesc, accReserve1 , accReserve2 , accReserveList1 , accReserveList2属性

创建cmcc.schema文件

vim cmcc.schema
attributetype ( 1.3.6.1.4.1.79145.1.2.1.2 NAME 'accPassword' 
	DESC 'accPassword' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.3 NAME 'accRole' 
	DESC 'accRole' 
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch 	
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) 

attributetype ( 1.3.6.1.4.1.79145.1.2.1.4 NAME 'accstatus' 
	DESC 'accstatus' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.5 NAME 'accReserve1' 
	DESC 'accReserve1' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.6 NAME 'accReserve2' 
	DESC 'accReserve2' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.7 NAME 'accReserveList1' 
	DESC 'accReserveList1' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.8 NAME 'accReserveList2' 
	DESC 'accReserveList2' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.9 NAME 'roleName' 
	DESC 'roleName' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.10 NAME 'roleDesc' 
	DESC 'roleDesc' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 

objectclass ( 1.3.6.1.4.1.79145.1.2.2.1 NAME 'cmcc-Account' 
	DESC 'a cmcc-Account' 
	SUP top STRUCTURAL 
	MUST ( uID ) 
	MAY ( accPassword $ accRole $ accstatus $ accReserve1 $ accReserve2 $ accReserveList1 $ accReserveList2 ) ) 

objectclass ( 1.3.6.1.4.1.79145.1.2.2.2 NAME 'cmcc-Role' 
	DESC 'a cmcc-Role' 
	SUP top STRUCTURAL 
	MUST ( roleName ) 
	MAY ( roleDesc $ accReserve1 $ accReserve2 $ accReserveList1 $ accReserveList2 ) ) 

将cmcc.schema文件放到/etc/openldap/schema

在tmp文件夹 创建schema文件夹
创建convert.conf文件,在末尾加入cmcc.schema

cd /tmp
mkdir schema
vim convert.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include	/etc/openldap/schema/cmcc.schema

生成ldap信息文件

slaptest -f /tmp/convert.conf -F /tmp/schema 

给ldap添加生成的cmcc.ldif文件

cp /tmp/schema/cn\=config/cn\=schema/cn\=\{12\}cmcc.ldif /etc/openldap/slapd.d/cn\=config/cn\=schema/

#给ldap 添加权限
cd /etc/openldap/slapd.d/cn=config/cn=schema/
chown ldap:ldap cn\=\{12}cmcc.ldif

重启

ps aux | grep ldap
kill -9 pid

//启动
systemctl start slapd

//状态
systemctl status slapd

3,连接ldap数据库效果

我使用的window版LdapAdmin.exe 连接的ldap。
查看自定义schema是否成功,可以点击Tools->schema 查看object classes 和Attribue Types中是否存在。

登陆界面:
在这里插入图片描述
组织结构:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/898282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++之模板进阶

模板进阶 非类型模板参数模板的特化概念函数模板特化类模板特化全特化偏特化 模板分离编译什么是分离编译模板的分离编译解决方法 模板总结 非类型模板参数 模板参数分两种:类型形参与非类型形参。 类型形参:出现在模板参数列表中,跟在class…

LeetCode--HOT100题(35)

目录 题目描述:23. 合并 K 个升序链表(困难)题目接口解题思路1代码解题思路2代码 PS: 题目描述:23. 合并 K 个升序链表(困难) 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合…

STM32单片机蓝牙-APP全自动洗衣机水位检测洗涤脱水排水

实践制作DIY- GC0164--蓝牙-APP全自动洗衣机水位检测 基于STM32单片机设计---蓝牙-APP全自动洗衣机水位检测 二、功能介绍: 硬件组成:STM32F103C单片机最小系统LCD1602显示器 1个5V直流电机(低速洗衣高速脱水)1个加水电磁阀1个排水…

Windows下打包工具包为一个exe

1. 目的 很多时候,一个工具包有除了一个exe还有不少配置文件及dll库。如果只想给客户发布一个exe,要怎么办呢?使用静态编译,不使用dll,将资源编译到exe中,使用时再释放出来。这种方法比较麻烦,…

ZK-C3595、ZK-C35100、ZK-C40100、ZK-C40110超越离合器

ZK-A3072、ZK-A3080、ZK-A4090、ZK-A3595、ZK-A35100ZK-A40100、ZK-A40110、ZK-A3072、ZK-C3080、ZK-C4090、ZK-C3595、ZK-C35100、ZK-C40100、ZK-C40110单向离合器(超越离合器) MG300M1300MG400、M1400MG500、M1500MG600、M1600MG700、M1700MG750、M1750MG800、M1800MG900、M1…

NLP的tokenization

GPT3.5的tokenization流程如上图所示,以下是chatGPT对BPE算法的解释: BPE(Byte Pair Encoding)编码算法是一种基于统计的无监督分词方法,用于将文本分解为子词单元。它的原理如下: 1. 初始化:将…

No accessible constructors were found for the type‘XXXXXX‘

abp框架新建了一个模版项目,启动报错。 //报错实例 Autofac.Core.Activators.Reflection.NoConstructorsFoundException:“No accessible constructors were found for the type weigu.Admin.Order.OrderHuizongAppService.”报错意思是没有为’ weight.admin.orde…

骑行运动耳机哪款好?五年骑行爱好者给你分享分享

作为一名骑行达人,我尝试过多种骑行耳机,有入耳式、耳罩式、骨传导等等,但总有一款让我特别满意。直到我遇到了这几款耳机,它不仅音质出色,而且非常适合骑行,让我爱不释手。下面,我将分享一下这…

渗透测试之逻辑漏洞

文章目录 一、支付漏洞1.修改附属值2.多重替换支付3.重复支付4.最小额支付5.最大值支付6.越权支付7.无限制试用8.多线程并发9.支付漏洞思路 二、密码找回漏洞1.本地验证绕过2.利用session重新绑定客户3.去掉验证参数绕过4.总结 三、短信验证码绕过1.短信验证码生命期限内可暴力…

unity 之 Vector 数据类型

文章目录 Vector 1Vector 2Vector 3Vector 4 Vector 1 在Unity中,Vector1 并不是一个常见的向量类型。 如果您需要表示标量(单个值)或者只需要一维的数据,通常会直接使用浮点数(float)或整数(in…

安卓手机跑 vins slam (2)

既然选择把vins的代码移植到新工程,那么就需要先确定自己电脑的Android Studio的C开发环节是OK的,可以通过创建C的示例工程,能正常跑通做验证。 选择Native C 需要选择用C哪个版本, 这里通过百度搜索,slam 编译需要C 1…

边缘智能初创公司AiM Future成功完成A轮投资

AiM Future是一家总部在韩国专注于边缘AI加速技术的公司,最近完成了A轮融资。在融资环境不是那么友好的情况下,还能完成融资还是很厉害的,可以来了解一下这个公司最新融资情况。以下为官方新闻稿。 新闻亮点: AiM Future 获得数百…

Richtek(立锜)车载PD快充产品常见问题解答—兼具 USB PD 和 UFCS 快充电源完整解决方案

1 我的Switch游戏机能不能用最新的PD协议? 可以的,PD最新协议都兼容旧协议 2 PD协议向下兼容吗? 是的,PD3.1也是向下兼容的 3 UFCS协议目前用什么仪器测试? 谢谢。 目前RICHTEK有协议测试工具,中国UFCS协…

操作系统的体系结构、内核、虚拟机

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 操作系统结构 一、操作系统体系结构1.1操作系统的内核1.1.…

一些常用的CSDN 设置命令、插入目录、改变字体颜色等

文章目录 字体颜色显示调节插入图片大小图片居中 字体颜色显示 字体两边加 调节插入图片大小 注意下边多一个600x600,等号前边有个空格 在这里插入图片描述](https://img-blog.csdnimg.cn/5a0d3d2d37cf481db0e1346432be3da1.png [在这里插入图片描述](https://img-…

Win10远程桌面出现“身份验证错误,CredSSP加密数据库修正

1、进入注册表(家庭版解决方法) winR 进入运行,输入 regedit 打开注册表 2、编辑注册表 打开如下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 新建项:CredSSP 再在CredSSP底下新建项&am…

计算机视觉的应用11-基于pytorch框架的卷积神经网络与注意力机制对街道房屋号码的识别应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用11-基于pytorch框架的卷积神经网络与注意力机制对街道房屋号码的识别应用,本文我们借助PyTorch,快速构建和训练卷积神经网络(CNN)等模型,…

嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化

前言 (1)在嵌入式程序设计中,我们常常会要对各类传感器进行数据存储。大多时候的传感器,例如红外光传感器,返回的数据要么是0,要么是1。因此,只需要一bit就能够存储。而很多人却常常使用char型数…

Python中的“ @”

一、介绍 这是Python装饰器的语法,使用符号,表示将装饰器函数放在被装饰函数的上方。当调用被装饰函数时,实际上是调用了装饰器函数,装饰器函数可以在调用被装饰函数之前或之后执行一些额外的操作。 #funA 作为装饰器函数 def f…

慎用!澳洲留学生用ChatGPT写论文被控学术不端!AI论文漏洞百出,各高校已加强捡测!

自从进入ChatGPT时代以来,留学生们纷纷表示写作业,so easy。留学生们在用AI写论文时候没有预计到的是,ChatGPT存在杜撰文献的问题,并且学校已经在使用AI检测工具。 目前全澳大多数大学都可以选择使用现在很流行的反剽窃软件服务T…