Bug 27771 - DHCP Server Password Change Skript
DHCP Server Password Change Skript
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: DHCP
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.0-2
Assigned To: Jürgen Kahrs
Philipp Hahn
: interim-3
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-06-29 09:31 CEST by Stefan Gohmann
Modified: 2012-07-20 15:24 CEST (History)
0 users

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):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Gohmann univentionstaff 2012-06-29 09:31:01 CEST
Das Univention DHCP Paket bringt kein Server Password Change Skript mit. Deshalb taucht die folgende Meldung in der daemon.log nach der Rotation des Server Passwort auf:

Jun 29 09:29:44 master831 dhcpd: Error: Cannot login into ldap server master831.deadlock83.local:7389: Operations error
Comment 1 Stefan Gohmann univentionstaff 2012-06-29 09:31:29 CEST
Workaround: /etc/init.d/univention-dhcp restart
Comment 2 Jürgen Kahrs univentionstaff 2012-07-06 10:04:04 CEST
Die saubere Lösung besteht darin, dem Paket univention-bind ein script /usr/lib/univention-server/server_password_change.d/univention-dhcp hinzuzufügen. In dem script wird im "postchange" Fall der restart des dhcp ausgelöst (wie von Stefan im workaround beschrieben). Analog zum Bug #27516 soll das neue script alle Fälle "prechange", "nochange" und "postchange" abfragen, auch wenn konkret nur im "postchange" eine Aktion ausgelöst wird.
Comment 3 Jürgen Kahrs univentionstaff 2012-07-06 10:17:33 CEST
Korrektur: das neue script muss im Paket univention-dhcp eingebaut werden, auf die gleiche Weise, wie das früher schon im Paket univention-bind gemacht wurde. Konkret existiert im Moment schon auf dem Zielsystem die Datei

  /usr/lib/univention-server/server_password_change.d/univention-bind

aus dem Quellkode unter

  ucs/services/univention-bind/usr/lib/univention-server/server_password_change.d/univention-bind


Nach diesem Muster soll die neue Datei auf dem Zielsystem

  /usr/lib/univention-server/server_password_change.d/univention-dhcp

im Quellkode unter

  ucs/services/univention-dhcp/usr/lib/univention-server/server_password_change.d/univention-dhcp

liegen und dort beim Wechsel das server Passworts vom script /usr/lib/univention-server/server_password_change aufgerufen werden.
Comment 4 Jürgen Kahrs univentionstaff 2012-07-06 13:32:24 CEST
Ich hab im Paket univention-dhcp ein neues script usr/lib/univention-server/server_password_change.d/univention-dhcp angelegt:

eval "$(univention-config-registry shell)"

if [ "$1" = "prechange" ] ; then
        # Nothing to be done on dhcp before password change.
        :
fi

if [ "$1" = "nochange" ] ; then
        # Nothing to be done on dhcp if password remains unchanged.
        :
fi

if [ "$1" = "postchange" ] ; then
        if [ -x "/etc/init.d/univention-dhcp" ]; then
                # Restart dhcp so that daemon can login into ldap server again.
                invoke-rc.d univention-dhcp restart
        else
                echo "missing /etc/init.d/univention-dhcp"
        fi
fi

Nach dem Bauen des Pakets war die Datei beim Testen auf dem Zielsystem (DC master) installiert. Bei jedem Ändern des server Passworts auf dem DC master wird das neue script nun aufgerufen und startet den dhcp service genau wie den bind service neu (siehe log /var/log/univention/server_password_change.log).

run-parts: executing /usr/lib/univention-server/server_password_change.d/univention-bind postchange
run-parts: executing /usr/lib/univention-server/server_password_change.d/univention-dhcp postchange
Restarting univention-dhcp daemon.
ok: run: univention-dhcp: (pid 20095) 0s, normally down
done.
run-parts: executing /usr/lib/univention-server/server_password_change.d/univention-nscd postchange
Restarting NSCD:.
done (Fr 6. Jul 13:25:08 CEST 2012)
Comment 5 Philipp Hahn univentionstaff 2012-07-12 17:51:01 CEST
FAIL: ChangeLog svn13937
  fehlt
\item The DHCP service is now automatically restarted after a server password change (\ucsBug{27771}).
  → svn13945
OK: univention-dhcp_6.0.22-3.513.201207061320, svn33998,svn34001
  FIXME: restart → crestart? Machen aber die anderen Dienste auch nicht?
  FIXME: Unnötiges eval "$(ucr shell)"
  FIXME: if-then → case?

OK:
$ ps `pgrep dhcpd`
1311 ?        S      0:00 /usr/sbin/dhcpd -q -f
$ ucr set server/password/interval=21
$ tail -f /var/log/univention/server_password_change.log &
$ /usr/lib/univention-server/server_password_change
..
run-parts: executing /usr/lib/univention-server/server_password_change.d/univention-dhcp prechange
...
run-parts: executing /usr/lib/univention-server/server_password_change.d/univention-dhcp postchange
Restarting univention-dhcp daemon.
ok: run: univention-dhcp: (pid 31526) 0s, normally down
done.
...
$ ps `pgrep dhcpd`
31526 ?        S      0:00 /usr/sbin/dhcpd -q -f
Comment 6 Stefan Gohmann univentionstaff 2012-07-20 15:24:13 CEST
UCS 3.0-2 has been released: 
  http://forum.univention.de/viewtopic.php?f=54&t=1905

If this error occurs again, please use "Clone This Bug".