关于Linux安装OpenLDAP说明

版本centos

  1. 简介

首先LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。在这套标准下,AD(Active Directory)是微软出的一套实现。
那AD是什么呢?暂且把它理解成是个数据库。也有很多人直接把LDAP说成数据库(可以把LDAP理解成存储数据的数据库)。像是其他数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。而我们通常说的LDAP是指运行这个数据库的服务器。可以简单理解AD =LDAP服务器+LDAP应用。

1.1 那LDAP这种数据库有什么特殊的呢?

我们知道,像MySQL数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,是树结构的,数据存储在叶子节点上。看看下面的比喻:

假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有”分叉”(ou),最后就是这个苹果的名字(uid,相当于MySQL表主键id)。好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵”歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!

就这样就可以描述清楚”树结构”上的一条记录了。
说一下LDAP里如何定义一个记录的位置吧。

树(dc=ljheee)
分叉(ou=bei,ou=xi,ou= dong)
苹果(cn=redApple)

好了,redApple的位置出来了:

dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=ljheee

其中dn标识一条记录,描述了一条数据的详细路径
咦!有人疑问,为什么ou会有多个值?你想想,从树根到达苹果的位置,可能要经过好几个树杈,所有ou可能有多个值。关于dn后面一长串,分别是cn,ou,dc;中间用逗号隔开
总结一下LDAP树形数据库如下

  • dn :一条记录的详细位置
  • dc :一条记录所属区域 (哪一颗树)
  • ou :一条记录所属组织 (哪一个分支)
  • cn/uid:一条记录的名字/ID (哪一个苹果名字)
    LDAP目录树的最顶部就是根,也就是所谓的”基准DN”

1.2 为什么要用LDAP目录树来存储数据,用MySQL不行吗,为什么非要搞出一个树形的数据库呢?

这是因为用树形结构存储数据,查询效率更高(具体为什么,可以看一下关系型数据库索引的实现原理——B树/B+树),在某些特定的场景下,使用树形数据库更理想。比如:需要储存大量的数据,而且数据不是经常更改,需要很快速的查找,把它与传统的关系型数据库相比,LDAP除了快速查找的特点,它还有很多的运用场景,比如域验证等

  1. 安装ldap

2.1 安装ladp

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

关于Linux安装OpenLDAP说明

2.2 查看版本

slapd -VV

关于Linux安装OpenLDAP说明

2.3 配置管理员密码

2.3.1 生成密码

slappasswd -s 123456

关于Linux安装OpenLDAP说明

2.3.2 修改olcDatabase={2}hdb.ldif文件

vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

修改内容
olcSuffix: dc=testldap,dc=com
olcRootDN: cn=Manager,dc=testldap,dc=com
olcRootPW: {SSHA}84X/7jQ8TwrBd1Sq3k+PkIe1wHhy8mzZ

关于Linux安装OpenLDAP说明

2.3.3 修改olcDatabase={1}monitor.ldif文件

vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif

修改内容
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=testldap,dc=com" read by * none

关于Linux安装OpenLDAP说明

2.3.4 验证配置文件是否正确

slaptest -u

关于Linux安装OpenLDAP说明
注:slaptest -u 会提示 checksum error,不用担心,因为以上步骤已变更这两个文档,只需关注”config file testing succeeded”即可

2.3.5 启动服务&&查看服务

systemctl enable slapd
systemctl start slapd
systemctl status slapd

关于Linux安装OpenLDAP说明

2.4 配置OpenLDAP数据库

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap -R /var/lib/ldap
chmod 700 -R /var/lib/ldap
ll /var/lib/ldap/

关于Linux安装OpenLDAP说明

注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

2.4.1 导入基本Schema

**方法一:**
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/
ldapadd -Y EXTERNAL -H ldapi:/

关于Linux安装OpenLDAP说明

方法二:

ls /etc/openldap/schema

关于Linux安装OpenLDAP说明

2.4.2 修改migrate_common.ph文件

vi /usr/share/migrationtools/migrate_common.ph

vi /usr/share/migrationtools/migrate_common.ph
修改

