Содержание статьи

В Linux-дистрибутивах доступ к пользователю root необходим для выполнения задач, связанных с управлением системой: установки пакетов, изменения сетевых настроек, редактирования конфигурационных файлов и администрирования пользователей. По умолчанию такие операции недоступны обычным учетным записям, что снижает риск повреждения системы из-за ошибочных команд.
Существует два основных механизма получения привилегий суперпользователя: su и sudo. Команда su предполагает знание пароля root и открывает полноценную сессию от его имени. sudo, напротив, использует пароль текущего пользователя и предоставляет доступ к отдельным командам или интерактивной оболочке в зависимости от параметров запуска и настроек файла /etc/sudoers.
Выбор между su и sudo напрямую зависит от конфигурации системы. В Debian и Ubuntu учетная запись root по умолчанию заблокирована, поэтому su недоступна без предварительной установки пароля. В CentOS, AlmaLinux и Rocky Linux root активен изначально, но sudo применяется для разграничения прав и ведения журнала выполненных команд.
Непонимание различий между этими инструментами часто приводит к ошибкам: запуску команд без нужных переменных окружения, отказам в доступе или выполнению действий с избыточными правами. Корректное использование su и sudo позволяет получить root-доступ строго в нужный момент и сохранить контроль над системой.
Проверка наличия пароля root перед использованием su

Команда su требует установленного и активного пароля пользователя root. Если пароль отсутствует или учетная запись заблокирована, попытка входа завершится ошибкой аутентификации независимо от прав текущего пользователя. Поэтому перед использованием su необходимо определить состояние root-аккаунта.
Самый быстрый способ проверки – анализ записи root в файле /etc/shadow. Для этого требуется доступ с правами администратора, например через sudo. Символы в начале хэш-поля указывают на статус пароля: наличие хэша означает установленный пароль, а специальные маркеры сигнализируют о блокировке.
| Содержимое поля пароля | Статус учетной записи root |
|---|---|
| $6$… | Пароль установлен, вход через su возможен |
| ! | Учетная запись заблокирована |
| * | Вход запрещен на уровне системы |
В системах семейства Ubuntu и Debian root по умолчанию заблокирован, поэтому su не работает до явной установки пароля командой sudo passwd root. После задания пароля учетная запись становится доступной для входа, но это изменяет модель администрирования системы и требует осознанного подхода.
Вход в root с помощью команды su и типичные ошибки аутентификации

Для перехода в учетную запись root используется команда su, запущенная без параметров или с ключом —. Вариант su — предпочтителен, так как он загружает окружение суперпользователя: переменные PATH, HOME и рабочий каталог /root. После ввода команды система запрашивает именно пароль root, а не текущего пользователя.
Наиболее частая ошибка – ввод пароля обычной учетной записи. В этом случае появляется сообщение Authentication failure или su: incorrect password. Такая ситуация типична для пользователей, привыкших к sudo, где используется собственный пароль. Если пароль root неизвестен или не задан, вход через su невозможен.
Ошибка su: account is currently not available указывает на заблокированную учетную запись root. Это характерно для систем, где администрирование построено вокруг sudo. В подобных конфигурациях поле пароля root в /etc/shadow содержит символы блокировки, и su не пройдет аутентификацию даже при корректном вводе данных.
Сообщение Permission denied при выполнении su может быть связано с ограничениями PAM. В некоторых окружениях доступ к su разрешен только пользователям, входящим в определенную группу, например wheel. Проверка членства в группе и файла /etc/pam.d/su позволяет быстро выявить причину отказа.
Для диагностики рекомендуется запускать su — из локальной консоли, а не из ограниченной оболочки или контейнера. Это исключает влияние урезанных прав, нестандартных профилей и политик безопасности, которые могут блокировать аутентификацию root на уровне системы.
Выход из root-сессии после работы через su

После завершения административных задач важно корректно выйти из оболочки root, полученной через su. Это снижает риск случайного выполнения команд с максимальными правами и возвращает пользователя в исходную среду.
Стандартные способы завершения root-сессии:
- ввод команды exit с последующим нажатием Enter;
- нажатие комбинации клавиш Ctrl+D, отправляющей сигнал завершения текущей оболочки.
Оба метода закрывают текущий shell root и возвращают управление предыдущему пользователю без завершения сессии терминала. При использовании su — дополнительно восстанавливаются исходные переменные окружения и рабочий каталог.
При вложенных вызовах su выход требуется выполнять поэтапно. Каждый exit завершает только один уровень оболочки, поэтому рекомендуется контролировать приглашение командной строки и значение переменной USER или whoami:
- проверить текущего пользователя командой whoami;
- выполнить exit до возврата к обычной учетной записи;
- убедиться, что приглашение оболочки изменилось на пользовательское.
Закрытие терминала без выхода из root-сессии технически завершает оболочку, но не является предпочтительным вариантом при удаленном подключении. Явный выход через exit упрощает контроль доступа и снижает вероятность ошибок при последующей работе.
Проверка прав пользователя на выполнение sudo-команд

