Openldap2.5.13编译安装

news2024/11/17 5:37:10

Openldap2.5.13编译安装

本篇文章没有很全面,采用的是编译安装,yum安装参考我的另外一篇文章

一、准备

  1. openssl-1.1.1.tar.gz 下载地址:https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz

  2. openldap-2.5.13.tgz 下载地址:https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.5.13.tgz

  3. 更换yum源

    # "备份原来的源"
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    
    # "下载、替换为阿里云源配置" 
    wget /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    
    # "更新yum缓存" 
    yum clean all
    yum makecache
    
  4. 创建要放置安装的文件夹(这里根据实际情况定义)

    mkdir /oakxian             #项目的总安装路径
    mkdir /oakxian/soft				 #安装包所在位置
    mkdir /oakxian/server      #项目软件安装位置
    mkdir /oakxian/log         #项目日志位置
    
  5. 关闭防火墙和selinux

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# systemctl disable firewalld			
    
    [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    [root@localhost ~]# setenforce 0
    

二、编译并配置openssl-1.1.1

1、openldap需要用到openssl 1.1.1或以上版本,但是centos7截止到2021年07月14日官方yum源中没有并没有openssl 1.1.1以上的版本。所以使用源码进行编译

2、查看当前环境openssl版本,不满足条件,则先进行openssl-1.1.1安装

[root@localhost ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

3、编译oepnssl需要用到gcc,使用yum安装gcc

yum install gcc

4、检查服务器是否安装zlib

whereis zlib

​ 如果服务器已经安装则会输出路径 ,没有安装的需要执行下载安装命令

yum install zlib-devel

​ 再次检查服务器中zlib,显示已经存在

[root@localhost ~]# whereis zlib
zlib: /usr/include/zlib.h /usr/share/man/man3/zlib.3.gz

5、将下载的openssl安装包放置/oakxian/soft目录下并解压

openssl-1.1.1.tar.gz 下载地址:https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz

tar -zxf openssl-1.1.1.tar.gz

6、编译openssl-1.1.1并将其安装到/oakxian/server/openssl目录下

cd /oakxian/soft/openssl-1.1.1             #进入解压后的目录下

#执行配置文件,并设置安装位置为/oakxian/server/openssl
./config shared zlib --prefix=/oakxian/server/openssl 

make && make install                       #编译安装

--prefix是指定安装目录的,shared zlib库是在安装时寻找zlib库依赖的

7、安装完成后构建依赖

cd /oakxian/soft/openssl-1.1.1
./config -t

make depend

8、在编译时使用的动态链接库文件中,加入openssl路径

vim /etc/ld.so.conf文件,在文件末尾加上 /oakxian/server/openssl/lib (填写实际位置)

在这里插入图片描述

执行配置生效命令

ldconfig

9、添加openssl到环境变量

vim /etc/profile 文件 ,添加如下内容到末尾

export OPENSSL=/oakxian/server/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin

执行:

source /etc/profile

10、正常安装完成后,查看openssl版本

[root@localhost server]# openssl version
OpenSSL 1.1.1  11 Sep 2018

注:执行openssl version可能会报如下错误

/usr/local/openssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory  

解决办法:

#位置根据实际情况填写,默认位置为:/usr/local/openssl/lib/libssl.so.1.1
sudo ln -s /oakxian/server/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
sudo ln -s /oakxian/server/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

三、Cyrus SASL安装

这个是编译安装必须要的依赖包,如果选择yum源安装,则不需要(yum安装自带了)

#安装SASL机制依赖包
yum -y install cyrus-sasl-*

四、编译安装openldap-2.5.13

1、下载所需依赖

yum -y install unixODBC-devel.x86_64
yum install -y libtool-ltdl libtool-ltdl-devel tcp_wrappers tcp_wrappers-devel
yum -y install gcc		#gcc也需要,上面已安装过

2、下载openldap包到/oakxian/soft目录下,并编译安装到/oakxian/server/openldap目录下

cd /oakxian/soft						#到压缩包所在位置
tar -zxf openldap-2.5.13.tgz	#解压
cd /oakxian/soft/openldap-2.5.13  #进入解压后目录

执行configure配置:

注意,编译时需要用到上文中已经编译好的openssl相关头文件以及库

./configure CPPFLAGS="-I/usr/local/include  -I/oakxian/server/openssl/include" \
	LDFLAGS="-L/usr/local/lib  -L/oakxian/server/openssl/lib"  \
	--datadir=/oakxian/server/openldap/data \
	--enable-ldap  --enable-cleartext --enable-sql --enable-spasswd \
	--enable-dynamic --enable-syslog --with-cyrus-sasl --enable-ppolicy \
	--enable-crypt --enable-modules --enable-wrappers  \
	--enable-overlays --enable-accesslog --enable-debug  \
	--prefix=/oakxian/server/openldap/ --with-tls=openssl

说明:–enable-overlays会安装所有模块到slapd中,会带有memberof属性,不需要单独添加memberof模块,需要配置文件中添加:overlay memberof,来开启

注意,需要configure都校验通过后再进行编译安装,即上述操作没有报错,提示如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UtH4bYPO-1670481344302)(image/3.png)]

