Sudo यूजर से कमांड को ब्लॉक करें


10

मुझे अपना रूट पासवर्ड बदलने के लिए व्यवस्थापक की आवश्यकता नहीं है। मैं किसी भी sudo उपयोगकर्ता को इस कमांड को निष्पादित नहीं करना चाहता:

sudo passwd $root

मैंने इसे निम्नलिखित कमांड का उपयोग करके sudoers फ़ाइल में आज़माया है:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

मैं इसे कैसे रोक सकता हूं?


क्या आपका मतलब है कि आपके सिस्टम में एक से अधिक sudo-सक्षम उपयोगकर्ता हैं? या कुछ और? कृपया, कोई भी नई जानकारी प्रदान करने के लिए प्रश्न को संपादित करें
एडविन

जवाबों:


15

मैनुअल मैनुअल के अनुसार :

   It is generally not effective to "subtract" commands from ALL using the
   ’!’ operator.  A user can trivially circumvent this by copying the
   desired command to a different name and then executing that.  For
   example:

       bill        ALL = ALL, !SU, !SHELLS

   Doesn’t really prevent bill from running the commands listed in SU or
   SHELLS since he can simply copy those commands to a different name, or
   use a shell escape from an editor or other program.  Therefore, these
   kind of restrictions should be considered advisory at best (and
   reinforced by policy).

यही कारण है कि आपकी sudoers नीति काम नहीं करती है।

यदि आप उपयोगकर्ता को रूट अनुमति प्राप्त करने और उसका पासवर्ड बदलने से रोकना चाहते हैं, तो इस प्रक्रिया को आज़माएँ:

  • अपने सूदखोरों को यह निर्देश मानते हुए:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • अपने उपयोगकर्ता नाम मानते हुए है foo, उनके समूह हैं fooऔर sudogroupsकमांड आउटपुट है:

    foo sudo
    
  • उपयोगकर्ता fooको sudoसमूह से निकालें : इसके gpasswd -d foo sudoबाद, उपयोगकर्ता foosudo के साथ कोई कमांड नहीं चला सकता है।

  • संपादित करें sudoers फ़ाइल। इस कमांड का उपयोग करें:

    sudo visudo -f /etc/sudoers.d/foo
    
  • उपयोगकर्ता की fooअनुमति को परिभाषित करें , उदाहरण के लिए:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    इसका मतलब यह है कि उपयोगकर्ता fooनिर्देशिका /usr/bin/को छोड़कर passwdऔर suकमांड में कोई भी कमांड चला सकता है । नोट: यदि उपयोगकर्ता fooअपना पासवर्ड बदलना चाहता है, तो passwdबिना कमांड चला सकता है sudo

  • उपयोगकर्ता की fooअनुमति का दूसरा उदाहरण :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    इसका मतलब यह है कि उपयोगकर्ता fooनिर्देशिका में किसी भी कमांड को चला सकता है /usr/bin/और सभी मशीनों पर रूट को छोड़कर किसी के पासवर्ड को बदलने की अनुमति है।

आप कमांड के समूहों को परिभाषित कर सकते हैं Cmnd_Aliasesऔर "अनुमतियों का स्तर" बना सकते हैं । आप sudoers मैनुअल के उदाहरण अनुभाग में उपयोगी उदाहरण पा सकते हैं , और यहाँ sudoers का उपयोग कैसे करें के बारे में एक उपयोगी लिंक दिया गया है ।


मुझे foo ALL=/usr/bin/*, !/usr/bin/passwdकोई भी विचार करना था कि ऐसा क्यों है?
लिपिक

-1

के माध्यम से कमांड उपनाम जोड़ें visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

के माध्यम से प्रतिबंध जोड़ें visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

nopasswdgroup नामक समूह में उपयोगकर्ता जोड़ें:

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