Команда sudo apt update завершается ошибкой «user is not in the sudoers file» — это первый сигнал, что у текущей учётной записи нет прав суперпользователя, и без их настройки администрировать систему не получится. Проверить ситуацию можно одной командой: id покажет, к каким группам относится пользователь, и есть ли среди них sudo или wheel.
В этой статье разберём, что такое root-права в Linux, чем отличаются способы их получения, как выдать права другому пользователю и какие меры предосторожности помогут не повредить систему. Материал подходит для Ubuntu, Debian, Fedora и других популярных дистрибутивов.
Что такое root и зачем нужны права суперпользователя
Root — это встроенная учётная запись администратора с идентификатором UID 0. Пользователь root может читать и изменять любые файлы, устанавливать и удалять программы, управлять системными службами, пользователями и сетевыми настройками. Обычная учётная запись таких полномочий не имеет — это базовый принцип безопасности Unix-подобных систем.
Права суперпользователя требуются для большинства административных задач:
- 🛠️ установка и обновление пакетов через
apt,dnfилиpacman; - 👤 создание и удаление пользователей, смена их паролей;
- ⚙️ редактирование системных конфигураций в каталоге
/etc; - 🔄 управление службами через
systemctl; - 💾 монтирование дисков и изменение прав на файлы.
Без root-доступа система защищена от случайных повреждений: даже если обычный пользователь запустит вредоносную команду, ущерб ограничится его домашним каталогом. Именно поэтому постоянная работа под root считается плохой практикой.
Чем отличаются su и sudo
Существует два основных механизма повышения привилегий, и новички часто их путают. Команда su (substitute user) полностью переключает вас в сессию другого пользователя — по умолчанию root. Для этого нужно знать пароль root. Команда sudo выполняет одну конкретную команду с повышенными правами, запрашивая пароль текущего пользователя.
| Критерий | su | sudo |
|---|---|---|
| Какой пароль запрашивается | Пароль root | Пароль текущего пользователя |
| Область действия | Вся сессия до выхода | Одна команда |
| Кто может использовать | Любой, кто знает пароль root | Только пользователи из группы sudo/wheel |
| Журналирование действий | Минимальное | Каждая команда логируется |
| Риск случайных ошибок | Высокий — все команды от root | Ниже — права только на одну операцию |
В Ubuntu и производных учётная запись root по умолчанию заблокирована, и единственный штатный способ администрирования — sudo. В Debian при установке можно задать отдельный пароль root, и тогда доступен su. Оба подхода рабочие, разница в философии управления доступом.
Как получить root-права через sudo
Самый простой способ — поставить sudo перед нужной командой. Система запросит ваш пароль и выполнит операцию с правами суперпользователя:
sudo apt update
sudo systemctl restart nginx
Если предстоит выполнить серию административных команд, откройте root-оболочку через sudo -i (имитация полного входа root) или sudo -s (оболочка с правами root, но с вашим окружением). Выйти из неё можно командой exit.
Чтобы проверить, есть ли у вас право использовать sudo, выполните sudo -v или посмотрите состав групп:
groups
id
Если в выводе нет группы sudo (в Debian, Ubuntu) или wheel (в Fedora, CentOS, RHEL), права нужно выдать — об этом в следующем разделе.
Как добавить пользователя в sudoers
Выдать права может только тот, кто уже обладает правами администратора. Если это единственная учётная запись и она не в sudoers, потребуется загрузиться в режиме восстановления или с Live-носителя — точная процедура зависит от дистрибутива, сверяйтесь с его официальной документацией.
Стандартный путь выглядит так. Авторизуйтесь под пользователем с правами root и добавьте нужную учётную запись в административную группу:
# Для Debian/Ubuntu:
usermod -aG sudo имя_пользователя
Для Fedora/CentOS/RHEL:
usermod -aG wheel имя_пользователя
После этого пользователю нужно выйти из сессии и войти снова — членство в группах применяется при новом входе.
☑️ Проверка после выдачи прав sudo
⚠️ Внимание: файл
/etc/sudoersредактируйте только командойvisudo. Она проверяет синтаксис перед сохранением — ошибка в этом файле, внесённая обычным редактором, способна полностью заблокировать доступ к sudo для всех пользователей системы.
Как включить или разблокировать учётную запись root
В системах, где root заблокирован (например, Ubuntu), его можно активировать, задав пароль:
sudo passwd root
После этого станет доступен вход через su -. Чтобы снова заблокировать учётную запись, выполните sudo passwd -l root — пароль будет деактивирован, и прямой вход под root станет невозможен.
Нужно ли это делать? Для домашней системы обычно достаточно sudo. Отдельный пароль root оправдан на серверах с несколькими администраторами или там, где этого требует внутренняя политика доступа. Активный root с простым паролем и открытым SSH — одна из самых частых причин взлома Linux-серверов, поэтому при включении root обязательно задайте стойкий пароль и проверьте настройки SSH.
Почему в Ubuntu root заблокирован по умолчанию
Разработчики Ubuntu сознательно отключили прямой вход под root, чтобы все административные действия проходили через sudo и записывались в журнал. Это упрощает аудит: всегда видно, какой пользователь и какую команду выполнял. При работе через su все действия записываются на безликого root, и разобраться, кто именно что-то сломал, становится сложнее.
Типичные ошибки и риски при работе с root
Полномочия суперпользователя не имеют ограничений — система не переспросит и не подстрахует. Рассмотрим самые распространённые проблемы.
- 🔥 Рекурсивные команды с ошибкой в пути: опечатка в
rm -rfили пробел в неудачном месте способны удалить системные каталоги; - 📂 Команда
chmod -R 777 /или подобные массовые изменения прав ломают механизмы безопасности и работу служб; - 🔑 Хранение пароля root в скриптах открытым текстом — прямой путь к компрометации;
- 🌐 Разрешённый вход root по SSH с паролем — частая цель брутфорс-атак.
⚠️ Внимание: перед выполнением деструктивных команд (
rm -rf,dd,mkfs) перепроверяйте путь дважды. Root не спросит подтверждения — команда выполняется немедленно, а восстановление данных после таких операций часто невозможно.
Если команда с sudo возвращает ошибку «command not found», вероятная причина — отличающийся PATH у root: исполняемый файл может находиться в каталоге, недоступном в окружении суперпользователя. Проверьте полный путь к утилите командой which имя_команды под обычным пользователем.
Безопасные практики работы с правами суперпользователя
Несколько привычек заметно снижают риски при администрировании. Вам стоит работать под обычной учётной записью и повышать привилегии только для конкретных операций — это ограничивает последствия опечаток и вредоносного ПО, запущенного в вашей сессии.
На серверах дополнительно рекомендуется отключить вход root по SSH (параметр PermitRootLogin no в конфигурации sshd) и использовать аутентификацию по ключам вместо паролей. Перед изменением конфигурации SSH убедитесь, что у вас есть альтернативный способ доступа к серверу — ошибка в настройках способна отрезать вас от машины. Точные значения параметров и их поведение зависят от версии OpenSSH, сверяйтесь с документацией вашего дистрибутива.
Для делегирования прав коллегам не передавайте пароль root — добавьте их в группу sudo или настройте через visudo доступ только к нужным командам. Так каждый действует под своей учётной записью, а журнал показывает, кто и что выполнял.
Часто задаваемые вопросы
Как узнать, есть ли у меня root-права?
Выполните команду id: если uid=0, вы уже работаете под root. Чтобы проверить доступ к sudo, введите sudo -v — если система запросила пароль и не выдала ошибку, права есть. Также проверьте вывод groups на наличие группы sudo или wheel.
Что делать, если sudo пишет «user is not in the sudoers file»?
Учётная запись не входит в административную группу. Нужно зайти под пользователем с правами root (или через su, если известен пароль root) и выполнить usermod -aG sudo имя_пользователя для Debian/Ubuntu либо usermod -aG wheel имя_пользователя для Fedora/RHEL. Если доступа к root нет совсем, потребуется режим восстановления или Live-носитель — процедура зависит от дистрибутива.
Опасно ли постоянно работать под root?
Да. Любая ошибка в команде или вредоносная программа, запущенная в такой сессии, получает неограниченный доступ к системе. Правильный подход — обычная учётная запись для повседневной работы и sudo для административных задач.
Как заблокировать root после включения?
Выполните sudo passwd -l root — пароль будет деактивирован, и вход под root станет невозможен. При этом sudo продолжит работать в обычном режиме.
Чем sudo -i отличается от sudo -s?
Команда sudo -i создаёт полноценную login-сессию root с его окружением и домашним каталогом /root. Команда sudo -s запускает оболочку с правами root, но сохраняет часть вашего текущего окружения. Для большинства задач администрирования предпочтительнее sudo -i.