$DEFAULT_MAIL_DOMAIN = "testldap.com";
$DEFAULT_BASE = "dc=testldap,dc=com";
$EXTENDED_SCHEMA = 1;

关于Linux安装OpenLDAP说明

2.5 添加用户及用户组

(较为繁琐,是否可使用客户端ApacheDirectoryStudio取代)

默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。管理用户就是前面我们刚刚配置的root。
现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:

2.5.1 添加用户组

groupadd ldapgroup1
groupadd ldapgroup2

2.5.2 添加用户并设置密码

useradd -g ldapgroup1 ldapuser1
useradd -g ldapgroup2 ldapuser2
passwd  ldapuser1
passwd  ldapuser2

关于Linux安装OpenLDAP说明

密码不少于 8 个字符

2.5.3 提取用户和组

grep ":10[0-9][0-9]" /etc/passwd > /root/users
grep ":10[0-9][0-9]" /etc/group > /root/groups

cat users
cat groups

关于Linux安装OpenLDAP说明

2.5.4 生成用户和组的ldif文件

/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
cat /root/users.ldif
cat /root/groups.ldif

关于Linux安装OpenLDAP说明

2.5.5 导入用户及用户组到OpenLDAP数据库

配置openldap基础的数据库

cat > /root/base.ldif << EOF
dn: dc=testldap,dc=com
o: testldap com
dc: testldap
objectClass: top
objectClass: dcObject
objectclass: organization

dn: cn=Manager,dc=testldap,dc=com
cn: Manager
objectClass: organizationalRole
description: Directory Manager

dn: ou=People,dc=testldap,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=testldap,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
EOF

关于Linux安装OpenLDAP说明
导入基础数据库
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/base.ldif

导入用户

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/users.ldif

导入用户组

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/groups.ldif

2.5.6 把OpenLDAP用户加入到用户组

尽管我们已经把用户和用户组信息,导入到OpenLDAP数据库中了。但实际上目前OpenLDAP用户和用户组之间是没有任何关联的。
如果我们要把OpenLDAP数据库中的用户和用户组关联起来的话,我们还需要做另外单独的配置。
现在我们要把ldapuser1用户加入到ldapgroup1用户组,需要新建添加用户到用户组的ldif文件,如下:

cat > add_user1_to_groups1.ldif << "EOF"
dn: cn=ldapgroup1,ou=Group,dc=testldap,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
EOF

导入ldif:

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/add_user1_to_groups1.ldif
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/add_user2_to_groups2.ldif

2.6 开启OpenLDAP日志访问功能

  1. 在slapd.conf中加一行:(路径:/etc/openldap/ldap.conf,应该不是这个因为文件名不一样,由于使用默认日志级别设置,所以本人没配)
loglevel        4095

如果未定义olcLogLevel/loglevel属性/指令,则日志默认为256(仅统计信息)
2. 在/etc/syslog.conf 中加入ldap日志文档:
(自定义输出路径,本人路径:/home/fxd/ldap/log/ldap.log)

local4.*                                                /var/log/ldap.log
  1. 重启syslog及LDAP服务
 systemctl restart slapd
  1. 在/var/log/下就可以看到一个ldap.log文件
    (自定义输出路径,本人路径:/home/fxd/ldap/log/ldap.log)

官方:https://www.zytrax.com/books/ldap/ch6/#loglevel

