Root — учётная запись суперпользователя в Unix/Linux-системах с идентификатором пользователя (UID) 0. Ядро Linux не применяет к root стандартные проверки прав доступа — root может читать любой файл, завершить любой процесс, изменить любой системный параметр. На хостинге root-доступ отделяет VPS от виртуального хостинга.
Как работает
В Linux система прав строится на тройке: владелец, группа, остальные. Для root эти проверки фактически не работают: root обходит битов DAC (Discretionary Access Control). Единственные ограничения — MAC (Mandatory Access Control) при включённом SELinux/AppArmor и capabilities (возможности) в современном ядре.
Linux capabilities позволяют делегировать отдельные привилегии root без выдачи полного root-доступа. Например, CAP_NET_BIND_SERVICE — право привязывать порты ниже 1024 без root; CAP_SYS_TIME — право изменять системное время. Docker-контейнеры используют capabilities для ограничения привилегий процессов внутри контейнера.
Команда sudo (substitute user do) позволяет пользователям выполнять команды от имени root без знания root-пароля — по правилам в файле /etc/sudoers. Это базовая практика безопасности: работать под обычным пользователем, использовать sudo только для команд, требующих привилегий.
История
Концепция суперпользователя появилась в Unix Version 6 (1975) в Bell Labs. UID 0 как обязательный признак root унаследован от System V Unix. В Linux концепция не изменилась с первых версий ядра (1991). Linux capabilities введены в ядро 2.2 (1999) как механизм более гранулярного контроля привилегий.
Root-доступ: безопасные практики
Прямой вход под root по SSH — плохая практика. Рекомендации: PermitRootLogin no в /etc/ssh/sshd_config (вход только через sudo от обычного пользователя), AllowUsers username1 username2 — белый список пользователей SSH, PasswordAuthentication no — только ключи. Fail2ban против брутфорса SSH — обязателен.
sudo best practices: sudoers-файл через visudo (синтаксис проверяется перед сохранением). Минимальные права: вместо username ALL=(ALL) ALL выдавать конкретные команды: username ALL=(ALL) /usr/bin/systemctl reload nginx. sudo -l показывает доступные команды для текущего пользователя. Логирование sudo-команд — /var/log/auth.log или /var/log/secure. NOPASSWD в sudoers для автоматизации — только для конкретных команд, не ALL.
На что обращать внимание
Прямой вход под root через SSH — плохая практика безопасности: при компрометации пароля атакующий получает полный контроль над сервером. Рекомендуется: отключить PermitRootLogin yes в /etc/ssh/sshd_config, создать пользователя с правами sudo, использовать SSH-ключи. На виртуальном хостинге пользователь никогда не получает root — только ограниченный аккаунт в рамках своего раздела. На VPS root-доступ предоставляется изначально.
Root в хостинге
На VPS root-доступ через SSH — стандарт: провайдер создаёт VPS с root-паролем или ключом. На shared hosting root-доступ недоступен — работа только через FTP, панель управления или ограниченный SSH. Рекомендуемая практика: создать непривилегированного пользователя через adduser admin && usermod -aG sudo admin, добавить SSH-ключ, отключить root-логин по SSH (PermitRootLogin no). Для Docker: запускать контейнеры от непривилегированного пользователя — добавить его в группу docker. Для Linux-систем: sudo позволяет выполнять команды с правами root без входа под root-пользователем.