OpenLDAP安装与配置

OpenLDAP安装与配置一 背景因为公司项目中已经使用到 ldap 但是不是我搭建的 并且 ldap 是部署在另一台机器上 现在需要切一个简化系统给客户去使用 并且只用一台服务器 需要使用单独的用户和数据管理 所以就开始了 ldap 的安装和搭建工作 二 OpenLDAP 简介在安装 OpenLDAP 之前 我们首先来介绍下 LDAP LDAP 是一款轻量级目录访问协议 LightweightD

一、背景

因为公司项目中已经使用到ldap,但是不是我搭建的,并且ldap是部署在另一台机器上。现在需要切一个简化系统给客户去使用,并且只用一台服务器,需要使用单独的用户和数据管理,所以就开始了ldap的安装和搭建工作。

二、OpenLDAP简介

在安装OpenLDAP之前,我们首先来介绍下LDAP。

LDAP是一款轻量级目录访问协议(Lightweight Directory Access Protocol,简称LDAP),属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。

LDAP提供并实现目录服务的信息服务,目录服务是一种特殊的数据库系统,对于数据的读取、浏览、搜索有很好的效果。目录服务一般用来包含基于属性的描述性信息并支持精细复杂的过滤功能,但OpenLDAP目录服务不支持通用数据库的大量更新操作所需要的复杂的事务管理或回滚策略等。

LDAP具有两个标准,分别是X.500和LDAP。OpenLDAP是基于X.500标准的,而且去除了X.500复杂的功能并且可以根据自我需求定制额外扩展功能,但与X.500也有不同之处,例如OpenLDAP支持TCP/IP协议等,目前TCP/IP是Internet上访问互联网的协议。

OpenLDAP可以直接运行在更简单和更通用的TCP/IP或其他可靠的传输协议层上,避免了在OSI会话层和表示层的开销使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。

OpenLDAP目录中的信息是以树状的层次结构来存储数据(这很类同于DNS),最顶层即根部称作“基准DN”,形如“dc=mydomain,dc=org”或者“o=mydomain.org”,前一种方式更为灵活也是Windows AD中使用的方式。在根目录的下面有很多的文件和目录,为了把这些大量的数据从逻辑上分开,OpenLDAP像其它的目录服务协议一样使用OU(Organization Unit,组织单元),可以用来表示公司内部机构,如部门等,也可以用来表示设备、人员等。同时OU还可以有子OU,用来表示更为细致的分类。

OpenLDAP中每一条记录都有一个唯一的区别于其它记录的名字DN(Distinguished Name),其处在“叶子”位置的部分称作RDN(用户条目的相对标识名)。如dn:cn=tom,ou=animals,dc=ilanni,dc=comcn即为RDN,而RDN在一个OU中必须是唯一的。

OpenLDAP默认以Berkeley DB作为后端数据库,BerkeleyDB数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储。

BerkeleyDB是一类特殊的面向查询进行优化、面向读取进行优化的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果。BerkeleyDB不支持事务型数据库(MySQL、MariDB、Oracle等)所支持的高并发的吞吐量以及复杂的事务操作。

环境:基于centos7,OpenLDAP使用2.4.44版本

三、安装OpenLDAP

使用命令安装OpenLDAP:

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

查看OpenLDAP版本,使用如下命令:

slapd -VV 

在这里插入图片描述
到这里OpenLDAP基本安装完毕,接下来就是开始配置OpenLDAP

四、OpenLDAP配置

PS: OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/,看了很多博客都是使用slapd.conf作为配置文件,而且很多博客内容都已经过时,所以没有一个好的文档真的会踩很多坑,在此记录一下

4.0 配置OpenLDAP管理员密码

设置OpenLDAP的管理员密码:

slappasswd -s [password] 

在这里插入图片描述
密码设置好了之后呢,保存好,下面会使用到。

4.1 修改olcDatabase={2}hdb.ldif文件
修改olcDatabase={2}hdb.ldif文件,对于该文件增加一行

 olcRootPW: {SSHA}dXgO/Ipy5SQiKFZ0u7m79Xo7uzKIr038,然后修改域信息: olcSuffix: dc=teracloud2,dc=cn olcRootDN: cn=admin,dc=teracloud2,dc=cn 

注意:其中cn=admin中的admin表示OpenLDAP管理员的用户名,dc为ldap的服务器域名,导出而olcRootPW表示OpenLDAP管理员的密码。

实际修改如下:

vim /etc/openldap/slapd.d/cn=config/olcDatabase\=\{2\}hdb.ldif olcSuffix: dc=teracloud2,dc=cn olcRootDN: cn=admin,dc=teracloud2,dc=cn olcRootPW: {SSHA}dXgO/Ipy5SQiKFZ0u7m79Xo7uzKIr038 

在这里插入图片描述
4.2 修改olcDatabase={1}monitor.ldif文件

修改olcDatabase={1}monitor.ldif文件,如下:

vim /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=admin,dc=teracloud2,dc=cn” read by * none 

在这里插入图片描述
验证OpenLDAP的基本配置是否正确,使用如下命令:

slaptest -u 

在这里插入图片描述
通过结果看出我们的配置是没有问题的

4.3启动OpenLDAP服务
使用如下命令:

//开始ldap systemctl enable slapd //启动ldap systemctl start slapd //查看ldap的状态 systemctl status slapd 

