Bug 24433 - univention-ldap-overlay-memberof funktionier nicht wie dokumentiert
univention-ldap-overlay-memberof funktionier nicht wie dokumentiert
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: LDAP
UCS 2.4
Other Linux
: P5 normal (vote)
: UCS 3.0-2
Assigned To: Felix Botner
Arvid Requate
: interim-3
: 24068 (view as bug list)
Depends on: 24068
Blocks:
  Show dependency treegraph
 
Reported: 2011-11-08 10:02 CET by Janis Meybohm
Modified: 2012-07-20 15:24 CEST (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
readd-uniquemember.py (753 bytes, text/x-python)
2012-06-28 09:29 CEST, Felix Botner
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Janis Meybohm univentionstaff 2011-11-08 10:02:41 CET
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.
Comment 1 Janis Meybohm univentionstaff 2011-11-08 14:04:44 CET
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.
Comment 2 Janis Meybohm univentionstaff 2012-02-03 12:42:06 CET
Für 3.0 angefragt: <http://forum.univention.de/viewtopic.php?f=48&t=1719>
Comment 3 Felix Botner univentionstaff 2012-06-28 09:29:23 CEST
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.
Comment 4 Felix Botner univentionstaff 2012-07-10 15:46:16 CEST
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!!!!)
Comment 5 Philipp Hahn univentionstaff 2012-07-13 18:35:04 CEST
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
Comment 6 Stefan Gohmann univentionstaff 2012-07-16 06:03:52 CEST
(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.
Comment 7 Felix Botner univentionstaff 2012-07-16 09:58:53 CEST
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.
Comment 8 Felix Botner univentionstaff 2012-07-17 11:38:06 CEST
*** Bug 24068 has been marked as a duplicate of this bug. ***
Comment 9 Arvid Requate univentionstaff 2012-07-17 12:47:05 CEST
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.
Comment 10 Felix Botner univentionstaff 2012-07-17 15:09:31 CEST
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.
Comment 11 Arvid Requate univentionstaff 2012-07-17 15:46:29 CEST
Verified:
 * Changelog ist OK
 * SDB-Artikel OK

Zur Verbesserung von univention-update-memberof gibt es jetzt Bug 27957
Comment 12 Philipp Hahn univentionstaff 2012-07-18 10:23:57 CEST
(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=*))")
Comment 13 Felix Botner univentionstaff 2012-07-18 10:47:02 CEST
(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.
Comment 14 Stefan Gohmann univentionstaff 2012-07-20 15:24:39 CEST
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".