Hallo,
ich habe mir das Verhalten einmal angeschaut. Ich vermute, der Grund liegt hier:
Es handelt sich um ein Slave-System. Solche Systeme haben keine Schreibrechte in UDM. Nicht-Master-Systeme dürfen nicht einfach Container, Extended Attributes usw. anlegen, modifizieren, löschen. Solche Aktionen müssen mit den Berechtigungen eines Administrators ausgeführt werden. Dafür gibt es die Join-Skripte, die auf einem Slave auch nach Nutzername/Passwort fragen.
In der Regel sehen dann UDM-Aufrufe in Join-Skripten so aus:
univention-directory-manager settings/extended_attribute remove “$@” --dn …
Das “$@” beinhaltet Nutzername/Passwort, das dem Skript übergeben wurde. So wie ich das jetzt gerade sehe, wird in 70iiiiiii4ucs.inst ein externes Skript aufgerufen (PHP) und darin werden sys-calls abgesetzt. Auf dem Weg dorthin sind allerdings die Argumente in “$@” verloren gegangen. Deshalb klappt es auf Nicht-Master-Systemen nicht. Was die Sache noch ein bisschen hinterhältiger macht: /usr/bin/7i4ucs bricht offenbar nicht ab, das Join-Skript wird als “erfolgreich durchlaufen” markiert.
Ein DC Master hingegen kann als Fallback auf das LDAP-Passwort für cn=admin zugreifen (genauer: root auf dem DC Master kann das). Deshalb wird das Skript auf einem Master auch durchlaufen (weil postinst mit root-Rechten läuft und dort das Skript ausgeführt wird).
Ich vermute, 7i4ucs braucht ein Update und zwar derart, dass die system()-Aufrufe aus dem PHP-Skript ins Join-Skript verlagert werden (man kann natürlich auch dem PHP-Skript die Argumente übergeben und PHP übergibt sie dem system($cmd)). Bis dahin läuft es nur auf einem DC Master.
Viele Grüße
Dirk Wiesenthal