Fehler beim Update auf 4.0-3

Hallo zusammen,

beim Update von 4.0-2 auf 4.0-3 über die Weboberfläche bekomme ich folgenden Fehler:

Do you want to continue [Y/n]?
Custom preupdate script /var/lib/local-preup.sh not found
Checking for space on /var/cache/apt/archives: OK
Checking for space on /boot: OK
Checking for space on /: OK
Checking for package status: OK
Checking LDAP schema: 55e956ac OVER: Loading Translog Overlay
55e956ac OVER: db_init
55e956ac OVER: Configuring Translog Overlay
55e956ac OVER: Configured Translog Overlay to use file “/var/lib/univention-ldap/listener/listener”
55e956ac OVER: db_close
55e956ac OVER: db_destroy
OK
ERROR: A LDAP connection to the configured LDAP servers with the machine
account has failed (invalid credentials)!
This MUST be fixed before the update can continue.

This problem can be corrected by setting the content of the file
/etc/machine.secret to the password of the computer object using
Univention Management Console.
Error: Update aborted by pre-update script of release 4.0-3

Leider ist mir nicht ganz klar, was ich jetzt konkret machen soll.
Wo bekomme ich den korrekten Eintrag für die Datei “/etc/machine.secret” her?

Danke
paddew

Noch als Zusatzinfo:

Wenn ich das AppCenter starten will, kommt ebenfalls ein Fehler:

UCS Version: 4.0-2 errata302 (Walle)

Die Ausführung des Kommandos appcenter/query ist fehlgeschlagen:

INVALID_CREDENTIALS: {‘desc’: ‘Invalid credentials’}
result = func(*args,**kwargs)
File “/usr/lib/python2.7/dist-packages/ldap/ldapobject.py”, line 106, in _ldap_call
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
File “/usr/lib/python2.7/dist-packages/ldap/ldapobject.py”, line 483, in result4
resp_ctrl_classes=resp_ctrl_classes
File “/usr/lib/python2.7/dist-packages/ldap/ldapobject.py”, line 476, in result3
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
File “/usr/lib/python2.7/dist-packages/ldap/ldapobject.py”, line 215, in simple_bind_s
return func(self,*args,**kwargs)
File “/usr/lib/python2.7/dist-packages/ldap/ldapobject.py”, line 860, in _apply_method_s
res = self._apply_method_s(SimpleLDAPObject.simple_bind_s,*args,**kwargs)
File “/usr/lib/python2.7/dist-packages/ldap/ldapobject.py”, line 879, in simple_bind_s
self.lo.simple_bind_s(self.binddn, self.__encode_pwd(self.bindpw))
File “/usr/lib/pymodules/python2.7/univention/uldap.py”, line 219, in __open
self.__open(ca_certfile)
File “/usr/lib/pymodules/python2.7/univention/uldap.py”, line 177, in init
lo=access(host=ucr[‘ldap/server/name’], port=port, base=ucr[‘ldap/base’], binddn=ucr[‘ldap/hostdn’], bindpw=bindpw, start_tls=start_tls, decode_ignorelist=decode_ignorelist, reconnect=reconnect)
File “/usr/lib/pymodules/python2.7/univention/uldap.py”, line 106, in getMachineConnection
lo=univention.uldap.getMachineConnection(start_tls, decode_ignorelist=decode_ignorelist, ldap_master=ldap_master)
File “/usr/lib/pymodules/python2.7/univention/admin/uldap.py”, line 75, in getMachineConnection
return _getMachineConnection(**kwargs)
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/appcenter/decorators.py”, line 74, in connection
conn = connection()
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/appcenter/decorators.py”, line 97, in _decorated
return connection()
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/appcenter/decorators.py”, line 85, in get_machine_connection
lo = get_machine_connection(write=False)[0]
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/appcenter/util.py”, line 110, in get_all_hosts
hosts = util.get_all_hosts()
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/appcenter/init.py”, line 126, in query
yield function(self, *args)
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py”, line 282, in _fake_func
return list(function(self, iterator, *nones))
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py”, line 460, in _response
result = _multi_response(self, request)
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/decorators.py”, line 316, in _response
return func(self, request, *a, **kwargs)
File “/usr/lib/pymodules/python2.7/univention/management/console/modules/appcenter/init.py”, line 81, in _decorated
function(self, request)
File “/usr/lib/pymodules/python2.7/univention/management/console/base.py”, line 282, in execute
Traceback (most recent call last):

