
Alguns aplicativos permitem passar a senha como argumento. Por exemplo:
mysql --user=user_name --password=your_password db_name
É seguro? Além do fato de a senha digitada ser salva no histórico do bash, alguém pode digitar w
o comando no momento apropriado e verá a linha de comando completa do processo (incluindo a senha).
É bastante surpreendente para mim que cada usuário possa ver qual comando estou executando no momento.
Responder1
Os argumentos da linha de comando de cada processo do sistema são considerados “públicos”. Não apenas o w
comando, mas ps
muitos top
outros comandos acessam essas informações naturalmente. Na verdade, nenhum privilégio especial é necessário para obter essas informações. No Linux, você pode ler a linha de comando de outro processo, mesmo um processo pertencente a outro usuário, lendo /proc/<pid>/cmdline
.
Isto não é uma falha ou comportamento inseguro por parte de w
ou top
ou ps
(ou cat
). Em vez disso, a responsabilidade recai sobre nunca transmitir informações confidenciais em linhas de comando em sistemas multiusuário.
A maioria dos utilitários que têm a capacidade de aceitar senhas na linha de comando documentam que não é recomendado fazê-lo. Por exemplo, na mysql
página de manual de:
Especificar uma senha na linha de comando deve ser considerado inseguro. Consulte a Seção 5.3.2.2, "Diretrizes do usuário final para segurança de senha". Você pode usar um arquivo de opções para evitar fornecer a senha na linha de comando.
A propósito, passar senhas ou dados confidenciais em variáveis de ambiente é menos inseguro, mas também é inseguro na maioria dos sistemas.
Responder2
Não, não é seguro passar senhas para programas na linha de comando. É melhor usar:
mohsen@debian:~$ mysql -uuser -p
Enter password:
Responder3
Embora não seja seguro, lembre-se de que o Linux atualmente tem vinte e poucos anos - como acontece com outras coisas em TI, as implicações de segurança não eram tão claras naquela época ou foram abordadas mais tarde.
Portanto, conforme mencionado nas outras respostas, não use senha na linha de comando.
Você pode (e provavelmente deve) também restringir as informações fornecidas pela procfs with the
opção mountring hidepid` ou usando osegurançakernel endurecido. Observe que isso pode quebrar algumas coisas (possivelmente cgroups e qualquer coisa que dependa deles - como, por exemplo, systemd), pelo menos no momento em que escrevo isto.