Centos7.9安装openldap

news2024/11/28 16:47:53

在这里插入图片描述

文章目录

  • 一、背景
  • 二、正文
    • 2.1 openldap服务端必要软件安装
      • 2.1.1使用yum命令安装
      • 2.1.2安装libdb相关依赖
      • 2.1.3复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生成密码时会报错
      • 2.1.4授权给ldap用户,此用户yum安装时便会自动创建
      • 2.1.5启动ldap server服务,先启动服务,配置后面再进行修改
      • 2.1.6查看状态,正常启动则ok
      • 2.1.7查看版本
    • 2.2 修改openldap配置
      • 2.2.1生成管理员密码,记录下这个密码,后面需要用到
      • 2.2.2新增修改密码文件,ldif为后缀
      • 2.2.3执行命令,修改ldap配置,通过-f 执行文件
      • 2.2.4执行修改命令后,有如下输出则为正常:
      • 2.2.5导入基本schema (具体配置请参考附件文件)
      • 2.2.6修改域名
      • 2.2.7执行命令,修改配置
      • 2.2.8启用memberof功能
      • 2.2.9创建node3组织
      • 2.2.10创建新用户和新用户组的ldif文件
    • 2.3 OpenLDAP客户端安装
      • 2.3.1OpenLDAP客户端安装必要软件
      • 2.3.2OpenLDAP客户端NSS服务配置
      • 2.3.3OpenLDAP客户端SSSD服务配置
      • 2.3.4OpenLDAP与SSH集成
      • 2.3.5验证SSH登录
      • 2.3.6验证ldap
    • 2.4OpenLDAP开启日志
  • 三、安装途中可能碰到的报错
    • 错误场景1:执行步骤“安装openldap”途中碰到的错误,即执行命令:`systemctl start slapd`报错
    • 错误场景2:执行步骤“安装openldap”途中碰到的错误,即执行命令:`systemctl start slapd`报错
    • 错误场景3:执行“修改openldap配置”报错
  • 四、注意点
  • 五、卸载openldap
  • 本人其他相关文章链接

一、背景

亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。

项目背景:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。

举例说明:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。

需要安装openldap+kerberos,且ldap和kerberos安装在同一台服务器上,当前版本如下:

  • centos 7.9
  • openldap 2.4.44
  • phpldapadmin 1.2.5
  • 服务器IP:10.110.38.162
  • Kerberos :Kerberos 5 release 1.15.1

本博客参考的博客是:

  • ① Openldap安装部署
  • ② Kerberos基本原理、安装部署及用法
  • ③ Openldap集成Kerberos

注意:这个文章是真实可行的,但是有执行顺序,一定要先安装“Openldap安装部署”+“Kerberos基本原理、安装部署及用法”之后,确保安装无误后再去安装“Openldap集成Kerberos”。
在这里插入图片描述

我当时犯的毛病就是前两个没完全照着文档安装完成就直接安装的第三个,然后出现各种问题,我还不知道为点啥。人家博客都说了要先安装前两个,再看这个“Kerberos基本原理、安装部署及用法”。所以一定要注意安装顺序,遇到不懂得配置也没事先照着安。

二、正文

2.1 openldap服务端必要软件安装

2.1.1使用yum命令安装

# yum install -y openldap openldap-clients openldap-servers compat-openldap openldap-devel

2.1.2安装libdb相关依赖

# yum -y install libdb.x86_64 libdb-devel.x86_64

2.1.3复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生成密码时会报错

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

2.1.4授权给ldap用户,此用户yum安装时便会自动创建

# chown -R ldap. /var/lib/ldap/DB_CONFIG

2.1.5启动ldap server服务,先启动服务,配置后面再进行修改

# systemctl start slapd
# systemctl enable slapd

2.1.6查看状态,正常启动则ok

# systemctl status slapd

2.1.7查看版本

slapd -VV
@(#) $OpenLDAP: slapd 2.4.44 (Feb 23 2022 17:11:27) $
        mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
[root@localhost ~]#

2.2 修改openldap配置

这里就是重点中的重点了,从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify命令进行修改。

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

在这里插入图片描述
安装openldap后,会有三个命令用于修改配置文件,分别为ldapadd, ldapmodify, ldapdelete,顾名思义就是添加,修改和删除。而需要修改或增加配置时,则需要先写一个ldif后缀的配置文件,然后通过命令将写的配置更新到slapd.d目录下的配置文件中去,完整的配置过程如下,跟着我做就可以了:

2.2.1生成管理员密码,记录下这个密码,后面需要用到

# slappasswd -s 123456
{SSHA}kUhPHG2ffoZKzwl/pUxQg6W+WaFwpjQ/

2.2.2新增修改密码文件,ldif为后缀

不要在/etc/openldap/slapd.d目录下创建类似文件,生成的文件为需要通过命令去动态修改ldap现有配置,如下,在用户目录~下,创建文件 (具体配置请参考附件文件)

# cd ~
# vim changepwd.ldif
----------------------------------------------------------------------
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}kUhPHG2ffoZKzwl/pUxQg6W+WaFwpjQ/

