Estou escrevendo um bashscript e preciso solicitar a senha do usuário e passá-la para openssl. Embora opensslpossa ler a senha em si, preciso de duas execuções do programa e não quero perguntar ao usuário duas vezes. Aqui está o script:
cp file{,.old}
read -sp 'Enter password. ' PASS; echo
export PASS
# decode | edit | encode
openssl enc -d -aes-256-cbc -k "$PASS" -in file.old | \
sed ... | openssl enc -e -aes-256-cbc -k "$PASS" -out file
unset PASS
Isso não é seguro, pois a senha está facilmente disponível olhando a linha de comando; alguém pode lê-lo usando ps, por exemplo.
opensslpode ler uma senha de uma variável de ambiente, para que eu possa substituir -k "$PASS"por -pass env:PASS, mas ainda não é seguro; as variáveis de ambiente de qualquer processo podem ser lidas livremente (novamente, é pspossível).
Então, como posso passar com segurança a senha para as duas opensslinstâncias?
pslê o ambiente de um processo /proc/<pid>/environ, mas esse arquivo tem 0600permissões; portanto, apenas o usuário root e o usuário que está executando o processo podem ler o ambiente do processo. Eu diria que é bem seguro.