«User is not in the sudoers file»: как исправить ошибку в Linux
-
Ошибка «user is not in the sudoers file» — одна из самых частых проблем, с которой сталкиваются пользователи Linux при попытке выполнить команду с правами администратора через sudo. Эта ошибка означает, что ваш пользователь не внесён в список разрешённых или не добавлен в нужную группу.
Проблема легко решается несколькими способами, но все они требуют доступа к правам администратора. Если вы только начинаете работать с Linux, не паникуйте — решение намного проще, чем кажется на первый взгляд.
Почему вообще появляется эта ошибка
Всё просто: в Linux существует система прав доступа, которая защищает систему от несанкционированных изменений. Не каждый пользователь может выполнять команды, требующие административных привилегий. Доступ к sudo регулируется файлом /etc/sudoers, который хранит информацию о том, кто и что может делать с правами root.
Когда вы пытаетесь выполнить команду с sudo, система проверяет файл sudoers и ищет там вашего пользователя или группу, в которой вы состоите. Если ничего не находит — выдаёт ошибку. При первой установке Ubuntu или других дистрибутивов первый пользователь часто добавляют в группу sudo или admin автоматически, но иногда этого не происходит, или пользователь был удалён из группы случайно.
Важный момент: обычный пользователь не может сам отредактировать файл sudoers, потому что это требует прав root. Поэтому, если у вас нет доступа к sudo, нужен либо пользователь, который может использовать sudo, либо прямой доступ к root через режим восстановления.
Способ первый: добавление в группу sudo (самый простой)
Это самый рекомендуемый способ, потому что он безопасен, быстр и не требует прямого редактирования файла sudoers. В большинстве дистрибутивов Linux (Ubuntu, Debian, Fedora) файл sudoers уже содержит строку, которая разрешает всем членам группы sudo выполнять любые команды с полными правами.
Используя эту строку, системный администратор просто добавляет нужного пользователя в группу sudo — и всё. После переавторизации или перезагрузки компьютера пользователь получает доступ к sudo без каких-либо дополнительных настроек. Этот способ хорошо документирован, не требует редактирования конфиг-файлов вручную (а значит, меньше вероятность допустить ошибку) и легко отменяется, если понадобится.
Потребуется:
- Открыть терминал
- Выполнить одну команду от пользователя с правами sudo (или от root)
- Переавторизоваться или перезагрузиться
Команда для добавления пользователя в группу sudo:
usermod -aG sudo имя_пользователяЗамените «имя_пользователя» на реальное имя пользователя, например:
usermod -aG sudo johnПосле выполнения команды пользователь должен либо перезагрузиться, либо заново авторизоваться в системе. При следующей попытке использовать sudo ошибка должна исчезнуть.
Способ второй: прямое редактирование sudoers
Этот способ потребуется, если по какой-то причине группа sudo не работает или вы хотите дать разрешение только одному конкретному пользователю, без добавления в группу. Файл sudoers редактируется специальной командой visudo, которая проверяет синтаксис перед сохранением — это защищает вас от ошибок.
Желательно использовать именно visudo, а не обычный текстовый редактор, потому что обычный редактор может отредактировать файл как read-only и сохранения не произойдёт. Visudo также предотвращает одновременное редактирование файла несколькими пользователями.
Команда для редактирования:
visudoОткроется текстовый редактор (обычно nano или vi) с содержимым файла sudoers. Найдите строку, которая разрешает группе sudo выполнять команды:
%sudo ALL=(ALL) ALLЕсли эта строка начинается с символа # (закомментирована), уберите этот символ. Если строки вообще нет, добавьте её в конец файла.
Для добавления одного конкретного пользователя добавьте такую строку:
имя_пользователя ALL=(ALL) ALLНапример:
john ALL=(ALL) ALLСохраните файл (обычно Ctrl+X в nano, затем Y и Enter). Visudo сам проверит синтаксис и сохранит файл, если всё в порядке.
Способ третий: если у вас вообще нет доступа к sudo
Иногда возникает ситуация, когда ни у кого из обычных пользователей нет доступа к sudo, или единственный админ пользователь был удален. В этом случае нужно загрузиться в режиме восстановления и отредактировать файлы от имени root.
Процесс немного отличается в зависимости от дистрибутива. В Ubuntu нужно при загрузке удерживать Shift, чтобы вывести меню GRUB, затем выбрать режим восстановления. В некоторых системах может потребоваться нажать Escape или другую клавишу.
После загрузки в режиме восстановления вам предложат выбрать опции. Выберите опцию, которая даст вам root-shell (обычно это последний пункт или отдельный пункт с англ. «root»). После этого вы получите доступ к командной строке с правами root.
Так как файловая система в режиме восстановления часто монтируется в режиме read-only, сначала нужно перемонтировать её в режим записи:
mount -o remount,rw /Далее используйте одну из команд выше:
usermod -aG sudo имя_пользователяИли отредактируйте sudoers напрямую:
visudoПосле этого перезагрузитесь обычным способом:
reboot -fПроверка файла sudoers: что должно быть там
Если вы уже добавили пользователя, но ошибка всё равно появляется, стоит проверить содержимое файла sudoers. Вот на что обратить внимание:
Элемент Описание Что проверить Строка для группы sudo %sudo ALL=(ALL) ALL Не закомментирована ли (нет ли # в начале) Строка для группы admin %admin ALL=(ALL) ALL Также должна быть не закомментирована Права доступа к файлу Должны быть 0440 Команда: ls -l /etc/sudoers Синтаксис Без ошибок Редактируйте только через visudo Если права доступа нарушены (не 0440), восстановите их:
sudo chmod 0440 /etc/sudoersОдна из самых частых проблем — это закомментированная строка разрешения для группы sudo. Если в файле вы видите строку вроде:
# %sudo ALL=(ALL) ALLПросто уберите символ # в начале:
%sudo ALL=(ALL) ALLПосле этого сохраните файл и пересоздайте сессию (выйдите и заново авторизуйтесь или перезагрузитесь).
Особенности в разных дистрибутивах
В большинстве дистрибутивов процесс одинаков, но есть небольшие различия. В Ubuntu и Debian пользователь добавляется в группу sudo и всё работает. В ALT Linux и некоторых других дистрибутивах используется группа wheel вместо sudo, и файл sudoers может быть не настроен по умолчанию.
Если вы работаете с ALT Linux, попробуйте добавить пользователя в группу wheel:
usermod -aG wheel имя_пользователяИли отредактируйте sudoers и добавьте строку:
%wheel ALL=(ALL) ALLВ других дистрибутивах (Fedora, CentOS, RHEL) тоже часто используется group wheel. Проверьте документацию вашего дистрибутива, если стандартные способы не сработали.
Когда ничего не помогает: диагностика
Если вы следовали всем советам выше, а ошибка всё ещё появляется, проверьте несколько вещей:
- Действительно ли пользователь был добавлен в группу? Команда: groups имя_пользователя. Должна вывести список групп, включая sudo или admin.
- Переавторизовались ли вы после добавления в группу? Иногда изменения вступают в силу только после повторного входа или перезагрузки.
- Нет ли опечаток в имени пользователя? Проверьте точное имя пользователя командой: id.
- Отредактировали ли вы sudoers через visudo, а не обычный редактор?
- Не повреждён ли сам файл /etc/sudoers? Синтаксис должен быть идеален, иначе весь файл может не работать.
Если вы всё-таки отредактировали sudoers обычным редактором и что-то пошло не так, вернитесь в режим восстановления и используйте visudo для полного переписывания файла.
Что нужно помнить дальше
После того как ошибка будет исправлена, стоит помнить о безопасности. Группа sudo — это мощный инструмент, дающий полный контроль над системой. Не добавляйте в неё неподозрительных пользователей и периодически проверяйте содержимое файла sudoers, особенно если на компьютере работают несколько человек.
Также помните, что команды, выполняемые через sudo, логируются в системе. Если вы хотите узнать, какие команды были запущены с повышенными привилегиями, можно посмотреть логи. Это полезно для аудита и отладки проблем с доступом.
© 2024 - 2026 ExLends, Inc. Все права защищены.