Root в Unix-подобных системах¶
Root (в переводе с англ. — «корень»; также суперпользователь) — в Unix-подобных операционных системах учётная запись пользователя, обладающая неограниченными правами доступа ко всем ресурсам и системным функциям. Термин также обозначает имя пользователя этой учётной записи и команду для переключения в её контекст. Root является системным администратором по умолчанию и имеет идентификатор пользователя (UID) равный нулю (0), что отличает его от всех остальных учётных записей.
¶Права и возможности
Суперпользователь root обладает исключительными привилегиями, которые недоступны обычным пользователям. Ему разрешено выполнять любые операции: изменять права доступа к файлам и каталогам, управлять процессами (включая завершение чужих), монтировать и размонтировать файловые системы, изменять конфигурационные файлы системы, устанавливать и удалять программное обеспечение, управлять учётными записями других пользователей. Поскольку root не ограничен стандартными механизмами безопасности, его действия не проходят проверку на соответствие правам доступа — система считает, что root имеет право на всё.
¶Механизм работы
В классической модели Unix процесс, запущенный от имени root, наследует его UID и, соответственно, все привилегии. При попытке обычного пользователя выполнить операцию, требующую прав администратора (например, изменение файла в каталоге /etc), система сравнивает UID процесса с правами доступа к объекту и отказывает в действии. Для root проверка пропускается, что позволяет выполнять операции даже с файлами, у которых установлены нулевые права (chmod 000).
Идентификация root осуществляется не по имени, а по числовому идентификатору UID 0. Система не делает различий между учётной записью, названной «root», и любой другой записью с UID 0. Это важный аспект безопасности: администратор может создать несколько учётных записей с UID 0, и все они будут обладать равными привилегиями суперпользователя.
¶История
Концепция суперпользователя возникла в ранних версиях Unix, разработанных в Bell Labs в конце 1960-х — начале 1970-х годов. В первых редакциях системы не существовало строгого разграничения прав, однако по мере развития многопользовательского режима возникла необходимость в выделении административной учётной записи. Имя «root» было выбрано потому, что домашним каталогом этого пользователя являлся корневой каталог файловой системы (/). Впоследствии термин закрепился и перешёл во все Unix-подобные системы, включая Linux и BSD.
¶Способы получения прав root
¶Прямой вход
Пользователь может войти в систему непосредственно под учётной записью root, введя соответствующий логин и пароль на консоли или через SSH. Однако во многих современных дистрибутивах Linux прямой вход root по умолчанию запрещён из соображений безопасности, а в macOS учётная запись root отключена.
¶Команда su
Утилита su (switch user) позволяет временно переключиться на другого пользователя, включая root, при условии знания его пароля. При выполнении su - происходит полная смена окружения на окружение целевого пользователя, включая его домашний каталог и переменные среды.
¶Команда sudo
Утилита sudo (superuser do) является более безопасной альтернативой. Она позволяет делегировать отдельные административные полномочия обычным пользователям, не раскрывая пароль root. Права определяются в конфигурационном файле /etc/sudoers. При выполнении команды от имени root пользователь вводит собственный пароль, а не пароль суперпользователя. Система ведёт журнал всех выполненных через sudo команд, что повышает подотчётность действий.
¶Безопасность
Использование root сопряжено с серьёзными рисками. Ошибочная команда, выполненная с правами суперпользователя, может привести к необратимым последствиям: удалению критических файлов, нарушению работоспособности системы или полной потере данных. По этой причине в среде профессионалов существует негласное правило: не работать под root без крайней необходимости, а для повседневных задач использовать обычную учётную запись.
Дополнительную опасность представляет вредоносное программное обеспечение. Если злоумышленник получает доступ к сессии root или убеждает администратора выполнить вредоносный код с повышенными привилегиями, он получает полный контроль над системой. Поэтому современные дистрибутивы Linux по умолчанию создают непривилегированного пользователя и настраивают sudo для выполнения административных задач.
¶Принцип наименьших привилегий
Современная практика информационной безопасности рекомендует придерживаться принципа наименьших привилегий: каждый процесс и пользователь должны обладать только теми правами, которые необходимы для выполнения их функций. В контексте root это означает отказ от постоянной работы под суперпользователем в пользу точечного повышения привилегий через sudo.
¶Аналоги в других системах
В операционной системе Windows аналогом root является встроенная учётная запись Administrator, однако модель безопасности Windows существенно отличается: даже администратор по умолчанию работает с ограниченными правами, а полный доступ требует явного повышения привилегий через механизм UAC (User Account Control). В мобильной ОС Android термин «root» используется для обозначения процесса получения полного доступа к системным разделам устройства, что аналогично получению прав суперпользователя в Unix. В сетевом оборудовании (маршрутизаторы, коммутаторы) также существует привилегированный режим, часто называемый «enable» или «privileged exec», выполняющий функции, аналогичные root.
¶Интересные особенности
В некоторых системах, например в FreeBSD, существует механизм jail (изоляция), позволяющий создать внутри системы несколько изолированных окружений, в каждом из которых может быть собственный «root», ограниченный пределами этой изоляции. Это позволяет делегировать административные полномочия в отдельных сегментах без предоставления полного контроля над основной системой.
В ряде дистрибутивов Linux, таких как Ubuntu, учётная запись root заблокирована по умолчанию (пароль не установлен), и все административные действия выполняются через sudo. В других, например в Debian, root создаётся в процессе установки системы, и пользователю предлагается задать для него пароль.