执行:

make depend

make前需要修改一下编译模式 #解决"for.c:3:2: 附注:使用 -std=c99 或 -std=gnu99 来编译您的代码"报错

cd /oakxian/soft/openldap-2.5.13
vim   servers/slapd/back-sql/add.c

修改如下图所示,将i变量提出到for循环外

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4GUeOUxD-1670481344303)(image/2.png)]

执行:

make
make test  #时间较久
make install

编译好后openldap就安装到了指定目录/oakxian/server/openldap目录下

3、配置环境变量

vim /etc/profile,添加如下内容

LDAP_HOME=/oakxian/server/openldap
PATH=$PATH:$LDAP_HOME/bin:$LDAP_HOME/sbin:$LDAP_HOME/libexec
export PATH

source /etc/profile

五、配置openldap

1、设置超级密码rootpw

[root@localhost ~]# slappasswd -s 123456
{SSHA}3hz85TJMt4n8QOdEDXI7MbfEcCbS9UJM
#创建directory目录,需要根据slapd.conf文件中directory的值创建
mkdir /oakxian/server/openldap/var/openldap-data

#先启动slapd
[root@localhost openldap]# slapd -d 256 -h "ldap:/// ldapi:///"

#重启一个shell页面,执行以下命令:
#创建slapd.d目录
mkdir /oakxian/server/openldap/etc/openldap/slapd.d
#生成对应slapd.d下相关配置文件
slaptest -f /oakxian/server/openldap/etc/openldap/slapd.conf -F /oakxian/server/openldap/etc/openldap/slapd.d

#修改权限
vim /oakxian/server/openldap/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif

#----将默认olcAccess: {0}to * by * none修改为如下内容:
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none

#重启slapd,在第一个启动的等待命令界面,ctrl+c停止slapd,再执行启动命令
[root@localhost openldap]# slapd -d 256 -h "ldap:/// ldapi:///"

/这一步也不执行
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif


2、导入schema

文件都在/oakxian/server/openldap/etc/openldap/schema目录下

ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/dsee.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/namedobject.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/msuser.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /oakxian/server/openldap/etc/openldap/schema/dyngroup.ldif

注意:如果报错:additional info: olcAttributeTypes: Duplicate attributeType

则证明已经包含对应的schema,上述schema,后两个msuser和dyngroup我在导入时显示重复

3、创建根域,与超级管理员

[root@localhost ~]# slappasswd -s 123456
{SSHA}l+9FKL3GIYmQH1QMwVHm5ytWaxu3wIhZ

