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

相关文章

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Linux下安装Anaconda3全过程

《Linux下安装Anaconda3全过程》:本文主要介绍Linux下安装Anaconda3全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录简介环境下载安装一、找到下载好的文件名为Anaconda3-2018.12-linux-x86_64的安装包二、或者通