उपयोगकर्ता को जोड़ने के लिए उचित sudoers सिंटैक्स क्या है?


50

टिप्पणियों के अनुसार /etc/sudoers(फेडोरा 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

मेरे दो संबंधित प्रश्न:

  1. ALL=(ALL) ALLनिम्नलिखित पंक्ति में क्या मतलब है:

    root  ALL=(ALL)   ALL
    
  2. मैंने इन दो पंक्तियों का परीक्षण किया है, लेकिन मैं यह पता नहीं लगा सकता कि वे कैसे कार्यात्मक रूप से भिन्न हैं:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

मैंने मैनुअल पढ़ा है लेकिन सिंटैक्स विनिर्देश का पालन करना मुश्किल है। मैंने व्युत्पन्न किया है कि (ALL) ALLभाग कमांड और टैग विनिर्देशों है, लेकिन मैं अभी भी इसके चारों ओर अपना सिर नहीं प्राप्त कर सकता हूं।

जवाबों:


91

नोट: मैं उत्तर दे रहा हूँ 1. , क्योंकि इग्नासियो ने पहले ही उत्तर दिया था 2 .।

निम्नलिखित sudoप्रविष्टि में:

superadm  ALL=(ALL)   ALL

चार क्षेत्र हैं:

  • पहला एक उपयोगकर्ता निर्दिष्ट करता है जिसे कुछ आदेशों के लिए विशेषाधिकार प्रदान किए जाएंगे।
  • दूसरा शायद ही कभी इस्तेमाल किया जाता है। यह उन होस्टनामों की सूची है, जिन पर यह सुडोल प्रविष्टि प्रभावी होगी। मानक सेटअप पर केवल एक होस्ट प्रासंगिक है (लोकलहोस्ट) इसलिए यह फ़ील्ड आमतौर पर छोड़ दी जाती है ALL
  • चौथे क्षेत्र कमांड की सूची है superadmऊपर उठाया विशेषाधिकारों के साथ चलाने के लिए सक्षम हो जाएगा। ALLसभी आज्ञाओं का अर्थ है। अन्यथा आदेशों की अल्पविराम से अलग सूची का उपयोग करें।
  • तीसरा फ़ील्ड (एक लिखित (…)जो वैकल्पिक है) निर्दिष्ट करता है कि कौन से उपयोगकर्ता (और समूह) superadmउपयोगकर्ता निम्न आदेशों को चलाने में सक्षम होंगे। ALLइसका मतलब है कि वे कुछ भी (अप्रतिबंधित) चुन सकते हैं। इस क्षेत्र को छोड़ दिया गया है, इसका मतलब उसी के समान है (root)

उदाहरण:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

इधर, alanदो आदेशों को चलाने के लिए अनुमति दी है /bin/lsऔर /bin/killके रूप में root(या bin), संभवतः अतिरिक्त के साथ operatorया systemसमूहों विशेषाधिकार।

तो उपयोगकर्ता के रूप में और इस तरह के समूह विशेषाधिकारों के साथ alanचलाने का विकल्प चुन सकते हैं :lsbinoperator

sudo -u bin -g operator /bin/ls /whatever/directory

यदि -uछोड़ा गया है, तो यह उसी के समान है -u root। यदि -gछोड़ दिया जाता है, तो कोई अतिरिक्त समूह विशेषाधिकार प्रदान नहीं किए जाते हैं।


1
खैर, यह शायद अब तक का सबसे अच्छा जवाब है ...
डेविड बेट्ज़

1
मैंने देखा कि \nसुडोलर्स या /etc/sudoers.d/your_file_name
ramonrails

इसके अलावा आप होस्ट नाम, पथ नाम और कमांड लाइन तर्क में वाइल्डकार्ड का उपयोग कर सकते हैं। जैसा /bin/cat /var/log/messages.?या /bin/ls /var/log/*अधिक जानकारी के लिए यहाँ
एलेक्स

9

से sudoers(5)आदमी पेज, विवरण अनुभाग, Runas_Spec उपधारा:

पहले Runas_List इंगित करता है जो उपयोगकर्ताओं को आदेश के माध्यम से के रूप में संचालित किया जा सकता sudoहै -uविकल्प।

...

यदि कोई Runas_Spec निर्दिष्ट नहीं है, तो कमांड को चलाया जा सकता है rootऔर कोई समूह निर्दिष्ट नहीं किया जा सकता है।

इसलिए कमांड को चलाने का प्रयास करते समय कोई कार्यात्मक अंतर नहीं है root, अर्थात, जब उपयोग नहीं कर रहा -uहै sudo। अन्य उपयोगकर्ताओं के रूप में कमांड चलाने की कोशिश करते समय अंतर मायने रखता है; उत्तरार्द्ध इसे रोक देगा, लेकिन पूर्व इसे अनुमति देगा।

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