LDAP从入门到实战:环境部署与配置指南(上)

#作者:朱雷

文章目录

  • 一、LDAP 简介
    • 1.1. 什么是目录服务
    • 1.2. 什么是 LDAP
    • 1.3. LDAP的基本模型
  • 二、Ldap环境部署
    • 2.1.下载软件包
    • 2.2.安装软件
    • 2.3.编辑配置文件
    • 2.4.启动服务

一、LDAP 简介

1.1. 什么是目录服务

目录是专门为搜索和浏览而设计的专用数据库,此外还支持基本的查找和更新功能。目录服务是由目录数据库和一套访问协议组成的系统。

它成树状结构组织数据,类似文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据,所以目录天生是用来查询的。
目录往往包含描述性、基于属性的信息,并支持复杂的过滤功能。目录通常不支持用于处理大量复杂更新的数据库管理系统中的复杂事务或回滚方案。如果允许的话,目录更新通常是简单的全有或全无更改。目录通常经过调整,可以快速响应大量查找或搜索操作。它们可能能够广泛复制信息,以提高可用性和可靠性,同时减少响应时间。复制目录信息时,消费者之间的暂时不一致可能是可以接受的,只要及时解决不一致问题即可。

1.2. 什么是 LDAP

LDAP代表轻量级目录访问协议顾名思义,它是一种用于访问目录服务的轻量级协议,基于特定的X.500标准的目录服务。

1.3. LDAP的基本模型

目录树概念

  1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
  2. 条目:每个条目就是一条记录,每个条目有自己的全局唯一属性集合可区别的名称(DN)。
  3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
  4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

关键字说明
在这里插入图片描述

二、Ldap环境部署

主机node版本IP备注
ldap-02.4.44192.168.1.129主节点/从节点
ldap-12.4.44192.168.1.130从节点/主节点

2.1.下载软件包

地址:https://www.openldap.org/software/download/OpenLDAP/openldap-release/
DB:http://download.oracle.com/otn/berkeley-db/db-5.1.29.zip

2.2.安装软件

