sudoers - सरल स्पष्टीकरण का अनुरोध किया


24

हर बार मैं कुछ ऐसा चलाने में सक्षम होना चाहता हूं, जिसके लिए मुझे sudoerकई बार होने की आवश्यकता होती है , /etc/sudoersमुझे फिर से याद दिलाने के लिए मुझे फॉर्मेट करने के लिए Google की आवश्यकता होती है जो इसे लिखने का उचित तरीका है।

अब मुझे अपनी sudoersफ़ाइल में अलग-अलग लेखन शैली दिखाई देती हैं , जो कि महीनों में अलग-अलग Google परिणामों का परिणाम है। मैंने यह भी देखा है कि दूसरा उदाहरण (नीचे) XFCE में काम करने के लिए लगता है, लेकिन दालचीनी (ग्नोम 3) में नहीं। यह पूरी तरह से असंबंधित हो सकता है, लेकिन फिर भी मैं एक बार और सभी के लिए जानना चाहूंगा कि सूडो लाइन का सही व्याकरण क्या है, और दिए गए उदाहरणों में क्या अंतर है?

  1. redsandro ALL=NOPASSWD:/path/to/command
  2. redsandro ALL=(ALL) NOPASSWD:/path/to/command
  3. redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

इसके अलावा, सभी के लिए क्या कर रहे हैं ALL? एक उपयोगकर्ता, एक कमांड, फिर भी मुझे ALLतीन बार तक कीवर्ड का उपयोग करने की आवश्यकता है ? क्या मैं यह गलत कर रहा हूँ?

बेशक, छोड़ते हुए NOPASSWD:बनाता है आप अपना पासवर्ड इससे पहले कि आप आदेश को चलाने के लिए अनुमति दी जाती है में प्रवेश, लेकिन भ्रम में से एक बिंदु के उपयोग है =और :अंतिम आदेश पंक्ति का विषय या तो द्वारा prepended किया जा सकता है कि के लिए, =, :, , या ), समान शब्दार्थ के लिए व्याकरण को भ्रमित करना।


3
मैं sudoersसिंटैक्स के साथ वास्तव में निराश महसूस करता हूं । मैन पेज पढ़ना और भी निराशाजनक था: यह तथाकथित संक्षिप्त और सटीक ईबीएनएफ भाषा का वर्णन करता है, उदाहरण बहुत लंबे समय तक हैं। इसलिए मैं इस फ़ाइल के बारे में इतने सारे सूत्र पाकर हैरान नहीं हूँ।
m-ric

1
इसके लिए धन्यवाद। भर में एक sudoers कुछ साल पहले दायर इस सवाल का जब से मैं आया था पूछने के लिए :-) चाहता था
vahidg

जवाबों:


35

यह केवल एक उपयोगकर्ता और एक कमांड से अधिक है:


redsandro host=(user:group) tag:commands
  • hostहोस्ट नाम निर्दिष्ट करता है, जिसके लिए यह रेखा मान्य है। जब तक आप अलग-अलग मेजबानों के बीच asudoers फ़ाइल साझा नहीं कर रहे हैं जिन्हें विशेष मानों का उपयोग करके विभिन्न नियमों की आवश्यकता ALLहै "सभी होस्ट" एक अच्छा विकल्प है।

  • userनिर्दिष्ट करता है -uकि कमांड चलाने के लिए आप किन उपयोगकर्ताओं का उपयोग कर सकते हैं । यदि आप इसे छोड़ देते हैं तो आप -uविकल्प का उपयोग नहीं कर सकते ।

  • groupनिर्दिष्ट करता है कि आप -gविकल्पों के साथ किन समूहों का उपयोग कर सकते हैं । यदि आप इसे छोड़ देते हैं तो आप -gविकल्प का उपयोग नहीं कर सकते ।

दोनों userऔर groupविशेष मूल्य को समझते ALLरूप में "सभी उपयोगकर्ता / समूह"

आप पूरे छोड़ देते हैं, तो (user:group)बात आप उपयोग नहीं कर सकते -uऔर -gलेकिन केवल रूट के रूप में कमांड चलाएँ।

  • tag आपको कुछ विकल्प निर्दिष्ट करने देता है, जैसे NOPASSWD

इसलिए अपने पहले उदाहरण से आप कमांड को रूट के रूप में चला सकते हैं, लेकिन इसका उपयोग नहीं कर सकते हैं -uऔर -gइसे किसी अन्य उपयोगकर्ता या समूह के रूप में चला सकते हैं।

उदाहरण के साथ 2. आप कमांड को रूट के रूप में चला सकते हैं या -uइसे किसी अन्य उपयोगकर्ता के रूप में चलाने के लिए उपयोग कर सकते हैं।

3. के साथ आप कमांड को रूट या उपयोग के रूप में चला सकते हैं -uया -gकमांड को किसी अन्य उपयोगकर्ता या समूह के रूप में चला सकते हैं।


यही वह है जिसकी तलाश में मैं हूं। मैंने आपका उत्तर स्वीकार कर लिया है, और आपके पुतले के लिए धन्यवाद।
Redsandro

1
अंतिम सोचा, मैं उपयोग कर सकते हैं 127.0.0.1या localhostके रूप में hostतुच्छ अतिरिक्त सुरक्षा के लिए?
Redsandro

5
मैनपेज में लिखा है 'नोट सुडो केवल वास्तविक नेटवर्क इंटरफेस का निरीक्षण करता है; इसका मतलब यह है कि आईपी एड्रेस 127.0.0.1 (लोकलहोस्ट) कभी मेल नहीं खाएगा। साथ ही, होस्ट नाम "लोकलहोस्ट" केवल तभी मैच करेगा जब वह वास्तविक होस्ट नाम होगा, जो आमतौर पर केवल गैर-नेटवर्क सिस्टम के लिए होता है। '
फ्लोरियन डिस्च

1
धन्यवाद। मेरे लिए कोई होस्टनाम नहीं है, खासकर जब से मैं कई मशीनों के लिए sudoersfile की प्रतिलिपि बनाने में सक्षम होना चाहता हूं। ALLयह है।
Redsandro

9

आइए इसे अलग करें:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

redsandro वह उपयोगकर्ता नाम है जिसे हम अनुमति दे रहे हैं। एक समूह पर लागू करने के लिए सामने एक% रखें।

सभी इस नियम का एक नाम है। Sudoers वैश्विक अनुमतियों की तुलना में बहुत अधिक कर सकते हैं। हालांकि यह जटिल हो जाता है।

= कोई स्पष्टीकरण नहीं चाहिए

सभी: सभी के रूप में पढ़ता है (who_to_run_it_as: what_group_to_run_it_as)। इस तरह आप एक कमांड चलाने की अनुमति दे सकते हैं, लेकिन केवल एक विशिष्ट उपयोगकर्ता या समूह के संदर्भ में।

NOPASSWD: इसे पासवर्ड प्रांप्ट को बंद करने के लिए कहता है।

/ path / to / command आपको विशिष्ट कमांड path_to_commmand, other_command निर्दिष्ट करने देता है

याद रखने वाली बात यह है कि जबकि sudo का उपयोग ज्यादातर घरेलू उपयोगकर्ता रूट विशेषाधिकारों को बढ़ाने के लिए करते हैं, यह और अधिक विशिष्ट तरीके से विशिष्ट कमांड तक पहुंच को नियंत्रित करने के लिए उपयोग किया जा सकता है।


1
अतिरिक्त %और , another_commandनोट्स के लिए धन्यवाद । अब मैं %wheelफेडोरा आधारित डिस्ट्रो में लाइन को समझता हूं ।
Redsandro
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.