Centos7编译openldap-2.4.44

1 准备条件

1.1 系统环境

当前系统版本:centos7.7 x86_64 GNU/Linux
在这里插入图片描述

1.2 软件

openldap-2.4.44.tgz
db-5.1.29.tar.gz
ldapadmin-4.13 windows链接,可视化工具

1.3 准备工作

1.3.1 关闭selinux

①临时关闭 (不需要重启服务器)

setenforce 0

然后再输入命令:getenforce 0进行查看,此时变成了Permissive,则说明SElinux关闭成功
②永久关闭 (需要重启服务器)

vim /etc/selinux/config

修改/etc/selinux目录下的config文件
将SELINUX=enforcing改为SELINUX=disabled
在这里插入图片描述

1.3.2 打开防火墙tcp 389 / 636端口或关闭防火墙。

查看环境防火墙是否开启,如果loaded状态表示未开启

systemctl status firewalld

在这里插入图片描述
如果是激活状态则执行如下命令关闭防火墙:

systemctl stop firewalld.service

并禁止开机自启动

systemctl disable firewalld.service 

2 软件获取

注意:openldap官方说明openldap-2.4.4可以不用依赖MDB和BDB数据库,因此在编译的时候可以不用添加BDB数据库。

2.1 下载BDB

下载berkeley-db-5.1.29
http://download.oracle.com/berkeley-db/db-5.1.29.tar.gz

2.2 下载OPENLADB

进入openladb下载地址,选择2.4.44版本
https://www.openldap.org/software/download/OpenLDAP/openldap-release/

2.3 LDAP Administrtor

官网下载地址:http://www.ldapbrowser.com/download.htm
64-bit:http://softerra-downloads.com/ldapadmin/ldapadmin-4.13.16704.0-x64-eng.msi

3 安装OPENLDAP

3.1 安装依赖包

这里需要配置yum源,如阿里/网易等,或者可以配置使用离线yum源,详情可看这篇文章

yum install *ltdl* -y

涉及libtool-ltdl与libtool-ltdl-devel,如不安装,在编译时报错:configure: error: could not locate libtool ltdl.h
在这里插入图片描述
安装Cyrus SASL

yum install -y cyrus-sasl-*

**注意:**如果不安装cyrus-sasl-*,编译完成后会报如下错误
ldap_sasl_interactive_bind_s: Can’t contact LDAP server (-1)
在这里插入图片描述

3.2 安装BDB

解压db-5.1.29.tar.gz,并进入build_unix目录进行编译安装
#注意:必须在解压包的build_unix目录中编译安装,否则会报错

tar -zxvf db-5.1.29.tar.gz
cd db-5.1.29/build_unix/
../dist/configure --prefix=/usr/local/berkeleydb-5.1.29

注意: --prefix指定安装路径,其他配置信息可通过./configure --help
在这里插入图片描述
等待命令执行完成,接下来执行make和make install命令

make

在这里插入图片描述

make install

在这里插入图片描述

3.3 更新lib库

#保证在后面编译openldap时能找到lib和include下的库

cd /root/software/berkeley-db-5.1.29
echo "/usr/local/berkeleydb-5.1.29/lib/" > /etc/ld.so.conf
ldconfig -v

这里的目录/root/software/berkeley-db-5.1.29指的是解压berkeley-db-5.1.29.tar.gz的目录

3.4 安装openldap

3.4.1 解压openldap-2.4.44.tgz文件并进入目录

tar -zxvf openldap-2.4.44.tgz
cd openldap-2.4.44

3.4.2 执行编译命令:

./configure --prefix=/usr/local/openldap-2.4.44 --enable-syslog --enable-modules --enable-debug --with-tls CPPFLAGS=-I/usr/local/berkeleydb-5.1.29/include/ LDFLAGS=-L/usr/local/berkeleydb-5.1.29/lib/

注意:① 如果未设置CPPFLAGS,configure过程可能会提示configure: error: BDB/HDB: BerkeleyDB not available 或 configure: error: BerkeleyDB version incompatible with BDB/HDB backends
② 这里编译时可以不用添加BDB或HDB数据库,具体需要添加如下参数:

--enable-bdb=no --enable-hdb=no

在这里插入图片描述
接下来按照提示分别运行如下命令:

make depend # 执行该命令可以关联openldap所依赖的BDB相关内容

在这里插入图片描述

make

在这里插入图片描述

make test #这一步会比较耗时,耐心等待执行完成

在这里插入图片描述

make install

在这里插入图片描述

3.4.3 设置可执行命令

对openldap客户端(bin)与服务器端(sbin)相关执行档添加软链接,也可以通过增加环境变量的方式设置

[root@yum-1 openldap-2.4.44]# cd /usr/local/openldap-2.4.44
[root@yum-1 openldap-2.4.44]# ln -s /usr/local/openldap-2.4.44/bin/* /usr/local/bin/
[root@yum-1 openldap-2.4.44]# ln -s /usr/local/openldap-2.4.44/sbin/* /usr/local/sbin/

