Zeuge:
$ ps f
PID TTY STAT TIME COMMAND
31509 pts/3 Ss 0:01 -bash
27266 pts/3 S+ 0:00 \_ mysql -uroot -p
25210 pts/10 Ss+ 0:00 /bin/bash
24444 pts/4 Ss 0:00 -bash
29111 pts/4 S+ 0:00 \_ tmux attach
4833 pts/5 Ss+ 0:00 -bash
9046 pts/6 Ss 0:00 -bash
17749 pts/6 R+ 0:00 \_ ps f
4748 pts/0 Ss 0:00 -bash
14635 pts/0 T 0:02 \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0 S+ 0:01 \_ mysql -uroot -px xxxxxxxxxxxxxxxx
Woher wusste ps, dass er die mysql
Passwörter verstecken sollte ? Kann ich dies in meine eigenen Skripte integrieren, um bestimmte CLI-Attribute auszublenden?
mysql
nicht die Magieps
: „MySQL-Clients überschreiben normalerweise das Befehlszeilen-Kennwortargument während ihrer Initialisierungssequenz mit Nullen.“ - Endbenutzer-Richtlinien für die KennwortsicherheitAntworten:
ps
versteckt das Passwort nicht. Anwendungen wie mysql überschreiben die Liste der Argumente, die sie erhalten haben. Bitte beachten Sie, dass es einen kleinen Zeitrahmen gibt (möglicherweise erweiterbar durch hohe Systemlast), in dem die Argumente für andere Anwendungen sichtbar sind, bis sie überschrieben werden. Das Verbergen des Prozesses für andere Benutzer könnte helfen. Im Allgemeinen ist es viel besser, Kennwörter über Dateien als über die Befehlszeile zu übergeben.In diesem Artikel wird für C beschrieben, wie dies getan wird. Im folgenden Beispiel werden alle Befehlszeilenargumente ausgeblendet / gelöscht:
Siehe auch /programming/724582/hide-arguments-from-ps und /programming/3830823/hiding-secret-from-command-line-parameter-on-unix .
quelle
\0
auf Leerzeichen setzen?) Jemand, auf den verlinkt wirdsetproctitle()
?Das mysql- Programm ersetzt das Passwort in der Befehlszeile durch
x
in dieser Codezeile :quelle
\0
damit Sie zusätzliche Informationen zum Ermitteln der Kennwortlänge benötigen (ohne UB / SEGFAULT).