OpenLDAP是一个开源的LDAP(轻量级目录访问协议)服务器,它提供了一个健壮、高性能的目录服务,适用于多种应用场景。
OpenLDAP项目起始于1999年,是OpenLDAP2.0的后续版本。它由OpenLDAP社区维护,是一个功能丰富的目录服务器,支持LDAPv3协议,并且兼容LDAPv2。
OpenLDAP支持多种后端存储方式,包括但不限于Berkley DB
、HDB(Hierarchical Database)
、MDB(Memory-Mapped Database)
以及Monitor backend
。此外,OpenLDAP还提供了丰富的客户端库,允许开发者在各种编程语言中实现对LDAP服务器的操作。
提示
目前OpenLdap的LTS版本为2.5.x
,最新版本为2.6.x
,本文将采用CentOS7
版本进行OpenLdap2.5.16
版本的安装步骤进行详细说明,相同小版本的安装步骤基本相同,如需使用2.4.x
,可参考附录部分说明。
提示
如不使用CentOS,选择Linux的其他发行版系统,安装步骤基本相同,由于系统间的差异,可能会出现部份依赖组件缺失的情况,按照提示安装即可。另外,本文后续安装步骤仅适用于x86
架构操作系统,如果使用arm
架构操作系统,请查看附录部分说明。
下载地址:https://www.centos.org/download/,根据自己的需求下载合适的系统版本,本文使用CentOS-7-x86_64-Minimal-2009.iso
,因为仅做演示使用,Minimal版本安装包最小。
CentOS7可以安装在物理机上,也可以作为虚拟机运行。如使用虚拟机,可以选择常用的虚拟机软件,例如:
CentOS系统的安装过程不在本文讨论的范围,需要读者自行处理,安装完后可通过cat /etc/os-release
查看系统的版本发布信息。
NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
提示
如系统中已安装Libtool工具,可忽略本节。要检测系统中是否已安装Libtool,可以使用以下几种方法:
which libtool
,如果系统中安装了Libtool,which命令会输出Libtool的路径。如果没有输出,则表示Libtool未安装。libtool --version
,这个命令会显示Libtool的版本信息,如果Libtool已安装,将看到版本号和其他相关信息。如果没有安装,命令将不会执行或提示找不到命令。相关信息
Libtool是一个构建和测试共享库的辅助工具,它隐藏了不同操作系统创建共享库时的复杂性,使得开发者可以编写可移植的代码,而不必担心依赖库的构建细节。Libtool的主要作用包括:
Libtool安装步骤如下:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellcd /opt/soft # 以实际目录为准 tar -zxvf libtool-2.2.6a.tar.gz cd libtool-2.2.6 ./configure make make install
提示
在执行./configure
可能会因为系统缺失必须的组件导致执行失败,比如博主使用的是Minimal
版本的系统,有很多工具是不存在的,在执行该命令时会出现类似如下错误:
## ------------------------- ## ## Configuring libtool 2.2.6 ## ## ------------------------- ## checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether subdir libobjs are useable... yes checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.
此时,可以先安装缺失的组件再重新执行./configure
以及后续命令。
shellyum -y install gcc gcc-c++ gcc-gfortran
/etc/ld.so.conf
文件,在其中添加一行/usr/local/lib
,修改后的文件内容参考如下:include ld.so.conf.d/*.conf /usr/local/lib
/sbin/ldconfig -v
相关信息
除了按照上述手动安装方式外,还可以通过系统的包管理器进行安装。例如,在Debian或Ubuntu系统中,可以使用以下命令安装Libtool:
shellsudo apt-get install libtool
在Red Hat或CentOS系统中,可以使用:
shellsudo yum install libtool
提示
OpenLdap2.5.x依赖openssl 1.1.1+
,可以通过openssl version
命令查看系统中的openssl的版本信息,若未安装或版本号低于要求的版本则需要安装/升级,否则忽略本节。
openssl安装升级步骤如下:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellcd /opt/soft # 以实际目录为准 tar -zxvf openssl-1.1.1t.tar.gz cd openssl-1.1.1t ./config --prefix=/usr/local/openssl make make install
/etc/ld.so.conf.d/ssl.conf
文件,在其中添加一行/usr/local/openssl/lib
,修改后的文件内容参考如下:/usr/local/openssl/lib
shellldconfig -v mv /usr/bin/openssl /usr/bin/openssl_bak ln /usr/local/openssl/bin/openssl /usr/bin/openssl
openssl version
查看openssl是否安装/升级成功OpenLdap安装步骤如下:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellcd /opt/soft # 以实际目录为准 tar -zxvf openldap-2.5.16.tgz cd openldap-2.5.16 ./configure --prefix=/opt/openLDAP --enable-debug --enable-dynamic \ --enable-cleartext --enable-crypt --enable-modules --enable-passwd \ --enable-overlays --enable-accesslog --enable-autoca=no \ --with-tls=openssl CPPFLAGS="-I/usr/local/openssl/include" \ LDFLAGS="-L/usr/local/openssl/lib" make depend make make install
注意
上述步骤安装完成后,OpenLdap会安装在/opt/openLDAP
目录,在执行./configure
时若出现无法找到openssl库文件信息,则需要调整CPPFLAGS
参数,将其指向正确的openssl路径。通常情况按照2.3章节步骤安装/升级openssl,则在OpenLdap配置阶段 不会出现异常。另外在配置中使用了相对通用的配置参数,如您有特殊的业务需求则需要按需调整,但是如果您不清楚配置的含义以及修改后带来的影响,则建议您保持上述命令执行。
在OpenLdap2.5.x的版本中已经完全移除了对BDB
数据库引擎的支持,默认采用MDB
数据库引擎,所以在安装过程中不需要事先安装BDB
。
提示
日志并不是强制需要配置的,但是通常为了可追溯,宕机问题可排查,建议对日志进行配置。OpenLdap默认使用LOCAL4记录日志,可以通过配置syslog不同步文件系统来提高某些系统上的日志记录性能(man syslogd/syslog.conf)。在Linux中,可以在syslog.conf中以“-”作为日志文件名的前缀。示例如下:
# LDAP logs local4.* -/var/log/slapd.log
配置日志时需要注意系统中使用的日志系统,根据不同的日志系统进行配置,常用的日志系统为rsyslog
和syslog
,二者在配置上有些许差异,请注意甄别,在现代系统中一般会使用rsyslog
替代syslog
。
/etc/rsyslog.conf
文件,在其中添加一行local4.* -/var/log/slapd.log
shellservice rsyslog restart
相关信息
如果系统正在使用rsyslog
,那么/etc/syslog.conf
文件可能会被忽略,而使用/etc/rsyslog.conf
进行配置。在一些系统中,为了向后兼容性,/etc/rsyslog.conf
文件可能会包含对/etc/syslog.conf
中规则的转发。然而,最好的做法是直接编辑/etc/rsyslog.conf
以配置现代的rsyslog
服务
/etc/syslog.conf
文件,在其中添加一行local4.* /var/log/slapd.log
shellservice syslog restart
OpenLdap在运行后会使用389
端口,如果操作系统启用了防火墙,则需要添加该端口,避免其他主机无法正常连接。参考命令如下:
shellfirewall-cmd --zone=public --add-port=389/tcp --permanent systemctl restart firewalld.service
至此OpenLdap已经安装完成,在本节中,我们将启动OpenLdap的服务进行测试验证。
OpenLdap安装完成后,会生成一个默认的配置文件/opt/openLDAP/etc/openldap/slapd.conf
,在验证阶段可以直接基于该文件启动服务。
在启动OpenLdap的服务之前,需要先检查数据文件存储的文件夹是否存在,如不存在则需要新创建,否则服务会启动失败。默认数据文件存储路径为/opt/openLDAP/var/openldap-data
,可通过如下命令创建对应的文件夹:
shellcd /opt/openLDAP/var/ mkdir openldap-data
准备工作完成后,执行如下命令启动OpenLdap服务:
shellcd /opt/openLDAP/libexec && ./slapd
若配置了日志,则可通过日志查看OpenLdap的启动状态。
shelltail -500f /var/log/slapd.log
成功启动的参考日志如下:
Mar 30 16:53:11 MiWiFi-R3-srv slapd[6055]: @(#) $OpenLDAP: slapd 2.5.16 (Mar 30 2024 16:08:56) $#012#011root@MiWiFi-R3-srv:/opt/soft/openldap-2.5.16/servers/slapd Mar 30 16:53:11 MiWiFi-R3-srv slapd[6056]: slapd starting
除了通过日志判断外,还可以通过进程以及端口信息判断OpenLdap的服务是否正常启动。
ps -aux | grep slapd
netstat -an|grep :389
相关信息
若netstat
命令无法使用,可通过如下命令安装常用的命令工具:
shellyum -y install net-tools psmisc
OpenLdap的服务启动后,对于首次安装的OpenLdap需要基于slapd.conf
文件生成配置信息以验证配置文件是否正常,可通过如下命令生成配置:
shellcd /opt/openLDAP/etc/openldap/ mkdir slapd.d cd /opt/openLDAP/sbin/ ./slaptest -f /opt/openLDAP/etc/openldap/slapd.conf -F /opt/openLDAP/etc/openldap/slapd.d/
若输出config file testing succeeded
则表示配置正常,然后重启OpenLdap的服务。
shellkill -9 $(cat /opt/openLDAP/var/run/slapd.pid) cd /opt/openLDAP/libexec && ./slapd
注意
如果目录/opt/openLDAP/etc/openldap/slapd.d
下有文件,表示配置用slapd.d
目录下的配置,slapd.conf
的配置将不再生效,重新配置时需要删除slapd.d
下的所有文件,重新用命令生成。
在OpenLdap中内置了一些常用的工具,比如ldapsearch
可用于搜索OpenLdap中的数据,可以使用该工具进行连接测试。
shellcd /opt/openLDAP/bin ./ldapsearch -x -D "cn=Manager,dc=my-domain,dc=com" -W -b "cn=config"
执行命令后会要求输入密码,因为使用默认配置,在配置文件中的密码为secret
,可以使用该密码进行认证,认证通过后返回参考数据如下则表示测试正常
# extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1
相关信息
ldapsearch
是一个用于查询服务器的命令行工具。它允许用户根据指定的搜索条件检索目录中的信息。ldapsearch
支持多种参数,用于定制查询的行为和输出。以下是一些常用的ldapsearch
参数及其含义:
在arm
架构下安装OpenLdap,整体步骤一致,在执行某些命令时可能会出现configure: error: cannot guess build type; you must specify one
错误,则需要在执行的命令最后面加上--build=arm
,比如:
shell./configure --build=arm
OpenLdap2.4.x版本中可以选择使用BDB
作为数据库引擎,BDB
的安装步骤如下:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellcd /opt/soft # 以实际目录为准 tar -zxvf db-5.2.36.tar.gz cd db-5.2.36 ./dist/configure --prefix=/opt/BerkeleyDB make make install
相关信息
Berkeley DB是一个开源的嵌入式数据库系统,由Sleepycat Software公司开发,并在2006年被Oracle公司收购。它提供了一个高效的键值存储解决方案,广泛应用于各种需要数据存储和检索功能的应用程序中。
Berkeley DB的主要特点:
Berkeley DB的应用场景:
OpenLdap2.4.x安装步骤如下:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellcd /opt/soft # 以实际目录为准 tar -zxvf openldap-2.4.59.tgz cd openldap-2.4.59 LD_LIBRARY_PATH="/opt/BerkeleyDB/lib" ./configure --prefix=/opt/openLDAP \ --enable-debug --enable-dynamic --enable-cleartext --enable-crypt \ --enable-modules --enable-monitor --enable-passwd --enable-overlays \ --enable-accesslog CPPFLAGS="-I/opt/BerkeleyDB/include" \ LDFLAGS="-L/opt/BerkeleyDB/lib" make depend make make install
注意
在安装OpenLdap2.4.x如果出现configure: error: Berkeley DB version mismatch*
错误则需要更改配置命令,添加LD_LIBRARY_PATH="/opt/BerkeleyDB/lib
,在上述命令中已经添加该参数。
BDB
数据库在默认情况下存在性能问题,所以使用BDB
数据库存储数据时需要对其进行性能优化。在配置完slapd.conf
文件后,启动OpenLdap之前,需要在数据库所在文件夹中添加DB_CONFIG
文件对BDB
数据进行优化以提升其性能(对已生成的BDB
数据库文件夹中添加该文件无效),参考配置文件如下:
# $OpenLDAP$ # Example DB_CONFIG file for use with slapd(8) BDB/HDB databases. # # See the Oracle Berkeley DB documentation # <http://www.oracle.com/technology/documentation/berkeley-db/db/ref/env/db_config.html> # for detail description of DB_CONFIG syntax and semantics. # # Hints can also be found in the OpenLDAP Software FAQ # <http://www.openldap.org/faq/index.cgi?file=2> # in particular: # <http://www.openldap.org/faq/index.cgi?file=1075> # Note: most DB_CONFIG settings will take effect only upon rebuilding # the DB environment. # one 0.25 GB cache set_cachesize 0 268435456 1 # Data Directory #set_data_dir db # Transaction Log settings set_lg_regionmax 262144 set_lg_bsize 2097152 #set_lg_dir logs # Note: special DB_CONFIG flags are no longer needed for "quick" # slapadd(8) or slapindex(8) access (see their -q option).
在编译openssl时,若出现Operating system: x86_64-whatever-linux2 You need Perl 5.
错误,则可通过如下步骤安装perl:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellcd /opt/soft # 以实际目录为准 tar -zxvf perl-5.34.0.tar.gz cd perl-5.34.0 ./Configure -des -Dprefix=$HOME/localperl make make test make install
操作系统发版信息如下:
NAME="Kylin Linux Advanced Server" VERSION="V10 (GFB)" ID="kylin" VERSION_ID="V10" PRETTY_NAME="Kylin Linux Advanced Server V10 (GFB)" ANSI_COLOR="0;31"
在麒麟国防版系统中安装OpenLdap2.5,可以简化上述安装流程,无需手动安装libtool
与openssl
。本文中2.4 安装OpenLdap(含)步骤可以合并为如下步骤:
/opt/soft
。如使用wget
等工具在服务器上直接下载则本步骤可忽略shellyum -y install make gcc gcc-c++ gcc-gfortran libtool libtool-ltdl libtool-ltdl-devel openssl-devel cd /opt/soft # 以实际目录为准 tar -zxvf openldap-2.5.16.tgz cd openldap-2.5.16 ./configure --prefix=/opt/openLDAP --enable-debug --enable-dynamic \ --enable-cleartext --enable-crypt --enable-modules --enable-passwd \ --enable-overlays --enable-accesslog --enable-autoca=no \ --with-tls=openssl make depend make make install
编译安装完成后,后续配置步骤与上述内容一致,无需特殊调整。
使用openEuler20.03
进行OpenLdap2.5
编译安装时可能会出现如下错误:
make: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by /usr/local/lib/libltdl.so.7)
该错误是因为系统中依赖glibc
版本太低,此时可以将系统中yum
源更换为22.03
版本的信息,然后执行yum update glibc
升级即可。
本文作者:蒋固金
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!