Bir bash
senaryo yazıyorum ve kullanıcıdan şifresini sorup geçmesi gerekiyor openssl
. İken openssl
şifreyi kendisi okuyabilir, ben programın iki ishal için ihtiyaç ve iki kez kullanıcıyı sormak istemiyorum. İşte senaryo:
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
Parola komut satırına bakarak kolayca elde edilebildiğinden bu güvenli değildir; ps
örneğin birisi bunu kullanarak okuyabilir .
openssl
Ben yerine, böylece bir ortam değişkeni bir şifreyi okuyabilir -k "$PASS"
ile -pass env:PASS
, ama yine de güvenli değil; herhangi bir işlemin ortam değişkenleri serbestçe okunabilir (yine ps
yapabilir).
Peki, şifreyi iki openssl
örneğe nasıl güvenli bir şekilde aktarabilirim ?
ps
bir işlemin ortamını okur /proc/<pid>/environ
, ancak bu dosyanın 0600
izinleri vardır, bu nedenle yalnızca kök ve işlemi çalıştıran kullanıcı işlemin ortamını okuyabilir. Bunun oldukça güvenli olduğunu söyleyebilirim.