这里解释一下这个文件的内容:

  • 第一行执行配置文件,这里就表示指定为 cn=config/olcDatabase={0}config 文件。你到/etc/openldap/slapd.d/目录下就能找到此文件
  • 第二行 changetype 指定类型为修改
  • 第三行 add 表示添加 olcRootPW 配置项
  • 第四行指定 olcRootPW 配置项的值

在执行下面的命令前,你可以先查看原本的olcDatabase={0}config文件,里面是没有olcRootPW这个项的,执行命令后,你再看就会新增了olcRootPW项,而且内容是我们文件中指定的值加密后的字符串。

2.2.3执行命令,修改ldap配置,通过-f 执行文件

# ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

2.2.4执行修改命令后,有如下输出则为正常:

在这里插入图片描述
查看olcDatabase={0}config内容,cat /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif,新增了一个olcRootPW项
在这里插入图片描述
在这里插入图片描述

上面就是一个完整的修改配置的过程,切记不能直接修改/etc/openldap/slapd.d/目录下的配置。
好了,下面继续进行配置:

2.2.5导入基本schema (具体配置请参考附件文件)

我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入,依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中core.ldif是默认已经加载了的,不用导入。

# 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
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

2.2.6修改域名

修改域名,新增changedomain.ldif,这里自定义的域名为node1.com,管理员用户账号为admin。如果要修改,则修改文件中相应的dc=node3.com,dc=com为自己的域名。(具体配置请参考附件文件)

# vim changedomain.ldif
----------------------------------------------------------------------
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=node3,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=node3,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=node3,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}w9g8YjPiphKbTeuTC0xTcVyrH6I6XXBe

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=node3,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=node3,dc=com" write by * read

2.2.7执行命令,修改配置

# ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

最后这里有5个修改,所以执行会输出5行表示成功
在这里插入图片描述

2.2.8启用memberof功能

新增add-memberof.ldif,#开启memberof支持并新增用户支持memberof配置(具体配置请参考附件文件)

新增add-memberof.ldif

# vim add-memberof.ldif
-------------------------------------------------------------
dn: cn=module{0},cn=config
cn: module{0}
objectClass: olcModuleList
objectclass: top
olcModuleload: memberof.la
olcModulePath: /usr/lib64/openldap

dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf

新增refint1.ldif文件

# vim refint1.ldif
-------------------------------------------------------------
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint

新增refint2.ldif文件

# vim refint2.ldif
-------------------------------------------------------------
dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: refint
olcRefintAttribute: memberof uniqueMember  manager owner

依次执行下面命令,加载配置,顺序不能错

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

