Saya sedang menulis bashskrip, dan perlu meminta kata sandi pengguna dan meneruskannya kepada openssl. Sementara openssldapat membaca kata sandi itu sendiri, saya perlu dua kali menjalankan program dan tidak ingin bertanya kepada pengguna dua kali. Ini skripnya:
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
Ini tidak aman karena kata sandi mudah tersedia dengan melihat baris perintah; seseorang dapat membacanya menggunakan ps, misalnya.
openssldapat membaca kata sandi dari variabel lingkungan, jadi saya dapat menggantinya -k "$PASS"dengan -pass env:PASS, tetapi masih belum aman; variabel lingkungan dari setiap proses dapat dibaca secara bebas (sekali lagi, psdapat melakukannya).
Jadi, bagaimana saya bisa meneruskan kata sandi dengan aman ke dua opensslcontoh?
psmembaca lingkungan dari suatu proses /proc/<pid>/environ, tetapi file ini memiliki 0600izin, jadi hanya root dan pengguna yang menjalankan proses dapat membaca lingkungan proses. Menurut saya itu cukup aman.