Я пишу 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 та користувач, що керує процесом, мають змогу читати оточення процесу. Я б сказав, що це досить безпечно.