O comando w é seguro para os usuários?

7

Algumas aplicações permitem passar a senha como um argumento. Por exemplo:

mysql --user=user_name --password=your_password db_name

É seguro? Além do fato de que a senha digitada seria salva no bash history, alguém pode digitar o comando w 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.

    
por patryk.beza 05.10.2014 / 20:57

3 respostas

15

Os argumentos da linha de comando de cada processo no sistema são considerados "públicos". Não apenas o comando w , mas ps e top e muitos outros comandos acessam essas informações como um todo. Na verdade, nenhum privilégio especial é necessário para obter essa informação. No Linux, você pode ler a linha de comando de outro processo, mesmo um processo pertencente a outro usuário, lendo /proc/<pid>/cmdline .

Esta não é uma falha ou comportamento inseguro por parte de w ou top ou ps (ou cat ). Em vez disso, o ônus está no lado de não passar informações confidenciais em linhas de comando em sistemas multiusuários, nunca.

A maioria dos utilitários que têm a capacidade de aceitar senhas no documento de linha de comando que não é recomendado para fazê-lo. Por exemplo, da manpage de mysql :

Specifying a password on the command line should be considered insecure. See Section 5.3.2.2, "End-User Guidelines for Password Security". You can use an option file to avoid giving the password on the command line.

A propósito, passar senhas ou dados confidenciais em variáveis de ambiente é menos arriscado, mas também não é seguro na maioria dos sistemas.

    
por 05.10.2014 / 23:30
5

Não, não é seguro passar senhas para programas na linha de comando. É melhor usar:

mohsen@debian:~$ mysql -uuser -p
Enter password: 
    
por 05.10.2014 / 21:30
0

Embora não seja seguro, lembre-se de que o Linux atualmente está em seus vinte e poucos anos - como acontece com outras coisas na TI, as implicações de segurança não eram claras naquela época ou eram abordadas posteriormente.

Portanto, conforme mencionado nas outras respostas, não use senha na linha de comando.

Você pode (e provavelmente shold) também restringir a informação fornecida pela opção mountring procfs with the hidepid ', ou usando o kernel endurecido grsecurity . Note que isso pode quebrar algumas coisas (possivelmente cgroups e qualquer coisa que se baseie nelas - como, por exemplo, systemd), pelo menos no momento em que escrevo isso.

    
por 06.10.2014 / 13:37