Linux 安装并配置 OpenLDAP 新编(3)YUM安装

2023-05-16

Linux 安装并配置 OpenLDAP 新编(3)YUM安装

我实操OpenLDAP的过程,是先根据官网资料编译安装,大约花费了近2周时间,也有点陷入牛角尖了,一时不得出。后来加了一个群,经过提醒发现了配置文件中的不同,但是依旧不得其果,最终还是自行再折腾了几遍YUM方式的安装,终于才对比发现了一些问题所在,同时也进一步了解了更多内容,知其所以然~~

注意!注意!注意!
根据官方信息来说,2.4不再推荐使用,2.5为LTS版本,2.6为特性版本。因此虽然本章为了省事是基于2.4编写的,仅用于研究,依旧不建议在生产环境中部署了。

安装

前往symas选择对应OpenLDAP版本在相应OS中的repo仓库文件。

symas同时还提供了一些第三方库,可根据具体情况决定是否安装。

wget -q https://repo.symas.com/configs/SOFL/rhel8/sofl.repo -O /etc/yum.repos.d/sofl.repo
yum update
yum install symas-openldap-servers
systemctl start slapd

再次回到那句老话 设定先行! ,这里什么叫设定先行?

  • openldap-clients : 我并没有安装 symas 提供的客户端,安装的是系统自带的客户端,当前版本为:2.4.46;
  • 同为 symas 提供的源,2.42.52.6 的安装过程略有不同,2.52.6 安装后要先配置,否则无法启动。切记!切记!切记!
  • 理论上,2.52.6 在启动前的配置方法,应该和源码安装后的配置是一样的,这里 未实测

默认配置

如上所说,对于 OpenLDAP2.4 来说,安装后直接启动即会成功运行服务。然鹅……上一章所谓带着问题的问题是什么?我们要操作的DN是什么?密码是什么?

身份验证

上章的结尾,提到使用 SASL 机制添加前面创建的条目时会提示没有写入权限,现在我们利用前面的文件再试一下:

ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_group.ldif
# 一般会返回如下结果
adding new entry "ou=group,dc=example,dc=com"
ldap_add: Server is unwilling to perform (53)
	additional info: no global superior knowledge

诶?先不要管具体的错误原因,但至少身份验证很显然是通过了,这是为什么呢?

目录结构

还记得之前编译安装的2.5,配置存储目录在哪里么?在 /usr/local/etc/slapd.d/ ,那么通过yum安装的,对应的目录在哪里呢?在: /etc/openldap/slapd.d/ 。使用 tree 命令输出该目录中的内容:

tree /etc/openldap/slapd.d
# 返回结果
/etc/openldap/slapd.d
├── cn=config
│   ├── cn=schema
│   │   └── cn={0}core.ldif
│   ├── cn=schema.ldif
│   ├── olcDatabase={0}config.ldif
│   ├── olcDatabase={-1}frontend.ldif
│   ├── olcDatabase={1}monitor.ldif
│   └── olcDatabase={2}mdb.ldif
└── cn=config.ldif

除了根目录不一致,可以看到目录中还多了一个名为: olcDatabase={1}monitor.ldif 的配置文件。我们现在尚处于不知其所以然的层次,因此可以先不管各个文件是干什么的,目前只需要关注: olcDatabase={0}config.ldifolcDatabase={2}mdb.ldif 这两个文件。

{0}config.ldif

这个配置文件中,最重要的是这一行:

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" manage by * none

该配置指令,涉及到了 OpenLDAP 的进阶知识 Access Control 。我们暂且不做深入展开,只需记得:

此配置项决定了客户端可以使用 SASL 机制验证身份后操作LDAP!

{2}mdb.ldif

此配置文件,是具体的配置文件,可以看到与前面文章中最大的区别主要在于以下两项配置:

olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com

事实上,正是这两项的配置导致了前面的添加不成功。

个性化配置

