Wenn ich in einem bash
Skript nach einem Passwort fragen möchte , mache ich Folgendes:
read -s
... aber wenn ich bash
im POSIX-Modus mit starte, sh
wird die -s
Option abgelehnt:
$ read -s
sh: 1: read: Illegal option -s
Wie fordere ich mit einem POSIX-kompatiblen Befehl sicher eine Eingabe an?
Antworten:
Beachten Sie, dass für Shells (mksh), in denen
printf
kein Kennwort erstellt wurde, das Kennwort in derps
Ausgabe (für einige Mikrosekunden) in Klartext angezeigt wird oder in einigen Überwachungsprotokollen angezeigt wird, wenn alle Befehlsaufrufe mit ihren Parametern überwacht werden.quelle
cat
+ heredoc eine sicherere Alternative zu der seinprintf
?REPLY="$(...)"
nicht schaden (mit Ausnahme der SE-Syntax Hervorhebung), aber nicht erforderlich sindstty
Einstellungen speichern und wiederherstellen können.read -s
ist nicht in POSIX. Wenn Sie POSIX-konform sein möchten, verwenden Sie diestty -echo
.stty
und dessenecho
Parameter werden in POSIX definiert.Dies funktioniert auf allen Shells, die mit POSIX kompatibel sind.
Quelle
quelle
stty echo
auf der Rückseite - für den Fall , werden der Benutzer verwirren und Hits Kontrolle-C während desread PASSWORD
Abschnitts .