मैनुअल मैनुअल के अनुसार :
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और sudo। groupsकमांड आउटपुट है:
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 का उपयोग कैसे करें के बारे में एक उपयोगी लिंक दिया गया है ।