38 Stimmen

Wie kann man die Erstellung von htpasswd von der Kommandozeile aus automatisieren, ohne das Passwort einzugeben?

Ich versuche, die Erstellung eines Kennworts über die Befehlszeile zu automatisieren. Ich habe das Folgende ausprobiert, aber es wird immer noch nach dem Passwort gefragt.

echo "test101" | htpasswd -c ~/temp/password admin

Wie man automatisiert erzeugt htpasswd von der Kommandozeile aus, ohne das Passwort einzugeben?

67voto

GavinCattell Punkte 3757

Warum nicht einfach verwenden:

htpasswd -b -c ~/temp/password admin test101

25voto

elim Punkte 1164

Wenn Sie nicht über htpasswd installiert ist (z. B. bei Verwendung von nginx), können Sie mit openssl ein Passwort generieren.

printf "USER:$(openssl passwd -crypt PASSWORD)\n" >> .htpasswd

14voto

En -b sollte ausreichen, aber das Kennwort ist immer noch für andere Benutzer auf dem System über die Prozessliste sichtbar ( ps usw.):

htpasswd -b -c ~/temp/password admin test101

11voto

ender.center Punkte 71

Aus der Manpage von htpasswd erfahren wir dies:

-i Lesen Sie das Passwort von stdin ohne Überprüfung (für die Verwendung von Skripten).

Entsprechend Ihrer Frage sollte also so etwas funktionieren:

echo "test101" | htpasswd -c -i ~/temp/password admin

Das Kennwort wird jedoch im Verlauf und in der Prozessliste angezeigt.

Um die Erstellung eines Kennworts über die Befehlszeile zu automatisieren, würde ich das einfache Kennwort in eine Datei schreiben und etwas Ähnliches tun:

htpasswd -c -i ~/temp/password admin < ~/temp/pass_plain

Löschen Sie anschließend die Datei pass_plain.

Vergewissern Sie sich auch, dass die pass_plain-Datei nicht von anderen Personen gelesen werden kann, auch wenn sie nur ein paar Sekunden lang vorhanden ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X