Я пишу bash
скрипт, и мне нужно спросить у пользователя его пароль и передать его openssl
. Хотя openssl
сам пароль могу прочитать, мне нужно два прогона программы, и я не хочу спрашивать пользователя дважды. Вот сценарий:
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
Это небезопасно, так как пароль легко получить, посмотрев на командную строку; кто-то может прочитать это ps
, например.
openssl
может прочитать пароль из переменной окружения, так что я могу заменить -k "$PASS"
с -pass env:PASS
, но это по - прежнему не безопасно; переменные окружения любого процесса могут быть прочитаны свободно (опять же, это ps
можно сделать).
Итак, как я могу безопасно передать пароль для двух openssl
экземпляров?
ps
читает среду процесса /proc/<pid>/environ
, но у этого файла есть 0600
разрешения, поэтому только пользователь root и пользователь, выполняющий процесс, могут читать среду процесса. Я бы сказал, что это довольно безопасно.