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


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

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

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

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


188
2017-07-03 08:31


मूल


के समान सुडो का उपयोग किए बिना निष्पादन की अनुमति कैसे दें? - fouric


जवाब:


उपयोग 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

253
2017-07-03 08:43



मुझे उम्मीद है कि यह केवल इन 2 आदेशों पर लागू होगा, और मैं शेष सिस्टम या किसी अन्य कमांड के साथ गड़बड़ नहीं करूँगा? - Z9iT
दो पंक्तियां विशेष रूप से इन दो आदेशों को संदर्भित करती हैं। अगर user दिए गए अन्य तरीकों से नहीं है sudo अधिकार इस उपयोगकर्ता द्वारा किसी अन्य आदेश को रद्द नहीं किया जा सकता है। अच्छी तरह से देखिए man sudo तथा man sudoers। - mgd
शुरुआत में मुझे एक चिमोड समस्या का सामना करना पड़ा .. उत्तर में इस पर एक कसरत जोड़ा .. thanx @mgd - Z9iT
@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। मैंने बनाया नहीं सिस्टम में अन्य परिवर्तन। - mgd
@ माइकल कृपया मैन पेज पढ़ें। यह सब वहाँ लिखा है। इसे उद्धृत करने के लिए: हालांकि, आप कमांड लाइन तर्क (वाइल्डकार्ड सहित) भी निर्दिष्ट कर सकते हैं। वैकल्पिक रूप से, आप यह इंगित करने के लिए निर्दिष्ट कर सकते हैं कि कमांड केवल कमांड लाइन तर्कों के बिना चलाया जा सकता है। - mgd