पैरामीटर के रूप में पासवर्ड के साथ sudo का उपयोग करें [बंद]


85

मैं अपने पासवर्ड के साथ सूडो को पैरामीटर के रूप में चलाना चाहूंगा ताकि मैं इसे स्क्रिप्ट के लिए उपयोग कर सकूं। मैंने कोशिश की

sudo -S mypassword execute_command

लेकिन बिना किसी सफलता के। कोई सुझाव?


2
यदि आपकी स्क्रिप्ट "रूट" द्वारा चलाई जाती है तो आपको बस जाँच करनी चाहिए। पासवर्ड
गूँजना

4
यह sudoठीक से कॉन्फ़िगर करने के लिए बेहतर है कि यह ऐसे गंदे हैक से बचने के लिए कुछ प्रोग्राम / उपयोगकर्ता / समूह के लिए पासवर्ड नहीं पूछेगा।
भीड़

जवाबों:


186

-S स्विच सूडो को STDIN से पासवर्ड पढ़ने देता है। इसका मतलब है आप कर सकते हैं

echo mypassword | sudo -S command

पासवर्ड को पास करने के लिए

हालाँकि, दूसरों के सुझाव जो पासवर्ड को कमांड के एक हिस्से के रूप में शामिल नहीं करते हैं जैसे कि यदि उपयोगकर्ता रूट है, तो सुरक्षा कारणों से शायद बेहतर विचार हैं


काम किया, बहुत बहुत धन्यवाद !!
normalUser

मेरा दिन बचाया, बहुत धन्यवाद !!!
एड्रिएंस

कैसे इसे समर्पित फ़ोल्डर में डालने के बारे में दोनों इसे और फ़ोल्डर निष्पादित-केवल अनुमतियाँ sudo chmod -R 0100 myScriptFolder:? क्या यह सुरक्षा समस्याओं को हल नहीं करेगा (बशर्ते कोई आपके कंप्यूटर को रूट के रूप में उपयोग न करे लेकिन आप)?
ब्रेत्सॉर्फुज़थ्रैक्स

या मेरे स्थानीय नेटवर्क के बाहर के हैकर्स किसी भी तरह से स्क्रिप्ट पाठ को देख सकते हैं क्योंकि इसे कुछ परिस्थितियों में निष्पादित किया जाता है?
ब्रेत्सेफ़ोरुज़्थ्रैक्स

यह मेरे OSX बॉक्स पर मेरे लिए एक विजेता की तरह काम करता है! समाधान साझा करने के लिए बहुत बहुत धन्यवाद!
Wulf

51

आप sअपनी स्क्रिप्ट के लिए बिट सेट कर सकते हैं ताकि इसकी आवश्यकता न हो sudoऔर रूट के रूप में चलता रहे (और आपको स्क्रिप्ट में अपना रूट पासवर्ड लिखने की आवश्यकता नहीं है):

sudo chmod +s myscript

+1। यह अन्य तरीकों की तुलना में बेहतर (और अधिक सुरक्षित) है।
बर्कहार्ड

1
चिपचिपा सा बुरा अभ्यास नहीं है?
kbdjockey

@kbdjockey - सेटिड +sबिट है। +tचिपचिपा सा है।
रोब

@ रब - स्पष्टीकरण के लिए धन्यवाद
kbdjockey

4
ध्यान दें कि ज्यादातर OS व्याख्यात्मक स्क्रिप्ट फ़ाइलों के लिए इस ध्वज को अनदेखा करते हैं। यह बायनेरी थो पर अच्छी तरह से काम करता है।
मगंर

26
echo -e "YOURPASSWORD\n" | sudo -S yourcommand

जब मैं अपने आदेश के लिए तर्क रखता हूं तो यह काम नहीं करता है। उदाहरण के लिए। echo -e "YOURPASSWORD\n" | sudo -S "run -x"। यह कहता है sudo: run -x: command not found। किसी भी विचार कैसे इस के आसपास पाने के लिए?
Bee

1
@ भाठिया बस "उद्धरण" का उपयोग नहीं करते हैं, उदाहरण के लिए: echo -e "yourPASSWORD \ n" |
सुडो

महान, धन्यवाद ...
मधुमक्खी

3

एक विकल्प है- ए फ्लैग टू सूडो का उपयोग करना। यह पासवर्ड पूछने के लिए एक कार्यक्रम चलाता है। पूछने के बजाय, आपके पास एक स्क्रिप्ट हो सकती है, जो पासवर्ड को बाहर निकालती है ताकि प्रोग्राम जारी रह सके।


-3
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

4
यह ओपी के सवाल का जवाब नहीं देता है।
कोडवर्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.