OpenLDAP:尝试加载 ppolicy 模块

OpenLDAP:尝试加载 ppolicy 模块

我在 CentOS 7.8 上有一个 OpenLDAP 服务器,正在尝试加载 ppolicy 覆盖。我尝试使用以下命令加载模块:

ldapmodify -Y EXTERNAL -H ldapi:/// -f ppolicy_load.ldif

我收到此错误:

add olcModuleLoad:
        ppolicy
modifying entry "cn=module{0},cn=config"
ldap_modify: Type or value exists (20)
        additional info: modify/add: olcModuleLoad: value #0 already exists

ppolicy.ldif的内容:

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy

cn=module{0},cn=config.ldif 内容:

dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}back_bdb
olcModuleLoad: {1}syncprov

附加信息:

cn=module{0},cn=config 的 ldapsearch 产生以下内容:

# module{0}, config
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}back_bdb
olcModuleLoad: {1}syncprov
olcModuleLoad: {2}ppolicy 

已加载 ppolicy 架构。不幸的是,我还应用了 ppolicy 覆盖

dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverLay: ppolicy
olcPPolicyDefault: cn=default,ou=policies,dc=mydomain,dc=com

现在,slapcat -n 0 产生以下错误:

5ede54b5 UNKNOWN attributeDescription "OLCPPOLICYDEFAULT" inserted.
5ede54b5 config error processing olcOverlay={1}ppolicy,olcDatabase={2}hdb,cn=config:
slapcat: bad configuration file!

我认为这是由于模块没有正确加载,现在出现了一点问题。

有人能提供如何实现这一点的指导吗?我在从主 ldap 服务器派生的测试服务器上配置了这一点,没有任何问题。

谢谢。

答案1

解决这个问题的方法是导入我在开始 ppolicy 工作之前所做的配置数据库备份:

  • 关闭 slapd
  • 将 /etc/openldap/slapd.d 移至新目录
  • slapadd -n 0 -F /etc/openldap/slapd.d -l config.ldif
  • chown -R ldap:ldap /etc/openldap/slapd.d
  • 重新启动 slapd

这里的问题似乎是该条目:

cn=module{0},cn=config

没有其他所有条目都有的创建元数据。以下是我开始应用策略之前配置数据库的 slapcat 中的相关部分

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}back_bdb
olcModuleLoad: {1}syncprov

这是我在恢复后立即从 slapcat 转储中获取的同一部分

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}back_bdb
olcModuleLoad: {1}syncprov
structuralObjectClass: olcModuleList
entryUUID: 1c4f8c4c-3eb1-103a-867c-85064373bd37
creatorsName: cn=config
createTimestamp: 20200609152452Z
entryCSN: 20200609153126.629105Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20200609153126Z

因此,在恢复配置数据库后,我可以继续进行 ppolicy 配置,没有任何问题。当然,我在我的 LDAP 服务器(哇,ESX)的克隆上对此进行了测试。

我想我可能是错了,但由于所有问题似乎都集中在 cn=module{0},cn=config 上,而且现在已经修复......我会接受这个答案。

相关内容