Univention Bugzilla – Bug 24225
Posix UID Mapping für Samba4 Update Szenario 1
Last modified: 2011-12-13 15:50:33 CET
Dieser Bug fiel auf bei Update Szenario 1: Aufbau einer neuen Windows Domäne Wenn die SID-Synchronisation per connector/s4/mapping/sid="false" deaktiviert ist, funktioniert die IDMAP-Pflege per samba4-idmap Listener nicht mehr: 1. Liest der Listener die Samba3-SIDs aus dem OpenLDAP, und schreibt diese in idmap.ldb, statt die Samba4-SIDs. 2. Bekommt der Listener nicht mit, wenn Samba4 eine SID vergiebt. Aktuell sehe ich hier folgende fünf Optionen: a) winbind3 mit idmap_nss starten und von Samba4 verwenden lassen. b) Die Funktionalität von idmap_nss in Samba4 rein patchen. D.h. die Funktion idmap_sid_to_xid in Samba4 so anpassen, dass dort SID to name und dann getpwnam/getgrnam verwendet wird, analog zu idmap_nss_sids_to_unixids aus source3/winbindd/idmap_nss.c c) Workaround im samba4-idmap Listener, d.h. 1. richtige SIDs aus Samba4-LDB heraussuchen und 2. irgendwie triggern, dass der Listener überhaupt aufgerufen wird (z.B. modify auf ein trigger-Attribut). d) Ein LDB-Modul (oder die Erweiterung eines existierenden). e) Ein sperater Daemon, der auf jedem Samba4-System läuft und dort entweder analog zum S4-Connector LDB-Änderungen pollt oder per dirsync auf LDB-Änderungen triggert. +++ This bug was initially created as a clone of Bug #23917 +++ Samba4 verwendet aktuell nicht die Posix-ID Zuordnung, die im OpenLDAP definiert ist:
Wir hatten jetzt besprochen, dass der Connector die SID von S4 in ein anderes Attribut synchronisiert. Der Listener reagiert dann auf diese SID.
Ok, das ist Variante c). Als Attributname könnte man univentionSamba4SID verwenden (Das AD-Attribut "sIDHistory" hat eine andere Semantik und gibt es noch nicht im Samba3-Schema). Todo: * Attribut im Schema in univention-ldap-config definieren * Im S4 Connector in dieses Attribut schreiben, wenn connector/s4/mapping/sid="false" * Im samba4-idmap Listener das Attribut verwenden, das in samba4/idmap/sidattribute definiert ist. * Wenn die UCR-Variable samba4/idmap/sidattribute auf einem der Samba4-Systeme nicht definiert ist, beim Start des Listener-Moduls prüfen, ob windows/domain == sambaDomainObject ist. Falls ja, sollte es die sambaSID in die idmap schreiben, sonst die univentionSamba4SID.
fixed root@master51:~# ucr get connector/s4/mapping/sid false root@master51:~# samba-tool user add karl univention User 'karl' created successfully root@master51:~# univention-ldapsearch uid=karl uidNumber sambaSID univentionSamba4SID -LLL dn: uid=karl,cn=users,dc=deadlock5,dc=local uidNumber: 2020 sambaSID: S-1-4-2020 univentionSamba4SID: S-1-5-21-1436884104-1881371918-1669042584-1123 root@master51:~# ldbsearch -H /var/lib/samba/private/idmap.ldb xidNumber=2020 # record 1 dn: CN=S-1-5-21-1436884104-1881371918-1669042584-1123 cn: S-1-5-21-1436884104-1881371918-1669042584-1123 objectClass: sidMap objectSid: S-1-5-21-1436884104-1881371918-1669042584-1123 type: ID_TYPE_UID xidNumber: 2020 distinguishedName: CN=S-1-5-21-1436884104-1881371918-1669042584-1123 # returned 1 records # 1 entries # 0 referrals root@master51:~# (In reply to comment #2) > Ok, das ist Variante c). Als Attributname könnte man univentionSamba4SID > verwenden (Das AD-Attribut "sIDHistory" hat eine andere Semantik und gibt es > noch nicht im Samba3-Schema). > > Todo: > > * Attribut im Schema in univention-ldap-config definieren Das Attribut ist im samba Schema definiert mit einer OID von uns. > * Im S4 Connector in dieses Attribut schreiben, wenn > connector/s4/mapping/sid="false" Ist angepasst. > * Im samba4-idmap Listener das Attribut verwenden, das in > samba4/idmap/sidattribute definiert ist. > > * Wenn die UCR-Variable samba4/idmap/sidattribute auf einem der Samba4-Systeme > nicht definiert ist, beim Start des Listener-Moduls prüfen, ob windows/domain > == sambaDomainObject ist. Falls ja, sollte es die sambaSID in die idmap > schreiben, sonst die univentionSamba4SID. Dafür sollte die connector/s4/mapping/sid Variable gesetzt werden, da es nur für eine Übergangszeit ist, sollte das aus meiner Sicht reichen,
Funktioniert.
Es ist aufgefallen, dass die univentionSamba4SID für neue Benutzer übernommen wird, allerdings nicht für existierende Benutzer.
Neue Version baut. In der QA bitte auch nochmal die Standard-Synchronisation testen.
(In reply to comment #5) > Es ist aufgefallen, dass die univentionSamba4SID für neue Benutzer übernommen > wird, allerdings nicht für existierende Benutzer. Das war in meiner Testumgebung noch so.
fixed Für eine bessere Fehlerbeschreibung: Bug #25037.
Verified: * Auch an Benutzern, die angelegt worden sind bevor der univention-s4-connector auf dem neuen UCS 3.0 Samba4 DC Backup installiert wurde, ist danach das Attribut univentionSamba4SID mit der SID gesetzt, die Samba4 vergeben hat. * An Benutzern, die danach angelegt wurden funktionierte das auch weiterhin.
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"