Lösungen zu Kapitel 8
Sichere Passwörter
Um zufällige Passwörter zu erstellen, benötigt man selbstverständlich eine Zufallsquelle. Die meisten Zufallsquellen, wie beispielsweise das Device /dev/random, liefern dabei Zufallsbytes, was aber noch nicht zulässigen Zeichen wie Buchstaben oder Zahlen entsprechen muss.
Eine elegante Lösung dieses Problems bietet dabei das Kommando open- ssl: Hier kann man in einem Schritt eine zufällige Bytesequenz erzeugen und diese gleichzeitig in Base64 codieren lassen. Base64 kommt eigentlich aus alten E-Mail-Tagen, wo binäre Anhänge nicht problemlos per Mail verschickt werden konnten. Durch eine entsprechende Codierung kann man sich in der Darstellung der Bytes jedoch auf druckbare Zeichen beschränken, was wir auch für unseren Passwortgenerator nutzen wollen:
$ openssl rand -base64 6 jR4o8CxH
Listing B.8 Passwortgenerator
Dabei ist natürlich auffällig, dass 6 Bytes hier durch 8 Zeichen dargestellt werden – effizient ist Base64 also nicht. <Aufgrund dieser Codierung werden auch Mail-Anhänge beim Versenden oft größer, als es die eigentlichen Dateien sind.> Aber darum geht es uns ja nicht, schließlich haben wir ein mehr oder weniger zufälliges Passwort mit 8 Zeichen. Die User werden sich freuen.
$ dd if=/dev/urandom count=1 2> /dev/null | uuencode -m – | head -n 2 | tail -n 1 | cut -c –8 ni3ktP15
Listing B.9 Alternative Lösung mit Random-Device
Passwort vergessen!
Sie könnten zum Beispiel unsere Buch-DVD zur Hand nehmen, Ihren Server mit Knoppix starten, die Festplatte mounten und anschließend die /etc/passwd ändern. Dabei reicht es, das »x« zu löschen, das im zweiten Feld auf einen Eintrag in der /etc/shadow verweist.
root:x:0:0:root:/root:/bin/bash
Listing B.10 /etc/passwd: Das zu löschende x ist markiert.
Nach dem nächsten Booten kann man sich als root ohne Passwort einloggen und durch einen Aufruf von passwd wieder ein neues Passwort setzen. Natürlich kann man ein vergessenes root-Passwort auch anders neu setzen, jedoch sollte dazu ein lokaler Zugriff auf den Rechner möglich sein – alles andere wäre ein Bug. ;-)