Учётная запись суперпользователя, не предназначеная для регулярной работы.
Отличается от нормальных учётных записей тем, что имеет право на выполнение всех без исключения операций, включая удаление любого файла или форматирование использующейся файловой системы. То есть, например, случайной опечаткой или использованием чужого скрипта с ошибкой, можно удалить все файлы на компьютере или привести систему к практически невосстановимому состоянию, например:
chmod -R 777 /path/to/dir /*
и другие.
Постоянная работа под рутом также может привести к появлению трудноуловимых ошибок, даже если ничего особенного вроде бы не делаешь. И на практике, если система начнёт глючить, это может привести и к потере документов.
Поэтому для выполнение действий, требующих привилегий суперпользователя, не рекомендуется выполнять "полноценный" вход в систему под записью root. Вместо этого намного лучше использовать специально предназначенную для этих целей команду sudo, которая делегирует указанной после нее команде привилегии root.
Использование этой учётной записи бывает нужно при выполнении административных задач, таких как:
Для выполнения такого рода задач существуют средства для временного повышения привилегий.
В современных операционных системах нет интеллектуальной встроенной "защиты от дурака", средства которое распознавало и предупреждало бы случайные или намеренные разрушительные воздействия.
Для того что бы сделать такое средство, было бы необходимо поместить в компьютер "искусственный интеллект" который понимал что хочет пользователь, различал случайные и намеренные, нейтральные и вредоносные действия. Существуют попытки внести такие средства в операционные системы, но удовлетворительного результата они не дали.
Linux это операционная система построенная по архитектуре unix, которая работает как хороший солдат - точно выполняя команду. Поэтому если в команде случайно или намеренно будет указано разрушить часть системы или необходимые данные, то команда просто будет выполнена. Программное обеспечение полагает что человек умнее машины и если человек отдаёт команду то для этого есть причина. Совершенно аналогично тому, что если у нас есть молоток и какой либо механизм то нас ничто не может остановить от того что бы сломать этот механизм. Поэтому в частности любая техника которую можно сломать, или которая может нанести повреждение человеку, закрывается защитными кожухами.
Именно ограничение прав пользователя в программном обеспечении и играют роль такой защиты от случайных опечаток при наборе команд, от ошибок в чужом ПО и для частичного ограничения вредоносного ПО, которая не даёт совершить разрушительных действий.
Правильное название аккаунта с UID 0 — суперпользователь (superuser). Правильная проверка, является ли данный аккаунт суперпользователем, — проверить, равен ли его UID нулю. В большинстве дистрибутивов Linux имя аккаунта суперпользователя — root, поэтому часто его называют именно так. Однако имя суперпользователя можно поменять: например, в дистрибутиве GoboLinux имя суперпользователя на спор заменили на "gobo" (потребовалось специально пропатчить ядро), а в будущих версиях обещали дать возможность придумать имя суперпользователя при установке. В некоторых других Unix-подобных системах аккаунт суперпользователя также назывался не root'ом, а иначе.
Для выполнения отдельных административных действий от имени данной учётной записи существуют специальные механизмы: su и sudo.
Команда sudo предоставляет возможность пользователям выполнять отдельные команды от имени root, либо других пользователей.
Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers; язык их написания и примеры использования довольно подробно изложены в sudoers(5).
Редактирование данного файла лучше выполнять с помощью команды visudo - специальной прослойки к редактору vim (либо любому другому). visudo проверит перед сохранением файл на корректность. Кроме того используются другие механизмы защиты, например, создание файла блокировки для предотвращения одновременного редактирования файла /etc/sudoers.
Пример:
username ALL=(ALL) ALL
Такая строка в этом файле разрешит пользователю username выполнить любую команду, при этом будет запрошен пароль текущего пользователя.
Чтобы запустить команду от имени суперпользователя используйте следующий синтаксис:
sudo command
Иногда возникают трудности, когда надо записать что-нибудь в файл с привилениями root. например надо выполнить echo 4 4 1 7 > /proc/sys/kernel/printk
выполнение напрямую ничего не даст:
sudo echo 4 4 1 7 > /proc/sys/kernel/printk bash: /proc/sys/kernel/printk: Permission denied
так как sudo прекращает чтение команды на символе передачи вывода ">". И фактически вывод происходит с привилениями обычного пользователя. Чтобы избежать этого:
sudo sh -c "echo 4 4 1 7 > /proc/sys/kernel/printk"
или, как вариант:
echo 4 4 1 7 | sudo tee /proc/sys/kernel/printk > /dev/null
Попасть в шелл интерактивно аналогично работе su, используя параметр -s или -i:
sudo -s
или
sudo -i
указание параметра -i приводит к тому, что при выполнении команды sudo обрабатываются специфичные для процедуры входа в систему файлы (.login, .profile). Так же будут инициализированы переменные HOME, SHELL, USER, LOGNAME и PATH. Переменные DISPLAY и TERM сохранят свои текущие значения.
Для редактирования общесистемного конфигурационного файла достаточно запустить с правами root текстовый редактор открыв этот файл, например:
sudo gedit /path/to/file.config
sudo nano /path/to/file.config
sudo vi /path/to/file.config
Или, почитав матчасть, вместо всего вышеперечисленного сделать:
sudo -e /path/to/file.config
su (set user) это команда Unix-подобных операционных систем, позволяющая пользователю временно войти в систему под другим именем, не завершая текущий сеанс. Обычно используется для временного входа суперпользователем для выполнения административных работ.
Команда su требует пароль того пользователя, права которого мы получаем (в нашем случае - пароль root).
su [-] [имя_пользователя [аргумент ... ]]
Существуют графические фронтенды к этим командам, например:
В настройках SSH-сервера имеет смысл запретить подключение от учётной записи root.
В sshd_config для этого следует выключить параметр PermitRootLogin:
PermitRootLogin no
Тогда злоумышленнику, подбирающему пароль, понадобиться подбирать также и имя пользователя, с которым можно подключиться.