openldap allop覆盖configuration

我无法使allop覆盖层正常工作。 我怀疑我错过了一些重要的configuration选项,或者我做了一些不正确的事情。 任何帮助是极大的赞赏。

我需要使用allop来使用memberOf属性来获得使用ldap的cisco设备。 我已经得到了memberOf覆盖工作正常,当我用'+'查询时返回memberOf属性。

我在我的Ubuntu 12.04.5 LTS服务器上使用apt-get install安装了openldap 2.4.28。 我从源代码编译allop覆盖,并将allop.so库复制到/ var / lib / ldap /目录。

这个版本的openldap使用olcconfiguration方法。

我使用下面的ldif添加了模块:

## module.ldif dn: cn=module,cn=config cn: module objectclass: olcModuleList objectclass: top olcmoduleload: allop.so olcmodulepath: /usr/lib/ldap # sudo ldapadd -Y EXTERNAL -H ldapi:/// -f module.ldif -v 

我使用下面的ldif添加了覆盖configuration:

 ## allop.ldif dn: olcOverlay={2}allop,olcDatabase={1}hdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: top olcOverlay: {2}allop # sudo ldapadd -Y EXTERNAL -H ldapi:/// -f allop.ldif -v 

然后我重新启动slapd并进行了testing,但操作属性仍然没有返回。

下面是一些使用debug Trace运行slapd的输出:

 54198057 ldif_read_file: read entry file: "/etc/ldap/slapd.d/cn=config/cn=module{3}.ldif" 54198057 => str2entry: "# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. # CRC32 18d7a995 dn: cn=module{3} objectClass: olcModuleList objectClass: top cn: module{3} olcModulePath: /usr/lib/ldap olcModuleLoad: {0}allop.so structuralObjectClass: olcModuleList entryUUID: 1e7b5ebe-d252-1033-97f7-618a755f5e4b creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth createTimestamp: 20140917010302Z entryCSN: 20140917010302.779622Z#000000#000#000000 modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth modifyTimestamp: 20140917010302Z " 54198057 >>> dnPrettyNormal: <cn=module{3}> 54198057 <<< dnPrettyNormal: <cn=module{3}>, <cn=module{3}> 54198057 >>> dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 <<< dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 >>> dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 <<< dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 <= str2entry(cn=module{3}) -> 0x7f04f45450c8 ... 54198057 ldif_read_file: read entry file: "/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb/olcOverlay={2}allop.ldif" 54198057 => str2entry: "# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. # CRC32 1b6fab9c dn: olcOverlay={2}allop objectClass: olcConfig objectClass: olcOverlayConfig objectClass: top olcOverlay: {2}allop structuralObjectClass: olcOverlayConfig entryUUID: 5c207c24-d25a-1033-8da6-db55e5b2e477 creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth createTimestamp: 20140917020202Z entryCSN: 20140917020202.176575Z#000000#000#000000 modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth modifyTimestamp: 20140917020202Z " 54198057 >>> dnPrettyNormal: <olcOverlay={2}allop> 54198057 <<< dnPrettyNormal: <olcOverlay={2}allop>, <olcOverlay={2}allop> 54198057 >>> dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 <<< dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 >>> dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 <<< dnNormalize: <gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth> 54198057 <= str2entry(olcOverlay={2}allop) -> 0x7f04f45450c8 

当我运行查询时,debugging输出中没有任何有趣的东西,当然也没有错误信息或与allop有关的任何东西。

你没有在你的configuration中提到它,但是你是否configuration了“allop-URI”选项? 如果留空,它只会返回ldap:///??base操作属性 – 也就是基础“”和范围“base”。 你将需要指定一个模式,它应该返回操作属性,比如ldap:///??sub

请注意,allop-URI不会执行特定的操作属性 – 对于所提供的范围和基数而言,全部或全部是没有的。

我通过从OLC转移到slapd.confconfiguration来解决此问题。 似乎没有OLC支持allop。