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