Frage useradd verschlüsselt keine Passwörter in / etc / shadow


Ich stolperte über dieses Problem, als ich versuchte, neue FTP-Benutzer für vsftpd zu erstellen. Nach dem Erstellen eines neuen Benutzers mit dem folgenden Befehl und dem Versuch, mich mit FileZilla anzumelden, erhalte ich den Fehler "inkorrektes Passwort".

useradd f -p pass -d /home/f -s /bin/false

Nachdem dies getan wurde, / etc / Schatten enthält

f:pass:1111:0:99:2:::

Sobald ich den folgenden Befehl ausführe und denselben Durchlauf zur Verfügung stelle bestehen

passwd f

/ etc / Schatten enthält

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Es scheint, dass die Verschlüsselung passiert, wenn ich renne passwd, tut es aber nicht useradd

Wichtig dabei ist, dass ich mich mit den gleichen Zugangsdaten auf FTP einloggen kann.

Ich verwende CentOS 5.11, vsftpd für FTP und FileZilla für FTP-Zugang

/ var / log / sicher enthält:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

Warum funktioniert es nicht, wenn ich passiere? -p pass benutzerrad? Was muss ich tun, damit es funktioniert?


18
2017-12-17 14:34


Ursprung


Ich sehe dort keine Frage? - Solche Dinge werden über PAM verwaltet und normalerweise eingeloggt /var/log/secure - HBruijn
@HBruijn Ich habe meine Antwort aktualisiert, um zu zeigen, worüber geschrieben wurde / var / log / sicher - BadToTheBone
"Ja wirklich?" +12 für eine Frage, die explizit von der entsprechenden man-Seite beantwortet wird? - α CVn
Beachten Sie, dass in einem Passwort-Hash, $1$ zeigt an, dass MD5 verwendet wird. MD5, obwohl nicht direkt furchtbar für Passwörter, ist in diesen Tagen eher auf der schwachen Seite. Es ist eine ganz andere Frage, aber ich würde Sie dringend bitten, über eine Migration zu einer stärkeren Hash-Funktion nachzudenken. - α CVn
Randnotiz: Passwörter in /etc/shadow sind nicht verschlüsselt, aber Hashed - Tobias Kienzler


Antworten:


Das funktioniert wie beabsichtigt. Wenn Sie ein Passwort mit Hilfe der useradd Befehl, Sie sollten eine Hash-Version des Passworts geben useradd.

Die Saite pass erfüllt die Formatkriterien für das Hash-Passwort-Feld in /etc/shadow, aber keine tatsächlichen Passwort Hashes zu dieser Zeichenfolge. Das Ergebnis ist, dass sich dieses Konto in jeder Hinsicht wie ein Kennwort verhält, aber jedes Kennwort, das Sie für den Zugriff verwenden, wird als nicht korrektes Kennwort zurückgewiesen.

Sehen man useradd oder der Benutzerdokumentation:

-p, --password  PASSWORT

Das verschlüsselte Passwort, wie von Krypta (3). Der Standardwert ist   um das Passwort zu deaktivieren.

Hinweis: Diese Option wird nicht empfohlen, da das Passwort (oder   verschlüsseltes Passwort) wird von Benutzern angezeigt, die die Prozesse auflisten.

Sie sollten sicherstellen, dass das Passwort das Systempasswort einhält   Politik.


42
2017-12-17 14:48





manuseradd:

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Sie sollten ein Hash-Passwort übergeben.
Kein Klartext-Passwort.


31
2017-12-17 14:48





useradd erwartet, dass Sie ihm den Hash des Passworts übergeben, nicht das Passwort selbst. Sie können die folgende Variante Ihres Befehls verwenden, um ein Hash-Kennwort für den Befehl bereitzustellen useradd Befehl:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Um die verfügbaren Methoden zu ermitteln, verwenden Sie:

mkpasswd --method=help

Um zu vermeiden, dass das Passwort in der Befehlszeile übergeben wird, fügen Sie das Passwort in eine Datei ein (mit einem Editor und nicht mit echo oder ähnlich) und mache das:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

Dadurch wird das Hash-Kennwort in der Befehlszeile übergeben, nicht jedoch der Klartext.

mkpasswd kommt mit dem expect Paket.


15
2017-12-17 23:07



Verwenden Sie nicht MD5! Verwenden Sie SHA-2 - Josef
Tun Beachten Sie, dass dies vorübergehend das Passwort über die verschiedenen Kernel-Interfaces verfügbar macht (jeder Prozess darf die Kommandozeile eines anderen Prozesses lesen) und kann dazu führen, dass es im Klartext über $ HISTORY oder ähnliche Mechanismen auf Platte gespeichert wird. - α CVn
@ MichaelKjörling: A sehr guter Punkt. Bitte sehen Sie meine bearbeitete Antwort. - Dennis Williamson
Natürlich speichern Sie das Klartext-Passwort weiterhin auf der Festplatte. Zumindest gibt dies dem Systemadministrator eine Wahl. Vielleicht ist es an dieser Stelle besser, zuerst ein Dummy-Passwort zu verwenden und sofort zu laufen passwd um es zu etwas anderem zu verändern ...... - α CVn
Absolut Dennis, es ist viel besser, aber das Passwort landet immer noch im Klartext auf der Festplatte. In manchen Situationen und unter bestimmten Bedrohungsmodellen kann das ein echtes Problem sein. Es tut es nicht haben sein. - α CVn