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

2024-04-19 17:32

本文主要是介绍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

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

1.2.3.基本模型

1.2.3.1.信息模型

在LDAP中信息以树状方式组织,在树状信息中的,基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值
在这里插入图片描述

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进行认证,在统一身份认证之后,用户的所有信息都存储在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这个包与主从有很大的关系
在这里插入图片描述

安装包说明:

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

安装完后,可以看到自动创建了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) $mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd[root@hadoop1 openldap]#
1.5.3.2.OpenLDAP的相关配置文件信息

/etc/openldap : OpenLDAP配置文件和目录所在位置
在这里插入图片描述
/etc/openldap/slapd.conf :OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等

/etc/openldap/slapd.d : 这下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成, OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/,很多博客都是使用slapd.conf作为配置文件。
在这里插入图片描述
/etc/openldap/schema/* : OpenLDAP的schema存放的地方
在这里插入图片描述

/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=external,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=external,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 DaemonLoaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)Active: active (running) since 六 2020-05-09 14:44:50 CST; 7s agoDocs: man:slapdman:slapd-configman:slapd-hdbman:slapd-mdbfile:///usr/share/doc/openldap-servers/guide.htmlProcess: 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) $mockbuild@x86-01.bsys.centos.org:/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

输出:
在这里插入图片描述

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: ldapuser1@zuoquantu.com
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/ldapuser1dn: uid=ldapuser2,ou=People,dc=zuoquantu,dc=com
uid: ldapuser2
cn: ldapuser2
sn: ldapuser2
mail: ldapuser2@zuoquantu.com
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: 1001dn: 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: organizationdn: cn=Manager,dc=zuoquantu,dc=com
cn: Manager
objectClass: organizationalRole
description: Directory Managerdn: ou=People,dc=zuoquantu,dc=com
ou: People
objectClass: top
objectClass: organizationalUnitdn: ou=Group,dc=zuoquantu,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
EOF

最终的结果如下:
在这里插入图片描述

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

[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 phpldapadminln -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.4Require local# 添加一行内容,指定访问的ip端#Require 192.168.106.158Require all granted</IfModule><IfModule !mod_authz_core.c># Apache 2.2Order Deny,AllowAllow from all#Deny from all#Allow from 127.0.0.1#Allow from ::1</IfModule>
</Directory>

在这里插入图片描述
设置开机自动并启动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
在这里插入图片描述
在这里插入图片描述

参考文章:

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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918173

相关文章

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties