
Unter OpenBSD 5.6 muss ich eine Reihe von Benutzerkonten mit Standardkennwörtern einrichten. Ich möchte, dass Benutzer bei ihrer ersten SSH-Anmeldung gezwungen werden, ihre Standardkennwörter zu ändern.
Unter CentOS und Debian kann ich dies mit tun chage -d 0 $username
.
Aus dem Handbuch für login.conf geht hervor, dass ich unter OpenBSD dasselbe mit etwas wie dem folgenden erreichen können sollte:
usermod -f 1 $username
oderusermod -f "Jan 1 2015" $username
Wenn Sie es auf diese Weise einstellen, wird zwar die entsprechende Änderung in veranlasst userinfo $username
, aber die Anmeldung als $username über SSH erzwingt nicht wirklich eine Kennwortänderung - die Shell wird ganz einfach geöffnet, ohne zu beachten, dass das Kennwort oben als inaktiv markiert wurde.
Einige Beiträge aus dem Jahr 2000 sprechen darüberSchreiben einer Wrapper-Login-Shellum eine Passwortänderung zu erzwingen. Angesichts der offensichtlichen Struktur in usermod
und chpass
scheint dies zwar integriert, aber nicht so ausführlich dokumentiert zu sein wie die Linux-Äquivalente.
Kann ein BSD-Profi Licht in die konventionelle Herangehensweise hierzu bringen?
Antwort1
Laut login.conf (5)
beträgt die standardmäßige Karenzzeit für ein abgelaufenes (auch „totes“) Passwort 0. Sofern dieser Wert nicht in festgelegt ist /etc/login.conf
, kann sich ein Benutzer nicht anmelden, um sein Passwort zu ändern, wenn das aktuelle Systemdatum nach dem 6. Feld der Passworteingabe des Benutzers in liegt /etc/master.passwd
– siehe passwd (5)
.
Um das Problem zu lösen, müssen Sie ein Datum in Sekunden seit der Epoche angeben, die in die von Ihnen gewählte Nachfrist fällt, z. B. 2 Wochen, die Sie ebenfalls in konfigurieren /etc/login.conf
. Um manuell einen Kennwortablaufzeitpunkt von gestern auszuwählen, können wir Folgendes verwenden:
# date -d yesterday +%s
1463597700
Und dann fügen Sie diesen Wert /etc/master.passwd
mit in Feld Nr. 6 ein vipw
. Die entsprechende Zeile sieht dann etwa so aus:
user:$2b$08$01234567890abcdef:1000:1000::1463597700:0:user:/home/user:/bin/ksh
Das Ausführen von usermod wie von Ihnen angegeben ( usermod -f "May 17 2016" user
) bewirkt im Wesentlichen dasselbe, /etc/login.conf
muss aber in beiden Fällen auch geändert werden, indem Folgendes an den default:\
entsprechenden Abschnitt für Ihre Benutzerklasse angehängt wird:
:password-dead=2w:\
:password-warn=2w:
Die erste Zeile gewährt dem Benutzer eine Frist von zwei Wochen, um sein Passwort zu ändern; die zweite Zeile gibt eine Warnung aus, dass das Passwort eines Benutzers bald abläuft. Wenn das Passwort abgelaufen ist, wird Ihren Benutzern etwa Folgendes angezeigt:
WARNING: Your password has expired.
You must change your password now and login again!
Changing local password for user.
Old password:
New password:
Retype new password:
Connection to openbsd-server closed.
Sie können es auch so konfigurieren, :passwordtime=7776000:
dass alle 90 Tage eine zusätzliche Kennwortänderung erzwungen wird. Beachten Sie, dass Sie Pakete oder ein anderes Kennwortprüfprogramm /etc/login.conf
installieren und konfigurieren sollten, wenn Sie zusätzliche Prüfungen der Kennwortkomplexität der Benutzer benötigen, z. B. das Verbot der Kennwortwiederverwendung.passwordqc