LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin

目录

  1. OpenLDAP
    1.1. OpenLDAP简介
    1.2. LDAP的基本模型
    1.2.1. 目录树概念
    1.2.2. DC、UID、OU、CN、SN、DN、RDN
    1.2.3. 基本模型
    1.3. LDAP的使用
    1.4. 相关网址
    1.5. 安装OpenLDAP
    1.5.1. 系统环境信息
    1.5.2. 基础的环境准备
    1.5.3. OpenLDAP服务器的搭建
    1.5.4. 安装和配置LDAP管理工具PHPldapadmin

1.OpenLDAP

1.1.OpenLDAP简介

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等)所支持的高并发的吞吐量以及复杂的事务操作。

1.2.LDAP的基本模型

每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树的概念:

1.2.1.目录树概念

1、目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
2、条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
3、对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
4、属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

1.2.2.DC、UID、OU、CN、SN、DN、RDN

关键字 英文全称 含义
dc Domain Component 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)
uid User Id 用户Id zuoquantu (一条记录的ID)
ou Organization Unit 组织单位,组织单位可以包含在其他各种对象(包括其他组织单位),如”oa组” (一条记录的所属组)
cn Common Name 公共名称,如“Thomas Johansson”(一条记录的名称)
sn Surname 姓,如”许”
dn Distinguished Name “uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一)
rdn Relative dn 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”

1.2.3.基本模型

1.2.3.1.信息模型

在LDAP中信息以树状方式组织,在树状信息中的,基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第1张图片

1.2.3.2.命名模型

LDAP中的命名模型,也即LDAP中的条目定位方式。在LDAP中每个条目均有自己的DN。DN是该条目在整个树中的唯一名称标识,如同文件系统中,带路径的文件名就是DN。

1.2.3.3.功能模型

在LDAP中共有四类10中操作:查询类操作,如搜索、比较;更新类操作,如添加条目、删除条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。除了扩展操作,另外9种是LDAP的标准操作;扩展操作是LDAP中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为了LDAP标准的扩展操作,有修改密码和StartTLS扩展,在新的RFC标准和草案中增加一些新的扩展操作,不同LDAP厂商也均定义了自己的扩展操作。

1.2.3.4.安全模型

LDAP中的安全模型主要通过身份认证、安全通道和访问控制来实现。

1.3.LDAP的使用

那我们是如何访问LDAP的数据库服务器呢?
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第2张图片

统一身份认证主要是改变原有的认证策略,使需要认证的软件都通过LDAP进行认证,在统一身份认证之后,用户的所有信息都存储在AD Server中。终端用户在需要使用公司内部服务的时候,都需要通过AD服务器的认证。
那么程序中是如何访问的呢? 我们以PHP脚本作为例子:

