Intereting Posts

Как знает ps, чтобы скрыть пароли?

Свидетель:

$ 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?

ps не скрывает пароль. Такие приложения, как mysql, переписывают список аргументов, который они получили. Обратите внимание, что существует небольшой временной интервал (возможный расширяемый высокой загрузкой системы), где аргументы видны другим приложениям до тех пор, пока они не будут перезаписаны. Скрытие процесса другим пользователям может помочь. В общем, гораздо лучше передавать пароли через файлы, чем в командной строке.

В этой статье описано, как это сделать. Следующий пример скрывает / удаляет все аргументы командной строки:

 #include <string.h> int main(int argc, char **argv) { // process command line arguments.... // hide command line arguments if (argc > 1) { char *arg_end; arg_end = argv[argc-1] + strlen (argv[argc-1]); *arg_end = ' '; } // ... } 

Посмотрите также https://stackoverflow.com/questions/724582/hide-arguments-from-ps и https://stackoverflow.com/questions/3830823/hiding-secret-from-command-line-parameter-on-unix ,

Программа mysql заменяет пароль из командной строки на x в этой строке кода :

 while (*argument) *argument++= 'x'; // Destroy argument