Témoin:
$ 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
Comment PS a-t-il su cacher les mysql
mots de passe? Puis-je l'incorporer dans mes propres scripts pour masquer des attributs CLI particuliers?
mysql
ne la magie, nonps
: « clients MySQL remplace généralement l'argument de mot de passe en ligne de commande avec des zéros au cours de leur séquence d'initialisation. » - Directives de l' utilisateur final pour mot de passe de sécuritéRéponses:
ps
ne cache pas le mot de passe. Des applications comme mysql écrasent la liste des arguments qu'ils ont obtenue. Veuillez noter qu'il existe un petit laps de temps (éventuellement extensible par une charge système élevée), où les arguments sont visibles pour d'autres applications jusqu'à ce qu'ils soient remplacés. Cacher le processus à d'autres utilisateurs pourrait aider. En général, il est préférable de passer des mots de passe via des fichiers que par ligne de commande.Dans cet article, il est décrit pour C, comment procéder. L'exemple suivant masque / supprime tous les arguments de ligne de commande:
Regardez aussi /programming/724582/hide-arguments-from-ps et /programming/3830823/hiding-secret-from-command-line-parameter-on-unix .
la source
\0
espace?) Un lien verssetproctitle()
?Le programme mysql remplace le mot de passe de la ligne de commande par
x
dans cette ligne de code :la source
\0
afin d'avoir besoin d'informations supplémentaires pour trouver la longueur du mot de passe (sans UB / SEGFAULT).