Згідно з посібником із судорів :
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).
Ось чому ваша політика щодо судерів не працює.
Якщо ви хочете заборонити користувачеві отримати дозвіл root та змінити його пароль, спробуйте виконати цю процедуру:
Припустимо, що ваші судори містять цю директиву:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Якщо припустити ваше ім’я користувача foo
, його групи є foo
і sudo
. groups
вихід команди:
foo sudo
Видалити користувача foo
з sudo
групи: gpasswd -d foo sudo
після цього користувач foo
не може виконувати жодну команду з sudo.
Редагуйте файл судорів. Використовуйте цю команду:
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/
і йому дозволяється змінювати будь-який пароль, крім root на ВСІХ машинах.
Ви можете визначити групи команд, визначивши Cmnd_Aliases
та створивши "рівні дозволів". Корисні приклади ви можете знайти в розділі ПРИКЛАДУ посібника з судорів , і ось корисне посилання про те, як користуватися судорами.