在这里插入图片描述
4.4 配置OpenLDAP数据库
OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置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/ 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif 

注意:如果这一步导入失败,一般都是密码输入错误,密码要输上面配置的加密前的密码

4.6创建基本的用户节点,数据库管理员

dn: dc=teracloud2,dc=cn objectClass: top objectClass: dcObject objectclass: organization o: Example Inc. dc: teracloud2 dn: ou=Users,dc=teracloud2,dc=cn objectClass: organizationalUnit ou: Users dn: ou=group,dc=teracloud2,dc=cn objectClass: organizationalUnit ou: group dn: cn=admin,dc=teracloud2,dc=cn objectClass: organizationalRole cn: admin description: Directory Administrator 

在这里插入图片描述

ldapadd -x -D cn=admin,dc=teracloud2,dc=cn-W -f basedomain.ldif 

adding new entry “ou=people,dc=teracloud2,dc=cn”

adding new entry “ou=group,dc=teracloud2,dc=cn”

adding new entry “cn=admin,dc=teracloud2,dc=cn”

五、配置日志

[root@VM_0_15_centos myself]# vim log.ldif [root@VM_0_15_centos myself]# cat log.ldif dn: cn=config changetype: modify add: olcLogLevel olcLogLevel: 32 "log.ldif" [New] 4L, 66C written [root@VM_0_15_centos myself]# ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" [root@VM_0_15_centos myself]# mkdir -p /var/log/slapd [root@VM_0_15_centos myself]# chown ldap:ldap /var/log/slapd/ [root@VM_0_15_centos myself]# echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf [root@VM_0_15_centos myself]# systemctl restart rsyslog [root@VM_0_15_centos myself]# systemctl restart slapd [root@VM_0_15_centos myself]# tail -n 4 /var/log/slapd/slapd.log Sep 5 20:43:31 VM_0_15_centos slapd[4520]: => test_filter Sep 5 20:43:31 VM_0_15_centos slapd[4520]: PRESENT Sep 5 20:43:31 VM_0_15_centos slapd[4520]: <= test_filter 6 Sep 5 20:43:31 VM_0_15_centos slapd[4523]: slapd starting 

六、工具连接

图形操作界面有很多种,包括ldapadminldapadmin.exe,当然还有其他的,这个步骤比较简单,就不详细讲解了。
在这里插入图片描述

七、遇到的错误

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223685.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:38
下一篇 2026年3月17日 下午1:38


相关推荐

  • java 反射getmethod_java 反射 getMethod传httpServletRequest报错

    java 反射getmethod_java 反射 getMethod传httpServletRequest报错这个报错只有 IDEA 会有问题 在 eclipse 并不会出现这个问题 有哪位前辈可以帮我指点迷津吗 publicclassS privatestati 1L publicvoiddo HttpServletR HttpServl

    2026年3月16日
    2
  • 国外那些优秀的 Drupal 教程博客

    国外那些优秀的 Drupal 教程博客使用开源软件的巨大好处之一,就是能够参与到它们强大的交流社区中。作为开源CMS的领军人物,Drupal社区就是很好的例子。随着 Drupal 不断地发展变化,社区里的成员每天也都在进行着各种交流,例如Drupal 的新特性、如何使用现有的功能、怎样能够让这个平台变得更好等等。“分享”是开源的核心精神,因此很多人也会将自己的经验、心得以及各种相关的内容记录到博客中。  如果你想加强对 

    2022年6月12日
    35
  • Linux关闭防火墙命令(永久性关闭)

    Linux关闭防火墙命令(永久性关闭)抛开实际生产环境个人平时练习的时候安装虚拟机可能遇到过很多坑就很烦 可能很大一部分原因都是防火墙没关掉哈哈哈哈所以建议永久性关闭防火墙下面是 CentOs7 关闭防火墙的命令 1 查看防火状态 systemctlsta 如果是这样就开着呢如果是这样就是关着 2 暂时关闭防火墙 systemctlsto 重启防火墙 systemctlena 永久关闭后重启 Linux 永久关闭防火墙 firewalld 和 selli

    2026年3月18日
    2
  • Vue3快速入门教程「建议收藏」

    Vue3快速入门教程「建议收藏」DataProperty模板在<>内的,属于HTMLattribute普通的Mustache语法:双大括号->{{number}}的文本v-bind和v-on的使用创建vm实例时对常用的几个钩子函数的使用方法created(){}mounted(){}以下示例:每秒改变1次msg<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”U..

    2022年5月4日
    38
  • 线性八叉树_八叉树 – chunlinge – 博客园

    线性八叉树_八叉树 – chunlinge – 博客园一 基本原理用八叉树来表示三维形体 并研究在这种表示下的各种操作及应用是在进入 80 年代后才比较全面地开展起来的 这种方法 既可以看成是四叉树方法在三维空间的推广 也可以认为是用三维体素阵列表示形体方法的一种改进 八叉树的逻辑结构如下 假设要表示的形体 V 可以放在一个充分大的正方体 C 内 C 的边长为 2n 形体 VC 它的八叉树可以用以下的递归方法来定义 八叉树的每个节点与 C 的一个子立方体对应 树根与

    2026年3月17日
    1
  • java中decode和encode_java encoding

    java中decode和encode_java encoding一概述前端传递过来的url被转码了;应该chuan

    2022年10月7日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号