मैं एक 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अनुमति है, इसलिए केवल रूट और प्रक्रिया चलाने वाले उपयोगकर्ता प्रक्रिया के वातावरण को पढ़ने में सक्षम हैं। मैं कहूंगा कि यह बहुत सुरक्षित है।