В Linux некоторые команды может выполнять только пользователь root. По умолчанию этот суперпользователь имеет доступ ко всем командам и ресурсам нашей системы.
Однако выполнение ответственных задач без ограничений опасно. Например, намеренная или случайная ошибка может привести к поломке всей системы. Поэтому в Linux рекомендуется использовать команду sudo. Это команда, которая позволяет обычному пользователю получить привилегии суперпользователя, необходимые для выполнения административных задач. При работе с sudo мы можем столкнуться с ошибкой 'Имя пользователя отсутствует в файле sudoers. Об этом инциденте будет сообщено".
В этом руководстве мы рассмотрим различные подходы к устранению этой ошибки.
Причины возникновения ошибки
Прежде всего, отметим, что иногда исправлять эту ошибку не нужно. Например, если системный администратор намеренно ограничил наш доступ в качестве меры безопасности. Как следствие, это ограничение приводит к возникновению проблемы, с которой мы сейчас столкнулись. В этом случае нам придется работать с теми правами, которые определил для нас администратор.
С другой стороны, если у нас есть реальный контроль над системой, то мы можем решить эту проблему.
Итак, давайте начнем с воспроизведения ошибки:
1 2 3 | $ sudo ls [sudo] password for user: francis is not in the sudoers file. This incident will be reported. |
Выше "user is not in the sudoers file" просто означает, что пользователь user не присутствует в файле sudoers. Это файл, определяющий привилегии пользователя и группы пользователей для выполнения задач, связанных с sudo. Кроме того, 'This incident will be reported' означает, что Linux создает отчет о неудачной операции sudo. В этом отчете записывается, что произошло во время данного инцидента sudo.
Добавление пользователя в файл Sudoers
Наша основная цель - добавить пользователя непосредственно в файл sudoers. Поэтому нам необходимо переключиться на пользователя root, так как francis не может выполнять никаких административных задач:
1 | su root |
После переключения давайте отредактируем файл sudoers с помощью nano. Это текстовый редактор, позволяющий редактировать файлы из командной строки:
1 | nano /etc/sudoers |
Теперь файл sudoers готов к редактированию.
Итак, добавим строку под спецификацией привилегий пользователя. Она предназначена для предоставления системному пользователю упомянутых привилегий суперпользователя:
1 2 3 | # User privilege specification root ALL=(ALL:ALL) ALL user ALL=(ALL:ALL) ALL |
Теперь user может выполнять задачи, требующие доступа root.
Вскоре после внесения изменений нам необходимо сохранить эти изменения и выйти из текстового редактора. Для этого нажимаем на клавиатуре клавиши CTRL+X для выхода, Y для сохранения и Enter для отправки соответственно. Наконец, мы можем выйти из сеанса root.
Добавление пользователя в группу sudo
Так же, как и в приведенном выше решении, необходимо сначала переключиться на пользователя root:
1 | su root |
Команда su позволяет выполнять задачи с правами другого пользователя, в данном случае root.
Далее покажем содержимое файла sudoers. Особое внимание уделим строкам, в которых объявляются привилегии пользователей, а также групп пользователей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # cat /etc/sudoers ... # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL ... |
Как показано выше, пользователь root и члены групп admin и sudo имеют привилегии суперпользователя. Опять же, группа sudo присутствует, поскольку мы находимся в дистрибутиве на базе Debian. В дистрибутиве Linux, основанном на Red Hat, мы встретимся с группой пользователей wheel. Это эквивалент группы пользователей sudo для дистрибутивов на базе Red Hat.
Так как мы работаем в Debian, давайте добавим нашего пользователя в группу sudo:
1 | usermod -aG sudo user |
Здесь команда usermod позволяет нам изменить атрибуты нашего пользователя. В частности, с помощью опции -G мы объявляем, что хотим обновить информацию о группе для нашего пользователя francis. Кроме того, опция -a гарантирует, что другие группы, связанные с этим пользователем, не будут удалены в процессе работы. В результате francis теперь может выполнять административные задачи с помощью sudo. В случае с дистрибутивами Red Hat аналогичные результаты дает замена sudo на wheel.
По окончании работы мы выходим из сессии пользователя root:
1 | exit |
Теперь мы вернулись к предыдущему сеансу пользователя.
Заключение
В этой статье мы кратко объяснили смысл ошибки Linux 'Имя пользователя отсутствует в файле sudoers. Об этом инциденте будет сообщено". Затем мы рассмотрели два варианта решения этой проблемы.