Открыть сервисСервис

Рут-код: суперпользователь в Unix

Рут-код (от англ. root — «корень») — обобщённое название программного кода, исполняемого с наивысшими привилегиями в операционных системах семейства Unix и Unix-подобных системах, то есть от имени учётной записи суперпользователя root. Такой код имеет неограниченный доступ к файловой системе, устройствам, сетевым настройкам и другим процессам, что делает его одновременно наиболее мощным и наиболее опасным инструментом администрирования. В широком смысле под рут-кодом понимают также сами эксплойты, уязвимости и приёмы, позволяющие получить права root в обход штатных механизмов.

Понятие суперпользователя

Учётная запись root существует в системах на базе ядра Unix, включая Linux, BSD, macOS и другие. Её идентификатор пользователя (UID) равен нулю. Именно нулевой UID, а не имя учётной записи, определяет наличие полных прав: ядро проверяет числовой идентификатор, а не строку «root». Это позволяет создавать дополнительные учётные записи с UID 0, обладающие теми же возможностями.

Суперпользователь может читать и изменять любые файлы независимо от установленных прав доступа, завершать и запускать процессы других пользователей, монтировать файловые системы, изменять сетевые интерфейсы, загружать и выгружать модули ядра. Ограничения, действующие для обычных пользователей, на root не распространяются.

Способы получения привилегий

В штатном режиме права суперпользователя получают несколькими способами.

  • Вход напрямую. Аутентификация под учётной записью root, например через консоль или SSH. В современных дистрибутивах прямой вход часто отключён по умолчанию.
  • su. Команда позволяет переключиться на другую учётную запись, по умолчанию на root, после ввода пароля суперпользователя.
  • sudo. Утилита выполняет отдельную команду от имени другого пользователя согласно правилам, заданным в файле конфигурации sudoers. Позволяет выдавать ограниченный набор привилегий без раскрытия пароля root.
  • doas и аналоги. Упрощённые альтернативы sudo, распространённые в системах BSD.

Разделение полномочий через sudo считается более безопасной практикой, чем постоянная работа под root: каждая привилегированная операция выполняется отдельно и может протоколироваться.

Рут-код в контексте безопасности

В терминологии информационной безопасности «рут-код» нередко обозначает вредоносный код, целью которого является повышение привилегий до уровня root. Получение таких прав на чужой системе называют рутингом или «получением рута». Уязвимости, позволяющие это сделать, классифицируют как повышение привилегий (privilege escalation).

Различают локальное повышение привилегий, когда злоумышленник уже имеет доступ к системе под обычной учётной записью, и удалённое, при котором рут-код эксплуатирует сетевую уязвимость. Типичные причины: ошибки в ядре, неверно настроенные права на файлы с флагом setuid, слабые пароли, уязвимые службы.

Защитные механизмы

Для противодействия несанкционированному получению прав root применяется комплекс мер.

МеханизмНазначение
sudo и sudoersДозирование привилегий, ведение журнала
SELinux, AppArmorМандатный контроль доступа, ограничение возможностей процессов
Пространства имён и cgroupsИзоляция процессов и ресурсов
ASLR, NX, stack canariesЗащита от эксплуатации уязвимостей памяти
Аудит (auditd)Фиксация привилегированных действий

Отдельное направление — снижение привилегий демонов: сетевые службы запускаются от непривилегированных пользователей, а необходимые операции выполняются через минимальный набор привилегированных помощников.

Рут-код в мобильных системах

В мобильных операционных системах, прежде всего Android, доступ к root ограничен производителем. Получение прав суперпользователя на устройстве называется рутингом (rooting). Оно позволяет устанавливать неофициальные прошивки, удалять предустановленное программное обеспечение, использовать специализированные приложения. Одновременно рутинг снимает часть встроенных защит, повышает риск заражения и, как правило, лишает устройство гарантии. Аналогичную роль в экосистеме Apple играет джейлбрейк.

Практика администрирования

Среди администраторов распространён принцип наименьших привилегий: повседневная работа ведётся под обычной учётной записью, а root применяется только для конкретных задач. Это снижает вероятность случайного повреждения системы и уменьшает последствия компрометации пользовательской сессии. Для автоматизации используют сценарии, запускаемые через sudo с чётко ограниченным перечнем разрешённых команд.

В контейнерах и облачных средах работа под root внутри контейнера считается нежелательной: при недостаточной изоляции это создаёт риск выхода за его пределы. Современные практики рекомендуют задавать непривилегированного пользователя в образе и применять политики безопасности на уровне оркестратора.

Источники

  • Документация проекта GNU: руководства по su и sudo.
  • man-страницы ядра Linux и утилит администрирования.
  • Материалы по информационной безопасности о повышении привилегий.
  • Документация Android по вопросам безопасности и рутинга.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru