Por que alguém não deveria usar senhas na linha de comando?

33

Por que as pessoas temem escrever senhas na linha de comando?

O arquivo de histórico está localizado ~/.history, portanto, está disponível apenas para o usuário que executou os comandos (e raiz).

Dor
fonte
2
Você pode evitar registrar alguns comandos no seu arquivo de histórico. Veja as respostas na Evite manter comando na história
Luc M
5
Yuk! Mesmo se você definir sua senha export mypass=secrete usar a_command --password=$mypass, verá secretna pstabela.
Luc M

Respostas:

51

As linhas de comando não estão disponíveis apenas no histórico. Eles também estão disponíveis, por exemplo, na saída ps -ocmdou através do /procsistema de arquivos. ( /proc/<pid>/cmdline) que é onde os pslê.

Além disso, os diretórios pessoais dos usuários geralmente são legíveis por mundo ou grupo; você pode tornar o arquivo de histórico apenas legível pelo usuário, mas isso pode não sobreviver à exclusão e à recreação.

rici
fonte
17

As senhas na linha de comando são apenas uma péssima idéia. Além dos métodos discutidos nas outras respostas:

  • / proc
  • lista de processos ( ps)
  • arquivo de histórico do usuário

Os comandos do usuário também podem aparecer nesses locais:

  • logs de auditoria
  • / var / log / *

Além disso, os comandos do usuário também podem aparecer quando os usuários fazem login entre sistemas, portanto, geralmente é uma prática ruim e deve ser evitada o tempo todo.

slm
fonte
3
+1 para a referência / var / log - observe que geralmente os logs importantes do sistema podem ser enviados para outro lugar e não necessariamente permanecem no mesmo sistema. Assim, suas senhas também podem ser inadvertidamente transmitidas pela rede em formato de texto não criptografado.
precisa
11

O problema é a visibilidade dos parâmetros (para outros usuários na maioria dos casos, mesmo para root) enquanto o comando está em execução. Veja a saída de

ps -eo pid,user,args
Hauke ​​Laging
fonte