执行完上述操作,openldap已经编译完成可以使用了。

4 openldap配置

4.1 openldap-2.4.44目录结构

bin/ --客户端工具如ldapadd、ldapsearch
etc/ --包含主配置文件slapd.conf、schema、DB_CONFIG等
include/
lib/
libexec/ --服务端启动工具slapd
sbin/ --服务端工具如slappasswd
share/
var/ --bdb数据、log存放目录

在这里插入图片描述

4.2 配置rootdn密码(optional)

设置rootdn密码,这里设置为chen1126
这样rootdn密码为密文方式,复制输出密文到主配置文件rootdn对应的位置即可,如果不想麻烦,可以忽略此步,在主配置文件中使用明文即可。

[root@yum-1 openldap-2.4.44]# slappasswd
New password:
Re-enter new password:
{
    
    SSHA}K9+WK/t1e0V0K6pUMOyTsaTwkDBNEDiP

4.3 主配置文件slapd.conf

 cd /usr/local/openldap-2.4.44/etc/openldap/
 vim slapd.conf

新增如下内容:

#schema默认只有core.schema,各级需要添加,这里将同配置文件一个目录的schema目录中有的schema文件都加到配置文件中;
include /usr/local/openldap-2.4.44/etc/openldap/schema/collective.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/corba.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/cosine.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/duaconf.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/dyngroup.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/inetorgperson.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/java.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/misc.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/nis.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/openldap.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/pmi.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/ppolicy.schema

在这里插入图片描述
#新增日志文件级别与路径,需要在编译时–enable-debug,否则日志文件输出,不影响调试模式;

loglevel    256
logfile    /usr/local/openldap-2.4.44/var/slapd.log

#修改域名及管理员账户名;
suffix “dc=chen,dc=com”
rootdn “cn=admin,dc=chen,dc=com”

#使用密文密码,即前面使用slappasswd生成的密文或明文密码;
rootpw {SSHA}K9+WK/t1e0V0K6pUMOyTsaTwkDBNEDiP
在这里插入图片描述

4.3 启动OpenLADP

 /usr/local/openldap-2.4.44/libexec/slapd

4.4 验证是否启动

ldapsearch -x -b '' -s base'(objectclass=*)'

如图示,说明openldap已经启动运行成功:
在这里插入图片描述

5 openldap简单使用

5.1 创建1个管理员账号

编辑test.ldif文件,注意与slapd.conf文件中保持一致

dn: dc=chen,dc=com
objectclass: dcObject
objectclass: organization
o: Chen.Inc
dc: chen

dn: cn=admin,dc=chen,dc=com
objectclass: organizationalRole
cn: admin

在这里插入图片描述
插入数据库

 ldapadd -x -D "cn=admin,dc=chen,dc=com" -W -f test.ldif

在这里插入图片描述
验证是否插入成功

ldapsearch -x -b 'dc=chen,dc=com' '(objectClass=*)'

在这里插入图片描述

5.2 创建1个具有部门属性的员工

编辑test2.ldif文件,注意与slapd.conf文件中保持一致
这里其实是先创建1个部门”it”,再在”it”部门创建了1个员工,实际上是两条

dn: ou=it,dc=chen,dc=com
ou: it
objectClass: organizationalUnit

dn: cn=employee1,ou=it,dc=chen,dc=com
ou: it
cn: employee1
sn: t1
objectClass: inetOrgPerson
objectClass: organizationalPerson

插入数据库

ldapadd -x -D "cn=admin,dc=chen,dc=com" -W -f test2.ldif

在这里插入图片描述
验证是否插入成功

ldapsearch -x -b 'dc=chen,dc=com' '(objectClass=*)'

在这里插入图片描述

6 使用ldapadmin可视化工具

新建profile
在这里插入图片描述
输入profile名字,点击下一步
在这里插入图片描述
输入Host地址,Port默认为389(注意iptables是否开放389端口);

BaseDN处默认为空,标示在根节点上,如果不想显示根节点,可在后方下拉列表中选择具体的一级数据库,下一步
在这里插入图片描述
选择"Other credenti",

Mechanism选择"Simple",

Princip处输入"cn=admin,dc=chen,dc=com",

Password处填写相应密码,保存密码,点击"完成"即创建成功。
在这里插入图片描述
验证
在这里插入图片描述

7 附录

LDAP为人员组织机构中常见的对象都设计了属性(比如commonName,surname)。下面有一些常用的别名:

属性名称 属性别名 语法 描述
commonName cn Directory String 名字 kk
surname sn Directory String 姓式 chen
organizationalUnitName ou Directory String 单位(部门)名称 IT_SECTION
organization o Directory String 组织(公司)名称 linux
objectClass 内置属性 organizationa
domaincompoent dc Directory String 域名 chen
country c Directory String 国家 US

猜你喜欢

转载自blog.csdn.net/Keyuchen_01/article/details/124056146