Benutzerpasswörter zurücksetzen
Hier eine sichere Methode Benutzerpasswörter per Shellschript.
Grundsätzlich wird
- eine temporäre Datei mit zufälligem Namen erzeugt (
mktemp
), - anschließend per
pwgen
ein Passwort erzeugt - mit
mkpasswd
in einen Hash umgewandelt - und dann per
usermod
gesetzt.
Das neue Passwort ist nicht in der Prozessliste sichtbar, also auch vor neugierigen lokalen Benutzern sicher, da es direkt über die Standard-eingabe in die tempdatei $temp-file und von da nach ''mkpasswd' übertragen wird.
temp-file=`mktemp` if [ ! -w "$temp-file" ]; then echo "$temp-file not writeable, is mktemp installed?" exit 1 fi pwgen -s -1 12 > $temp-file # alternative randomness: # head -c 10 /dev/urandom | uuencode -m - | tail -n 2 | head -n 1 > $temp-file if [ $? -ne 0 ]; then echo "Error: could generate passwort (is pwgen installed?) exiting." exit 1 fi pw-hash=`cat "$temp-file" | mkpasswd --stdin` if [ "$pw-hash" != 0 ]; then echo "no Hash generated! is mkpasswd installed?" exit 1 else rm "$temp-file" fi usermod -p "$pw-hash" "$user" if [ $? -ne 0 ]; then echo "Error: could not set hash (of password) for user $user. exiting." exit 1 fi