Quando quero solicitar uma senha em um bash
script, faço o seguinte:
read -s
... mas quando executo bash
no modo POSIX, com sh
, a -s
opção é rejeitada:
$ read -s
sh: 1: read: Illegal option -s
Como solicito com segurança uma entrada com um comando compatível com POSIX?
Respostas:
Observe que, para os shells (mksh) onde
printf
não está embutido, a senha aparecerá clara naps
saída (por alguns microssegundos) ou poderá aparecer em alguns logs de auditoria se todas as chamadas de comando com seus parâmetros forem auditadas.fonte
cat
heredoc pode ser uma alternativa mais segura aoprintf
?REPLY="$(...)"
não fazer mal (exceto para destacar o SE sintaxe), mas não são necessáriasstty
configurações antigas .read -s
não está no POSIX. Se você deseja ser compatível com POSIX, use ostty -echo
.stty
e seuecho
parâmetro são definidos no POSIX.Isso funcionará em todos os shells que estejam em conformidade com o POSIX.
Fonte
fonte
stty echo
novamente - caso o usuário fique confuso e pressione Control-C durante aread PASSWORD
seção .