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