In einer UCS@School-Umgebung aufgefallen da dort das Import-Skript so vorgeht, lässt sich aber an der Kommandozeile nachstellen. Wenn beim Anlegen eines Users gleich Gruppenmitgliedschaften angegeben werden legt der UDM nur "uniqueMember"-Mitgliedschaften an, aber pflegt nicht die "memberUID"-Attribute. Beispiel: udm users/user create --position=cn=schueler,cn=users,ou=testschule,dc=schule,dc=de --set password=univention --set username=mauellertest01 --set lastname=manuell --set primaryGroup="cn=Domain Users testschule,cn=groups,ou=testschule,dc=schule,dc=de" --append groups="cn=schueler-testschule,cn=groups,ou=testschule,dc=schule,dc=de" --append groups="cn=testschule-1a,cn=klassen,cn=schueler,cn=groups,ou=testschule,dc=schule,dc=de" root@master:~# ldapsearch -x cn=schueler-testschule # extended LDIF # # LDAPv3 # base <dc=schule,dc=de> (default) with scope subtree # filter: cn=schueler-testschule # requesting: ALL # # schueler-testschule, groups, testschule, schule.de dn: cn=schueler-testschule,cn=groups,ou=testschule,dc=schule,dc=de objectClass: top objectClass: posixGroup objectClass: univentionGroup objectClass: sambaGroupMapping objectClass: univentionPolicyReference sambaGroupType: 2 sambaSID: S-1-5-21-1467617648-3627175356-3660739447-17681 gidNumber: 8340 cn: schueler-testschule univentionPolicyReference: cn=ucsschool-umc-pupils-default,cn=console,cn=polic ies,dc=schule,dc=de uniqueMember: uid=testschueler01,cn=schueler,cn=users,ou=testschule,dc=schule,d c=ch uniqueMember: uid=user,cn=mitarbeiter,cn=users,ou=andereschule,dc=schule,dc=de uniqueMember: uid=mauellertest01,cn=schueler,cn=users,ou=testschule,dc=schule,d c=ch memberUid: user # search result search: 2 result: 0 Success
Bei mir aufgefallen mit UCS 2.4-1
Auf einem 2.4-0 kann ich das nicht reproduzieren.
Created attachment 3120 [details] Testskript, mit welchem sich der Fehler nachstellen lässt
univention-directory-manager-modules wurde angepasst. Ebenso wurde das Skript fix_primary_group_membership angepasst, so dass es auch die primären Gruppenmitgliedschaften von Benutzern korrigieren kann. Im postinst von univention-ldap werden jetzt sowohl Korrekturen für Computer (Bug #21711) und Benutzer (dieser Bug) ausgeführt, sofern nicht update/fix/computer/primarygroupmembership=no bzw. update/fix/user/primarygroupmembership=no vor dem Update gesetzt wird. Changelogeintrag wurde vorgenommen. Das am Bug hängende Testskript kann als Anhaltspunkt für Tests verwendet werden.
Beim Update auf billy gab es ein paar Fehlermeldungen beim Update: modifying entry "cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de" ldap_modify: Invalid syntax (21) additional info: uniqueMember: value #0 invalid per syntax Invalid DN syntax (34) Additional information: invalid DN *** is missing in group with gidNumber 5001 (cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de) modifying entry "cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de" ldap_modify: Invalid syntax (21) additional info: memberUid: value #0 invalid per syntax Ich kann gerne auch die komplette Logdatei vom Update bereitstellen.
(In reply to comment #5) > Beim Update auf billy gab es ein paar Fehlermeldungen beim Update: > > modifying entry "cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de" > ldap_modify: Invalid syntax (21) > additional info: uniqueMember: value #0 invalid per syntax > > Invalid DN syntax (34) > Additional information: invalid DN > *** is missing in group with gidNumber 5001 (cn=Domain > Users,cn=groups,dc=knut,dc=univention,dc=de) > modifying entry "cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de" > ldap_modify: Invalid syntax (21) > additional info: memberUid: value #0 invalid per syntax > > > Ich kann gerne auch die komplette Logdatei vom Update bereitstellen. Das Skript konnte nicht mit "überlangen" DNs umgehen. Fixed. Paket wurde neu gebaut. root@billy:# sh ./fix_primary_group_membership -f *** uid=partnertechnicalmail,cn=otrs,cn=mail,cn=users,dc=knut,dc=univention,dc=de is missing in group with gidNumber 5001 (cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de) modifying entry "cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de" *** partnertechnicalmail is missing in group with gidNumber 5001 (cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de) modifying entry "cn=Domain Users,cn=groups,dc=knut,dc=univention,dc=de"
fix_primary_group_membership: Hier bitte in den ldapsearch Aufrufen für den Test, ob Benutzer/Rechner uid's oder dn's in einer Gruppen vorhanden sind, nicht das ganze Objekt ausgeben lassen , sondern nur die (beispielsweise) dn. Also aus if [ -z "$(ldapsearch -xLLL "(&(objectClass=univentionGroup)(gidNumber=${gidNumber})(memberUid=${useruid}))")" ] ; then if [ -z "$(ldapsearch -xLLL "(&(objectClass=univentionGroup)(gidNumber=${gidNumber})(memberUid=${useruid}))") dn" ] ; then machen. Damit ist das Script deutlich schneller und belastet das System deutlich weniger. Für den Test sind die eigentlichen Daten am Gruppenobjekt ja irrelevant, man will ja nur wissen, ob des gesucht Objekt an der Gruppe gesetzt ist.
Anpassung wurde vorgenommen, Paket univention-directory-manager-modules wurde neu gebaut und auf dem testmirror announced.
Benutzer anlegen unter Angabe der primären Gruppe - OK -> udm users/user create --set username=myuser1 --set lastname=a \ --set password=univention \ --set primaryGroup="cn=www-access,cn=groups,dc=univention,dc=qa" -> ldapsearch -x cn=www-access | grep myuser memberUid: myuser1 uniqueMember: uid=myuser1,dc=univention,dc=qa Benutzer ohne Angabe der primären Gruppen anlegen - OK -> udm users/user create --set username=myuser2 --set lastname=a \ --set password=univention -> ldapsearch -x cn=Domain\ Users|grep myus uniqueMember: uid=myuser2,dc=univention,dc=qa memberUid: myuser2 Benutzer umbenennen - OK -> udm users/user modify --dn uid=myuser1,dc=univention,dc=qa \ --set username=myuser3 -> ldapsearch -x cn=www-access|grep myus uniqueMember: uid=myuser3,dc=univention,dc=qa memberUid: myuser3 Benutzer löschen - OK -> udm users/user remove --dn uid=myuser3,dc=univention,dc=qa -> ldapsearch -x cn=www-access|grep myus Primäre Gruppe an Benutzer ändern - OK -> udm users/user modify --dn uid=myuser2,dc=univention,dc=qa \ --set primaryGroup="cn=www-access,cn=groups,dc=univention,dc=qa" -> ldapsearch -x cn=www-access|grep myus uniqueMember: uid=myuser2,dc=univention,dc=qa memberUid: myuser2 -> ldapsearch -x cn=Domain\ Users|grep myus uniqueMember: uid=myuser2,dc=univention,dc=qa memberUid: myuser2 Das "fix" Skript korrigiert die Gruppenzugehörigkeit beim Update automatisch, sofern nicht update/fix/user/primarygroupmembership auf no gesetzt ist. Geschwindigkeit ist ok (5000 User 10 mit falschen Gruppenzugehörigkeitem dauert ca. 5min) Changelog Eintrag vorhanden.
UCS 2.4-2 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".