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.