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

Root-доступ

Root-доступ — это режим работы в операционных системах семейства Unix и Unix-подобных (включая Linux и Android), при котором пользователь или процесс обладает максимальными привилегиями и может выполнять любые действия без ограничений, накладываемых системой безопасности. Root-доступ предоставляет полный контроль над операционной системой: чтение и запись любых файлов, изменение системных настроек, установку и удаление программ, управление учётными записями других пользователей и доступ к аппаратному обеспечению. Пользователь, работающий в этом режиме, называется суперпользователем (root). В операционных системах Windows аналогичная концепция реализована через учётную запись «Администратор» и механизм контроля учётных записей (UAC), однако полный аналог root-доступа в Windows — это встроенная учётная запись Administrator, которая по умолчанию отключена.

История

Понятие суперпользователя возникло в ранних версиях операционной системы Unix, разработанной в Bell Labs в конце 1960-х — начале 1970-х годов. В многопользовательской среде Unix требовался механизм для администрирования системы, который позволял бы одному пользователю (обычно системному администратору) выполнять критические операции, недоступные обычным пользователям. Имя учётной записи «root» было выбрано как отсылка к корневому каталогу файловой системы («/»), который является вершиной иерархии. В первых версиях Unix root-доступ не имел пароля и предоставлялся любому, кто мог физически получить доступ к терминалу. С развитием систем безопасности, начиная с Unix System III (1982) и BSD 4.3 (1986), были введены пароли и механизмы разграничения привилегий.

В операционной системе Linux, созданной Линусом Торвальдсом в 1991 году, концепция root-доступа была унаследована от Unix. В ранних дистрибутивах Linux (например, Slackware, 1993) работа от root была обычной практикой, что приводило к частым ошибкам и уязвимостям. С середины 2000-х годов, с распространением дистрибутивов, ориентированных на массового пользователя (Ubuntu, Fedora), root-доступ по умолчанию стал отключаться, а для выполнения административных задач начали использовать команду sudo (substitute user do), которая позволяет временно повышать привилегии.

В мобильной операционной системе Android, основанной на ядре Linux, root-доступ изначально был заблокирован производителями устройств для обеспечения безопасности и защиты авторских прав. Получение root-доступа на Android (так называемый «рутинг») стало популярным среди энтузиастов с середины 2000-х годов, но влечёт за собой потерю гарантии и потенциальные риски безопасности.

Принцип работы

Модель привилегий в Unix-подобных системах

В Unix-подобных ОС каждый процесс и каждый файл имеют идентификатор пользователя (UID) и идентификатор группы (GID). Суперпользователь имеет UID, равный 0. Система безопасности проверяет UID при каждой операции доступа к файлам, устройствам или системным вызовам. Если UID равен 0, проверки пропускаются — процесс может делать всё, что разрешено на уровне ядра. Root-доступ не отключает механизмы защиты ядра (например, SELinux или AppArmor), но позволяет их настраивать или отключать.

Команда su и sudo

Для переключения в режим root из сеанса обычного пользователя используются команды:

  • su (switch user) — позволяет войти в сеанс root после ввода пароля суперпользователя. При использовании su - создаётся новая среда с окружением root.
  • sudo (substitute user do) — позволяет выполнить одну команду с привилегиями root (или другого пользователя) без входа в сеанс root. Права на использование sudo настраиваются в файле /etc/sudoers. В современных дистрибутивах (Ubuntu, Fedora) root-доступ по умолчанию отключён, а все административные действия выполняются через sudo.

Пароль root

В системах с включённым root-доступом пароль суперпользователя задаётся при установке ОС или командой passwd. В системах, где root-доступ отключён (например, Ubuntu по умолчанию), пароль root не задан, и войти в сеанс root напрямую невозможно. Вместо этого используется sudo с паролем текущего пользователя.

Риски и критика

Уязвимости безопасности

Root-доступ является одной из самых критических уязвимостей системы, если он попадает в руки злоумышленника. Получив root-доступ, атакующий может:

  • Установить руткиты и другие вредоносные программы, скрывающие своё присутствие.
  • Изменить или удалить системные журналы, заметая следы.
  • Получить доступ к зашифрованным данным, если ключи шифрования хранятся в памяти ядра.
  • Отключить межсетевые экраны и антивирусное ПО.
  • Изменить настройки загрузчика и установить бэкдоры.

Ошибки пользователя

