Sam Morris via FreeIPA-users wrote: > I've created a system account for replication status monitoring: > > uid=repl-mon,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=com > > ... and I've added it to the permissions: > > "cn=Read Replication > Agreements,cn=permissions,cn=pbac,dc=ipa,dc=example,dc=com" permission. > > While this allows the account to fetch info from underneath 'cn=mapping > tree,cn=config', it appears that ds-replcheck(1) insists on fetching the > nsds50ruv attribute from the replicated suffix, which is not granted by > the "Read Replication Agreements" permission. > > Here's the directory server's access log when running 'ds-replcheck > status -b o=ipaca': > > [24/Apr/2023:11:35:34.468602164 +0000] conn=789 op=1 BIND > dn="uid=repl-mon,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=com" method=128 > version=3 > [24/Apr/2023:11:35:34.470810908 +0000] conn=789 op=1 RESULT err=0 tag=97 > nentries=0 wtime=0.020082546 optime=0.002246180 etime=0.022324130 > dn="uid=repl-mon,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=com" > [24/Apr/2023:11:35:34.475518328 +0000] conn=789 op=2 SRCH base="o=ipaca" > scope=0 filter="(objectClass=*)" attrs=ALL > [24/Apr/2023:11:35:34.475918861 +0000] conn=789 op=2 RESULT err=0 tag=101 > nentries=0 wtime=0.000211040 optime=0.000406466 etime=0.000612026 > [24/Apr/2023:11:35:34.477210042 +0000] conn=789 op=3 SRCH base="cn=config" > scope=2 filter="(&(objectClass=nsds5replica)(nsDS5ReplicaRoot=o=ipaca))" > attrs=ALL > [24/Apr/2023:11:35:34.487675914 +0000] conn=789 op=3 RESULT err=0 tag=101 > nentries=1 wtime=0.000248974 optime=0.010471906 etime=0.010715383 > [24/Apr/2023:11:35:34.502207252 +0000] conn=789 op=4 SRCH base="o=ipaca" > scope=2 > filter="(&(nsUniqueId=ffffffff-ffffffff-ffffffff-ffffffff)(objectClass=nstombstone))" > attrs="nsds50ruv" > [24/Apr/2023:11:35:34.502647379 +0000] conn=789 op=4 RESULT err=0 tag=101 > nentries=0 wtime=0.000333635 optime=0.000446668 etime=0.000773723 > [24/Apr/2023:11:35:34.504273914 +0000] conn=789 op=5 UNBIND > > If I perform these queries manually using my repl-mon user then I see > that the problem is the third search returns nothing.
This is not a problem. The filter is different between the two searches. nsds50ruv is explicitly in the "Read Replication Agreements" permission so it isn't something missing from the ACI. > However, this attribute can be read from the second search! Although > it's not included in the results when 'ALL' attributes are requested, > explicitly adding it to the search query works fine: The third search is looking for tombstone entries, https://access.redhat.com/documentation/en-us/red_hat_directory_server/11/html/administration_guide/tombstones , and there don't appear to be any. This is fine. I don't think you need to do anything here. rob > > $ ldapsearch -LLL -o ldif-wrap=no -H ldaps://ipa0.ipa.example.com -x -D > uid=repl-mon,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=com -w ... -s sub -b > cn=config '(&(objectClass=nsds5replica)(nsDS5ReplicaRoot=o=ipaca))' '*' > nsds50ruv > dn: cn=replica,cn=o\3Dipaca,cn=mapping tree,cn=config > cn: replica > nsDS5Flags: 1 > nsDS5ReplicaBindDN: cn=replication manager,cn=config > nsDS5ReplicaId: 14 > nsDS5ReplicaName: 11111111-22222222-33333333-44444444 > nsDS5ReplicaRoot: o=ipaca > nsDS5ReplicaType: 3 > nsState:: DgAAAAAAAAA0jUZkAAAAAAAAAAAAAAAAwwAAAAAAAAAAAAAAAAAAAA== > nsds5ReplicaBackoffMax: 300 > nsds5ReplicaLegacyConsumer: off > objectClass: top > objectClass: nsds5replica > objectClass: extensibleobject > nsds5ReplicaChangeCount: 5254 > nsds50ruv: {replicageneration} 5cb8bedf000000060000 > nsds50ruv: {replica 14 ldap://ipa1.ipa.example.com:389} > 610ad7470001000e0000 64468df50000000e0000 > nsds50ruv: {replica 12 ldap://ipa0.ipa.example.com:389} > 6082f5e10001000c0000 644695700000000c0000 > nsds50ruv: {replica 18 ldap://ipa2.ipa.example.com:389} > 628d6a07000100120000 64469383000000120000 > > Is there a particular reason that ds-replcheck(1) doesn't read the > nsds50ruv attribute from 'cn=o\3Dipaca,cn=mapping tree,cn=config' > returned by the 2nd search above (I expect if I knew more about how > replication is implemented the reason would be obvious...) > > I wonder what's the right way I should be doing this? > > * RFE against 389 Directory Server to make ds-replcheck ask for > nsds50ruv in the second search it performs above instead of making a > separate search for it in the replicated suffix's entry? > > * RFE against FreeIPA to make 'Read Replication Agreements' include > whatever ACI makes > the second search above work? > > I can't even figure out the correct aci at the moment. I've added the > following to 'cn=mapping tree,cn=config' (based on > <https://www.spinics.net/linux/fedora/389-users/msg20036.html>) > > aci: (targetattr = "*")(version 3.0;acl "for ds-replcheck"; allow > (read,compare,search) groupdn = "ldap:///cn=Read Replication > Agreements,cn=permissions,cn=pbac,dc=ipa,dc=example,dc=com";) > aci: (targetattr = "*")(version 3.0;acl "for ds-replcheck"; allow > (read,compare,search) userdn = > "ldap:///uid=repl-mon,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=com";) > > but my user still can't see the nsds50ruv attribute when searching > with: > > $ ldapsearch -H ldaps://ipa0.ipa.example.com -x -D > uid=repl-mon,cn=sysaccounts,cn=etc,dc=ipa,dc=example,dc=com -w ... -s sub -b > o=ipaca > '(&(nsUniqueId=ffffffff-ffffffff-ffffffff-ffffffff)(objectClass=nstombstone))' > nsds50ruv > > Maybe because of the funky way that the search base is 'o=ipaca' but > the entry returned in the result (when it works, i.e. when I run it > as 'cn=directory manager') is 'cn=replica,cn=o\3Dipaca,cn=mapping > tree,cn=config'? > > * Write my own ACIs from scratch avoiding using IPA's 'Read Replication > Agreements' permission? If I can get the above to work then I could > do this as well. > > * A better idea? :) > > Regards, > _______________________________________________ FreeIPA-users mailing list -- freeipa-users@lists.fedorahosted.org To unsubscribe send an email to freeipa-users-le...@lists.fedorahosted.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedorahosted.org/archives/list/freeipa-users@lists.fedorahosted.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue