Benutzerliste nicht mehr anzeigbar nach Upgrade auf 4.3


#1

Hallo Forum, hallo Univention Team!

Nach dem Upgrade auf UCS 4.3 lassen sich auf unserem System die Benutzer nicht mehr in der Management Console anzeigen.

Der Befehl:

udm users/user list

Ergibt folgendes:

Traceback (most recent call last):
  File "/usr/share/univention-directory-manager-tools/univention-cli-server", line 218, in doit
    output = univention.admincli.admin.doit(arglist)
  File "/usr/lib/pymodules/python2.7/univention/admincli/admin.py", line 398, in doit
    out = _doit(arglist)
  File "/usr/lib/pymodules/python2.7/univention/admincli/admin.py", line 987, in _doit
    for object in univention.admin.modules.lookup(module, co, lo, scope='sub', superordinate=superordinate, base=position.getDn(), filter=filter):
  File "/usr/lib/pymodules/python2.7/univention/admin/modules.py", line 732, in lookup
    tmpres = module.lookup(co, lo, filter, base=base, superordinate=superordinate, scope=scope, unique=unique, required=required, timeout=timeout, sizelimit=sizelimit)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 1578, in lookup
    result.append(cls(co, lo, None, dn=dn, superordinate=superordinate, attributes=attrs))
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py", line 1516, in __init__
    univention.admin.handlers.simpleLdap.__init__(self, co, lo, position, dn, superordinate, attributes=attributes)
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/__init__.py", line 227, in __init__
    oldinfo = self.mapping.unmapValues(self.oldattr)
  File "/usr/lib/pymodules/python2.7/univention/admin/mapping.py", line 321, in unmapValues
    info = mapDict(self, oldattr)
  File "/usr/lib/pymodules/python2.7/univention/admin/mapping.py", line 377, in mapDict
    v = mapping.unmapValue(key, value)
  File "/usr/lib/pymodules/python2.7/univention/admin/mapping.py", line 317, in unmapValue
    return unmap_value(value) if unmap_value else value
  File "/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py", line 1429, in unmapWindowsFiletime
    return time.strftime('%Y%m%d%H%M%SZ', time.gmtime(unixtime))
ValueError: year out of range

Ich habe folgenden Bug-Report gefunden, der aber m.E. nichts damit zu tun hat (ich habe in der Datei testweise %-Zeichen eingefügt -> keine änderung).

https://forge.univention.org/bugzilla/show_bug.cgi?id=47170

Ich vermute, dass das Problem vielleicht mit einem oder mehreren Benutzern zu tun hat, da einzelne Benutzer schon angezeigt werden können:

udm users/user list --filter uid=beispielbenutzer

läuft OK durch.

Leider habe ich keine Ahnung wie ich Benutzer finden soll, die u.U. ungültige Werte in irgendeinem Datumsfeld stehen haben.

Hat jemand einen Tip, wie ich weitermachen kann?

Beste Grüße
Gerd


#2

Huhu,

ich würde empfehlen, die Liste der User direkt mit einer LDAP-Suche herauszuholen und anschließend jeden User an UDM als Filter zu übergeben. Einer oder mehrere davon werden dann nicht mehr wollen.

Beispiel:

univention-ldapsearch -o ldif-wrap=no '(univentionObjectType=users/user)' uid | \
  awk '/^uid:/ { print $2 }' | { \
  while read LDAP_UID ; do
    udm users/user list --filter uid=$LDAP_UID &> /dev/null || echo $LDAP_UID
  done }

Das sollte nur diejenigen UIDs ausgeben, für die der UDM-Befehl fehlschlägt.

Gruß
mosu


#3

Mein Held!

Das hat super geklappt. Ich habe die drei uids bei denen offenbar was schief geht. Um die kann ich mich jetzt (morgen…) weiterkümmern.

Vielen Dank


#4

Es handelte sich um das Atribut sambaBadPasswordTime. Dieses ist bei den meisten Benutzern 0. Nur bei den drei Benutzern, steht da ein UnixTimeStamp drin.

Dies verhindert offensichtlich das Anzeigen der Benutzer.

Nachdem ich dies im LDAP auf 0 gesetzt habe läuft alles wieder.

Danke.