Suponha que eu estivesse usando sha1passpara gerar um hash de alguma senha confidencial na linha de comando. Eu posso usar sha1pass mysecretpara gerar um hash, mysecretmas isso tem a desvantagem que mysecretestá agora no histórico do bash. Existe uma maneira de atingir o objetivo final deste comando, evitando revelar mysecretem texto simples, talvez usando um passwdprompt de estilo?
Também estou interessado em uma maneira generalizada de fazer isso para passar dados confidenciais para qualquer comando. O método mudaria quando os dados confidenciais fossem passados como um argumento (como em sha1pass) ou no STDIN para algum comando.
Existe uma maneira de conseguir isso?
Edit : Esta questão atraiu muita atenção e houve várias boas respostas oferecidas abaixo. Um resumo é:
- De acordo com a resposta de @ Kusalananda , o ideal seria nunca dar uma senha ou segredo como argumento da linha de comando a um utilitário. Isso é vulnerável de várias maneiras, conforme descrito por ele, e deve-se usar um utilitário melhor projetado, capaz de receber informações secretas sobre o STDIN
- A resposta de @ vfbsilva descreve como impedir que coisas sejam armazenadas no histórico do bash
- A resposta de @ Jonathan descreve um método perfeitamente bom para fazer isso, desde que o programa possa levar seus dados secretos para o STDIN. Como tal, decidi aceitar esta resposta.
sha1passno meu PO era apenas um exemplo, mas a discussão estabeleceu que existem melhores ferramentas que utilizam dados no STDIN. - como @R .. observa em sua resposta , o uso da expansão de comando em uma variável não é seguro.
Então, em resumo, aceitei a resposta do @ Jonathan, já que é a melhor solução, pois você tem um programa bem projetado e comportado para trabalhar. Embora passar uma senha ou segredo como argumento da linha de comando seja fundamentalmente inseguro, as outras respostas fornecem maneiras de atenuar os simples problemas de segurança.
sha1pass mysecretestá sendo executado e, portanto, saber o quemysecreté. (Isso só funciona para os poucos segundos enquanto o programa está sendo executado, é claro ...)