Заблокировать команду от пользователя sudo

10

Мне не нужен администратор, чтобы изменить мой пароль root. Я не хочу, чтобы какой-либо пользователь sudo выполнял эту команду:

sudo passwd $root

Я пробовал это в файле sudoers с помощью следующей команды:

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

Как я могу заблокировать это?

Магеш Арумугам
источник
Вы имеете в виду, что в вашей системе более одного sudo-способного пользователя? Или что-то другое? Пожалуйста, отредактируйте вопрос, чтобы предоставить любую новую информацию.
Эдвин

Ответы:

15

Согласно руководству sudoers :

   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 и изменить свой пароль, попробуйте следующую процедуру:

  • Предполагая, что ваши 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/и может изменять любой пароль, кроме root, на ВСЕХ машинах.

Вы можете определить группы команд путем определения Cmnd_Aliasesи создания «уровней разрешений». Вы можете найти полезные примеры в разделе ПРИМЕР руководства по sudoers , и здесь есть полезная ссылка о том, как использовать sudoers.

Лети
источник
Я должен был сделать 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
Щербак
источник