Перед использованием sudo необходимо убедиться, что текущий пользователь имеет разрешение на выполнение команд с повышенными привилегиями. Наличие установленного пакета sudo само по себе не гарантирует доступ, так как права задаются явно через конфигурацию системы.
Если пользователь не состоит в требуемой группе, sudo будет отклонять запросы независимо от корректности пароля. Добавление в группу выполняется только с правами администратора и вступает в силу после повторного входа в систему или обновления сессии.
Для точной диагностики полезно учитывать правила из /etc/sudoers и файлов каталога /etc/sudoers.d. Именно они определяют, разрешен ли полный доступ, запуск отдельных команд или использование интерактивной оболочки через sudo -i. Некорректная запись или конфликт правил часто становятся причиной отказа в выполнении команд.
Получение root-доступа через sudo -i и sudo su
Для открытия интерактивной оболочки root без знания его пароля применяются команды sudo -i и sudo su. Оба варианта используют механизм sudo, поэтому аутентификация выполняется по паролю текущего пользователя и зависит от правил в /etc/sudoers.
Команда sudo -i имитирует полноценный вход root в систему. Загружаются файлы окружения суперпользователя, рабочим каталогом становится /root, а переменная PATH принимает системные значения. Такой режим подходит для длительной административной работы и корректного запуска служебных утилит.
Вариант sudo su запускает su с повышенными правами, что приводит к переключению пользователя на root без запроса его пароля. Однако окружение часто наследуется от исходной учетной записи, из-за чего возможны проблемы с путями к бинарным файлам и настройками оболочки.
Для минимизации несоответствий рекомендуется использовать sudo su —, добавляя ключ — к su. Это принудительно загружает профиль root и делает поведение ближе к sudo -i, но с дополнительным уровнем вложенности оболочек.
В современных дистрибутивах предпочтение обычно отдается sudo -i, так как этот способ проще для контроля, корректно обрабатывается журналами аудита и не зависит от наличия активного пароля root.
Различия между sudo, sudo -i и sudo su в повседневной работе

Команда sudo без параметров предназначена для запуска одной конкретной команды с правами root. Она не меняет текущую оболочку и минимально затрагивает окружение, что делает такой подход удобным для разовых действий: установки пакетов, перезапуска службы или редактирования одного файла.
sudo -i открывает интерактивную оболочку суперпользователя, близкую к полноценному входу root. Загружаются системные профили, рабочим каталогом становится /root, а переменные среды соответствуют учетной записи администратора. Этот вариант подходит для серии связанных операций, где важно единообразное окружение.
Использование sudo su технически сочетает механизм sudo и команду su. При этом root-права получаются через sudo, но оболочка часто наследует настройки обычного пользователя. Такое поведение может привести к запуску утилит с неожиданными путями или конфигурациями.
В повседневной работе выбор команды зависит от задачи. Для единичных действий предпочтителен sudo с явным указанием команды. Для длительного администрирования – sudo -i. Применение sudo su оправдано в ограниченных сценариях, когда требуется поведение su, но без доступа к паролю root.
Осознанное разделение этих подходов упрощает контроль прав, снижает вероятность ошибок и делает работу с привилегиями предсказуемой в разных дистрибутивах Linux.
Ограничения и риски постоянной работы под root

Постоянная работа в оболочке root лишает систему встроенных защитных механизмов, рассчитанных на разделение привилегий. Любая команда, включая опечатки и ошибочные параметры, выполняется без подтверждений и может привести к удалению системных файлов, повреждению загрузчика или нарушению прав доступа.
Запуск приложений под root увеличивает зону ответственности процессов. Уязвимость в редакторе, пакетном менеджере или скрипте автоматически получает полный контроль над системой. При работе через sudo подобные риски ограничиваются рамками одной команды, тогда как постоянная root-сессия расширяет потенциальный ущерб.
Еще одно ограничение связано с аудитом. При использовании sudo каждая команда фиксируется в журналах, что упрощает анализ изменений и поиск источника проблемы. В интерактивной сессии root журналирование часто сводится к факту входа, без детализации выполненных действий.
Постоянное пребывание под root снижает предсказуемость окружения. Пользователь привыкает к отсутствию ограничений и может не заметить, что команды и скрипты не работают без привилегий. Это осложняет перенос настроек и автоматизацию, где выполнение от обычной учетной записи является стандартом.
Практический подход заключается в использовании sudo для отдельных операций и переходе в root-оболочку только при необходимости. Такой режим упрощает контроль изменений, уменьшает вероятность критических ошибок и делает администрирование более управляемым.
Вопрос-ответ:
Почему команда su не принимает мой пароль, хотя я уверен, что ввожу его правильно?
Команда su запрашивает пароль пользователя root, а не текущей учетной записи. В системах Debian и Ubuntu root по умолчанию заблокирован, поэтому аутентификация всегда завершается ошибкой. Проверить статус можно через passwd -S root или содержимое /etc/shadow. Если учетная запись заблокирована, вход через su невозможен до явной установки пароля root.
Можно ли получить root-доступ без знания пароля root?
Да, если пользователь имеет права sudo. Команды sudo -i или sudo su позволяют перейти в оболочку root, используя пароль текущей учетной записи. Такой способ применяется в дистрибутивах, где прямой вход под root отключен на уровне конфигурации.
Чем опасна постоянная работа в системе под root?
Любая ошибка выполняется без ограничений: неверный путь в команде rm или некорректное перенаправление вывода могут повредить систему. Дополнительно снижается прозрачность действий, так как журналы sudo не фиксируют каждую введенную команду внутри root-сессии.
Почему sudo работает, а sudo -i выдает отказ в доступе?
В файле sudoers могут быть заданы ограничения на тип разрешенных действий. Пользователю может быть разрешен запуск отдельных команд, но запрещено открытие интерактивной оболочки. Проверка выполняется через sudo -l, где явно указано, какие режимы доступны.
Как понять, что я действительно нахожусь в оболочке root?
Самый надежный способ — выполнить whoami или id. Для root вывод будет содержать uid=0. Дополнительно меняется приглашение командной строки и домашний каталог, который становится /root при корректном входе через su — или sudo -i.
