Testemunha:
$ 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
Como o ps sabia esconder as mysql
senhas? Posso incorporar isso em meus próprios scripts para ocultar atributos específicos da CLI?
mysql
faz a mágica, nãops
: “clientes MySQL normalmente substituir o argumento de senha de linha de comando com zeros durante a sua seqüência de inicialização.” - Diretrizes do usuário final para Senha de segurançaRespostas:
ps
não oculta a senha. Aplicativos como o mysql sobrescrevem os argumentos listados. Observe que há um pequeno período de tempo (possível de ser estendido por alta carga do sistema), em que os argumentos são visíveis para outros aplicativos até serem sobrescritos. Ocultar o processo para outros usuários pode ajudar. Em geral, é muito melhor passar senhas por arquivos do que por linha de comando.No presente artigo é descrito para C, como fazer isso. O exemplo a seguir oculta / exclui todos os argumentos da linha de comando:
Consulte também /programming/724582/hide-arguments-from-ps e /programming/3830823/hiding-secret-from-command-line-parameter-on-unix .
fonte
\0
espaço?) Qualquer link parasetproctitle()
?O mysql programa substitui a senha na linha de comando com
x
a esta linha de código :fonte
\0
para que você precise de informações extras para encontrar o tamanho da senha (sem UB / SEGFAULT).