Вопрос или проблема
Удалён пользователь ‘root’ из файла Sudoers, но по-прежнему возможно использовать привилегии пользователя root после удаления пользователя root из файла Sudoers.
Вышеуказанный снимок экрана является фрагментом файла Sudoers, на котором отображается пользователь root, имеющий доступ к повышенным привилегиям. Я удалил ту строку, где написано “root ALL=(ALL) ALL”, таким образом, я убрал привилегии sudo у пользователя root.
Но после этого я все равно могу пользоваться привилегиями sudo (например: устанавливать пакет, создавать пользователя от имени root).
Мой вопрос в том, как это происходит в фоновом режиме, когда я удалил пользователя root из файла Sudoers, и я все равно могу использовать привилегии sudo для пользователя root.
Файл sudoers имеет значение только для команды sudo
. Эта строка существует только для того, чтобы позволить пользователю root выполнять sudo command
без необходимости ввода пароля. Это не влияет на разрешения самого пользователя root, и если вы вошли как root или переключились на root с помощью su
или sudo -i
, вы все равно можете выполнять команды без необходимости использования sudo
. Все, что меняет эта строка, так это то, что если вы попытаетесь выполнить sudo
от имени root, то получите блокировку:
# sudo ls
root не находится в файле sudoers.
Однако это не повлияет, если вы просто попытаетесь выполнить команду без sudo
, поскольку пользователь root
уже имеет все привилегии.
Теперь, если вы имеете в виду, что вы все равно можете выполнять команды sudo, будучи вошедшим как root, то, вероятно, в вашем файле sudoers есть другая строка, которая предоставляет права sudo группе, к которой принадлежит пользователь root. Обычно на большинстве систем доступ sudo устанавливается по группам, и есть конкретная группа или группы, члены которых могут выполнять команды sudo
. Наиболее распространенные такие группы – это wheel
и sudo
. Например, на моей системе Arch у меня есть:
$ sudo grep '%.*ALL=(ALL)' /etc/sudoers
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
# %sudo ALL=(ALL) ALL
Строки, начинающиеся с #
, игнорируются, это комментарии. Строка %wheel ALL=(ALL) ALL
означает, что все члены группы wheel
имеют право выполнять все команды sudo
. И действительно, пользователь root на моих системах принадлежит этой группе:
$ sudo groups
root bin daemon sys adm disk wheel log
Таким образом, даже после удаления root ALL=(ALL) ALL
, строка, которая явно дает пользователю root право использовать sudo
, поскольку root принадлежит wheel
, строка %wheel ALL=(ALL) ALL
позволяет root использовать sudo
. Вам также нужно будет закомментировать эту строку, если вы не хотите, чтобы root мог использовать sudo
.
Обратите внимание, что на многих системах вы увидите группу sudo
вместо wheel
, я полагаю, что Ubuntu делает это, например. Однако та же ситуация применима, и у вас будет строка %sudo ALL=(ALL) ALL
в вашем файле /etc/sudoers
.
Ответ или решение
Уважаемые коллеги,
Ваш вопрос связан с тем, что вы удалили строку, позволяющую пользователю root получать права sudo, но, тем не менее, все еще можете использовать привилегии root. Давайте разберемся в этом подробнее.
Файл sudoers управляет тем, кто и как может использовать команду sudo
. Удалив строку root ALL=(ALL) ALL
, вы ограничили возможность пользователя root выполнять команды с использованием sudo
. Однако эта строка была лишь частью настроек. Дело в том, что пользователь root по умолчанию имеет полный доступ ко всем ресурсам системы.
Если вы вошли в систему как root, вы не нуждаетесь в команде sudo
, чтобы выполнять команды с привилегиями администратора. Пользователь root уже обладает всеми правами. Если вы удалили строку, только запрещающую root использовать sudo
для выполнения команд, это не изменяет его общие права как суперпользователя.
Если вы продолжаете иметь возможность выполнять команды с использованием sudo
, это может означать, что в файле sudoers есть другие настройки, предоставляющие права пользователю или группе, к которой он принадлежит. На многих системах (например, в дистрибутивах на базе Red Hat или Arch Linux) существует группа wheel
или sudo
, члены которой имеют право использовать sudo
.
Вы можете проверить, какая группа предоставляет доступ к sudo
, воспользовавшись командой:
grep '%.*ALL=(ALL)' /etc/sudoers
Если в выводе вы увидите строки вроде %wheel ALL=(ALL) ALL
или %sudo ALL=(ALL) ALL
, это объясняет, почему root все еще может работать с командой sudo
. Ваша задача — определить, в какую группу входит пользователь root (обычно это можно сделать с помощью команды groups root
) и удалить или закомментировать строки, предоставляющие доступ к командам sudo
для этой группы.
Например:
# %wheel ALL=(ALL) ALL
# %sudo ALL=(ALL) ALL
Кроме того, проверьте, должен ли вы вручную отключить неиспользуемые права, так как просто удаление строки для root в sudoers не является достаточным, если другие настройки все еще разрешают доступ.
Надеюсь, этот ответ поможет вам разобраться с вашим вопросом. Если потребуется дополнительная помощь, не стесняйтесь задавать вопросы.