আমি একটি 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অনুমতি রয়েছে, সুতরাং কেবল রুট এবং প্রক্রিয়াটি চালিত ব্যবহারকারী প্রক্রিয়াটির পরিবেশটি পড়তে পারবেন। আমি বলতে পারি যে এটি বেশ নিরাপদ।