我们打开任意一个位于 /etc/openldap/slapd.d/ 目录中的配置文件,都会看到文件头两行显著的文字:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 xxxxxxxx

什么意思呢?这是自动生成的文件-不要编辑!!!使用 ldapmodify 命令操作 。所以,正如之前网上那篇文章所说的,只要某个文章开头让你编辑这里面的配置,你基本可以直接关闭该文章了,不必浪费时间了!

配置DN

创建 .ldif 配置文件,编辑如下内容:

# change_domain.ldif
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

接下来执行编辑命令:

ldapmodify -Q -Y EXTERNAL -H ldapi:// -f change_domain.ldif

Bingo,添加成功!此时再查看前面的 olcDatabase={2}mdb.ldif 文件时,可以发现已经修改成功。

添加条目

接下来我们再次尝试导入条目:

ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_group.ldif
# 返回
adding new entry "ou=group,dc=example,dc=com"
ldap_add: No such object (32)

WHY?但我们搜索时,会发现是因为父节点不存在:

ldapsearch -LLL  -Q -Y EXTERNAL -H ldapi:// -b 'dc=example,dc=com'

这是因为即便用了YUM安装OpenLDAP,也不会自动创建目录节点,因此,先添加根节点,再添加条目即可:

# add_domain.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
o: Example Company
dc: example

添加根节点之后,再添加分组:

ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_domain.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_group.ldif

导入架构

我们深入探究上面的文件,会发现有点问题。我们实际上是想添加一个 Domain Component ,并不是想当做一个 organization 来添加,而且我们在官网中也可以看到有一个值为 domainobjectclass ,于是我们尝试添加一个子域名:

# add_sub_domain.ldif
dn: dc=ldap,dc=example,dc=com
objectClass: domain
domainComponent: ldap

然而我们在添加时,却会返回类似于下面的错误:

ldap_add: Invalid syntax (21)
	additional info: objectClass: value #0 invalid per syntax

这又是为什么呢?当我们查看 /etc/openldap/slapd.d/cn=config/cn=schema/ 目录时,就会发现原因了。这是因为,OpenLDAP 默认只会添加 core.schema ,而 domain 类型,是由 cosine 架构支持的,因此需要手工添加一下:

# 添加架构
ldapadd -Q -Y EXTERNAL -H ldapi:// -f cosine.ldif
# 再次添加子域名
ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_sub_domain.ldif

这回可以看到添加成功了!

新的问题

经过上面的实验,已经把编译安装的坑填上了,但是……当运行下面的命令时,又会发现遇到新的问题:

ldapsearch -x -W -D cn=Manager,dc=example,dc=com -H ldap:// -b 'dc=example,dc=com' -LLL  -s base '(objectclass=*)'

???密码是什么?印象中我们似乎并没有添加什么密码,但是又好像并没有需要添加密码的地方。其实从前面的配置可以看出,yum安装后并没有设置密码的,我们需要手工添加一个密码:

add_passwd.ldif
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}H7pqipuCoHbMH+aAAy3i9Y2/zo+IY2ry

然后使用 ldapadd命令添加到配置文件中即可:

ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_passwd.ldif
# 请注意为了测试不同的身份验证方式,使用了不同的协议类型
ldapsearch -x -W -D cn=Manager,dc=example,dc=com  -H ldap:// -b 'dc=example,dc=com' -LLL  -s base '(objectclass=*)'

DONE!

总结

经过前几章的学习,我们已经通过编译安装和YUM安装,掌握了许多LDAP的基本用法,从不知其然进阶到,知其然而不知其所以然。接下来我们继续深入,从配置开始进一步了解前面的暂不解释,以及未能讲述的问题。

文中用到的配置文件,可点击链接下载。

