Блокувати команду від користувача sudo


10

Мені не потрібен адміністратор, щоб змінити свій кореневий пароль. Я не хочу, щоб жоден користувач sudo виконував цю команду:

sudo passwd $root

Я спробував це у файлі sudoers, використовуючи таку команду:

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

Як я можу його заблокувати?


Ви маєте на увазі, що у вашій системі є кілька користувачів, здатних на судо? Або щось інше? Будь ласка, змінити питання , щоб надати будь-яку нову інформацію.
edwin

Відповіді:


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).

Ось чому ваша політика щодо судерів не працює.

Якщо ви хочете заборонити користувачеві отримати дозвіл 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та створивши "рівні дозволів". Корисні приклади ви можете знайти в розділі ПРИКЛАДУ посібника з судорів , і ось корисне посилання про те, як користуватися судорами.


Я повинен був зробити foo ALL=/usr/bin/*, !/usr/bin/passwdякусь ідею, чому це так?
clurect

-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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.