Исправление ошибки "user is not in the sudoers file" в Linux

В Linux некоторые команды может выполнять только пользователь root. По умолчанию этот суперпользователь имеет доступ ко всем командам и ресурсам нашей системы.

Однако выполнение ответственных задач без ограничений опасно. Например, намеренная или случайная ошибка может привести к поломке всей системы. Поэтому в Linux рекомендуется использовать команду sudo. Это команда, которая позволяет обычному пользователю получить привилегии суперпользователя, необходимые для выполнения административных задач. При работе с sudo мы можем столкнуться с ошибкой 'Имя пользователя отсутствует в файле sudoers. Об этом инциденте будет сообщено".

В этом руководстве мы рассмотрим различные подходы к устранению этой ошибки.

Причины возникновения ошибки

Прежде всего, отметим, что иногда исправлять эту ошибку не нужно. Например, если системный администратор намеренно ограничил наш доступ в качестве меры безопасности. Как следствие, это ограничение приводит к возникновению проблемы, с которой мы сейчас столкнулись. В этом случае нам придется работать с теми правами, которые определил для нас администратор.

С другой стороны, если у нас есть реальный контроль над системой, то мы можем решить эту проблему.

Итак, давайте начнем с воспроизведения ошибки:

Выше "user is not in the sudoers file" просто означает, что пользователь user не присутствует в файле sudoers. Это файл, определяющий привилегии пользователя и группы пользователей для выполнения задач, связанных с sudo. Кроме того, 'This incident will be reported' означает, что Linux создает отчет о неудачной операции sudo. В этом отчете записывается, что произошло во время данного инцидента sudo.

Добавление пользователя в файл Sudoers

Наша основная цель - добавить пользователя непосредственно в файл sudoers. Поэтому нам необходимо переключиться на пользователя root, так как francis не может выполнять никаких административных задач:

После переключения давайте отредактируем файл sudoers с помощью nano. Это текстовый редактор, позволяющий редактировать файлы из командной строки:

Теперь файл sudoers готов к редактированию.

Итак, добавим строку под спецификацией привилегий пользователя. Она предназначена для предоставления системному пользователю упомянутых привилегий суперпользователя:

Теперь user может выполнять задачи, требующие доступа root.

sudoers

Вскоре после внесения изменений нам необходимо сохранить эти изменения и выйти из текстового редактора. Для этого нажимаем на клавиатуре клавиши CTRL+X для выхода, Y для сохранения и Enter для отправки соответственно. Наконец, мы можем выйти из сеанса root.

Добавление пользователя в группу sudo

Так же, как и в приведенном выше решении, необходимо сначала переключиться на пользователя root:

Команда su позволяет выполнять задачи с правами другого пользователя, в данном случае root.

Далее покажем содержимое файла sudoers. Особое внимание уделим строкам, в которых объявляются привилегии пользователей, а также групп пользователей:

Как показано выше, пользователь root и члены групп admin и sudo имеют привилегии суперпользователя. Опять же, группа sudo присутствует, поскольку мы находимся в дистрибутиве на базе Debian. В дистрибутиве Linux, основанном на Red Hat, мы встретимся с группой пользователей wheel. Это эквивалент группы пользователей sudo для дистрибутивов на базе Red Hat.

Так как мы работаем в Debian, давайте добавим нашего пользователя в группу sudo:

Здесь команда usermod позволяет нам изменить атрибуты нашего пользователя. В частности, с помощью опции -G мы объявляем, что хотим обновить информацию о группе для нашего пользователя francis. Кроме того, опция -a гарантирует, что другие группы, связанные с этим пользователем, не будут удалены в процессе работы. В результате francis теперь может выполнять административные задачи с помощью sudo. В случае с дистрибутивами Red Hat аналогичные результаты дает замена sudo на wheel.

По окончании работы мы выходим из сессии пользователя root:

Теперь мы вернулись к предыдущему сеансу пользователя.

Заключение

В этой статье мы кратко объяснили смысл ошибки Linux 'Имя пользователя отсутствует в файле sudoers. Об этом инциденте будет сообщено". Затем мы рассмотрели два варианта решения этой проблемы.

Понравилась статья? Поделиться с друзьями:
Комментарии: 6
  1. Avatar for Дмитрий
    Дмитрий

    Браво, отличная статья! Чтобы получить sudo права, нужно написать в терминале команду через sudo.

    1. Avatar for Gnostis
      Gnostis (автор)

      В статье описано как добавить пользователю возможность использовать sudo, а использовать sudo без соответствующих прав в системе.

  2. Avatar for тимофей
    тимофей

    у меня пишет что группа вхил не существует

    1. Avatar for Gnostis
      Gnostis (автор)

      Возможно, ее у вас просто нет
      https://g-soft.info/notes/10699/linux-gruppa-wheel/

  3. Avatar for Дмитрий
    Дмитрий

    Сначала пишите "root ALL=(ALL) ALL", у меня в блокноте записано иначе. И тут же на картинке ниже указываете "root ALL=(ALL:ALL) ALL". Как бы разница есть. И добиваекте фразой "сделать так же".

    Если у кого-то высветит "usermod: группа «wheel» не существует" то введите
    usermod -a -G wheel [имя-пользователя]

    1. Avatar for Gnostis
      Gnostis (автор)

      Причем здесь root? у него и так есть все права в системе.

      Если посмотрите на скрин, то видно что пользователю user были добавлены права.

      Мы позволим пользователю (user) выполнить любую команду от имени любого пользователя.

      man sudoers
      https://linux.die.net/man/5/sudoers

Добавить комментарий