参考文档

  • symas源
  • 基于CentOS8搭建openLDAP服务器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 安装并配置 OpenLDAP 新编(3)YUM安装 的相关文章

  • char(50)与varchar(200),这是输入hello,字符所占长度是怎样的?

    char所占长度从定义时就决定了 所以长度为50 不足的用空格补充 varchar所占的长度就是字符串所占的长度
  • SpringBean创建的方式有哪些?

    一 通过构造函数进行创建 二 通过普通工厂的方法进行创建 三 通过静态工厂的静态的方法进行创建
  • JDK19虚拟线程

    JDK 19引入的虚拟线程 xff0c 是JDK 实现的轻量级线程 xff0c 他可以避免上下文切换带来的的额外耗费 他的实现原理其实是JDK不再是每一个线程都一对一的对应一个操作系统的线程了 xff0c 而是会将多个虚拟线程映射到少量操作
  • 如何实现下层函数要让上层函数感知异常

    可以通过future get 的方法获取下层的函数抛出的异常
  • 线程安全的体现

    原子性 xff1a 提供互斥访问 xff0c 同一时刻只能有一个线程对数据进行操作 xff0c xff08 atomic synchronized xff09 xff1b 可见性 xff1a 一个线程对主内存的修改可以及时地被其他线程看到
  • 程序访问中什么是临界区

    临界区是指并发进程中访问共享变量的程序段 临界区指的是一个访问共用资源的程序片段 xff0c 而这些共用资源又无法同时被多个线程访问的特性 每次只准许一个进程进入临界区 xff0c 进入后不允许其他进程进入
  • Latex Section 段落标题编号设置的问题

    Table of Contents 问题 xff1a 解决方法 xff1a 1 有数字 xff0c 不想要数字 2 没有数字 xff0c 想自动编排数字 3 references 没数字 问题 xff1a 在撰写论文时 xff0c 有些会议
  • 什么是数据存储过程

    存储过程 xff08 Stored Procedure xff09 是在大型数据库系统中 xff0c 一组为了完成特定功能的SQL语句集 xff0c 它存储在数据库中 xff0c 一次编译后永久有效 xff0c 用户通过指定存储过程的名字并
  • 为什么Springboot调用main()方法后程序会一直运行

    因为调用Main方法运行以后JVM不是立马结束退出 xff0c 取决于是否有进程一直在运行 常见的普通的Main方法里若有while xff08 true xff09 xff0c 也是不会退出的 springboot本质上也是这个原理 xf
  • JVM内存模型与JAVA内存模型

    区别 xff1a JVM内存模型则是指JVM的内存分区 xff0c Java代码是要运行在虚拟机上的 xff0c 而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域 xff0c 这些区域都有各自的用途 JVM内存结
  • 用Java实现两个有序数组合并成一个有序数组

    需求 有序数组a 和b xff0c 将它们合并成有序数组c 思路 xff1a 新建一个以两个集合长度之和为长度的新数组 xff0c 从两数组最左边开始比起 xff0c 把小的放入新集合 xff0c 并用变量标记后一位置 xff0c 每次比较
  • Spring Bean加载的8种方式

    一 在xml文件中通过标签 lt bean gt 实现 二 使用 64 Component以及其衍生的三种注解 64 Controller 64 Service 64 Repository 三 加载第三方bean 复制代码 64 Confi
  • 非对称加密分段处理加密大量数据

    基于RSA非对称加密 属于轻量型加密 加密数据的大小有严格限制 我们可以通过对分段加密方式 实现对大量数据的非对称加密 本文在参考非对称的加密的资料基础之上 实现了大数据的非对称加密 因此少量数据于大量数据都可以实现加密处理 如果仅想实现这
  • 如何理解反向代理

    通常的代理服务器 xff0c 只用于代理内部网络对Internet的连接请求 xff0c 客户机必须指定代理服务器 并将本来要直接发送到Web服务器上的http请求发送到代理服务器中 由于外部网络上的主机并不会配置并使用这个代理服务器 xf
  • ping: www.baidu.com: 未知的名称或服务

    如果如何怎么都连不上外网 可以照搬下面配置 一定可以连通 VMc16 centos7 NAT模式下 注意子网IP和子网掩码的设置 这个决定的IP的取值范围 文件配置如下
  • 权限精确到按钮级别

    在使用sa token轻量级框架下 如何将权限精确到按钮级别 权限精确到按钮级的意思就是指 xff1a 权限范围可以控制到页面上的每一个按钮是否显示 思路 xff1a 如此精确的范围控制只依赖后端已经难以完成 xff0c 此时需要前端进行一
  • 单点登录的发展与应用

    早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的 所有的功能 所有的业务 后台管理 门户界面 都是由这一个war来支持的 这样的单应用 也称之为单体应用 因为十分不好扩展和拆分 在单体应用下 用户的登录
  • The command could not be located because '/sbin' is not included in the PATH environment variable.

    问题来源 重启Ubuntu后习惯性的执行ifconfig 报错如下 Command span class hljs string 39 ifconfig 39 span span class hljs keyword is span ava
  • bean实例化的方式

    1 最常见 使用构造方法 2 早些年 使用静态工厂的方式 3 更早些年的 使用实例化工厂的方式 4 spring框架常用 实现FactoryBean接口的方式
  • @Autowired

    1 Autowired依赖注入底层是通过反射暴力获取对象并赋值给属性 2 setter与构造器注入是通过给IOC容器提供入口注入的

