मैं एक स्क्रिप्ट से डॉक कंटेनर में रूट पासवर्ड कैसे सेट कर सकता हूं?


11

मेरे पास एक स्क्रिप्ट है जो होस्ट पर चलती है और डॉक कंटेनर बनाती / शुरू / बंद करती है। मुझे कंटेनर के भीतर रूट उपयोगकर्ता का पासवर्ड बदलने के लिए स्क्रिप्ट चाहिए।

चूंकि कंटेनर एक ssh सर्वर है, मैंने कोशिश की: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

लेकिन यह काम नहीं करता है। आगे बढ़ने से पहले और इसे डिबग करने में अधिक समय बिताने से पहले, मैं यह जानना चाहूंगा कि क्या ऐसा करने का कोई स्मार्ट तरीका है।

मैं समझता हूं कि उचित "डॉकटर तरीका" एक स्क्रिप्ट बनाने के लिए है जो डॉकरफाइल द्वारा चलाया जाता है, जो एक साझा वॉल्यूम से पासवर्ड खींचता है और इसे रूट पासवर्ड के रूप में सेट करता है। यह जटिल लगता है, लेकिन मुझे पता है कि इसे कैसे करना है और एक और docker छवि के लिए मैं अच्छी तरह से काम करता हूं। लेकिन मैं इसे इस एक के लिए नहीं करना चाहता।

मुझे बस एक कमांड की आवश्यकता है जो डॉकर या ssh का उपयोग उपयोगकर्ता के पासवर्ड को गैर-अंतःक्रियात्मक रूप से बदलने के लिए करता है।

जवाबों:


9
PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

एक पॉपअप खोलेगा, पासवर्ड के लिए पूछ रहा है, और इसे वापस करेगा। स्क्रिप्ट में कोई पासवर्ड संग्रहीत नहीं है

यदि आपके पास एक डॉकटर कंटेनर है जहाँ आपको सुरक्षा के बारे में ज्यादा परवाह किए बिना एक पासवर्ड सेट करने की आवश्यकता है, तो आप डॉकरफाइल में एक बयान जोड़ सकते हैं:

RUN echo "root:root" | chpasswd

मेरे पास आपके दो डॉकरफाइल (अलग प्रोजेक्ट, लेकिन आवश्यक भागों में समान) में आपकी तरह विधि सेट करने का एक ही तरीका है। लेकिन एक काम कर रहा है (मैं इसे ssh कर सकता हूं) दूसरा मुझे अनुमति नहीं देता है। कोई विचार क्यों?
ismailsunni

3
+1 जवाब और अधिक पारदर्शी होगा यदि यह स्टड चाउडवाड के लिए समझाए:echo username:newpassword | chpasswd
जोनाथन कोमर

5

यह डॉकर से संबंधित नहीं है। आपको यह स्पष्ट रूप से कहने की आवश्यकता है passwdकि आप पासवर्ड प्रदान करने जा रहे हैं stdin

echo 'newpassword' |passwd root --stdin

इनपुट के लिए धन्यवाद। - स्टड हालांकि ubuntu पर समर्थित नहीं है। यह काम नहीं करता है।
क्रिस

14
--stdinनए लिनक्स सिस्टम पर मूल्यह्रास किया गया है। chpasswdइसके बजाय का उपयोग करें :echo username:newpassword | chpasswd
unblevable

1

यह Ubuntu 14.04.4 LTS पर निर्दोष रूप से काम करता है:

कंटेनर का पुनर्निर्माण करने वाली स्क्रिप्ट में (जिसे "होस्ट" पर चलना चाहिए), इन पंक्तियों को जोड़ें:

$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd

वास्तविक पासवर्ड को स्क्रिप्ट में रखना पासवर्ड को हैंडल करने का एक बहुत ही असुरक्षित तरीका है। स्क्रिप्ट में सही तरीके से हैशेड पासवर्ड डालना और उसके usermodबजाय उपयोग करना अधिक सुरक्षित होगा passwd
कैस्परल्ड

अच्छी बात है, धन्यवाद। इस मामले में मैं जोखिम के साथ ठीक हूं, क्योंकि यह सिर्फ एक डॉकटर कंटेनर है जो बहुत कम चीजें करता है। अगर कोई स्क्रिप्ट पढ़ सकता है तो वे पहले से ही बाकी सर्वर के मालिक हैं। मैं इसे अगली बार के लिए ध्यान में रखूंगा, हालांकि :)।
क्रिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.