बिना पासवर्ड के मैं विशिष्ट sudo कमांड कैसे चला सकता हूं?


211

एक विशेष मशीन पर मुझे अक्सर sudoहर अब और फिर कमांड चलाने की आवश्यकता होती है । मैं sudoज्यादातर मामलों में पासवर्ड दर्ज करने के साथ ठीक हूं ।

हालाँकि तीन sudoआज्ञाएँ हैं जिन्हें मैं पासवर्ड दर्ज किए बिना चलाना चाहता हूँ :

  • sudo reboot
  • sudo shutdown -r now
  • sudo shutdown -P now

मैं इन आदेशों को पासवर्ड सुरक्षा से कैसे बाहर कर सकता हूं sudo?


जवाबों:


283

NOPASSWDनिर्देश का उपयोग करें

आप NOPASSWDअपनी /etc/sudoersफ़ाइल में निर्देश का उपयोग कर सकते हैं ।

यदि आपका उपयोगकर्ता कहा जाता है userऔर आपके मेजबान को बुलाया जाता है, hostतो आप इन पंक्तियों को जोड़ सकते हैं /etc/sudoers:

user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

यह उपयोगकर्ता userको hostपासवर्ड दर्ज किए बिना वांछित कमांड चलाने की अनुमति देगा । अन्य सभी sudoएड कमांड को अभी भी पासवर्ड की आवश्यकता होगी।

आदेशों में निर्दिष्ट sudoersफ़ाइल चाहिए पूरी तरह से योग्य हो (यानी आदेश का निरपेक्ष पथ का उपयोग कर चलाने के लिए) में वर्णित के रूप sudoersआदमी पेज । एक सापेक्ष पथ प्रदान करना एक वाक्यविन्यास त्रुटि माना जाता है।

यदि कमांड एक अनुगामी /चरित्र के साथ समाप्त होता है और किसी निर्देशिका को इंगित करता है, तो उपयोगकर्ता उस निर्देशिका में किसी भी कमांड को चलाने में सक्षम होगा (लेकिन किसी भी उप-निर्देशिका में नहीं)। निम्नलिखित उदाहरण में, उपयोगकर्ता userनिर्देशिका में किसी भी कमांड को चला सकता है /home/someuser/bin/:

user host = (root) NOPASSWD: /home/someuser/bin/

नोट: फ़ाइल visudoको संपादित करने के लिए हमेशा sudoersयह सुनिश्चित करने के लिए कमांड का उपयोग करें कि आप अपने आप को सिस्टम से बाहर लॉक न करें - बस अगर आप गलती से sudoersफाइल में कुछ गलत लिख देते हैं। visudoआपकी संशोधित फ़ाइल को एक अस्थायी स्थान पर सहेजेगा और केवल वास्तविक sudoersफ़ाइल को अधिलेखित करेगा यदि संशोधित फ़ाइल त्रुटियों के बिना पार्स की जा सकती है।

/etc/sudoers.dसंशोधित करने के बजाय का उपयोग करना/etc/sudoers

संपादन के लिए एक विकल्प के रूप में /etc/sudoersफ़ाइल, आप में एक नई फ़ाइल के लिए दो पंक्तियों में जोड़ सकते हैं /etc/sudoers.dजैसे /etc/sudoers.d/shutdown। यह sudoअधिकारों में विभिन्न परिवर्तनों को अलग करने का एक सुंदर तरीका है और sudoersआसान उन्नयन के लिए मूल फ़ाइल को भी अछूता नहीं छोड़ता है ।

नोट: फिर से, आपको visudoयह सुनिश्चित करने के लिए फ़ाइल को संपादित करने के लिए कमांड का उपयोग करना चाहिए कि आप सिस्टम से बाहर खुद को लॉक न करें:

sudo visudo -f /etc/sudoers.d/shutdown 

यह स्वचालित रूप से यह भी सुनिश्चित करता है कि नई फ़ाइल के स्वामी और अनुमतियां सही तरीके से सेट की गई हैं।

अगर sudoersगड़बड़ होती है

यदि आपने visudoअपनी फ़ाइलों को संपादित करने के लिए उपयोग नहीं किया है और फिर गलती से /etc/sudoersकिसी फ़ाइल को गड़बड़ या गड़बड़ कर दिया है, /etc/sudoers.dतो आप बंद हो जाएंगे sudo

समाधान उन फ़ाइलों को ठीक करने के लिए हो सकता है pkexecजिनका उपयोग करना एक विकल्प है sudo

ठीक करने के लिए /etc/sudoers:

pkexec visudo

ठीक करने के लिए /etc/sudoers.d/shutdown:

pkexec visudo -f /etc/sudoers.d/shutdown

यदि स्वामित्व और / या अनुमतियाँ किसी भी sudoersफ़ाइल के लिए गलत हैं , तो फ़ाइल को अनदेखा कर दिया जाएगा sudoताकि आप भी इस स्थिति में स्वयं को बंद कर सकें। फिर से, आप इसे pkexecठीक करने के लिए उपयोग कर सकते हैं ।

सही अनुमतियाँ इस तरह होनी चाहिए:

$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

स्वामित्व और अनुमतियाँpkexec ठीक करने के लिए इस तरह का उपयोग करें :

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown

2
दो पंक्तियाँ विशेष रूप से इन दोनों आदेशों को संदर्भित करती हैं। यदि userअन्य तरीकों से sudoअधिकार नहीं दिए गए हैं तो कोई भी अन्य आदेश इस उपयोगकर्ता द्वारा sudoed नहीं किए जा सकते हैं। पर एक नजर है man sudoऔर man sudoers
एमजीडी जूल

4
@StanKurdziel मैंने मैक ओएस एक्स योसेमाइट पर इस लाइन के साथ कोशिश की और यह ठीक काम किया mgd ALL=(root) NOPASSWD: /var/root/test:। मैं उपयोगकर्ता हूं mgdऔर ALLइसका मतलब है "सभी मेजबानों से"/var/root/testअनुमतियों के साथ एक सरल "हैलो वर्ल्ड" शेल स्क्रिप्ट है -rwx------ 1 root wheel 27 12 Jun 09:54 /var/root/test:। मैंने सिस्टम में कोई अन्य बदलाव नहीं किया
एमजीडी

2
hostSudoers फ़ाइल में क्या है ?
user106563

1
यह एक जवाब नहीं है, यह लगभग NOPASSWD निर्देश के बारे में पूर्ण गाइड है। धन्यवाद।
इरे

1
@ मिचेल कृपया मैन पेज पढ़ें। यह सब वहाँ लिखा है। इसे उद्धृत करने के लिए: हालाँकि, आप कमांड लाइन तर्क (वाइल्डकार्ड सहित) भी निर्दिष्ट कर सकते हैं। वैकल्पिक रूप से, आप यह निर्दिष्ट करने के लिए "" निर्दिष्ट कर सकते हैं कि कमांड केवल कमांड लाइन के तर्कों के बिना चलाया जा सकता है।
एमजीडी

3

क्षमा करें, लेकिन इस पर बहुत भ्रम है और कुछ वास्तव में जटिल जवाब है, कि मुझे लगता है कि किसी गलतफहमी से पहले मुझे यहां वजन करना चाहिए और कुछ पागल करना चाहिए।

विस्कोस का उपयोग करना !!

निम्नलिखित पंक्तियों को विन्यास में जोड़ें:

ALL ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown

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

कृपया स्टैकएक्सचेंज करें, बस सरल रसीला उत्तर दें।

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