ฉันเขียนสคริปต์และจำเป็นที่จะต้องขอให้ผู้ใช้รหัสผ่านของเขาและผ่านไป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สิทธิ์ใช้งานดังนั้นเฉพาะผู้ใช้รูทและผู้ใช้ที่ทำงานในกระบวนการเท่านั้นที่สามารถอ่านสภาพแวดล้อมของกระบวนการได้ ฉันจะบอกว่ามันค่อนข้างปลอดภัย