Das mache ich manchmal echo "secret" | mysql -u root -p ...
. Jetzt geht es mir hier um Sicherheit: Kann jemand, der alle Prozesse auflistet, das Passwort sehen?
Zur Überprüfung habe ich es mit versucht echo "test" | sleep 1000
und der Echo-Befehl mit dem Geheimnis war in der Ausgabe von "ps aux" nicht sichtbar. Ich gehe also davon aus, dass es sicher ist - aber kann ein Sicherheitsexperte dies bitte bestätigen? :) :)
.history
) in einer Verlaufsdatei gespeichert wird .Antworten:
Die Antwort darauf hängt davon ab, welche Shell Sie verwenden. Viele Shells haben
echo
einen eingebauten Befehl, was bedeutet, dass kein separater Prozess erzeugt wird und daher nicht in einer Prozessliste angezeigt wird. Wenn Sie jedoch geben/bin/echo
oder./echo
oder wenn deaktivieren Sie die builtins mit derenable -n echo
Befehl, dann wird die Schale nicht seinen eingebauten Befehl verwenden und die binäre Version stattdessen verwenden. Dies wird in einer Prozessliste angezeigt.Wenn Sie die Binärdatei anstelle der integrierten Shell verwenden, wird der Befehl echo so lange angezeigt, bis die Daten in den STDIN-Puffer des anderen Prozesses verschoben wurden. Dieser Puffer hat eine endliche Größe. Wenn also mehr Daten vorhanden sind, als in den Puffer passen, muss der Echo-Befehl eine Weile warten, bis der andere Prozess einige der Daten aus dem Puffer lesen kann. In den meisten Fällen (wie in den beiden oben angegebenen Beispielen) beträgt dieser Zeitraum Mikrosekunden. Wenn Sie zufällig einen 20-MB-SQL-Dump mit Echo in MySQL einfügen, kann dies länger dauern. Egal wie kurz die Zeit ist, wenn Sie die Binärdatei anstelle der eingebauten Shell verwenden und jemand zufällig das richtige Timing findet, kann er den Prozess in der Prozessliste sehen.
Sie können dies vermeiden, indem Sie die geheimen Daten in eine Datei einfügen (mit entsprechenden Berechtigungen) und die Datei wie folgt als STDIN verwenden:
quelle
Für den MySQL-Fall kann ~ / .my.cnf verwendet werden, um Geheimnisse zu speichern, dh
quelle
Benutz einfach
und drücken Sie die Eingabetaste. Sie werden dann zur Eingabe des Kennworts aufgefordert und es wird weder in der Prozessliste noch in den Verlaufsdateien angezeigt.
quelle