ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-05-04 19:31:48  阅读:173  来源: 互联网

标签:cn 添加 com dc add OpenLDAP YUM ldif 安装


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的基本用法,从不知其然进阶到,知其然而不知其所以然。接下来我们继续深入,从配置开始进一步了解前面的暂不解释,以及未能讲述的问题。

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

参考文档

标签:cn,添加,com,dc,add,OpenLDAP,YUM,ldif,安装
来源: https://www.cnblogs.com/bashenandi/p/openldap-3-yum-install.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有