Die Ausführung des Kommandos appcenter/query ist fehlgeschlagen:

Hallo,

aus meiner Sicht steht alles, was man zum Kennwortwechsel bei den Maschinen wissen muß in Manually trigger server password change.
Falls Ihnen das nicht ausreicht, werden Sie sich sicher hier melden.

Viele Grüße,
Dirk Ahrnke

Danke für die Antwort!
Leider ist mir nicht klar, was zu tun ist.

/usr/lib/univention-server/server_password_change

failed to contact LDAP server: cannot connect with univention-ldapsearch

Könnten Sie mir bitte einen Hinweis geben?

Danke & Gruß
paddew

Hallo,

der für diese Prozesse zuständige LDAP-Server steht in den UCR-Variablen “ldap/server/*”

ucr search --brief ldap/server.
Je nach Systemrolle steht da entweder das System selbst oder ein DC.
Wenn es das eigene LDAP ist, sollte man nachsehen, warum dieses nicht funktioniert.

Viele Grüße,
Dirk Ahrnke

ucr search --brief ldap/server

ldap/server/addition:
ldap/server/ip: 127.0.0.1
ldap/server/name: ucs.domain.local
ldap/server/port: 7389
ldap/server/type: master

Und wie? :slight_smile:

In der Datei /etc/machine.secret steht das Passwort des Rechner Accounts. Das wird an diversen Stellen verwendet. Das ist scheinbar im LDAP nicht mehr auf dem richtigen Wert.

Ist das ein DC Master? Dann würde ich folgendes Kommando ausführen:

eval "$(ucr shell)" udm computers/$server_role modify --dn "$ldap_hostdn" --set password=$(cat /etc/machine.secret)

Danach sollte das Kommando univention-ldapsearch -s base wieder ein Suchergebnis liefern. Funktioniert das?

Ansonsten bitte die Ausgabe der folgenden Kommandos listen:

bash -x /usr/bin/univention-ldapsearch -s base ps -ef | grep slapd

Tut leider nicht:

root@ucs:~# eval “$(ucr shell)”
root@ucs:~# udm computers/$server_role modify --dn “$ldap_hostdn” --set password=$(cat /etc/machine.secret)
authentication error: Authentication failed

root@ucs:~# univention-ldapsearch -s base
ldap_bind: Invalid credentials (49)

root@ucs:~# ps -ef | grep slapd
root 3088 1 0 19:08 ? 00:00:00 /usr/sbin/slapd -h ldapi:/// ldaps://:636/
root 5680 4696 0 19:21 pts/0 00:00:00 grep slapd

Output von LDAP-Abfrage anbei.

Vielen Dank für die Hilfe!
debug.txt (84.2 KB)

Da scheint es ein Problem mit dem admin-Account im LDAP zu geben. Gibt es die Datei /etc/ldap.secret noch?

Wenn nicht, dann müsste die neu generiert werden:

echo -n "$(makepasswd --chars=20)" >/etc/ldap.secret chmod 640 /etc/ldap.secret chown root."DC Backup Hosts" /etc/ldap.secret

Anschließend sollte das Passwort im LDAP neu gesetzt werden. Ich würde den Schritt auch machen sollte die Datei noch da sein:

[code]# aktuelles ldap sichern
slapcat >ldif

ACLs temporär anpassen

eval “$(ucr shell)”
sed -i ‘s|access to dn="cn=admin,’$ldap_base’"|access to dn=“cn=admin,’$ldap_base’”\n by sockname=“PATH=/var/run/slapd/ldapi” write|’ /etc/ldap/slapd.conf

LDAP neu starten

invoke-rc.d slapd restart

Passwort setzen, dabei dann bitte das Passwort von Administrator angeben

ldapmodify -x -D uid=Administrator,cn=users,$ldap_base -W -H ldapi:/// <<_EOT
dn: cn=admin,$(ucr get ldap/base)
changetype: modify
replace: userPassword
userPassword: {crypt}$(mkpasswd --hash=md5 -s < /etc/ldap.secret)
_EOT

Änderungen wieder zurücknehmen

ucr commit /etc/ldap/slapd.conf
invoke-rc.d slapd restart
[/code]

Anschließend sollte auch das Neusetzen des Maschinen Passwort funktionieren:

udm computers/$server_role modify --dn "$ldap_hostdn" --set password=$(cat /etc/machine.secret)

Hoffe das hilft weiter.

Sorry der späten Antwort.
Vielen herzlichen Dank! Das hat geholfen.

paddew

Mastodon