Работа от root повышает риск случайного повреждения системы. Например, команда rm -rf / (рекурсивное удаление всех файлов) при выполнении от root уничтожит всю файловую систему без возможности восстановления. В истории Unix и Linux известно множество инцидентов, когда администраторы случайно удаляли важные системные файлы.

Социальная инженерия

Злоумышленники часто пытаются обманом заставить пользователя выполнить команду от root через sudo или su. Например, фишинговые письма могут содержать инструкции по установке «обновлений» с использованием sudo.

Применение

Администрирование серверов

Root-доступ необходим для установки и настройки серверного ПО, управления пользователями, настройки сетевых интерфейсов, мониторинга системы и восстановления после сбоев. В корпоративной среде root-доступ обычно предоставляется только системным администраторам через механизмы управления привилегиями (например, через sudo с ограниченным набором команд).

Разработка и отладка

Разработчики ядра и системных утилит часто используют root-доступ для тестирования низкоуровневых функций, работы с драйверами устройств и отладки. В средах разработки (например, Docker-контейнеры) root-доступ может быть ограничен через механизмы пространств имён (namespaces).

Root-доступ на Android

На мобильных устройствах Android получение root-доступа («рутинг») позволяет:

  • Удалять предустановленные приложения (bloatware).
  • Устанавливать модифицированные прошивки (кастомные ROM).
  • Использовать приложения, требующие расширенных прав (например, для записи экрана, изменения системных шрифтов).
  • Разгонять процессор или изменять частоты ядер.

Однако рутинг нарушает политику безопасности Google и производителей, приводит к потере гарантии, блокировке некоторых сервисов (например, Google Pay, банковские приложения) и повышает риск заражения вредоносным ПО. Google активно борется с рутингом через механизмы SafetyNet (ныне Play Integrity).

Альтернативы и ограничения

Принцип наименьших привилегий

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

  • sudo с настройкой разрешённых команд.
  • Механизмы мандатного контроля доступа (SELinux, AppArmor).
  • Контейнеризация (Docker, LXC), где процессы работают в изолированных пространствах с ограниченными правами.
  • Ролевое управление доступом (RBAC) в некоторых дистрибутивах (например, в Red Hat Enterprise Linux).

В Windows

В Windows аналогом root-доступа является учётная запись «Администратор» (встроенная, с SID S-1-5-21...-500). Однако по умолчанию она отключена, а для повышения привилегий используется механизм UAC (User Account Control), который запрашивает подтверждение перед выполнением административных действий. Полный аналог root-доступа в Windows — это работа от встроенной учётной записи Administrator, которая может выполнять любые операции без запросов UAC, но её включение считается небезопасным.

В macOS

В macOS (на базе Darwin, Unix-подобной ОС) root-доступ также существует, но по умолчанию отключён. Для административных действий используется sudo или графический интерфейс с запросом пароля. Начиная с macOS 10.15 (Catalina), система дополнительно защищает системные файлы через механизм SIP (System Integrity Protection), который ограничивает даже root-доступ к определённым каталогам и процессам.

Интересные факты

  • В некоторых ранних версиях Unix (например, Version 7) root-доступ можно было получить, войдя в систему с именем пользователя «root» и пустым паролем.
  • В 2014 году в системе безопасности Linux была обнаружена уязвимость CVE-2014-3153 (известная как «Towelroot»), которая позволяла локальному пользователю получить root-доступ на устройствах Android с ядром до версии 3.8.
  • В 2021 году в системе безопасности Linux была найдена уязвимость CVE-2021-3493, позволяющая повысить привилегии до root через файловую систему OverlayFS.
  • В некоторых дистрибутивах Linux (например, Kali Linux, предназначенном для тестирования на проникновение) root-доступ по умолчанию включён, что облегчает работу пентестеров, но повышает риски.

Источники

  • Бах, М. «Архитектура операционной системы Unix». — М.: Мир, 1986.
  • Таненбаум, Э., Бос, Х. «Современные операционные системы». — 4-е изд. — СПб.: Питер, 2015.
  • Документация проекта Linux Kernel: «Security-Enhanced Linux (SELinux)» (kernel.org).
  • Документация Ubuntu: «RootSudo» (help.ubuntu.com).
  • Статья «Android rooting» в Android Developers Guide (developer.android.com).
  • CVE-2014-3153, CVE-2021-3493 — база данных уязвимостей MITRE.
  • «The Unix Heritage Society» — архив документации по ранним версиям Unix.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →