Como o ps sabe esconder senhas?

22

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 para esconder as senhas mysql ? Posso incorporar isso em meus próprios scripts para ocultar determinados atributos da CLI?

    
por dotancohen 29.08.2013 / 11:41

2 respostas

23

ps não oculta a senha. Aplicativos como o mysql sobrescrevem a lista de argumentos que eles obtiveram. Observe que há um pequeno período de tempo (possível estendido pela alta carga do sistema), em que os argumentos ficam 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.

Em este artigo é descrito para C, como fazer isso. O exemplo a seguir oculta / exclui todos os argumentos da linha de comando:

#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 = ' ';
    }

    // ...
}

Veja também o link e link .

    
por 29.08.2013 / 13:40
7

O programa mysql substitui a senha da linha de comando por x em esta linha de código :

while (*argument) *argument++= 'x';     // Destroy argument
    
por 08.03.2014 / 03:43