$ldapconn = ldap_connect(10.1.8.78")
$ldapbind = ldap_bind($ldapconn, 'username', $ldappass);
$searchRows= ldap_search($ldapconn, $basedn, "(cn=*)");
$searchResult = ldap_get_entries($ldapconn, $searchRows);
ldap_close($ldapconn);

1、连接到LDAP服务器
2、绑定到LDAP服务器
3、在LDAP服务器上执行所需的任何操作
4、释放LDAP服务器的连接

1.4.相关网址

官网首页:https://www.openldap.org/

下载地址:https://www.openldap.org/software/download/

1.5.安装OpenLDAP

1.5.1.系统环境信息

[root@hadoop1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

1.5.2.基础的环境准备

关闭防火墙:/etc/init.d/iptables stop && chkconfig iptables off
关闭NetworkManager:/etc/init.d/NetworkManager stop && chkconfig NetworkManager off
SeLinux设为disabled:getenforce 是否为Disabled,若不是,则修改:
1:临时的生效 setenforce 0,再getenforce的时候为permissive
2:修改配置文件,然后重启 vim /etc/sysconfig/selinux 把SELINUX=disabled

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && setenforce 0&& systemctl disable firewalld.service && systemctl stop firewalld.service

1.5.3.OpenLDAP服务器的搭建

1.5.3.1.安装OpenLDAP的相关

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

其中compat-openldap这个包与主从有很大的关系
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第3张图片

安装包说明:

安装包名称 说明
openldap openldap服务端和客户端必须用的库文件。
openldap-servers 用于启动服务器和设置。包含单独的ldap后台守护程序。
openldap-client 用于启动服务和设置. 包含单独的ldap后台守护程序。
openldap-devel devel包,可选择进行安装。
openldap-servers-sql 支持sql模块,可进行选择性安装。
migrationtools 通过migrationtools实现OpenLDAP用户及用户组的添加,导入系统账户,可进行选择性安装。
compat-openldap openldap兼容性库

安装完后,可以看到自动创建了ldap用户:

[root@hadoop1 ~]# tail -n 2 /etc/passwd
ldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin
saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@hadoop1 ~]#

可以通过rpm -qa |grep openldap查看安装了哪些包:

[root@hadoop1 ~]# rpm -qa | grep openldap
openldap-clients-2.4.44-21.el7_6.x86_64
openldap-servers-2.4.44-21.el7_6.x86_64
openldap-devel-2.4.44-21.el7_6.x86_64
compat-openldap-2.3.43-5.el7.x86_64
openldap-servers-sql-2.4.44-21.el7_6.x86_64
openldap-2.4.44-21.el7_6.x86_64
[root@hadoop1 ~]#

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

[root@hadoop1 openldap]# slapd -VV
@(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
	[email protected]:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd

[root@hadoop1 openldap]#

1.5.3.2.OpenLDAP的相关配置文件信息

/etc/openldap : OpenLDAP配置文件和目录所在位置
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第4张图片
/etc/openldap/slapd.conf :OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等

/etc/openldap/slapd.d : 这下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成, OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/,很多博客都是使用slapd.conf作为配置文件。
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第5张图片
/etc/openldap/schema/* : OpenLDAP的schema存放的地方
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第6张图片

/var/lib/ldap/* : OpenLDAP的数据文件

/usr/share/openldap-servers/DB_CONFIG.example 模板数据库配置文件

OpenLDAP监听的端口:
默认监听端口:389(明文数据传输)
加密监听端口:636(密文数据传输)

1.5.3.3.配置OpenLDAP的管理员密码

这里明文密码设置成hadoop

[root@hadoop1 ~]# slappasswd -s hadoop
{SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu
[root@hadoop1 ~]#

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

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

末尾添加一行:
olcRootPW: {SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu    (注意,这里是上面的密码,它上面不要有空行)

修改:
olcSuffix: dc=zuoquantu,dc=com
olcRootDN: cn=Manager,dc=zuoquantu,dc=com

完整文件:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 6f27a82a
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=zuoquantu,dc=com
olcRootDN: cn=Manager,dc=zuoquantu,dc=com
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 667c30cc-25e8-103a-83dd-c7513b40ba38
creatorsName: cn=config
createTimestamp: 20200509022740Z
entryCSN: 20200509022740.627338Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20200509022740Z
olcRootPW: {SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu

1.5.3.5.修改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=Manager,dc=zuoquantu,dc=com" read by * none

完整如下:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 45a2833d
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=zuoquantu,dc=com" read by * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 667c2992-25e8-103a-83dc-c7513b40ba38
creatorsName: cn=config
createTimestamp: 20200509022740Z
entryCSN: 20200509022740.627153Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20200509022740Z

1.5.3.6.验证配置文件是否正确

[root@hadoop1 ~]# slaptest -u
5eb650aa ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
5eb650aa ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded
[root@hadoop1 ~]#

1.5.3.7.启动服务&&查看服务

[root@hadoop1 ~]# systemctl enable slapd
[root@hadoop1 ~]# systemctl start slapd
[root@hadoop1 ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2020-05-09 14:44:50 CST; 7s ago
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
  Process: 1931 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1915 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
 Main PID: 1933 (slapd)
   CGroup: /system.slice/slapd.service
           └─1933 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///

5月 09 14:44:50 hadoop1 systemd[1]: Starting OpenLDAP Server Daemon...
5月 09 14:44:50 hadoop1 runuser[1918]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
5月 09 14:44:50 hadoop1 slapd[1931]: @(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
                                              [email protected]:/builddir/build/BUILD/openl...slapd
5月 09 14:44:50 hadoop1 slapd[1931]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/o...ldif"
5月 09 14:44:50 hadoop1 slapd[1931]: ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/o...ldif"
5月 09 14:44:50 hadoop1 slapd[1931]: tlsmc_get_pin: INFO: Please note the extracted key file will not be ...ions.
5月 09 14:44:50 hadoop1 slapd[1933]: hdb_db_open: warning - no DB_CONFIG file found in directory /var/lib... (2).
                                      Expect poor performance for suffix "dc=zuoquantu,dc=com".
5月 09 14:44:50 hadoop1 slapd[1933]: slapd starting
5月 09 14:44:50 hadoop1 systemd[1]: Started OpenLDAP Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@hadoop1 ~]#

1.5.3.8.查看监听端口389

[root@hadoop1 ~]# netstat -anpl | grep 389
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      1933/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      1933/slapd          
[root@hadoop1 ~]#

1.5.3.9.配置OpenLDAP数据库

[root@hadoop1 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@hadoop1 ~]# chown ldap:ldap -R /var/lib/ldap/
[root@hadoop1 ~]# chmod 700 -R /var/lib/ldap/
[root@hadoop1 ~]# ll /var/lib/ldap/

总用量 376
-rwx------ 1 ldap ldap     2048 5月   9 14:44 alock
-rwx------ 1 ldap ldap   303104 5月   9 14:44 __db.001
-rwx------ 1 ldap ldap    40960 5月   9 14:44 __db.002
-rwx------ 1 ldap ldap    49152 5月   9 14:44 __db.003
-rwx------ 1 ldap ldap      845 5月   9 14:50 DB_CONFIG
-rwx------ 1 ldap ldap     8192 5月   9 14:44 dn2id.bdb
-rwx------ 1 ldap ldap    32768 5月   9 14:44 id2entry.bdb
-rwx------ 1 ldap ldap 10485760 5月   9 14:44 log.0000000001
[root@hadoop1 ~]#

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

1.5.3.10.导入基本Schema

[root@hadoop1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@hadoop1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
[root@hadoop1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

输出:
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第7张图片

1.5.3.11.修改migrate_common.ph文件

[root@hadoop1 ~]# vi /usr/share/migrationtools/migrate_common.ph

修改如下变量:

$DEFAULT_MAIL_DOMAIN = "zuoquantu.com";
$DEFAULT_BASE = "dc=zuoquantu,dc=com";
$EXTENDED_SCHEMA = 1;

1.5.3.12.添加用户组及用户组

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

[root@hadoop1 ~]# groupadd ldapgroup1
[root@hadoop1 ~]# groupadd ldapgroup2

1.5.3.13.添加用户并设置密码,使用如下命令

[root@hadoop1 ~]# useradd -g ldapgroup1 ldapuser1
[root@hadoop1 ~]# useradd -g ldapgroup1 ldapuser1
useradd:用户“ldapuser1”已存在
[root@hadoop1 ~]# useradd -g ldapgroup2 ldapuser2
[root@hadoop1 ~]# passwd  ldapuser1

更改用户 ldapuser1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@hadoop1 ~]# passwd ldapuser2
更改用户 ldapuser2 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@hadoop1 ~]#

密码都设置为:hadoop

1.5.3.14.提取用户和组

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

结果:

[root@hadoop1 ~]# cat users 
ldapuser1:x:1001:1001::/home/ldapuser1:/bin/bash
ldapuser2:x:1002:1002::/home/ldapuser2:/bin/bash

[root@hadoop1 ~]# cat groups 
ldapgroup1:x:1001:
ldapgroup2:x:1002:

1.5.3.15.生成用户和组的ldif文件

[root@hadoop1 ~]# /usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
[root@hadoop1 ~]# /usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
[root@hadoop1 ~]# cat /root/users.ldif 
[root@hadoop1 ~]# cat groups.ldif

cat /root/users.ldif的输出如下:

[root@hadoop1 ~]# cat /root/users.ldif 
dn: uid=ldapuser1,ou=People,dc=zuoquantu,dc=com
uid: ldapuser1
cn: ldapuser1
sn: ldapuser1
mail: [email protected]
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$hE6ZwUIO$/KDZEpoOZEPW5JkaFceOf7Xd4F/YuM5pI3413v4UmZQ3DKRrEA3YtyhndZirAlZ0EjdXXe2Vr61tBidjuRJ.K0
shadowLastChange: 18391
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/ldapuser1

dn: uid=ldapuser2,ou=People,dc=zuoquantu,dc=com
uid: ldapuser2
cn: ldapuser2
sn: ldapuser2
mail: [email protected]
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$kRrZQi/u$iopzFYOu9CNLZGLrdHRp.e4qw2ifAL/rm6qeGSm/BNf2vmoDyK9SxJC.DZ.RmL7Kiikw4c7jKImpSgQCuVnKN1
shadowLastChange: 18391
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/ldapuser2

[root@hadoop1 ~]#
[root@hadoop1 ~]# cat /root/groups.ldif 
dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup1
userPassword: {crypt}x
gidNumber: 1001

dn: cn=ldapgroup2,ou=Group,dc=zuoquantu,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup2
userPassword: {crypt}x
gidNumber: 1002

[root@hadoop1 ~]#

1.5.3.16.导入用户及用户组到OpenLDAP数据库

配置openldap基础的数据库,如下(注意空行):

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

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

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

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

最终的结果如下:
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第8张图片

导入基础数据库,使用如下命令:

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/base.ldif
adding new entry "dc=zuoquantu,dc=com"

adding new entry "cn=Manager,dc=zuoquantu,dc=com"

adding new entry "ou=People,dc=zuoquantu,dc=com"

adding new entry "ou=Group,dc=zuoquantu,dc=com"

[root@hadoop1 ~]#

导入用户:

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/users.ldif
adding new entry "uid=ldapuser1,ou=People,dc=zuoquantu,dc=com"

adding new entry "uid=ldapuser2,ou=People,dc=zuoquantu,dc=com"

[root@hadoop1 ~]#

导入用户组:

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/groups.ldif
adding new entry "cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com"

adding new entry "cn=ldapgroup2,ou=Group,dc=zuoquantu,dc=com"

[root@hadoop1 ~]#

1.5.3.17.把OpenLDAP用户加入到用户组

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

[root@hadoop1 ~]# cat > add_user_to_groups.ldif << "EOF"
> dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
> changetype: modify
> add: memberuid
> memberuid: ldapuser1
> EOF
[root@hadoop1 ~]# 
[root@hadoop1 ~]# cat add_user_to_groups.ldif 
dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
[root@hadoop1 ~]#

导入ldif

[root@hadoop1 ~]# ldapadd -x -w "hadoop" -D "cn=Manager,dc=zuoquantu,dc=com" -f /root/add_user_to_groups.ldif
modifying entry "cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com"

[root@hadoop1 ~]# 

查询用户

[root@hadoop1 ~]# ldapsearch -LLL -x -D 'cn=Manager,dc=zuoquantu,dc=com' -w "hadoop" -b 'dc=zuoquantu,dc=com' 'cn=ldapgroup1'
dn: cn=ldapgroup1,ou=Group,dc=zuoquantu,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup1
userPassword:: e2NyeXB0fXg=
gidNumber: 1001
memberUid: ldapuser1

[root@hadoop1 ~]#

1.5.3.18.开启OpenLDAP日志访问功能

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

[root@hadoop1 ~]# cat > /root/loglevel.ldif << "EOF"
> dn: cn=config
> changetype: modify
> replace: olcLogLevel
> olcLogLevel: stats
> EOF
[root@hadoop1 ~]#

导入到OpenLDAP中,并重启OpenLDAP服务,如下:

[root@hadoop1 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.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@hadoop1 ~]# systemctl restart rsyslog

1.5.4.安装和配置LDAP管理工具PHPldapadmin

[root@hadoop1 ~]# yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
[root@hadoop1 ~]# yum -y install epel-release
[root@hadoop1 ~]# yum --enablerepo=epel -y install phpldapadmin

ln -s /usr/share/phpldapadmin /var/www
cd /var/www/phpldapadmin/config
cp config.php config_backup.php 

1.5.4.1.修改配置文件

[root@hadoop1 ~]# vim /etc/phpldapadmin/config.php +397
#397行取消注释,398行添加注释
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

//添加一行:
$servers->setValue('server','host','192.168.106.158');

[root@hadoop1 ~]# vim /etc/httpd/conf.d/phpldapadmin.conf
修改为如下内容:
#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
    # 添加一行内容,指定访问的ip端
    #Require 192.168.106.158
    Require all granted
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Allow from all
    #Deny from all
    #Allow from 127.0.0.1
    #Allow from ::1
  </IfModule>
</Directory>

LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第9张图片
设置开机自动并启动Apache:

[root@hadoop1 ~]# systemctl enable httpd
[root@hadoop1 ~]# systemctl start httpd
[root@hadoop1 ~]# systemctl restart httpd

登录web控制台:http://192.168.106.158/phpldapadmin/

用户名:cn=Manager,dc=zuoquantu,dc=com
密码:hadoop
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第10张图片
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第11张图片

参考文章:

https://blog.csdn.net/woloqun/article/details/89216120?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4

https://www.cnblogs.com/lemon-le/p/6266921.html

https://blog.csdn.net/dengchenrong/article/details/88389947

https://blog.csdn.net/dockj/article/details/82392263?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

https://blog.csdn.net/belialxing/article/details/89183051

打个赏呗,您的支持是我坚持写好博文的动力。
LDAP简介,基本模型,安装LDAP,安装和配置LDAP管理工具PHPldapadmin_第12张图片

你可能感兴趣的:(#)