vim domain-dbadmin.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by dn.base="cn=directory manager,dc=cbpm,dc=com" read
  by * none

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=cbpm,dc=com

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=directory manager,dc=cbpm,dc=com

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}l+9FKL3GIYmQH1QMwVHm5ytWaxu3wIhZ

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by dn="cn=directory manager,dc=cbpm,dc=com" write
  by anonymous auth
  by self write
  by * none
olcAccess: {1}to dn.base=""
  by * read
olcAccess: {2}to *
  by dn="cn=directory manager,dc=cbpm,dc=com" write
  by * read

ldapmodify -Y EXTERNAL -H ldapi:/// -f domain-dbadmin.ldif

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

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

相关文章

APS计划排产软件在仪器仪表行业的应用

仪器仪表是指用以产生、测量精密量的设备和装置,包括对精密量的观察、监视、测定、验证、记录、传输、变换、显示、分析处理与控制。仪器仪表是仪器仪表的一个重要分支。伴随国家出台政策大力发展精密仪器仪表下游行业,下游应用领域对精密仪器仪表的需求…

React 学习笔记:组件生命周期

组件生命周期 生命周期一个事物从创建到最后消亡经历的过程,在这个过程中会有不同的状态(新生儿、少年),所以在 16.8 版本以前生命周期只有类组件才有,函数组件是没有这个概念的,因为它没有状态&#xff0…

Diffusion-LM Improves Controllable Text Generation 扩散语言模型改善可控文本生成

论文链接:https://arxiv.org/abs/2205.14217 代码链接:https://github.com/XiangLi1999/Diffusion-LM 一、简介 无需重训模型控制语言模型的表现是自然语言生成(NLG)的一个重要开放问题,近期工作已经在简单句子属性控…

解读小红书2022年母婴行业报告:心智种草的流量密码

母婴用户代际更迭,90后晋升为母婴消费主力军。新一代宝爸宝妈的关注点在哪里?品牌该如何通过小红书满足ta们的进阶需求,为母婴消费注入新活力? 本文将解读小红书官方发布的《2022年母婴行业人群洞察报告》,基于上千名用…

Ubuntu20运行SegNeXt代码提取道路水体(二)——SegNeXt源代码安装到测试环境配置全过程摸索

首先我们在第一篇里面已经下载了SegNeXt代码 打开源代码 查看readme文件 我们先安装一下里面提到的torchprofile 链接在这 其实只要这个语句就能安装 pip install torchprofile这一步没什么问题 很顺利 接下来继续按照他的教程走 我们在(一)已经安装了…

快手小程序怎么开发

快手小程序开发很简单,直接找一个快手小程序开发平台就可以。 大家可以按照下面这个步骤去完成,完成后就能开发出一个快手小程序啦。 操作像玩消消乐那么简单! 不过在开发快手小程序前,需要先检查以下这几样东西有没有准备好&a…

小白学流程引擎-FLowable(五) — BPMN2.0模型规范