**解压下载的包文件:VERSION 为版本号**
gunzip -c openldap-VERSION.tgz | tar xvfB -
cd openldap-VERSION
./configure
make && make install
# 默认安装在/usr/local下执行./configure报错,configure: error: BDB/HDB: BerkeleyDB not available
unzip db-5.1.29.zip
cd db-5.1.29/build_unix/
../dist/configure
make
…输出
./libtool --mode=link cc -O3  -o db_verify  \db_verify.lo util_cache.lo util_sig.lo libdb-5.1.la -lpthread
libtool: link: cc -O3 -o .libs/db_verify .libs/db_verify.o .libs/util_cache.o .libs/util_sig.o  ./.libs/libdb-5.1.so -lpthread  -Wl,-rpath -Wl,/usr/local/BerkeleyDB.5.1/lib
./libtool --mode=execute true db_verify…end
make install
…输出
Installing DB include files: /usr/local/BerkeleyDB.5.1/include ...
Installing DB library: /usr/local/BerkeleyDB.5.1/lib ...
libtool: install: cp -p .libs/libdb-5.1.so /usr/local/BerkeleyDB.5.1/lib/libdb-5.1.so
libtool: install: cp -p .libs/libdb-5.1.lai /usr/local/BerkeleyDB.5.1/lib/libdb-5.1.la
libtool: install: cp -p .libs/libdb-5.1.a /usr/local/BerkeleyDB.5.1/lib/libdb-5.1.a
libtool: install: chmod 644 /usr/local/BerkeleyDB.5.1/lib/libdb-5.1.a
libtool: install: ranlib /usr/local/BerkeleyDB.5.1/lib/libdb-5.1.a
libtool: install: cp -p libdb.a /usr/local/BerkeleyDB.5.1/lib/libdb.a
libtool: install: chmod 644 /usr/local/BerkeleyDB.5.1/lib/libdb.a
libtool: install: ranlib /usr/local/BerkeleyDB.5.1/lib/libdb.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/sbin" ldconfig -n /usr/local/BerkeleyDB.5.1/lib
----------------------------------------------------------------------
Libraries have been installed in:/usr/local/BerkeleyDB.5.1/libIf you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:- add LIBDIR to the `LD_LIBRARY_PATH' environment variableduring execution- add LIBDIR to the `LD_RUN_PATH' environment variableduring linking- use the `-Wl,-rpath -Wl,LIBDIR' linker flag- have your system administrator add LIBDIR to `/etc/ld.so.conf'See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Installing DB utilities: /usr/local/BerkeleyDB.5.1/bin ...
libtool: install: cp -p .libs/db_archive /usr/local/BerkeleyDB.5.1/bin/db_archive
libtool: install: cp -p .libs/db_checkpoint /usr/local/BerkeleyDB.5.1/bin/db_checkpoint
libtool: install: cp -p .libs/db_deadlock /usr/local/BerkeleyDB.5.1/bin/db_deadlock
libtool: install: cp -p .libs/db_dump /usr/local/BerkeleyDB.5.1/bin/db_dump
libtool: install: cp -p .libs/db_hotbackup /usr/local/BerkeleyDB.5.1/bin/db_hotbackup
libtool: install: cp -p .libs/db_load /usr/local/BerkeleyDB.5.1/bin/db_load
libtool: install: cp -p .libs/db_log_verify /usr/local/BerkeleyDB.5.1/bin/db_log_verify
libtool: install: cp -p .libs/db_printlog /usr/local/BerkeleyDB.5.1/bin/db_printlog
libtool: install: cp -p .libs/db_recover /usr/local/BerkeleyDB.5.1/bin/db_recover
libtool: install: cp -p .libs/db_replicate /usr/local/BerkeleyDB.5.1/bin/db_replicate
libtool: install: cp -p .libs/db_stat /usr/local/BerkeleyDB.5.1/bin/db_stat
libtool: install: cp -p .libs/db_upgrade /usr/local/BerkeleyDB.5.1/bin/db_upgrade
libtool: install: cp -p .libs/db_verify /usr/local/BerkeleyDB.5.1/bin/db_verify
Installing documentation: /usr/local/BerkeleyDB.5.1/docs ...
…end

加载BDB 数据库模块

cat  /etc/ld.so.conf.d/berkeleydb_5.1.conf
/usr/local/BerkeleyDB.5.1/lib
ldconfig -v
… 输出
/usr/local/BerkeleyDB.5.1/lib:
libdb-5.1.so -> libdb.so

再次编译安装openldap

./configure CPPFLAGS="-I/usr/local/BerkeleyDB.5.1/include -D_GNU_SOURCE" LDFLAGS="-L/usr/local/BerkeleyDB.5.1/lib"
make depend
make 
make test
make install
…
done
installing slapacl.8 in /usr/local/share/man/man8
installing slapadd.8 in /usr/local/share/man/man8
installing slapauth.8 in /usr/local/share/man/man8
installing slapcat.8 in /usr/local/share/man/man8
installing slapd.8 in /usr/local/share/man/man8
installing slapdn.8 in /usr/local/share/man/man8
installing slapindex.8 in /usr/local/share/man/man8
installing slappasswd.8 in /usr/local/share/man/man8
installing slapschema.8 in /usr/local/share/man/man8
installing slaptest.8 in /usr/local/share/man/man8
make[3]: Leaving directory '/root/openldap/openldap-2.4.44/doc/man/man8'make[2]: Leaving directory '/root/openldap/openldap-2.4.44/doc/man'make[1]: Leaving directory '/root/openldap/openldap-2.4.44/doc'
…end
**服务端程序路径**
[root@localhost openldap-2.4.44]# ll /usr/local/sbin/sl*
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapacl -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapadd -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapauth -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapcat -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapdn -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapindex -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slappasswd -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slapschema -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Nov 21 17:55 /usr/local/sbin/slaptest -> ../libexec/slapd
**配置路径**
[root@localhost openldap-2.4.44]# ll /usr/local/etc/openldap/
total 32K
-rw------- 1 root root  845 Nov 21 17:55 DB_CONFIG.example
-rw-r--r-- 1 root root  245 Nov 21 17:55 ldap.conf
-rw-r--r-- 1 root root  245 Nov 21 17:55 ldap.conf.default
drwxr-xr-x 2 root root 4.0K Nov 21 17:55 schema
-rw------- 1 root root 2.1K Nov 21 17:55 slapd.conf
-rw------- 1 root root 2.1K Nov 21 17:55 slapd.conf.default
-rw------- 1 root root 2.6K Nov 21 17:55 slapd.ldif
-rw------- 1 root root 2.6K Nov 21 17:55 slapd.ldif.default
**客户端程序路径**
[root@localhost openldap-2.4.44]# ll /usr/local/bin/
total 2.3M
lrwxrwxrwx 1 root root   10 Nov 21 17:55 ldapadd -> ldapmodify
-rwxr-xr-x 1 root root 269K Nov 21 17:55 ldapcompare
-rwxr-xr-x 1 root root 269K Nov 21 17:55 ldapdelete
-rwxr-xr-x 1 root root 265K Nov 21 17:55 ldapexop
-rwxr-xr-x 1 root root 277K Nov 21 17:55 ldapmodify
-rwxr-xr-x 1 root root 269K Nov 21 17:55 ldapmodrdn
-rwxr-xr-x 1 root root 265K Nov 21 17:55 ldappasswd
-rwxr-xr-x 1 root root 289K Nov 21 17:55 ldapsearch
-rwxr-xr-x 1 root root 156K Nov 21 17:55 ldapurl
-rwxr-xr-x 1 root root 265K Nov 21 17:55 ldapwhoami
**数据log存放目录**
[root@localhost openldap-2.4.44]# ll /usr/local/var/openldap-data/
total 88K
-rw------- 1 root root  80K Nov 22 16:48 data.mdb
-rw------- 1 root root  845 Nov 21 17:55 DB_CONFIG.example
-rw------- 1 root root 8.0K Nov 22 18:08 lock.mdb
**版本管理**
[root@localhost openldap]# /usr/local/libexec/slapd -VVV
@(#) $OpenLDAP: slapd 2.4.44 (Nov 21 2024 17:55:53) $root@localhost.localdomain:/root/openldap/openldap-2.4.44/servers/slapd
Included static overlays:syncprov
Included static backends:configldifmonitorbdbhdbmdbrelay

2.3.编辑配置文件

主配置文件

[root@localhost openldap]# egrep -v '^$|#' /usr/local/etc/openldap/slapd.conf
include         /usr/local/etc/openldap/schema/corba.schema
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/duaconf.schema
include         /usr/local/etc/openldap/schema/dyngroup.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/java.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include         /usr/local/etc/openldap/schema/pmi.schema
include         /usr/local/etc/openldap/schema/ppolicy.schema pidfile		/usr/local/var/run/slapd.pid
argsfile	    /usr/local/var/run/slapd.args
logfile	        /usr/local/var/slapd.log
database	mdb
maxsize		1073741824
suffix		"dc=zltest,dc=com"
rootdn		"cn=admin,dc=zltest,dc=com"
rootpw		{SSHA}qKw4zhjOu7o+fpSCOUuMMnviWRavEdK0
directory	/usr/local/var/openldap-data
index	objectClass	eq

在 /usr/local/etc/openldap/slapd.ldif,使其包含以下形式的 MDB 数据库定义。

dn:olcDatabase=mdb,cn=config
objectClass:olcDatabaseConfig
objectClass:olcMdbConfig
olcDatabase:mdb
OlcDbMaxSize:1073741824
olcSuffix:dc=<MY-DOMAIN>,dc=<COM>
olcRootDN:cn=admin,dc=<MY-DOMAIN>,dc=<COM>
olcRootPW:<secret>
olcDbDirectory:/usr/local/var/openldap-data
olcDbIndex:objectClass eq
请将<MY-DOMAIN>和<COM>替换为您的域名: zltest的相应域部分
请将<secret>替换成 slappasswd 生成的密码

替换好的文件如下:

dn:olcDatabase=mdb,cn=config
objectClass:olcDatabaseConfig
objectClass:olcMdbConfig
olcDatabase:mdb
OlcDbMaxSize:1073741824
olcSuffix:dc=zltest,dc=<COM>
olcRootDN:cn=admin,dc=zltest,dc=<COM>
olcRootPW:{SSHA}qKw4zhjOu7o+fpSCOUuMMnviWRavEdK0
olcDbDirectory:/usr/local/var/openldap-data
olcDbIndex:objectClass eq

2.4.启动服务

/usr/local/libexec/slapd
[root@localhost openldap]# netstat -luntp|grep slapd
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      5895/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      5895/slapd

可用查看帮助说明参数作用
验证服务否正在运行且配置正确

[root@localhost ~]# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts 
##
dn:
namingContexts: dc=zltest,dc=com# search result
search: 2
result: 0 Success# numResponses: 2
# numEntries: 1

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《C++智能指针:建议使用 make_shared 代替 shared_ptr》

《C 智能指针&#xff1a;长达数十年的血泪史&#xff0c;一步步征服内存泄漏》-CSDN博客 shared_ptr<int> sp1(new int(10)); 这句代码实际存在两个内存开辟&#xff0c;一是开辟我们要托管的内存资源 &#xff0c;二是开辟引用计数的资源&#xff0c;引用技术也是new出…

代码随想录刷题day50|(回溯算法篇)131.分割回文串▲

目录 一、回溯算法基础知识 二、分割回文串思路 2.1 如何切割 2.2 判断回文 2.3 回溯三部曲 2.4 其他问题 三、相关算法题目 四、总结 一、回溯算法基础知识 详见&#xff1a;代码随想录刷题day46|&#xff08;回溯算法篇&#xff09;77.组合-CSDN博客 二、分割回文…

vivo 湖仓架构的性能提升之旅

作者&#xff1a;郭小龙 vivo互联网 大数据高级研发工程师 导读&#xff1a;本文整理自 vivo互联网 大数据高级研发工程师 郭小龙 在 StarRocks 年度峰会上的分享&#xff0c;聚焦 vivo 大数据多维分析面临的挑战、StarRocks 落地方案及应用收益。 在 即席分析 场景&#xff0c…

Springboot的jak安装与配置教程

目录 Windows系统 macOS系统 Linux系统 Windows系统 下载JDK&#xff1a; 访问Oracle官网或其他JDK提供商网站&#xff0c;下载适合Windows系统的JDK版本。网站地址&#xff1a;Oracle 甲骨文中国 | 云应用和云平台点击进入下滑&#xff0c;点击进入下载根据自己的系统选择&…

力扣算法Hot100——128. 最长连续序列

题目要求时间复杂度为O(n)&#xff0c;因此不能使用两次循环匹配。 首先使用 HashSet 去重&#xff0c;并且 HashSet 查找一个数的复杂度为O(1)外循环还是遍历set集合&#xff0c;里面一重循环需要添加判断&#xff0c;这样才不会达到O( n 2 n^2 n2)判断是否进入最长序列查找循…

BlockChain.java

BlockChain 区块链&#xff0c;举个栗子 注意啦&#xff0c;列子里面的hashcode相等&#xff0c;但是字符串是不一样的哦&#xff0c;之前有记录这个问题 String.hashCode()-CSDN博客

visual studio 中导入 benchmark

法一 1.visual studio 中导入 benchmark.lib Shlwapi.lib这两个库 2.预处理宏 BENCHMARK_STATIC_DEFINE vs导入参考 错误提示 没有加入 BENCHMARK STATIC_DEFINE error LNK2001: 无法解析的外部符号 “__declspec(dllimport) int __cdecl benchmark::internal::InitializeS…

java基础之windows电脑基础命令

windows电脑基础命令 windows电脑基础命令快捷键和功能键键盘功能键B:键盘快捷键 DOS命令行的进入方式xp下如何打开DOS控制台&#xff1f;win7下如何打开DOS控制台&#xff1f;win8下如何打开DOS控制台 DOS命令讲解 黑窗口编译文件使用黑窗口运行java程序 windows电脑基础命令 …

Java 第十一章 GUI编程(3)

目录 内部类 内部类定义 内部类的特点 匿名内部类 格式&#xff1a; 内部类的意义 实例 内部类 ● 把类定义在另一个类的内部&#xff0c;该类就被称为内部类。 ● 如果在类 Outer 的内部再定义一个类 Inner&#xff0c;此时类 Inner 就称为内部类 &#xff08;或称为嵌…

uniapp 实现的下拉菜单组件

采用 uniapp 实现, 是一款具备丝滑折叠、展开动画的下拉菜单&#xff0c;支持 vue2、vue3&#xff1b;适配 web、H5、微信小程序&#xff08;其他平台小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?i…

【一维前缀和与二维前缀和(简单版dp)】

1.前缀和模板 一维前缀和模板 1.暴力解法 要求哪段区间&#xff0c;我就直接遍历那段区间求和。 时间复杂度O(n*q) 2.前缀和 ------ 快速求出数组中某一个连续区间的和。 1&#xff09;预处理一个前缀和数组 这个前缀和数组设定为dp&#xff0c;dp[i]表示&#xff1a;表示…

ubuntu部署运行xinference全精度对话deepseek本地部署图文教程

前置环境搭建劳请移步往期 source activate 自己环境名启动python3.12环境安装xinference&#xff0c; 按教程敲命令&#xff0c;wheel包与wsl的通用&#xff0c;pip install 包名。 vllm引擎&#xff0c;transform引擎也会顺带自动装上了。 后续操作请参照往期教程。本地部署模…

Python 面向对象三大特性深度解析

一、封装&#xff08;Encapsulation&#xff09; 1. 私有化实现 class BankAccount:def __init__(self, account_holder, balance0):self.__holder account_holder # 双下划线私有属性self.__balance balance# 公有方法访问私有属性def deposit(self, amount):if amount &…

星越L_陡坡缓降使用讲解

目录 1.陡坡缓降 1.陡坡缓降 中控屏下滑-点击陡坡缓降功能 35km/h以下时生效。35km/h-60km/h该功能暂停 60km/h以上该功能关闭

多路FM调频广播解调器:多路电台FM广播信号一体化解调处理方案

多路FM调频广播解调器&#xff1a;多路电台FM广播信号一体化解调处理方案 支持OEM型号开放式协议支持二次开发设计 北京海特伟业科技有限公司任洪卓发布于2025年3月21日 在信息传播领域&#xff0c;FM调频广播媒体以其独特的优势持续发挥着重要作用。为了应对日益增长的多路…

报错 - redis - Unit redis.service could not be found.

报错&#xff1a; Unit redis.service could not be found.Could not connect to Redis at 127.0.0.1:6379: Connection refused解决方法&#xff1a; 检查状态、有必要的话 重新安装 Linux 上查看状态 systemctl status redis显示以下内容&#xff0c;代表正常服务 出现下面…

Guava:Google开源的Java工具库,太强大了

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

Pytorch中layernorm实现详解

平时我们在编写神经网络时&#xff0c;经常会用到layernorm这个函数来加快网络的收敛速度。那layernorm到底在哪个维度上进行归一化的呢&#xff1f; 一、问题描述 首先借用知乎上的一张图&#xff0c;原文写的也非常好&#xff0c;大家有空可以去阅读一下&#xff0c;链接放…

六十天前端强化训练之第二十五天之组件生命周期大师级详解(Vue3 Composition API 版)

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、生命周期核心知识 1.1 生命周期全景图 1.2 生命周期钩子详解 1.2.1 初始化阶段 1.2.2 挂载阶段 1.2.3 更新阶段 1.2.4 卸载阶段 1.3 生命周期执行顺序 1.4 父子组…

Burp Suite 代理配置与网络通信

目录 1. 引言 2. Burp 代理基础配置 2.1 浏览器代理设置 2.2 Burp 监听端口配置 2.3 常见错误排查 3. 网络问题解决 3.1 端口占用检查 3.2 防火墙配置 3.3 证书信任问题 4. 虚拟机环境配置 4.1 NAT 模式与端口转发 4.2 桥接模式配置 4.3 跨设备访问测试 5. 技术概…