Hi all,
I tried for some days to make refint overlay work with refint_nothing
filled.
The slapo-refint man page says :
refint_nothing <string>
Specify an arbitrary value to be used as a placeholder
when the last value would otherwise be deleted from an attribute. This
can be useful in cases where the schema requires the existence of an
attribute for which
referential integrity is enforced. The attempted deletion
of a required attribute will otherwise result in an Object Class
Violation, causing the request to fail. The string must be a valid DN.
but each time I try to delete the last member from a groupOfNames group,
the deletion is refused because of schema violation. That's ok without
refint_nothing but with the string set it should replace last member,
right ?
I tried to increase loglevel to 16383 but can't see any debug for refint
overlay. So I'm not sure if refint is working or not. Is there another
way to have some debug information from refint ?
I have included my configuration, ldap tree and log content below. For
the logs, I have snipped the content to the error directly but can
provide full log if required.
The tests are running on debian jessie 8.2 and slapd version
2.4.40+dfsg-1.
And I know I can place the placeholder manually but doing it by hand
each time is not what I want and, more important, I want to understand
why the module is not worrking like it should.
I hope I have posted to the right list and if there is something missing
please ask.
Thanks for help.
######### START CONF LDIF ########
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: a00e3106-20ce-1035-8943-a9586533ca5e
creatorsName: cn=config
createTimestamp: 20151116165546Z
olcLogLevel: 16383
entryCSN: 20151116173108.585343Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20151116173108Z
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}refint
olcModuleLoad: {2}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a00edd9a-20ce-1035-894b-a9586533ca5e
creatorsName: cn=admin,cn=config
createTimestamp: 20151116165546Z
entryCSN: 20151116172537.271031Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20151116172537Z
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
structuralObjectClass: olcSchemaConfig
entryUUID: a00e5a96-20ce-1035-8946-a9586533ca5e
creatorsName: cn=admin,cn=config
createTimestamp: 20151116165546Z
entryCSN: 20151116165546.131180Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20151116165546Z
... schema listing skipped as they are not modified ...
dn: olcBackend={0}mdb,cn=config
objectClass: olcBackendConfig
olcBackend: {0}mdb
structuralObjectClass: olcBackendConfig
entryUUID: a00ef6cc-20ce-1035-894c-a9586533ca5e
creatorsName: cn=admin,cn=config
createTimestamp: 20151116165546Z
entryCSN: 20151116165546.135178Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20151116165546Z
dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
olcAccess: {0}to * by
dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read
olcSizeLimit: 500
structuralObjectClass: olcDatabaseConfig
entryUUID: a00e4ec0-20ce-1035-8944-a9586533ca5e
creatorsName: cn=config
createTimestamp: 20151116165546Z
entryCSN: 20151116165546.130875Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20151116165546Z
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by
dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth manage by * break
olcRootDN: cn=admin,cn=config
structuralObjectClass: olcDatabaseConfig
entryUUID: a00e5654-20ce-1035-8945-a9586533ca5e
creatorsName: cn=config
createTimestamp: 20151116165546Z
olcRootPW:: e1NTSEF9NkdpY3VMWFhTUGpBa1IzM3UzcnkxVm1qY2N2ZVZXNHY=
entryCSN: 20151116170655.978168Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20151116170655Z
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by
anonym
ous auth by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: a00efa64-20ce-1035-894d-a9586533ca5e
creatorsName: cn=admin,cn=config
createTimestamp: 20151116165546Z
olcRootPW:: e1NTSEF9SlExdmxnN1E0a0hNTTZtanZzdEtIcHBSYjBmNHJyaGI=
entryCSN: 20151116170852.768823Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20151116170852Z
dn: olcOverlay={0}refint,olcDatabase={1}mdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {0}refint
structuralObjectClass: olcRefintConfig
entryUUID: cd95de54-20d2-1035-86bf-517b01ed1806
creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
createTimestamp: 20151116172540Z
olcRefintNothing: uid=myuser2,ou=users,dc=nodomain
olcRefintAttribute: member
entryCSN: 20151116174304.336010Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20151116174304Z
######### END CONF LDIF ########
######### START DB LDIF ########
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain
structuralObjectClass: organization
entryUUID: a01fd816-20ce-1035-8deb-e11fbfc8d840
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116165546Z
entryCSN: 20151116165546.245753Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116165546Z
dn: cn=admin,dc=nodomain
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Z2doUHZPQVo2dnV5NzVSY1dFLzhhUFNGQjVZY1FXRHY=
structuralObjectClass: organizationalRole
entryUUID: a02629b4-20ce-1035-8dec-e11fbfc8d840
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116165546Z
entryCSN: 20151116165546.287209Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116165546Z
dn: ou=groups,dc=nodomain
objectClass: organizationalUnit
objectClass: top
ou: groups
structuralObjectClass: organizationalUnit
entryUUID: 25ff55cc-20d1-1035-86b9-517b01ed1806
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116171349Z
entryCSN: 20151116171349.840889Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116171349Z
dn: ou=users,dc=nodomain
objectClass: organizationalUnit
objectClass: top
ou: users
structuralObjectClass: organizationalUnit
entryUUID: 351d4e6a-20d1-1035-86ba-517b01ed1806
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116171415Z
entryCSN: 20151116171415.203147Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116171415Z
dn: uid=myuser1,ou=users,dc=nodomain
cn: myuser1
objectClass: inetOrgPerson
objectClass: top
sn: myuser1
uid: myuser1
structuralObjectClass: inetOrgPerson
entryUUID: bba534d4-20d1-1035-86bb-517b01ed1806
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116171800Z
entryCSN: 20151116171800.908475Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116171800Z
dn: uid=myuser2,ou=users,dc=nodomain
cn: myuser2
objectClass: inetOrgPerson
objectClass: top
sn: myuser2
uid: myuser2
structuralObjectClass: inetOrgPerson
entryUUID: d175bac2-20d1-1035-86bc-517b01ed1806
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116171837Z
entryCSN: 20151116171837.507205Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116171837Z
dn: cn=mygroup1,ou=groups,dc=nodomain
cn: mygroup1
member: uid=myuser1,ou=users,dc=nodomain
objectClass: groupOfNames
objectClass: top
structuralObjectClass: groupOfNames
entryUUID: f9657978-20d1-1035-86bd-517b01ed1806
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20151116171944Z
entryCSN: 20151116171944.509541Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20151116171944Z
######### END DB LDIF ########
######### START LOG ########
...
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: read active on 13
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: epoll: listen=9
active_threads=0 tvp=zero
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: epoll: listen=10
active_threads=0 tvp=zero
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: epoll: listen=11
active_threads=0 tvp=zero
Nov 16 18:43:31 vm-rt1 slapd[15110]: connection_get(13)
Nov 16 18:43:31 vm-rt1 slapd[15110]: connection_get(13): got connid=1154
Nov 16 18:43:31 vm-rt1 slapd[15110]: connection_read(13): checking for
input on id=1154
Nov 16 18:43:31 vm-rt1 slapd[15110]: op tag 0x66, time 1447695811
Nov 16 18:43:31 vm-rt1 slapd[15110]: conn=1154 op=4 do_modify
Nov 16 18:43:31 vm-rt1 slapd[15110]: conn=1154 op=4 do_modify: dn
(cn=mygroup1,ou=groups,dc=nodomain)
Nov 16 18:43:31 vm-rt1 slapd[15110]: >>> dnPrettyNormal:
<cn=mygroup1,ou=groups,dc=nodomain>
Nov 16 18:43:31 vm-rt1 slapd[15110]: <<< dnPrettyNormal:
<cn=mygroup1,ou=groups,dc=nodomain>, <cn=mygroup1,ou=groups,dc=nodomain>
Nov 16 18:43:31 vm-rt1 slapd[15110]: conn=1154 op=4 modifications:
Nov 16 18:43:31 vm-rt1 slapd[15110]: #011replace: member
Nov 16 18:43:31 vm-rt1 slapd[15110]: #011#011no values
Nov 16 18:43:31 vm-rt1 slapd[15110]: conn=1154 op=4 MOD
dn="cn=mygroup1,ou=groups,dc=nodomain"
Nov 16 18:43:31 vm-rt1 slapd[15110]: conn=1154 op=4 MOD attr=member
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify:
cn=mygroup1,ou=groups,dc=nodomain
Nov 16 18:43:31 vm-rt1 slapd[15110]:
mdb_dn2entry("cn=mygroup1,ou=groups,dc=nodomain")
Nov 16 18:43:31 vm-rt1 slapd[15110]: =>
mdb_dn2id("cn=mygroup1,ou=groups,dc=nodomain")
Nov 16 18:43:31 vm-rt1 slapd[15110]: <= mdb_dn2id: got id=0x7
Nov 16 18:43:31 vm-rt1 slapd[15110]: => mdb_entry_decode:
Nov 16 18:43:31 vm-rt1 slapd[15110]: <= mdb_entry_decode
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify_internal: 0x00000007:
cn=mygroup1,ou=groups,dc=nodomain
Nov 16 18:43:31 vm-rt1 slapd[15110]: <= acl_access_allowed: granted to
database root
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify_internal: replace member
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify_internal: replace
entryCSN
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify_internal: replace
modifiersName
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify_internal: replace
modifyTimestamp
Nov 16 18:43:31 vm-rt1 slapd[15110]: oc_check_required entry
(cn=mygroup1,ou=groups,dc=nodomain), objectClass "groupOfNames"
Nov 16 18:43:31 vm-rt1 slapd[15110]: Entry
(cn=mygroup1,ou=groups,dc=nodomain): object class 'groupOfNames'
requires attribute 'member'
Nov 16 18:43:31 vm-rt1 slapd[15110]: entry failed schema check: object
class 'groupOfNames' requires attribute 'member'
Nov 16 18:43:31 vm-rt1 slapd[15110]: mdb_modify: modify failed (65)
Nov 16 18:43:31 vm-rt1 slapd[15110]: send_ldap_result: conn=1154 op=4
p=3
Nov 16 18:43:31 vm-rt1 slapd[15110]: send_ldap_result: err=65 matched=""
text="object class 'groupOfNames' requires attribute 'member'"
Nov 16 18:43:31 vm-rt1 slapd[15110]: send_ldap_response: msgid=5 tag=103
err=65
Nov 16 18:43:31 vm-rt1 slapd[15110]: conn=1154 op=4 RESULT tag=103
err=65 text=object class 'groupOfNames' requires attribute 'member'
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: activity on 1 descriptor
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: activity on:
Nov 16 18:43:31 vm-rt1 slapd[15110]:
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: epoll: listen=9
active_threads=0 tvp=zero
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: epoll: listen=10
active_threads=0 tvp=zero
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: epoll: listen=11
active_threads=0 tvp=zero
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: activity on 1 descriptor
Nov 16 18:43:31 vm-rt1 slapd[15110]: daemon: activity on:
######### END LOG ########