Команда с привычным параметром вдруг возвращает ошибку Permission denied — это первый сигнал, что текущей учётной записи не хватает полномочий, и без root доступа операция не выполнится. В Linux разграничение прав построено жёстко: обычный пользователь не может изменять системные файлы, устанавливать пакеты или управлять службами, пока не повысит привилегии до уровня суперпользователя.
В этой статье разберём, что такое root на техническом уровне, какие способы получения прав существуют, чем отличаются sudo и su, как безопасно настроить доступ и какие ошибки чаще всего приводят к потере контроля над системой. Материал подходит для администраторов серверов и пользователей десктопных дистрибутивов — Ubuntu, Debian, Fedora, Arch и других.
Что такое root и как устроена модель прав в Linux
Root — это встроенная учётная запись суперпользователя с идентификатором UID 0. Именно нулевой UID, а не имя «root», даёт аккаунту неограниченные полномочия: ядро проверяет числовой идентификатор, а не логин. Пользователь с UID 0 может читать и изменять любые файлы, останавливать чужие процессы, менять сетевые настройки и загружать модули ядра.
Модель разграничения доступа в Linux опирается на три сущности: владельца файла, группу и остальных пользователей. Для каждой из них задаются права на чтение, запись и выполнение. Суперпользователь стоит над этой схемой — проверки прав для него фактически отключены, поэтому ошибочная команда от root способна удалить всю систему одной строкой.
- 🔑 UID 0 — технический признак суперпользователя, именно его проверяет ядро
- 📁 Обычный пользователь пишет только в свой домашний каталог
/home/имя - ⚙️ Системные каталоги
/etc,/usr,/varдоступны для записи только root - 🛡️ Сервисы и демоны часто работают под отдельными учётками с минимальными правами
Способы получения root доступа
Существует несколько штатных механизмов повышения привилегий. Выбор зависит от дистрибутива и политики безопасности: в Ubuntu прямой вход под root по умолчанию заблокирован, а в Debian при установке предлагается задать пароль суперпользователя.
Первый способ — команда sudo, которая выполняет одну команду от имени root:
sudo apt update
sudo systemctl restart nginx
Второй вариант — открыть полноценную сессию суперпользователя. Для этого используют su с паролем root либо sudo -i с паролем текущего пользователя:
su -
sudo -i
Короткая проверка текущего уровня прав выполняется командой whoami или id: если в выводе фигурирует uid=0(root), сессия уже работает с полными привилегиями.
| Способ | Команда | Какой пароль нужен | Когда применять |
|---|---|---|---|
| Разовая команда | sudo команда | Текущего пользователя | Единичные административные действия |
| Сессия через sudo | sudo -i | Текущего пользователя | Длительное администрирование |
| Сессия через su | su - | Пароль root | Системы, где root-аккаунт активен |
| Запуск оболочки | sudo -s | Текущего пользователя | Сохранение части окружения пользователя |
Настройка sudo и файла sudoers
Право использовать sudo определяется конфигурацией /etc/sudoers и файлами в каталоге /etc/sudoers.d/. В большинстве дистрибутивов достаточно добавить пользователя в привилегированную группу: sudo в Debian-подобных системах или wheel в Fedora, RHEL и CentOS.
sudo usermod -aG sudo username
sudo usermod -aG wheel username
Редактировать /etc/sudoers напрямую в текстовом редакторе нельзя — синтаксическая ошибка заблокирует доступ к sudo для всех. Для правки существует специальная утилита visudo, которая проверяет файл перед сохранением и отклоняет некорректные изменения.
⚠️ Внимание: никогда не редактируйте
/etc/sudoersчерез обычный редактор вроде nano или vim напрямую. Одна опечатка в этом файле способна полностью отрезать root доступ к системе, и восстановление потребует загрузки с Live-носителя.
☑️ Безопасная настройка sudo
Root доступ по SSH: включение и ограничения
На серверах вопрос root доступа чаще всего связан с SSH. Поведение определяется директивой PermitRootLogin в файле /etc/ssh/sshd_config. Возможные значения: yes — вход разрешён, no — полностью запрещён, prohibit-password — вход только по ключу, без пароля.
# /etc/ssh/sshd_config
PermitRootLogin prohibit-password
После изменения конфигурации необходимо перезапустить службу командой sudo systemctl restart sshd (в некоторых дистрибутивах служба называется ssh). Прямой вход под root по паролю — один из главных векторов атак на серверы: боты постоянно перебирают пароли к аккаунту root на открытых SSH-портах.
Разумная практика для боевого сервера: запретить прямой вход root, создать отдельного пользователя с правами sudo и настроить аутентификацию по SSH-ключам. Так вы получаете два независимых барьера вместо одного пароля.
Типичные ошибки и проблемы с правами root
Самая частая жалоба — сообщение user is not in the sudoers file. Причина проста: учётная запись не входит в привилегированную группу. Решение — зайти под другим административным аккаунтом или под root через su и добавить пользователя в группу, как показано выше.
Вторая типичная ситуация — утерянный пароль root. Восстановить его можно, загрузив систему в однопользовательском режиме или с Live-USB, смонтировав корневой раздел и выполнив passwd в окружении chroot. Точная процедура зависит от загрузчика и дистрибутива, поэтому сверяйтесь с официальной документацией вашей системы.
- 🚫 Permission denied при выполнении команды — не хватает прав, добавьте
sudo - 🔒 Authentication failure при
su— неверный пароль root или аккаунт заблокирован - 📛 not in the sudoers file — пользователь не входит в группу sudo/wheel
- 🔑 Отказ входа по SSH — проверьте
PermitRootLoginи наличие ключа
⚠️ Внимание: команда
chmod -R 777 /или рекурсивная смена владельца на системных каталогах ломает механизмы безопасности, включая сам sudo. Файл /usr/bin/sudo должен иметь владельца root и бит setuid — иначе повышение привилегий перестанет работать. Восстановление после такой ошибки обычно требует загрузки с внешнего носителя.
Безопасность при работе с правами суперпользователя
Главный принцип — минимально необходимые привилегии. Работайте под обычным пользователем и повышайте права только на конкретную операцию. Постоянная сессия под root превращает любую опечатку в потенциальную катастрофу: rm -rf с лишним пробелом в пути не спросит подтверждения.
Проверка перед выполнением разрушительных команд занимает секунды. Посмотрите, что именно будет удалено, используйте ls по целевому пути, а для скриптов — сначала запуск в тестовом окружении. На серверах дополнительно полезно вести аудит: журнал команд sudo хранится в системном логе и позволяет восстановить хронологию действий.
Отдельного упоминания заслуживает запрет парольного входа root по SSH и использование sudo с логированием. Эти две меры закрывают большинство сценариев несанкционированного получения контроля над сервером через удалённый доступ.
Что такое setuid и почему sudo работает «сам по себе»
Исполняемый файл sudo принадлежит root и имеет установленный бит setuid. Когда обычный пользователь запускает sudo, процесс временно получает эффективный UID владельца файла — то есть root. Именно поэтому изменение владельца или прав на /usr/bin/sudo ломает весь механизм повышения привилегий.
Root на Android и встраиваемых системах
Термин «root доступ» встречается и за пределами серверного Linux. В Android, который построен на ядре Linux, получение root означает разблокировку доступа к системному разделу — обычно через патч загрузочного образа инструментами вроде Magisk. Это отдельная процедура, сильно зависящая от модели устройства, версии прошивки и состояния загрузчика.
Универсальной инструкции здесь не существует: разблокировка загрузчика на одних аппаратах выполняется штатной командой, на других требует официального разрешения производителя, а на третьих заблокирована полностью. Перед любыми действиями изучите документацию именно для вашей модели и учтите, что разблокировка обычно стирает данные и может лишить гарантии.
Часто задаваемые вопросы
Чем sudo отличается от su?
Команда sudo выполняет одну операцию от имени root и запрашивает пароль текущего пользователя, а su открывает полноценную сессию другого аккаунта и требует пароль целевого пользователя (по умолчанию — root). Sudo предпочтительнее: действия логируются, а пароль root можно вообще не задавать.
Как проверить, есть ли у меня права sudo?
Выполните sudo -l — команда покажет, какие операции разрешены вашей учётной записи. Альтернатива — проверить членство в группах командой groups: наличие sudo или wheel обычно означает наличие прав.
Опасно ли работать постоянно под root?
Да. Любая запущенная программа получает полные права на систему, включая вредоносный код и команды с опечатками. Штатная практика — обычный пользователь плюс точечное повышение привилегий через sudo.
Что делать, если заблокировал себя правкой sudoers?
Если есть второй аккаунт с правами sudo — исправьте файл через него с помощью visudo. Если нет, потребуется загрузка с Live-USB, монтирование системного раздела и ручное исправление файла. Именно поэтому править sudoers нужно только через visudo.
Можно ли разрешить sudo без ввода пароля?
Технически — да, через параметр NOPASSWD в sudoers для конкретных команд. Но для интерактивной работы это снижает безопасность: любой, получивший доступ к сессии, сразу получает и root. Такой вариант оправдан разве что для автоматизированных скриптов с узким списком разрешённых команд.