Ich suche nach der (1) sichersten und (2) einfachsten Möglichkeit, einen Benutzer ein Kennwort an einer Bash-Shell-Eingabeaufforderung eingeben zu lassen und dieses Kennwort Teil von stdin für ein Programm zu machen.
So muss das stdin aussehen: {"username":"myname","password":"<my-password>"}
Wo <my-password>
ist, was in die Shell-Eingabeaufforderung eingegeben wurde? Wenn ich die Kontrolle über das Programm stdin hätte, könnte ich es so ändern, dass ich sicher nach einem Passwort frage und es einrichte, aber der Downstream ist ein Standardbefehl für allgemeine Zwecke.
Ich habe Ansätze in Betracht gezogen und abgelehnt, die Folgendes verwenden:
- Der Benutzer gibt das Passwort in die Befehlszeile ein: Das Passwort wird auf dem Bildschirm angezeigt und ist auch für alle Benutzer über "ps" sichtbar.
- Shell-Variableninterpolation in ein Argument für ein externes Programm (z. B.
...$PASSWORD...
): Das Passwort wäre weiterhin für alle Benutzer über "ps" sichtbar. - Umgebungsvariablen (wenn sie in der Umgebung verbleiben): Das Kennwort ist für alle untergeordneten Prozesse sichtbar. Selbst vertrauenswürdige Prozesse können das Kennwort offenlegen, wenn sie im Rahmen einer Diagnose Kern- oder Umgebungsvariablen sichern
- Das Kennwort befindet sich über einen längeren Zeitraum in einer Datei, auch in einer Datei mit eingeschränkten Berechtigungen: Der Benutzer kann das Kennwort versehentlich offenlegen und der Root-Benutzer kann das Kennwort versehentlich sehen
Ich werde meine aktuelle Lösung als Antwort unten angeben, aber gerne eine bessere Antwort auswählen, wenn jemand eine findet. Ich denke, es sollte etwas Einfacheres geben, oder vielleicht sieht jemand ein Sicherheitsrisiko, das ich übersehen habe.