Shadow-Passwords erzeugen

Verschlüsselte Passwörter, wie sie in /etc/shadow gespeichert werden, kann man mit der folgenden Zeile für das Passwort password erzeugen:

# echo "password" | openssl passwd -1 -stdin $1$YFi.APLv$VZiopcJ9udPYifg/4E7vo/ 

Die Option -1 steht für den zu benutzenden MD5-Algorithmus. Die Ausgabe kann via Copy-Paste für den Benutzer USERNAME in die /etc/shadow eingefügt werden.

USERNAME:$1$YFi.APLv$VZiopcJ9udPYifg/4E7vo/:15132::::::

Diese Vorgehensweise ist dann nützlich, wenn man nicht auf Tools wie adduser oder useradd zurückgreifen kann oder will, weil beispielsweise separate passwd/shadow files für einen NIS-Server gepflegt werden. Zum Anlegen eines neuen Benutzers USERNAME muss noch eine Zeile wie die folgende zu /etc/passwd hinzugefügt werden:

USERNAME:x:541:100:Vorname Nachname (Kommentar):/home/USERNAME:/bin/bash

wobei 514 die userID und 100 die groupID des Benutzer sind.

Automatischer Neustart eines Jobs bei Absturz

Manchmal hat man Jobs die einfach nur laufen müssen (z. b. NIS Server, Name Server). Und wenn sie einmal abstürzen, interessiert mich erst einmal gar nicht das Warum. Vielmehr möchte ich das der Jobs einfach wieder los läuft – Am besten von allein. Die näheren Umstände des Absturzes kann ich ja später noch anhand des Logfiles untersuchen. Unter Solaris gibt es hierzu die Service Management Facility (SMF), die sicher stellt, dass Systemdienste laufen und nötigenfalls auch einen (oder mehrere) Neustart(s) des Dienstes versucht, falls dieser abstürzen sollte. Unter Linux habe ich noch kein Äquivalent dazu gefunden. Eine brutale Methode einen Job bei gelegentlichen Abstürzen automatisch erneut zu starten, ist, ihn in einer Endlosschleife aufzurufen:

while true; do ./jobs.sh; done

Diese Methode geht allerdings nach hinten los, falls jobs.sh ein ernsthaftes Problem hat und sofort nach dem Start wieder terminiert. Zur Sicherheit sollte man also die Neustartorgie durch einen Zähler begrenzen, z. B. auf 1000 Versuche:

for i in {1..1000}; do ./jobs.sh; done

Das ist nicht elegant, hilft aber gelegentlich abstürzende Programme am Laufen zu halten.  Ist der kritische Zählerstand erreicht, wird nicht weiter versucht den Job neu zu starten. Man kann sich hierüber z. B. per Mail an root an  informieren lassen:

for i in {1..1000}; do ./jobs.sh; done ; echo "Message" | mail -s "Job died." root