Univention Bugzilla – Bug 24433
univention-ldap-overlay-memberof funktionier nicht wie dokumentiert
Last modified: 2012-07-20 15:24:39 CEST
Ticket: 2011100510002207 univention-ldap-overlay-memberof funktionier in UCS 2.4 schon nicht mehr wie beschrieben (<http://sdb.univention.de/1085>). In UCS 3.0 ist das momentan sogar im maintained Bereich, sollte daher wohl noch mal überarbeitet/entfernt werden.
Auf Systemrollen != domaincontroller_master wird derzeit UCR ldap/overlay/memberof/objectclass auf univentionOverlayMemberOfDummy gesetzt. In der momentanen Version des memberOf Overlay Moduls wird das memberOf Attribut in dieser Konfiguration nicht mehr korrekt erzeugt sodass auf DC-Backup und DC-Slave Servern vom Master Abweichende (oder keine) Informationen zurückgegeben werden. Ein "ucr unset ldap/overlay/memberof/objectclass; /etc/init.d/slapd restart" und das anschließende "initialisieren" des für memberOf relevanten uniqueMember Attributs (bug 24068) führen unter UCS 2.4-3 zu konsistenten Werten auf allen Systemrollen.
Für 3.0 angefragt: <http://forum.univention.de/viewtopic.php?f=48&t=1719>
Created attachment 4487 [details] readd-uniquemember.py Man muss wohl den LDAP Lesezugriff für die IP des LDAP Server freischalten, damit er die memberof Attribute am Benutzerobjekt setzt. -> ucr get ldap/acl/read/ips 10.200.7.101 Im Anhang noch ein Script um uniqueMember an Gruppen nochmal zu setzen. Dies ist notwendig, damit memberOf für bestehende Gruppen nachträglich gesetzt werden soll.
Im Paket univention-ldap-overlay-memberof wurde folgendes gemacht: * ldap schema für univentionOverlayMemberOfDummy wurde entfernt (ich sehe, warum das gebraucht wird) * univention-update-memberof wurde auf python umgestellt (löscht/fügt hinzu uniqueMember an allen Gruppen) * Auf dem Master (Backup) wird eine LDAP ACL benötigt, die das anonyme Lesen für die IP des Rechner erlaubt, sonst wird kein memberOf Attribut auf dem Master angelegt. Dafür wird ldap/acl/read/ips bei der Installation entsprechend gesetzt * Auf nicht Master System wird nun NICHT mehr ldap/overlay/memberof/objectclass?univentionOverlayMemberOfDummy gesetzt. * SDB Artikel wurde angepasst (muss nach der QA noch freigeschaltet werden!!!!)
FAIL: Review svn34069: 1. Attachment #4487 [details], Zeile 9: Das Skript sollte nach der Erkennung des Fehlers auch abbrechen! 2. Bei einem Update bleibt die /e/u/t/f/etc/ldap/slapd.conf.d/11univention-ldap-overlay-memberof bestehen; das scheint nicht weiter schlimm zu sein, weil /usr/share/univention-ldap/schema/univention-ldap-overlay-memberof.schema wntfernt wurd. trotzdem wäre hier noch "dpkg-maintscript-helper rm_conffile" bzw. /usr/share/univention-lib/ucr.sh#remove_ucr_template zu bemühen. 3. Nach einem Upgrade lief der slapd nicht mehr. Genaue Ursache unklar (skepp phahn_uo26985 10.200.17.60). Ein slapd restart hat es korrigiert. OK: SDB Ich habe noch einige Kleinigkeiten angepasst und einen Verweis auf die OpenLDAP-Doku ergänzt, weil ich da selber erst nochmal was nachlesen musste. TBC
(In reply to comment #5) > FAIL: Review svn34069: > 1. Attachment #4487 [details], Zeile 9: Das Skript sollte nach der Erkennung des > Fehlers auch abbrechen! > 2. Bei einem Update bleibt die > /e/u/t/f/etc/ldap/slapd.conf.d/11univention-ldap-overlay-memberof bestehen; das > scheint nicht weiter schlimm zu sein, weil > /usr/share/univention-ldap/schema/univention-ldap-overlay-memberof.schema > wntfernt wurd. trotzdem wäre hier noch "dpkg-maintscript-helper rm_conffile" > bzw. /usr/share/univention-lib/ucr.sh#remove_ucr_template zu bemühen. > 3. Nach einem Upgrade lief der slapd nicht mehr. Genaue Ursache unklar (skepp > phahn_uo26985 10.200.17.60). Ein slapd restart hat es korrigiert. > > OK: SDB > Ich habe noch einige Kleinigkeiten angepasst und einen Verweis auf die > OpenLDAP-Doku ergänzt, weil ich da selber erst nochmal was nachlesen musste. > > TBC Zumindest 1 sollte für 3.0-2 noch behoben werden, bitte auch noch kurz 3 prüfen.
1. ok, wird nun beendet 2. ok, das Template wird im preinst verschoben und im postinst wird ucr aktualisiert 3. hat bei mir funktioniert? SDB Artikel habe ich wieder online gestellt.
*** Bug 24068 has been marked as a duplicate of this bug. ***
Verified: * memberOf funktioniert für neu angelegte Benutzer * univentionOverlayMemberOfDummy ist entfernt * ldap/acl/read/ips ist auf Master und Backup nach der Installation korrekt gesetzt und der slapd neu gestartet. * ldap/overlay/memberof/objectclass wird nicht mehr gesetzt. * Template subfile 11univention-ldap-overlay-memberof ist entfernt * Replikation OK Reopen wegen Funktionsstörung nach univention-update-memberof: Nach Aufruf von univention-update-memberof ist auf dem Master alles OK, aber auf den replizierenden Systemen ist der Administrator laut memberof noch in keiner Gruppe: root@master10:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa memberOf: cn=Domain Admins,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Domain Users,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=DC Backup Hosts,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Enterprise Admins,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Group Policy Creator Owners,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Schema Admins,cn=groups,dc=arucs3i8,dc=qa root@slave11:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa root@slave12:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa Nach Anlegen eines neuen "normalen" Benutzers enthält das memberof Attribut des Administrators schonmal "Domain Users": root@slave11:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa memberOf: cn=Domain Users,cn=groups,dc=arucs3i8,dc=qa root@slave12:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa memberOf: cn=Domain Users,cn=groups,dc=arucs3i8,dc=qa Erneuter Aufruf von univention-update-memberof auf dem Master sind die memberof-Attribute auf den replizierenden Systmen inkonsistent: root@backup11:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa memberOf: cn=Domain Admins,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Domain Users,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=DC Backup Hosts,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Enterprise Admins,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Schema Admins,cn=groups,dc=arucs3i8,dc=qa root@slave12:~# univention-ldapsearch -xLLL uid=Administrator memberof dn: uid=Administrator,cn=users,dc=arucs3i8,dc=qa memberOf: cn=Domain Admins,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=Domain Users,cn=groups,dc=arucs3i8,dc=qa memberOf: cn=DC Backup Hosts,cn=groups,dc=arucs3i8,dc=qa Wie besprochen scheint die Ursache in der schnellen Abfolge von Änderungen an den Gruppen-Objekten zu sein, die dann in der Replikation wegoptimiert werden.
Ich habe den SDB Artikel nochmal angepasst. Alle nicht-Master Domain Controller müssen, um das Attribut an vorhandenen Benutzern zu setzen, neu gejoint werden.
Verified: * Changelog ist OK * SDB-Artikel OK Zur Verbesserung von univention-update-memberof gibt es jetzt Bug 27957
(In reply to comment #7) > 1. ok, wird nun beendet Ich zweifle das an: <https://billy.knut.univention.de/websvn/filedetails.php?repname=dev&path=%2Fbranches%2Fucs-3.0%2Fucs%2Fmanagement%2Funivention-ldap-overlay-memberof%2Funivention-update-memberof> try: lo = univention.uldap.getAdminConnection() except Exception, e: print "failed to get ldap connection: %s" % e >>>>>>>>>>>>>>>>sys.sxit(1) # search groups and del/add uniqueMember results = lo.search(base=cr.get("ldap/base"), attr=["uniqueMember"], filter="(&(objectClass=posixGroup)(uniqueMember=*))")
(In reply to comment #12) > (In reply to comment #7) > > 1. ok, wird nun beendet > > Ich zweifle das an: > <https://billy.knut.univention.de/websvn/filedetails.php?repname=dev&path=%2Fbranches%2Fucs-3.0%2Fucs%2Fmanagement%2Funivention-ldap-overlay-memberof%2Funivention-update-memberof> > > try: > lo = univention.uldap.getAdminConnection() > except Exception, e: > print "failed to get ldap connection: %s" % e > >>>>>>>>>>>>>>>>sys.sxit(1) > # search groups and del/add uniqueMember > results = lo.search(base=cr.get("ldap/base"), attr=["uniqueMember"], > filter="(&(objectClass=posixGroup)(uniqueMember=*))") Ja, das führt in Fehlerfall zu einem hässlichen Traceback. Dafür dann aber einen neuen Bug aufmachen.
UCS 3.0-2 has been released: http://forum.univention.de/viewtopic.php?f=54&t=1905 If this error occurs again, please use "Clone This Bug".