Angenommen, ich habe sha1pass
einen Hash eines vertraulichen Kennworts in der Befehlszeile generiert. Ich kann verwenden sha1pass mysecret
, um einen Hash zu generieren, mysecret
aber das hat den Nachteil, dass mysecret
es jetzt in der Bash-Geschichte ist. Gibt es eine Möglichkeit, das Endziel dieses Befehls zu erreichen, ohne dass dies mysecret
im Klartext passwd
angezeigt wird, z. B. mithilfe einer Eingabeaufforderung im -Stil?
Ich bin auch an einer verallgemeinerten Methode interessiert, um vertrauliche Daten an einen Befehl weiterzuleiten. Die Methode würde sich ändern, wenn die vertraulichen Daten als Argument (z. B. in sha1pass
) oder in STDIN an einen Befehl übergeben werden.
Gibt es eine Möglichkeit, dies zu erreichen?
Bearbeiten : Diese Frage hat viel Aufmerksamkeit erregt und es wurden einige gute Antworten unten angeboten. Eine Zusammenfassung ist:
- Wie pro @ Kusalananda Antwort , im Idealfall würde man nie ein Passwort oder Geheim als Befehlszeilenargument zu einem Dienstprogramm geben muß. Dies ist in mehrfacher Hinsicht verwundbar, wie von ihm beschrieben, und man sollte ein besser gestaltetes Dienstprogramm verwenden, das in der Lage ist, die geheimen Eingaben auf STDIN zu übernehmen
- @ vfbsilvas Antwort beschreibt, wie Sie verhindern, dass Dinge im Bash-Verlauf gespeichert werden
- @ Jonathans Antwort beschreibt eine vollkommen gute Methode, um dies zu erreichen, solange das Programm seine geheimen Daten auf STDIN übertragen kann. Aus diesem Grund habe ich mich entschlossen, diese Antwort zu akzeptieren.
sha1pass
In meinem OP war dies nur ein Beispiel, aber die Diskussion hat ergeben, dass es bessere Tools gibt, die Daten zu STDIN aufnehmen. - Wie @R .. in seiner Antwort feststellt , ist die Verwendung der Befehlserweiterung für eine Variable nicht sicher.
Zusammenfassend habe ich @ Jonathans Antwort akzeptiert , da es die beste Lösung ist, vorausgesetzt, Sie haben ein gut gestaltetes und ansprechendes Programm, mit dem Sie arbeiten können. Die Übergabe eines Kennworts oder eines Geheimnisses als Befehlszeilenargument ist zwar grundsätzlich unsicher, die anderen Antworten bieten jedoch Möglichkeiten, um die einfachen Sicherheitsbedenken abzumildern.
sha1pass mysecret
ausgeführt werden, und somit wissen, wasmysecret
ist. (Dies funktioniert natürlich nur für einige Sekunden, während das Programm ausgeführt wird ...)