前言: 不用到处百度BPMN2的博客了,本篇文章带你系统掌握BPMN2规范的核心知识点。全文2万字,全覆盖BPMN2知识点,图文并茂,泡杯咖啡,慢慢细品~ 一、BPMN是什么 BPMN(Business Proces…

ChatGPT的理解

参考 李宏毅老师讲解 思维导图 ChatGPT 对标 instruct GPT 本质 GPT的社会化 训练过程 1 学习文字接龙 无监督学习 大量的自我学习 生成的答案具有随机性 自己修炼 2 人类老师引导文字接龙的方向 监督学习 标注:(问题提示,答案)对,引导gpt生…

10万字208道Java经典面试题总结(附答案)一

11、String 类的常用方法都有那些? equals、length、contains、replace、split、hashcode、indexof、substring、trim、toUpperCase、toLowerCase、isEmpty等等。 12、普通类和抽象类有哪些区别? 抽象类不能被实例化; 抽象类可以有抽象方法&…

分享米筐量化的使用方法

米筐量化都是量化金融分析经常会用到的数据提供平台,今天主要是来讲一下关于米筐量化的使用方法: 基本操作: 在这里把tushare和rqdatac是import为ts和rq,这import as会对之后的缩写产生影响。 例如: rq.get_price(o…

Docker网络模式

目录 网络模式 bridge模式(默认模式) host模式(仅主机模式) 初识网络模式 查看桥接模式 查看仅主机模式的特点 host模式 自定义网络 数据卷挂载tomcat 4.2自定义网络 网络模式 bridge模式(默认模式) docker run时使用–netbridge,这…

MySQL RR级别下,什么场景会产生不可重复读、幻读?

1 背景 最近在复习MySQL相关知识,忽然想到MVCC真的能完全解决不可重复读、幻读问题吗?于是做了下述测试。 2 准备环境 MySQL版本: ➜ ~ mysql --version mysql Ver 8.0.31 for macos12 on x86_64 (MySQL Community Server - GPL)MySQL隔…

Python学习-8.2.2 库(wordcloud库的基础与实例)

第三方库的介绍及安装方式见::Python学习-8.库(第三方库介绍与下载安装) wordcloud库概述 词云概念 是由词汇组成类似云的彩色图形,可以过滤掉大量的文本信息,使读者只要一眼扫过文本就可以领略文本的主旨…

风控并行组合模型及其额度定价场景实践

昨天,我们分享过一篇文章《串行组合模型及信用评估场景实践》,里边详细介绍了串行组合模型的原理逻辑,以及在信用风险评估场景的具体实现过程。同时,从模型串联数量、排列顺序等多个维度验证了串行组合模型的合理性与有效性&#…

区块链赋能的6G零信任车联网可信接入方案

(一)文章素材摘录于 单位信息|广东工业大学北京邮电 郝敏博士团队 数据来源|电子与信息学报 基金项目|国家重点研发计划 (二)正文 随着三大运营商 5G 套餐于2019年底的相继上线,宣…

【C语言程序设计】实验 6

目录 1. 无理数e 2. 平面镜反数 3. 整数分解质因数 4. 素数回文 5. 阶乘和数 6. 输出星号图案 7. 验证哥德巴赫猜想 1. 无理数e 【问题描述】输入一个正整数&#xff0c;由下式e11/1!1/2!...1/n!求无理数e&#xff0c;保留9位小数。 【输入形式】一个正整数n(<…

pytorch基础操作(三)梯度下降(小批量)计算线性回归

1、线性模型 线性假设是指⽬标&#xff08;房屋价格&#xff09;可以表⽰为特征&#xff08;⾯积和房龄&#xff09;的加权和&#xff0c;如下⾯的式⼦&#xff1a; price warea area wage age b. 其中: warea和wage 称为权重&#xff08;weight&#xff09;&#xff0c;…

JAVA SCRIPT设计模式--结构型--设计模式之Composite组合模式(8)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能&#xff0c;所以不可能像C&#xff0c;JAVA等面向对象语言一样严谨&#xff0c;大部分程序都附上了JAVA SCRIPT代码&#xff0c;代码只是实现了设计模式的主体功能&#xff0c;不代…

进阶 - Git的Bug分支

本篇文章&#xff0c;是基于我自用Linux系统中的自定义文件夹“test_rep”&#xff0c;当做示例演示 具体Git仓库的目录在&#xff1a;/usr/local/git/test_rep Git的Bug分支 软件开发中&#xff0c;bug 就像家常便饭一样。有了 bug 就需要修复&#xff0c;在 Git 中&#xff…

LabVIEW与工具包版本的不兼容问题

前面的文章有介绍过&#xff0c;LabVIEW可以看做是一种编程语言&#xff0c;同时NI也在LabVIEW里提供了非常多的可快速构建专业应用的工具包模块&#xff0c;这些模块有的是用于专业数据采集的&#xff0c;有的是用于图像处理的&#xff0c;还有的可能是工业控制的。个人觉得这…