मैनुअल मैनुअल के अनुसार :
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
बाद, उपयोगकर्ता foo
sudo के साथ कोई कमांड नहीं चला सकता है।
संपादित करें 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 का उपयोग कैसे करें के बारे में एक उपयोगी लिंक दिया गया है ।