到此,配置修改完了,在上述基础上,我们来创建一个组织,并在其下创建一个 admin 的组织角色(该组织角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元。`

2.2.9创建node3组织

# vim node3.ldif
----------------------------------------------------------------------
dn: dc=node3,dc=com
dc: node3
objectClass: top
objectClass: domain
o: node3

dn: cn=admin,dc=node3,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP admin

dn: dc=hdp,dc=node3,dc=com
changetype: add
dc: hdp
objectClass: top
objectClass: dcObject
objectClass: organization
o: hdp

dn: ou=People,dc=hdp,dc=node3,dc=com
ou: People
objectClass: organizationalUnit

dn: ou=Group,dc=hdp,dc=node3,dc=com
ou: Group
objectClass: organizationalUnit

执行命令,添加配置,这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码

# ldapadd -x -D cn=admin,dc=node3,dc=com -W -f node3.ldif

添加结果为:(密码:123456即1.1配置的密码)
在这里插入图片描述
通过以上的所有步骤,我们就设置好了一个LDAP目录树:其中基准dc=node3,dc=com是该树的跟节点,其下有一个管理域cn=admin,dc=node3,dc=com和一个组织单元dc=hdp,dc=node3,dc=com, 其下有两个子属性ou=People,dc=hdp,dc=node3,dc=com及ou=Group,dc=hdp,dc=node3,dc=com。

2.2.10创建新用户和新用户组的ldif文件

先生成一个密码123456:

# slappasswd -s 123456
{SSHA}32S2uLFahPZMqMzVYhT8fOKOp8RzremG

创建新用户的ldif文件(具体配置请参考附件文件)

# vim ldapuser.ldif
-------------------------------------------------------
#这里testUser用户,我将其加入到testgroup组中
# create new
# replace to your own domain name for "dc=***,dc=***" section
dn: uid=testldap,ou=People,dc=hdp,dc=node3,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: testldap
cn: testgroup
sn: test
userPassword: {SSHA}32S2uLFahPZMqMzVYhT8fOKOp8RzremG
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 3000
homeDirectory: /home/testldap

#这是添加一个用户组名为testgroup的cn,在名为Group的ou下
dn: cn=testgroup,ou=Group,dc=hdp,dc=node3,dc=com
objectClass: posixGroup
cn: testgroup
gidNumber: 3000
memberUid: testldap

向openldap服务端添加新用户testldap

# ldapadd -x -D cn=admin,dc=node3,dc=com -W -f ldapuser.ldif

为该用户修改密码为123456命令为:

# ldappasswd -x -H ldap://10.110.38.162:389 -D "cn=admin,dc=node3,dc=com" -W "uid=testldap,ou=People,dc=hdp,dc=node3,dc=com" -s 123456

注意

  • ldap://10.110.38.162:389为openldap的服务端ip加端口;
  • cn=admin,dc=node3,dc=com为openldap上面设置的管理者节点;
  • uid=testldap,ou=People,dc=hdp,dc=node3,dc=com为用户id;
  • 123456为修改指定的用户密码。

2.3 OpenLDAP客户端安装

2.3.1OpenLDAP客户端安装必要软件

# yum install -y openldap openldap-clients sssd nss-pam-ldapd

2.3.2OpenLDAP客户端NSS服务配置

  1. 修改/etc/nslcd.conf (具体配置请参考附件文件)
# vim /etc/nslcd.conf
----------------------------------------------------------------------
uid nslcd
gid ldap
uri ldap://10.110.38.162:389
# ldap目录树的基准
base dc=node3,dc=com
# ldap的管理域
binddn cn=admin,dc=node3,dc=com
# ldap管理者密码
bindpw 123456
ssl no
tls_cacertdir /etc/openldap/cacerts
  1. 启动服务并设置开机自启动
# chmod 600 /etc/nslcd.conf
# systemctl start nslcd
# systemctl enable nslcd
  1. 配置/etc/nsswitch.conf
# vim /etc/nsswitch.conf
----------------------------------------------------------------------
#passwd:     files sss 
#shadow:     files sss
#group:      files sss
#initgroups: files sss
passwd:     files ldap
shadow:     files ldap
group:      files ldap
hosts:      files dns myhostname
bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files sss

#netgroup:   files sss
netgroup:   nisplus sss
publickey:  nisplus
automount:  files nisplus sss
aliases:    files nisplus
  1. 测试是否可用
# getent passwd | grep testldap
testldap:x:2000:3000:testgroup:/home/testldap:/bin/bash

2.3.3OpenLDAP客户端SSSD服务配置

  1. 修改/etc/sssd/sssd.conf文件,在执行authconfig命令时默认生成,如果文件不存在则新建
# vim /etc/sssd/sssd.conf
----------------------------------------------------------------------
[domain/default]
autofs_provider = ldap
ldap_schema = rfc2307bis
krb5_realm = REDPEAK.COM
ldap_search_base = dc=node3,dc=com
krb5_server = 10.110.38.162
id_provider = ldap 
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://10.110.38.162:389
ldap_id_use_start_tls = False
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/cacerts
[sssd]
services = nss, pam, autofs
domains = default

[nss]
homedir_substring = /home

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[ifp]

[secrets]
  1. 修改sssd.conf文件权限
# chmod 600 /etc/sssd/sssd.conf
  1. 启动sssd服务并加入系统自启动
# systemctl start sssd
# systemctl enable sssd
# systemctl status sssd

2.3.4OpenLDAP与SSH集成

  1. 修改配置文件/etc/ssh/sshd_config,是ssh通过pam认证账号
PasswordAuthentication yes
UsePAM yes

注意:默认使用的是密码认证方式,在集成SSH登录时需要确保PasswordAuthentication yes配置为yes。

  1. 修改配置文件/etc/pam.d/sshd,以确认调用pam认证文件
# vim /etc/pam.d/sshd
----------------------------------------------------------------------
#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
#加入此行后确保登录成功后创建用户的home目录
session    required     pam_mkhomedir.so
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare
  1. 修改配置文件/etc/pam.d/password-auth
# vim /etc/pam.d/password-auth
----------------------------------------------------------------------
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
auth        [default=1 ignore=ignore success=ok] pam_localuser.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
#auth        sufficient    pam_sss.so forward_pass
auth        sufficient    pam_ldap.so forward_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
#account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so

account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
#password    sufficient    pam_sss.so use_authtok
password    sufficient    pam_ldap.so use_authtok

password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
#session     optional      pam_sss.so
session     optional      pam_ldap.so
  1. 修改配置文件/etc/pam.d/system-auth配置文件
# vim /etc/pam.d/system-auth
----------------------------------------------------------------------
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_fprintd.so
auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
auth        [default=1 ignore=ignore success=ok] pam_localuser.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
#auth        sufficient    pam_sss.so forward_pass
auth        sufficient    pam_ldap.so forward_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
#account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
#password    sufficient    pam_sss.so use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
#session     optional      pam_sss.so
session     optional      pam_ldap.so
  1. 重启ssh、sssd和nslcd
# systemctl restart sshd
# systemctl restart sssd
# systemctl restart nslcd

到此为止就完成了OpenLDAP与SSH的集成。

2.3.5验证SSH登录

随便登录一台机器,此处全部以一台服务器为例

  1. 确认testldap用户只存在于OpenLDAP
# more /etc/passwd |grep testldap
# id testldap
uid=2000(testldap) gid=2000(testgroup) groups=2000(testgroup)
  1. su切换至testldap用户
# su testldap
# id testldap
uid=2000(testldap) gid=2000(testgroup) groups=2000(testgroup)
  1. 配置host,修改/etc/host配置文件
#127.0.0.1 		node3

4.ssh登录

在这里插入图片描述

2.3.6验证ldap

查询所有用户及用户组:

# ldapsearch -LL -Y EXTERNAL -H ldapi:///  -b dc=node3,dc=com

在这里插入图片描述

2.4OpenLDAP开启日志

必须先创建日志文件,并调整权限,再修改rsyslog.conf

//创建文件夹
mkdir -p /var/log/slapd
//设置用户所有权
chown ldap:ldap /var/log/slapd/
//创建日志文件
touch /var/log/slapd/slapd.log
//设置权限
chown ldap . /var/log/slapd/slapd.log
//写配置
echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf

重启使其生效

systemctl restart rsyslog

三、安装途中可能碰到的报错

错误场景1 和错误场景2 可查看该博客解决:OpenLdap异常操作后无法启动

错误场景1:执行步骤“安装openldap”途中碰到的错误,即执行命令:systemctl start slapd报错

在这里插入图片描述

详细报错信息

516 02:12:02 localhost.localdomain systemd[1]: Reloading.
516 02:12:02 localhost.localdomain runuser[16907]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
516 02:12:02 localhost.localdomain slapadd[16908]: DIGEST-MD5 common mech free
516 02:12:02 localhost.localdomain runuser[16907]: pam_unix(runuser:session): session closed for user ldap
516 02:12:02 localhost.localdomain yum[15582]: Installed: openldap-servers-2.4.44-25.el7_9.x86_64
516 02:12:02 localhost.localdomain yum[15582]: Installed: openldap-servers-sql-2.4.44-25.el7_9.x86_64
516 02:12:02 localhost.localdomain yum[15582]: Installed: migrationtools-47-15.el7.noarch
516 02:12:02 localhost.localdomain yum[15582]: Installed: openldap-clients-2.4.44-25.el7_9.x86_64
516 02:12:24 localhost.localdomain slapd[18194]: slapd stopped.
516 02:12:24 localhost.localdomain slapd[18194]: connections_destroy: nothing to destroy.
516 02:12:54 localhost.localdomain polkitd[864]: Registered Authentication Agent for unix-process:19884:103063759 (system bus name :1.197357 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/
516 02:12:54 localhost.localdomain systemd[1]: Starting OpenLDAP Server Daemon...
-- Subject: Unit slapd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit slapd.service has begun starting up.
516 02:12:54 localhost.localdomain runuser[19895]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
516 02:12:54 localhost.localdomain runuser[19895]: pam_unix(runuser:session): session closed for user ldap
516 02:12:54 localhost.localdomain slapcat[19899]: DIGEST-MD5 common mech free
516 02:12:54 localhost.localdomain slapd[19909]: @(#) $OpenLDAP: slapd 2.4.44 (Feb 23 2022 17:11:27) $
                                                             mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
516 02:12:54 localhost.localdomain slapd[19909]: main: TLS init def ctx failed: -1
516 02:12:54 localhost.localdomain slapd[19909]: DIGEST-MD5 common mech free
516 02:12:54 localhost.localdomain slapd[19909]: slapd stopped.
516 02:12:54 localhost.localdomain slapd[19909]: connections_destroy: nothing to destroy.
516 02:12:54 localhost.localdomain systemd[1]: slapd.service: control process exited, code=exited status=1
516 02:12:54 localhost.localdomain systemd[1]: Failed to start OpenLDAP Server Daemon.
-- Subject: Unit slapd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit slapd.service has failed.
-- 
-- The result is failed.
516 02:12:54 localhost.localdomain systemd[1]: Unit slapd.service entered failed state.
516 02:12:54 localhost.localdomain systemd[1]: slapd.service failed.
516 02:12:54 localhost.localdomain polkitd[864]: Unregistered Authentication Agent for unix-process:19884:103063759 (system bus name :1.197357, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (dis
lines 3525-3562/3562 (END)
516 02:12:02 localhost.localdomain systemd[1]: Reloading.
516 02:12:02 localhost.localdomain runuser[16907]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
516 02:12:02 localhost.localdomain slapadd[16908]: DIGEST-MD5 common mech free
516 02:12:02 localhost.localdomain runuser[16907]: pam_unix(runuser:session): session closed for user ldap
516 02:12:02 localhost.localdomain yum[15582]: Installed: openldap-servers-2.4.44-25.el7_9.x86_64
516 02:12:02 localhost.localdomain yum[15582]: Installed: openldap-servers-sql-2.4.44-25.el7_9.x86_64
516 02:12:02 localhost.localdomain yum[15582]: Installed: migrationtools-47-15.el7.noarch
516 02:12:02 localhost.localdomain yum[15582]: Installed: openldap-clients-2.4.44-25.el7_9.x86_64
516 02:12:24 localhost.localdomain slapd[18194]: slapd stopped.
516 02:12:24 localhost.localdomain slapd[18194]: connections_destroy: nothing to destroy.
516 02:12:54 localhost.localdomain polkitd[864]: Registered Authentication Agent for unix-process:19884:103063759 (system bus name :1.197357 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/
516 02:12:54 localhost.localdomain systemd[1]: Starting OpenLDAP Server Daemon...
-- Subject: Unit slapd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit slapd.service has begun starting up.
516 02:12:54 localhost.localdomain runuser[19895]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
516 02:12:54 localhost.localdomain runuser[19895]: pam_unix(runuser:session): session closed for user ldap
516 02:12:54 localhost.localdomain slapcat[19899]: DIGEST-MD5 common mech free
516 02:12:54 localhost.localdomain slapd[19909]: @(#) $OpenLDAP: slapd 2.4.44 (Feb 23 2022 17:11:27) $
                                                             mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
516 02:12:54 localhost.localdomain slapd[19909]: main: TLS init def ctx failed: -1
516 02:12:54 localhost.localdomain slapd[19909]: DIGEST-MD5 common mech free
516 02:12:54 localhost.localdomain slapd[19909]: slapd stopped.
516 02:12:54 localhost.localdomain slapd[19909]: connections_destroy: nothing to destroy.
516 02:12:54 localhost.localdomain systemd[1]: slapd.service: control process exited, code=exited status=1
516 02:12:54 localhost.localdomain systemd[1]: Failed to start OpenLDAP Server Daemon.
-- Subject: Unit slapd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit slapd.service has failed.
-- 
-- The result is failed.
516 02:12:54 localhost.localdomain systemd[1]: Unit slapd.service entered failed state.
516 02:12:54 localhost.localdomain systemd[1]: slapd.service failed.
516 02:12:54 localhost.localdomain polkitd[864]: Unregistered Authentication Agent for unix-process:19884:103063759 (system bus name :1.197357, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (dis
[root@localhost /]#

错误原因:这种报错代表:OpenLdap异常操作后无法启动,如果是第一次安装没事且不会有这个报错,而我是之前在这个环境反复尝试过,可能导致的问题。

解决方案:依次执行如下命令即可:

  • slapd -d 2 -F /etc/openldap/slapd.d/ -u ldap
  • mkdir -p /etc/openldap/certs
  • bash /usr/libexec/openldap/create-certdb.sh
  • bash /usr/libexec/openldap/generate-server-cert.sh
  • systemctl start slapd

启动成功后的效果如图:

在这里插入图片描述

错误场景2:执行步骤“安装openldap”途中碰到的错误,即执行命令:systemctl start slapd报错

详细报错信息

Unit slapd.service has begun starting up.
May 14 08:42:21 localhost.localdomain runuser[15546]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
May 14 08:42:21 localhost.localdomain runuser[15546]: pam_unix(runuser:session): session closed for user ldap
May 14 08:42:21 localhost.localdomain slapd[15559]: @(#) $OpenLDAP: slapd 2.4.44 (Sep 30 2020 17:16:39) $
mockbuild@x86-02.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
May 14 08:42:21 localhost.localdomain slapd[15559]: main: TLS init def ctx failed: -1
May 14 08:42:21 localhost.localdomain slapd[15559]: slapd stopped.
May 14 08:42:21 localhost.localdomain slapd[15559]: connections_destroy: nothing to destroy.
May 14 08:42:21 localhost.localdomain rsyslogd[5418]: imjournal: rename() failed for new path:/var/lib/rsyslog/imjournal.state’: Permission denied [v8.24.0-34.el7 try http://www.
May 14 08:42:21 localhost.localdomain systemd[1]: slapd.service: control process exited, code=exited status=1
May 14 08:42:21 localhost.localdomain systemd[1]: Failed to start OpenLDAP Server Daemon.Subject: Unit slapd.service has failed
– Defined-By: systemd

– Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
– Unit slapd.service has failed.The result is failed.
May 14 08:42:21 localhost.localdomain systemd[1]: Unit slapd.service entered failed state.
May 14 08:42:21 localhost.localdomain systemd[1]: slapd.service failed.
May 14 08:42:21 localhost.localdomain polkitd[4916]: Unregistered Authentication Agent for unix-process:15537:82314 (system bus name :1.27, object path /org/freedesktop/PolicyKit1/

错误原因:这种报错是日志相关服务的报错

解决方案:删除/var/lib/rsyslog/imjournal.state文件后重启rsyslog服务

[root@localhost ~]# rm -f /var/lib/rsyslog/imjournal.state
[root@localhost ~]# systemctl restart rsyslog

错误场景1和错误场景2 究竟哪里不一样?

可以用对比工具查看,如图,红框处就是区别点,请想起查看自己的报错原因就针对性修改。
在这里插入图片描述

错误场景3:执行“修改openldap配置”报错

这块会编写很多文件,再执行相关ldapadd 、ldapmodify等等命令时会报错,如图
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

详细错误:

[root@localhost ~]# vim changedomain.ldif
[root@localhost ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapmodify: wrong attributeType at line 5, entry "olcDatabase={1}monitor,cn=config"
-----------------------------------------------------------------------------------------
[root@localhost ~]# vim refint2.ldif
[root@localhost ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif
ldapadd: attributeDescription "dn": (possible missing newline after line 10, entry "cn=module{0},cn=config"?)
adding new entry "cn=module{0},cn=config"
ldap_add: Invalid syntax (21)
        additional info: objectClass: value #3 invalid per syntax
-----------------------------------------------------------------------------------------
[root@localhost ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
modifying entry "cn=module{0},cn=config"
ldap_modify: No such object (32)
        matched DN: cn=config
-----------------------------------------------------------------------------------------
[root@localhost ~]# vim base.ldif
[root@localhost ~]# ldapadd -x -D cn=admin,dc=yaobili,dc=com -W -f base.ldif
Enter LDAP Password: 
ldapadd: attributeDescription "dn": (possible missing newline after line 9, entry "dc=yaobili,dc=com"?)
ldapadd: attributeDescription "dn": (possible missing newline after line 10, entry "dc=yaobili,dc=com"?)
ldapadd: attributeDescription "dn": (possible missing newline after line 11, entry "dc=yaobili,dc=com"?)
adding new entry "dc=yaobili,dc=com"
ldap_add: Type or value exists (20)
        additional info: objectClass: value #3 provided more than once     

错误原因2处:

  • 第一处冒号:后有空格;
  • 第二处换行那里有空格。

你直接复制的文件内容,拷贝后的你的K:V 的冒号“:”后面会有空格

解决方案:删除2处所有多余空格即可。

举例说明:这是刚执行vim 命令后复制粘贴后的效果,首先颜色不一样,其次冒号:后面是有空格的。
在这里插入图片描述
而当你把冒号:后面空格删除后的效果长这样,明显红色变白色了,说明空格删没了。
在这里插入图片描述

其次说换行那里也有空格,不能直接执行dd命令删除,否则也无效;请看当我点击一下删除键,按常理应该顶格才对,因为我删除的一个空白行啊,但是实际效果是不对齐,说明除了有个空白行外还有个多余的空格。
在这里插入图片描述
正确做法:应该是移动鼠标到dn字母处然后执行“退格Backspace”进行删除,当顶格后再按回车键进行换行就可以了。

正确效果长这样:
在这里插入图片描述

四、注意点

注意点:

  • 注意点1:不可直接vim命令修改服务器文件,因为不生效
  • 注意点2:生成的密码实际要修改2个文件,如果有遗漏,后面登录可能无法认证成功。
    在这里插入图片描述
  • 注意点3:在执行2.2修改openldap配置的时候,如果你想更改dc域名,请把如下红框的全部更改,少改了会无效。
    在这里插入图片描述

五、卸载openldap

1、停止openldap

[root@nano cn=config]# systemctl stop slapd
[root@nano cn=config]# systemctl disable slapd

2、卸载

[root@nano cn=config]# yum -y remove openldap-servers openldap-clients

3.删除残留文件

[root@nano cn=config]# rm -rf /var/lib/ldap

4.删除ldap用户

[root@nano cn=config]# userdel ldap

5.删除openldap目录

[root@nano cn=config]# rm -rf /etc/openldap

本人其他相关文章链接

1.Centos7.9安装openldap
2.Centos7.9安装kerberos
3.Openldap集成Kerberos
4.Centos7.9安装phpldapadmin
5.java连接ldap实现用户查询功能
6.java连接kerberos用户认证
7.javax.security.auth.login.LoginException: Unable to obtain password from user
8.javax.security.auth.login.LoginException: null (68)
9.javax.security.auth.login.LoginException: Message stream modified (41)
10.javax.security.auth.login.LoginException: Checksum failed
11.javax.security.auth.login.LoginException: No CallbackHandler available to garner authentication info
12.javax.security.auth.login.LoginException: Cannot locate KDC
13.javax.security.auth.login.LoginException: Receive timed out
14.java: 无法访问org.springframework.context.ConfigurableApplicationContext
15.LDAP: error code 34 - invalid DN
16.LDAP: error code 32 - No Such Object
17.java: 无法访问org.springframework.ldap.core.LdapTemplate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS规则——font-face

font-face 什么是font-face&#xff1f; 想要让网页文字千变万化&#xff0c;仅靠font-family还不够&#xff0c;还要借助font-face&#xff08;是一个 CSS 规则&#xff0c;它允许你在网页上使用自定义字体&#xff0c;而不仅仅是用户系统中预装的字体。这意味着你可以通过提…

Web前端项目-页面动态背景【附完整源码】

页面动态背景 一&#xff1a;花瓣背景 页面效果&#xff1a; HTML代码 <!DOCTYPE HTML> <HTML> <TITLE>花瓣漫舞</TITLE> <META NAME"Generator" CONTENT"EditPlus"> <META NAME"Author" CONTENT"&quo…

【ACM出版】2024人工智能与自然语言处理国际学术会议(AINLP 2024,7月19-21)

2024人工智能与自然语言处理国际学术会议&#xff08;AINLP 2024&#xff09;将于2024年7月19-21日在中国珠海召开&#xff0c;该会议作为第四届人工智能、自动化与高性能计算国际会议&#xff08;AIAHPC 2024&#xff09;分会场召开。 本次会议主要围绕“人工智能与自然语言处…

2024高考-优先选专业还是优先选学校

分数限制下&#xff0c;选好专业还是选好学校&#xff1f; 24年高考帷幕落下&#xff0c;一场新的思考与选择悄然来临。对于每一位高考考生&#xff0c;学校和专业都是开启大学新生活的两个前置必选项。但有时候“鱼与熊掌不可兼得”&#xff0c;在分数受限的条件下&#xff0…

CubeFS - 新一代云原生存储系统

CubeFS 是一种新一代云原生存储系统,支持 S3、HDFS 和 POSIX 等访问协议,支持多副本与纠删码两种存储引擎,为用户提供多租户、 多 AZ 部署以及跨区域复制等多种特性。 官方文档 CubeFS 作为一个云原生的分布式存储平台,提供了多种访问协议,因此其应用场景也非常广泛,下面…

Retrofit类型安全的HTTP客户端库

简介 Retrofit是Square公司开发的一个类型安全的HTTP客户端库&#xff0c;用于Android和Java平台&#xff0c;它使得与Web服务的交互变得更加简单快捷。Retrofit将HTTP API转换成Java接口&#xff0c;让你可以用更简洁的代码形式调用RESTful API&#xff0c;Android网络编程重点…

中国机器人产业崛起,德国市场面临30%的份额挑战

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 随着科技的不断进步&#xff0c;机器人行业正迎来前所未有的发展机遇。令人震惊的是&#xff0c;根据最新统计数据&#xff0c;中国机器人产业在…

数据结构之“算法的时间复杂度和空间复杂度”

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 目录 前言 一、算法效率 1.1算法的复杂度概念 1.2复杂度的重要性 二、时间复杂度 2.1时间复杂度的概念 2.2大O的渐进表示法 2.3常见的时间复杂度…

服务器主机托管服务内容科普

在现代信息技术快速发展的背景下&#xff0c;服务器主机托管服务已成为众多企业、机构和个人不可或缺的一部分。本文将为您详细科普服务器主机托管服务的内容&#xff0c;帮助您更好地理解和选择适合自己的托管方案。 一、硬件与基础设施 服务器主机托管服务首先提供了硬件和网…

DevExpress WPF中文教程:Grid - 如何将更改发布到数据库(设计时)?

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

如何优雅的使用Github Action服务来将Hexo部署到Github Pages

文章目录 参考文章前提条件1. 初始化Hexo2. 初始化仓库3. 创建Token4. 修改_config.yml5. 配置Github Action工作流6. 推送验证7. 配置Github Pages8. 修改Hexo主题样式10. 添加文章遇到了一些问题和方案1. 网站没有样式问题2. 图片不显示 参考文章 Bilibili视频教程-9分钟零成…

2024年综合艺术与媒体传播国际会议(ICIAMC 2024)

2024年综合艺术与媒体传播国际会议(ICIAMC 2024) 2024 International Conference on Integrated Arts and Media Communication (ICIAMC 2024) 会议地点&#xff1a;贵阳&#xff0c;中国 网址&#xff1a;www.iciamc.com 邮箱: iciamcsub-conf.com 投稿主题请注明:ICIAMC…

【漏洞复现】全程云OA svc.asmx SQL注入漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

一个简单好用安全的开源交互审计系统,支持SSH,Telnet,Kubernetes协议

前言 在当今的企业网络环境中&#xff0c;远程访问和交互审计成为了保障网络安-全的重要组成部分。然而&#xff0c;现有的解-决方案往往存在一些痛点&#xff0c;如复杂的配置、有限的协议支持、以及审计功能的不足。这些问题不仅增加了IT管理员的负担&#xff0c;也为企业的…

Ecahrts竖向柱状图实现自动滚动

效果如下&#xff1a; 1.首先声明一个timer定时器标识 let timer: NodeJS.Timer; // 定时器 2.再声明窗口展示的数量&#xff0c;yAxisIndex2用来记录当前index已经加了多少&#xff0c;方便再formatter中格式化标题的相关信息 const dataZoomEndValue 6; // 数据窗口范围的…

【0-1系列】从0-1快速了解搜索引擎是什么以及怎么用(上)

友情链接 社区开发版安装部署与使用教程社区版家族V2024.5版本更新说明 START>>1.快速了解搜索引擎 什么是搜索引擎数据库 搜索引擎数据库是一类专门用于数据内容搜索的NoSQL数据库&#xff0c;是非结构化大数据处理分析领域中重要的基础支撑软件。 伴随互联网、移动…

scene graph generation benchmark关于visual genome的数据划分(train,test,val)

scene graph generation benchmark关于visual genome的数据划分&#xff08;train&#xff0c;test&#xff0c;val&#xff09; 前言 前言 很多做scene graph generation&#xff0c;准备测试的同学&#xff0c;发现visual genome并没有提供官方的训练train&#xff0c;测试t…

竞赛选题 python opencv 深度学习 指纹识别算法实现

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python opencv 深度学习 指纹识别算法实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;4分创新点&#xff1a;4分 该项目较为新颖…

【AI大模型】基于ChatGLM-6b从零开始本地部署语言模型,步骤详细无坑版

1.什么是ChatGLM-6B ChatGLM-6B 是的一种自然语言处理模型&#xff0c;属于大型生成语言模型系列的一部分。"6B"在这里指的是模型大约拥有60亿个参数&#xff0c;这些参数帮助模型理解和生成语言。ChatGLM-6B 特别设计用于对话任务&#xff0c;能够理解和生成自然、…

Linux 软链接

# 语法 ln -s <文件夹or文件的真实路径> <自定义路径别名> # 例子 ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ~/ens33