随机推荐

  • C语言 Hanoi(汉诺)塔问题,用递归解决

    问题 古代有一个梵塔 xff0c 塔内有3个座A xff0c B xff0c C 开始时A座上有64个盘子 xff0c 盘子大小不等 xff0c 大的在下 xff0c 小的在上 有一个老和尚想把64个盘子从A作移到C座 xff0c 但规定每
  • Ubuntu server 22.04 安装kvm

    本人有一台工控机 xff0c 5500u cpu xff0c 8g 内存 xff0c 本来是打算用来跑docker的 xff0c 但是因为要装 k8s 虚拟机会更加合适方便 xff0c 宿主机的系统是ubuntu server 22 04
  • win10 linux 子系统 wsl2实现ip自动转发

    win10 系统带linux子系统有两个版本 第一个是wsl xff0c 它与windows 系统公用同1个ip地址 xff0c 但是没有自己内核 xff0c 不支持docker 第二个版本是wsl2 xff0c 它可以使用docker x
  • 【独家】互联网变现与计算广告(干货+5000字精彩问答)

    本讲座选自2015年9月28日刘鹏先生在清华大数据 技术 前沿 讲座上所做的题为 互联网变现与计算广告 的演讲 刘鹏 xff1a 大家好 xff0c 我是老的清华人 xff0c 诸位都是95后了 xff0c 你们出生的时候我是95年入学 清
  • 本地(window)使用alist和RaiDav网盘挂载

    一 背景 百度网盘的限速可能会让你转战阿里云盘 xff0c 但是阿里云盘的缺点在于不能分享 xff0c 网络上的资源都是通过各类网盘来分享的 xff0c 这样就会让你可能同时拥有不同网盘的账号 那么我们有没有一款工具 xff0c 可以将这些
  • 【笔记】ssd mobilenet 网络

    之前实习用过太多次mobilenet ssd xff0c 但是一直只是用 xff0c 没有去了解它的原理 今日参考了一位大神的博客 xff0c 写得很详细 xff0c 也很容易懂 xff0c 这里做一个自己的整理 xff0c 供自己理解 x
  • 添加与删除 Ubuntu 环境变量

    1 作者的系统是Ubuntu 13 10 xff0c 在其他linux发行版中环境变量的设置方式类似但会有不同 xff1b 2 这里以环境变量PATH为例 xff0c 环境变量还可以有很多 xff0c 也可以自己定义名称 什么是环境变量 环
  • [Kali Linux 安全渗透教程新手版]

    1 1什么是安全渗透 渗透测试时通过模拟黑客的攻击方法 来评估计算机网络系统安全的一种评估方法 通常的评估方式对评估结果更具全面性 而渗透测试更注重安全露的严重性 1 6Kali更新与升级 Ctrl 43 F1 快捷键提示 Ctrl 43
  • CTreeList 拖拽功能实现

    转载地址 http tech ddvip com 2008 11 122662837992492 html Visual C 43 43 中提供的MFC类CtreeCtrl xff08 树型控件 xff09 用来显示具有一定层次结构的数据项
  • 使用hex编码绕过主机卫士IIS版本继续注入

    本文作者 xff1a 非主流 测试文件的源码如下 xff1a 我们先直接加上单引号试试 xff1a http 192 168 0 20 conn asp id 61 1 27 很好 xff0c 没有报错 那我们继续 xff0c and 1
  • Win10启动VMware虚拟机结果宿主机蓝屏重启

    VM启动虚拟机结果宿主机蓝屏重启 xff0c 按照以下步骤处理即可 xff0c 我是通过升级VM版本最终解决的 xff0c 自己看自己的情况 xff0c 都试一下就行 1 操作控制面板 右键windows图标 xff0c 点击搜索 xff0
  • Debian9.12镜像下载及网络、软件源配置

    Debian9 12安装 配置 文章目录 获取镜像虚拟机安装配置网络配置合适的仓库源更新软件包 安装所需工具 搭建环境Debian镜像下载链接其他资源 获取镜像 Debian9 12 Debian 9 12 官方原版镜像下载 任我乐 ren
  • dpkg: 处理软件包 xxx (--configure)时出错 解决办法

    第一步 xff1a 备份 sudo mv var lib dpkg info var lib dpkg info bk 1 第二步 xff1a 新建 sudo mkdir var lib dpkg info 1 第三步 xff1a 更新 s
  • 解决SQL server中提示对象名无效

    用SQL server的时间不长 xff0c 但现在遇到两种情况 xff0c 在这里分别说一下解决办法 1 刚打开SQL server Manager Studio xff0c 想看看表里的信息 xff0c 就写一个查询语句 xff0c 结
  • 解决maven无法下载依赖的问题

    大概从2020年1月底的时候第一次遇到这个问题 xff0c 当时在假期期间自己写小Demo玩 xff0c 依赖下载不了就去找了个包放进去 xff0c 并没有太在意 直至几天后因为疫情在家远程办公的时候新项目的依赖一直下载不了 xff0c 困
  • 解决idea已经添加外部jar包但仍然找不到包的错误

    对于开发人员来说 xff0c 开发项目时除了maven下载的依赖之外 xff0c 一般都需要引入一些公司内部封装的jar包依赖 xff0c 但是有时候会出现明明已经build path了 xff0c 但是build项目的时候还是报错说某某包
  • vmware安装虚拟机提示此主机不支持64位系统,此系统无法运行

    原因 安装虚拟机提示这个是因为和电脑上的Hyper V服务冲突了 xff0c 解决办法是关闭Hyper V服务就可以了 步骤 打开控制面板找到程序和功能 点击启用或关闭Windows功能 找到Hyper V xff0c 此时状态是勾选的 取
  • springboot项目启动指定项目外部yml配置文件

    spring boot的经典项目配置是application yml xff0c 在项目打包部署运行的时候 xff0c 这个文件也会一同打进包里 xff0c 随之启动 这就带来了一个问题 xff1a 如果部署的服务器发生了变动 xff0c
  • MyEclipse安装SVN插件及插件下载地址

    在网上找了很多安装教程 xff0c 但是找到的subclipse的下载地址都访问不到 xff0c 不知道是不是需要翻墙 xff0c 我自己找了个测试过有效的 xff1a 网盘下载地址 xff1a https pan baidu com s
  • Linux 安装并配置 OpenLDAP 新编(3)YUM安装

    Linux 安装并配置 OpenLDAP 新编 xff08 3 xff09 YUM安装 我实操OpenLDAP的过程 xff0c 是先根据官网资料编译安装 xff0c 大约花费了近2周时间 xff0c 也有点陷入牛角尖了 xff0c 一时不