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=com中cn即为RDN,而RDN在一个OU中必须是唯一的。
OpenLDAP默认以Berkeley DB作为后端数据库,BerkeleyDB数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储。
BerkeleyDB是一类特殊的面向查询进行优化、面向读取进行优化的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果。BerkeleyDB不支持事务型数据库(MySQL、MariDB、Oracle等)所支持的高并发的吞吐量以及复杂的事务操作。
每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树的概念:
1、目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
2、条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
3、对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
4、属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。
关键字 | 英文全称 | 含义 |
---|---|---|
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” |
在LDAP中信息以树状方式组织,在树状信息中的,基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值
LDAP中的命名模型,也即LDAP中的条目定位方式。在LDAP中每个条目均有自己的DN。DN是该条目在整个树中的唯一名称标识,如同文件系统中,带路径的文件名就是DN。
在LDAP中共有四类10中操作:查询类操作,如搜索、比较;更新类操作,如添加条目、删除条目、修改条目名;认证类操作,如绑定、解绑定;其它操作,如放弃和扩展操作。除了扩展操作,另外9种是LDAP的标准操作;扩展操作是LDAP中为了增加新的功能,提供的一种标准的扩展框架,当前已经成为了LDAP标准的扩展操作,有修改密码和StartTLS扩展,在新的RFC标准和草案中增加一些新的扩展操作,不同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服务器的连接
官网首页:https://www.openldap.org/
下载地址:https://www.openldap.org/software/download/
[root@hadoop1 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
关闭防火墙:/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
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools openldap-servers-sql
安装包说明:
安装包名称 | 说明 |
---|---|
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]#
/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(密文数据传输)
这里明文密码设置成hadoop
[root@hadoop1 ~]# slappasswd -s hadoop
{SSHA}SMAAPnUUuQGauovPwsCAk/q1eKY87kUu
[root@hadoop1 ~]#
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
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
[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 ~]#
[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 ~]#
[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 ~]#
[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数据库默认存储的路径。
[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
[root@hadoop1 ~]# vi /usr/share/migrationtools/migrate_common.ph
修改如下变量:
$DEFAULT_MAIL_DOMAIN = "zuoquantu.com";
$DEFAULT_BASE = "dc=zuoquantu,dc=com";
$EXTENDED_SCHEMA = 1;
默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。管理用户就是前面我们刚刚配置的root。
现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:
添加用户组,使用如下命令:
[root@hadoop1 ~]# groupadd ldapgroup1
[root@hadoop1 ~]# groupadd ldapgroup2
[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
[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:
[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 ~]#
配置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
导入基础数据库,使用如下命令:
[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 ~]#
尽管我们已经把用户和用户组信息,导入到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 ~]#
默认情况下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
[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
[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>
[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