Bug 21782 - Beim Anlegen eines Users werden Gruppenmitgliedschaften nur als uniqueMember gespeichert, nicht als memberuid
Summary: Beim Anlegen eines Users werden Gruppenmitgliedschaften nur als uniqueMember ...
Status: CLOSED FIXED
Alias: None
Product: UCS
Classification: Unclassified
Component: UMC - Users
Version: UCS 2.4
Hardware: Other Linux
: P5 normal
Target Milestone: UCS 2.4-2
Assignee: Sönke Schwardt-Krummrich
QA Contact: Felix Botner
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-10 10:15 CET by Ingo Steuwer
Modified: 2011-04-04 15:48 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):
Customer ID:
Max CVSS v3 score:


Attachments
Testskript, mit welchem sich der Fehler nachstellen lässt (9.04 KB, text/plain)
2011-03-17 14:02 CET, Sönke Schwardt-Krummrich
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ingo Steuwer univentionstaff 2011-03-10 10:15:45 CET
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
Comment 1 Ingo Steuwer univentionstaff 2011-03-10 10:28:47 CET
Bei mir aufgefallen mit UCS 2.4-1
Comment 2 Felix Botner univentionstaff 2011-03-11 09:33:39 CET
Auf einem 2.4-0 kann ich das nicht reproduzieren.
Comment 3 Sönke Schwardt-Krummrich univentionstaff 2011-03-17 14:02:09 CET
Created attachment 3120 [details]
Testskript, mit welchem sich der Fehler nachstellen lässt
Comment 4 Sönke Schwardt-Krummrich univentionstaff 2011-03-17 17:46:56 CET
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.
Comment 5 Stefan Gohmann univentionstaff 2011-03-24 07:05:46 CET
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.
Comment 6 Sönke Schwardt-Krummrich univentionstaff 2011-03-24 13:53:02 CET
(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"
Comment 7 Felix Botner univentionstaff 2011-03-28 16:19:02 CEST
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.
Comment 8 Sönke Schwardt-Krummrich univentionstaff 2011-03-28 16:42:24 CEST
Anpassung wurde vorgenommen, Paket univention-directory-manager-modules wurde neu gebaut und auf dem testmirror announced.
Comment 9 Felix Botner univentionstaff 2011-03-29 11:51:38 CEST
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.
Comment 10 Sönke Schwardt-Krummrich univentionstaff 2011-04-04 15:48:35 CEST
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".