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

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

sudo passwd $root

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

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

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

11
задан 21 July 2014 в 22:50

2 ответа

Согласно руководству по 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 = (ВСЕ: ВСЕ) ВСЕ
     
  • Предположим, что ваше имя пользователя 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.

15
ответ дан 21 July 2014 в 22:50

добавить псевдоним команды через visudo :

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

добавить ограничения через visudo :

%nopasswdgroup ALL = ALL, !PASSWD, !SU

добавить пользователя в группу nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
-1
ответ дан 21 July 2014 в 22:50

Другие вопросы по тегам:

Похожие вопросы: