Свидетель:
$ 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
Как ps узнал, как скрыть mysql
пароли? Могу ли я включить это в свои собственные сценарии, чтобы скрыть определенные атрибуты CLI?
mysql
делает чудо, а неps
: «Клиенты MySQL обычно перезаписывают аргумент пароля командной строки нулями во время своей последовательности инициализации». - Руководство для конечного пользователя по безопасности паролейОтветы:
ps
не скрывает пароль. Приложения, такие как mysql, переписывают список аргументов, которые они получили. Обратите внимание, что существует небольшой период времени (который может быть увеличен при высокой загрузке системы), когда аргументы видны другим приложениям, пока они не будут перезаписаны. Сокрытие процесса для других пользователей может помочь. В целом, гораздо лучше передавать пароли через файлы, чем из командной строки.В этой статье описано для C, как это сделать. В следующем примере скрываются / удаляются все аргументы командной строки:
Посмотрите также на /programming/724582/hide-arguments-from-ps и /programming/3830823/hiding-secret-from-command-line-parameter-on-unix ,
источник
\0
пробел?) Есть какая-нибудь ссылка наsetproctitle()
?Программа mysql заменяет пароль из командной строки
x
на следующую строку кода :источник
\0
так, чтобы вам понадобилась дополнительная информация для определения длины пароля (без UB / SEGFAULT).