Original: https://blog.csdn.net/qq_34486648/article/details/127813155
Author: 阿东-007
Title: 关于Linux安装OpenLDAP说明

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/653639/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 全网最详细的深度学习tensorflow-gpu环境配置

    学习深度学习第一步就是环境的配置,相信很多小伙伴已经被什么anaconda,tensorflow,Pytorch,cuda这些东西搞得晕头转向,今天带大家详细配置深度学习的环境,这…

    人工智能 2023年6月16日
    0104
  • Two-pass连通域标记方法与opencv代码实现

    连通域是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域,一般使用二值图像表示。连通标记是指将图像中的各个连通区域找出并标记为响应的标号。 wo-Pass(两遍扫描法) …

    人工智能 2023年6月20日
    0179
  • C#基础-转义符

    转义符(单个字符) 转义符指的是一个 \+一个特殊的字符,组成了一个具有特殊意义的字符。常用的几个: 转义符描述\n表示换行,在字符串中有效\r\nwindows操作系统不认识\n…

    人工智能 2023年6月18日
    090
  • 单目相机标定结果的评估——重投影误差与畸变校正

    目录 1.重投影误差的概念 2.基于摄像机模型的重投影误差 3.畸变校正算法 3.1利用畸变模型正向求解 3.2利用畸变模型反向求解 1.重投影误差的概念 在相机标定后,我们可以通…

    人工智能 2023年6月17日
    0348
  • spark创建DataFrame的几种方式

    package com.hollysys.spark import java.util import org.apache.spark.sql.types._ import org…

    人工智能 2023年6月2日
    0101
  • 度量学习——总结

    传统方法 User guide: contents — metric-learn 0.6.2 documentation 深度学习 基于深度学习的度量学习方法大都由两个部分组成:特…

    人工智能 2023年7月22日
    0110
  • 数据分析面试都会问到哪些问题

    听说有小伙伴最近在找工作?数据分析面试都会问到哪些问题呢?一起来看看吧~ 1.第一个问题来了哈~如果某一次分析的结果数据特别大,有些结果数据扛不住了,请问该怎么办? 其实一般的结果…

    人工智能 2023年6月19日
    0104
  • 帅爆! 赛博朋克特效实现

    资料获取:添加小编 nvshenj125, 备注CVPR2022, 即可获取 CVPR2022 全部论文 为了写好这篇文章, 找了很多资料, 如果对你有帮助的话, 帮忙分享一波, …

    人工智能 2023年7月19日
    095
  • 使用OpenCV简单实现人脸识别

    简介 OpenCV是一个非常强大的计算机视觉库,现有的一系列特征检测和特征匹配算法,有很大一部分都已经在OpenCV的库中得以实现,故此我们只需调用OpenCV库中函数即可简单实现…

    人工智能 2023年6月19日
    095
  • 分类算法-KNN(原理+代码+结果)

    KNN,即K最邻近算法,是数据挖掘分类技术中比较简单的方法之一,简单来说,就是根据”最邻近”这一特征对样本进行分类。 1、K-means和KNN区别 K-m…

    人工智能 2023年6月30日
    0109
  • 日积月累,在迷茫彷徨中前进 —— 我的大学经历

    想想好久没写过程序人生了,恰逢一位学弟成为了母校的CSDN联合校园大使,为开学季话题征文,不禁回想起四年前,我也是忐忑而又兴奋的等待着大学生活的开始。[TencentCloudSD…

    人工智能 2023年6月2日
    084
  • CornerNet:Detecting Objects as Paired Keypoints

    论文思想 将检测问题建模成关键点检测问题,通过检测左上、右下两个关键点来回归出检测框,是一种anchor free 的目标检测算法。主要解决了anchor based方法的两大问题…

    人工智能 2023年7月10日
    0102
  • Deep Multimodal Representation Learning(深度多模态表示学习)

    多模态表示学习旨在缩小不同模态之间的异质性差距,在利用普遍存在的多模态数据中发挥着不可或缺的作用。基于深度学习的多模态表示学习由于具有强大的多层次抽象表示能力,近年来引起了人们的广…

    人工智能 2023年6月18日
    0145
  • what?传统风控策略,无法cover到以下风控场景

    反欺诈是风控中非常重要的环节,也是知识图谱适合应用的场景。而知识图谱用来描述关系网络,天生是分析关联欺诈的便捷手段。以先进的团伙识别算法为基础,目前越来越多的机构构建了全新的团伙欺…

    人工智能 2023年6月10日
    082
  • K-Means 聚类算法 Python实现

    聚类算法 将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。&#8…

    人工智能 2023年7月18日
    085
  • 向CSV文件写入多个内容的方法。

    1.使用pandas写入内容。 依托pandas中的DataFrame函数,实现对数据的写入。 这是按列的方法写入CSV文件中,即每个参数保存的是要写入的每列的元素。 下面是一个简…

    人工智能 2023年7月7日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球