关于Linux安装OpenLDAP说明

1. 简介

首先LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。在这套标准下,AD(Active Directory)是微软出的一套实现。
那AD是什么呢?暂且把它理解成是个数据库。也有很多人直接把LDAP说成数据库(可以把LDAP理解成存储数据的数据库)。像是其他数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。而我们通常说的LDAP是指运行这个数据库的服务器。可以简单理解AD =LDAP服务器+LDAP应用。

1.1 那LDAP这种数据库有什么特殊的呢?

我们知道,像MySQL数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,是结构的,数据存储在叶子节点上。看看下面的比喻:

假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou),最后就是这个苹果的名字(uid,相当于MySQL表主键id)。好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!

就这样就可以描述清楚“树结构”上的一条记录了。
说一下LDAP里如何定义一个记录的位置吧。

树(dc=ljheee)
分叉(ou=bei,ou=xi,ou= dong)
苹果(cn=redApple)

好了,redApple的位置出来了:

dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=ljheee

其中dn标识一条记录,描述了一条数据的详细路径。
咦!有人疑问,为什么ou会有多个值?你想想,从树根到达苹果的位置,可能要经过好几个树杈,所有ou可能有多个值。关于dn后面一长串,分别是cn,ou,dc;中间用逗号隔开。
总结一下LDAP树形数据库如下:

  • dn :一条记录的详细位置
  • dc :一条记录所属区域 (哪一颗树)
  • ou :一条记录所属组织 (哪一个分支)
  • cn/uid:一条记录的名字/ID (哪一个苹果名字)
    LDAP目录树的最顶部就是根,也就是所谓的“基准DN"。

1.2 为什么要用LDAP目录树来存储数据,用MySQL不行吗,为什么非要搞出一个树形的数据库呢?

这是因为用树形结构存储数据,查询效率更高(具体为什么,可以看一下关系型数据库索引的实现原理——B树/B+树)。在某些特定的场景下,使用树形数据库更理想。比如:需要储存大量的数据,而且数据不是经常更改,需要很快速的查找。
把它与传统的关系型数据库相比,LDAP除了快速查找的特点,它还有很多的运用场景,比如域验证等。

2. 安装ldap

2.1 安装ladp

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

在这里插入图片描述

2.2 查看版本

slapd -VV

在这里插入图片描述

2.3 配置管理员密码

2.3.1 获取加密密码

slappasswd -s root

在这里插入图片描述

2.3.2 修改olcDatabase={2}hdb.ldif文件

vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

修改内容
olcSuffix: dc=testldap,dc=com
olcRootDN: cn=Manager,dc=testldap,dc=com
olcRootPW: {SSHA}84X/7jQ8TwrBd1Sq3k+PkIe1wHhy8mzZ

在这里插入图片描述

2.3.3 修改olcDatabase={1}monitor.ldif文件

vi /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=Manager,dc=testldap,dc=com" read by * none

在这里插入图片描述

2.3.4 验证配置文件是否正确

slaptest -u

在这里插入图片描述

2.3.5 启动服务&&查看服务

systemctl enable slapd
systemctl start slapd
systemctl status slapd

在这里插入图片描述

2.4 配置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/

在这里插入图片描述

注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

2.4.1 导入基本Schema

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

在这里插入图片描述

2.4.2 修改migrate_common.ph文件

vi /usr/share/migrationtools/migrate_common.ph

修改
$DEFAULT_MAIL_DOMAIN = "testldap.com";
$DEFAULT_BASE = "dc=testldap,dc=com";
$EXTENDED_SCHEMA = 1;

在这里插入图片描述

2.5 添加用户及用户组

默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。管理用户就是前面我们刚刚配置的root。
现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:

2.5.1 添加用户组

groupadd ldapgroup1
groupadd ldapgroup2

2.5.2 添加用户并设置密码

useradd -g ldapgroup1 ldapuser1
useradd -g ldapgroup2 ldapuser2
passwd  ldapuser1
passwd  ldapuser2

在这里插入图片描述

密码不少于 8 个字符

2.5.3 提取用户和组

grep ":10[0-9][0-9]" /etc/passwd > /root/users
grep ":10[0-9][0-9]" /etc/group > /root/groups

cat users
cat groups

在这里插入图片描述

2.5.4 生成用户和组的ldif文件

/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
cat /root/users.ldif
cat /root/groups.ldif

在这里插入图片描述

2.5.5 导入用户及用户组到OpenLDAP数据库

配置openldap基础的数据库

cat > /root/base.ldif << EOF
dn: dc=testldap,dc=com
o: testldap com
dc: testldap
objectClass: top
objectClass: dcObject
objectclass: organization

dn: cn=Manager,dc=testldap,dc=com
cn: Manager
objectClass: organizationalRole
description: Directory Manager

dn: ou=People,dc=testldap,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=testldap,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
EOF

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

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/base.ldif

导入用户

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/users.ldif

导入用户组

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/groups.ldif

2.5.6 把OpenLDAP用户加入到用户组

尽管我们已经把用户和用户组信息,导入到OpenLDAP数据库中了。但实际上目前OpenLDAP用户和用户组之间是没有任何关联的。
如果我们要把OpenLDAP数据库中的用户和用户组关联起来的话,我们还需要做另外单独的配置。
现在我们要把ldapuser1用户加入到ldapgroup1用户组,需要新建添加用户到用户组的ldif文件,如下:

cat > add_user_to_groups.ldif << "EOF"
dn: cn=ldapgroup1,ou=Group,dc=testldap,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
EOF

导入ldif:

ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/add_user_to_groups.ldif

2.6 开启OpenLDAP日志访问功能

默认情况下OpenLDAP是没有启用日志记录功能的,但是在实际使用过程中,我们为了定位问题需要使用到OpenLDAP日志。

2.6.1 新建日志配置ldif文件

cat > /root/loglevel.ldif << "EOF"
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
EOF

2.6.2 导入到OpenLDAP中,并重启OpenLDAP服务

ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif
systemctl restart slapd

2.6.3 修改rsyslog配置文件,并重启rsyslog服务

cat >> /etc/rsyslog.conf << "EOF"
local4.* /var/log/slapd.log
EOF
systemctl restart rsyslog

2.7 安装和配置LDAP管理工具PHPldapadmin

2.7.1 下载phpldapadmin

yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
yum -y install epel-release
yum --enablerepo=epel -y install phpldapadmin

2.7.2 修改配置文件

vim /etc/phpldapadmin/config.php


#397行取消注释,398行添加注释
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

在这里插入图片描述

vi /etc/httpd/conf.d/phpldapadmin.conf

在这里插入图片描述

2.7.3 设置开机自启并启动Apache

systemctl enable httpd
systemctl start httpd

2.7.4 登陆web控制台:http://192.168.16.134/phpldapadmin/

用户名:cn=Manager,dc=testldap,dc=com
密码:testldap

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值