编辑LDAP Syncprov覆盖图时出现错误“不等同匹配规则”

我有一个OpenLDAP OLC服务器(2.4.23),我试图简单地将两个属性添加到Syncprov覆盖文件,但遇到一些困难。

以下是olcOverlay = {0} syncprov.ldif文件的内容:

#cat /etc/openldap/slapd.d/cn\=config/olcDatabase\={1}bdb/olcOverlay\={0}syncprov.ldif

dn: olcOverlay={0}syncprov objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: {0}syncprov olcSpCheckpoint: 100 60 olcSpNoPresent: TRUE olcSpReloadHint: TRUE structuralObjectClass: olcSyncProvConfig entryUUID: 727d29d6-cc5c-1032-89d0-2fc7acd5ca31 creatorsName: cn=config createTimestamp: 20131018161654Z entryCSN: 20131018161654.036436Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20131018161654Z 

我正试图应用这个LDIF:

#cat SyncprovOverlayAdd2.ldif

 dn: olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config changetype: modify add: olcSpCheckpoint olcSpCheckpoint: 100 30 - add: olcSpSessionlog olcSpSessionlog: 1000 

错误:

#ldapadd -v -f SyncprovOverlayAdd2.ldif -D“cn = config”-H“ldap://ldap01.lab.haib.org”-W -x

 ldap_initialize( ldap://ldap01.lab.haib.org:389/??base ) Enter LDAP Password: add olcSpCheckpoint: 100 30 add olcSpSessionlog: 1000 modifying entry "olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config" ldap_modify: Inappropriate matching (18) additional info: modify/add: olcSpCheckpoint: no equality matching rule 

如果使用ldapmodify调用它,我会得到相同的错误。 我是否使用错误的添加/修改指令或属性?

进一步故障排除尝试:

我尝试修改LDIF没有“add:”指令看起来像:

 dn: olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config changetype: add olcSpCheckpoint: 100 30 olcSpSessionlog: 1000 

但是当我这样做,我得到一个不同的错误:

 add olcSpCheckpoint: 100 30 add olcSpSessionlog: 1000 adding new entry "olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config" ldap_add: Object class violation (65) additional info: no objectClass attribute 

我不太清楚这些OLC实时更改,当您需要添加/修改/replace时,需要显式设置“changetype”时,如果在使用ldapadd / ldapmodify作为现有条目时需要指定objectClass等等

参考: 这个ServerFault的问题有一个答案,build议用“replace”replace“添加”这个错误,但这不适合我。

有两件事情需要解决这个问题。 我已经在覆盖configuration文件(olcOverlay = {0} syncprov.ldif)中存在olcSpCheckpoint条目(但不是olcSpSessionLog条目),所以我需要将olcSpCheckpoint的“add:”更改为“replace:” :

#cat SyncprovOverlayAdd2.ldif

 dn: olcOverlay={0}syncprov,olcDatabase={1}bdb,cn=config changetype: modify replace: olcSpCheckpoint olcSpCheckpoint: 100 30 - add: olcSpSessionlog olcSpSessionlog: 1000 

因此,我在OP底部的“Reference:”注释中指出的ServerFault链接实际上是正确的,但是由于第二个问题在播放时我无法validation它,(我仍然收到错误消息修复LDIF)。

其次,即使在我修复了LDIF之后,我也收到了一些错误信息,说明在尝试将LDIF应用于ldapmodify时,无法更改条目(不幸丢失了terminal中出现的确切消息),但是我有克隆我的LDAP服务器所在的虚拟机,以便我可以在生产之外使用它的副本。 当我在虚拟机克隆中运行相同的ldapmodify命令时,它成功应用了LDIF。 所以我唯一的结论是slapd在生产服务器上出现了一些奇怪的原因,需要重新启动。 我试图避免在我的单点故障,生产LDAP服务器(而且应该是完全OLC,以防止像重新启动slapd),但我咬了一口子,并重新启动LDAP服务器上的slapd之后我的变化就没有问题了。