Поиск по сайту:

Что такое «рут» в Linux?


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

История происхождения

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

Концепция пользователя root была унаследована от Unix, в которой пользователь root был суперпользователем-администратором. А вот откуда взялось название «корень», точно неизвестно. Некоторые люди думают, что это произошло из операционной системы Multics, которая предшествовала Unix.

Кен Томпсон и Деннис Ритчи, два наиболее важных архитектора и автора Unix, ранее работали над Multics. У Multics была файловая система, которая начиналась в точке, называемой корневым каталогом или «/», а все остальные каталоги и подкаталоги разветвлялись вниз и наружу от корня, как перевернутое дерево. Это такая же древовидная структура, принятая в Unix. Итак, может быть, Unix также перенял пользователя root от Multics?

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

Другая теория состоит в том, что на заре Unix домашней папкой суперпользователя был корень «/» файловой системы. Суперпользователю нужно имя. Термин «пользователь root» использовался вместо официального имени, но этот термин прижился и стал официальным названием.

Это кажется более вероятным, но никто не может точно сказать, как пользователь root получил свое имя.

Команда sudo

В любой операционной системе рекомендуется зарезервировать суперпользователя только для административных целей, а в остальное время использовать учетную запись обычного пользователя. Фактически, большинство современных дистрибутивов Linux не позволяют вам войти в систему как пользователь root.

Конечно, это Linux, поэтому вы можете настроить его так, чтобы пользователь root мог входить в систему. Но чем меньше времени вы проводите в качестве root, тем лучше. Помимо защиты себя от несчастных случаев, связанных с опечатками, если вы не можете войти в систему как root, никто другой не сможет. Любой, кто получит несанкционированный доступ к вашей системе, не сможет войти в систему как root, что ограничивает ущерб, который он может нанести.

Но если вход в систему как root отключен, как вы будете администрировать свой компьютер с Linux? Для этого и предназначена команда sudo. Он не требует входа в систему от пользователя root. Он временно наделяет вас полномочиями root. Это все равно, что взять молот Тора Мьёльнир и временно получить силы Тора. Но поднять молот можно только в том случае, если ты достоин. Точно так же не каждый может использовать команду sudo. Команда sudo наделяет вас полномочиями root только в том случае, если вы признаны достойным и добавлены в список sudoers.

Есть еще одна команда, похожая на sudo, которая называется su. С помощью sudo вы выполняете аутентификацию, используя свой собственный пароль. С помощью su вы аутентифицируетесь, используя пароль пользователя root. Это важно в двух отношениях. Во-первых, это означает, что вам нужно назначить пароль пользователю root для использования su. По умолчанию у пользователя root нет пароля, и это способствует безопасности. Если у root нет пароля, вы не сможете войти в систему как root.

Во-вторых, если вы установите пароль root, каждый, кто будет использовать команду su, должен знать пароль. А делиться паролями — это безопасность ни-ни, а для рут-пароля и подавно. Любой из людей, знающих пароль root, может рассказать кому-то еще. Если вам нужно изменить пароль root, вам необходимо сообщить новый пароль всем людям, которым необходимо его знать.

Гораздо безопаснее использовать список sudoers, чтобы ограничить, кто может использовать sudo, и позволить каждому привилегированному лицу использовать свои индивидуальные пароли для аутентификации.

Использование судо

Файл «/etc/shadow» содержит имя пользователя каждой учетной записи на вашем компьютере с Linux, а также другую информацию, включая зашифрованный пароль каждой учетной записи, дату последнего изменения пароля и дату истечения срока действия пароля. Поскольку он содержит конфиденциальную информацию, его может прочитать только пользователь root.

Если мы попытаемся использовать команду wc для чтения строк, слов и символов в теневом файле, нам будет отказано в разрешении.

wc /etc/shadow

Если мы находимся в списке sudoers и используем ту же команду с sudo в начале строки, нам будет предложено ввести наш пароль, и команда будет выполнена для нас. Если вы единственный пользователь на своем компьютере с Linux, вы автоматически добавитесь в список sudoers при установке системы.

sudo wc /etc/shadow

Поскольку мы запускаем команду от имени пользователя root, выполняется команда wc. Никто не отрицает рут.

Команда sudo раньше означала «суперпользователь делает». Он был улучшен, чтобы вы могли запускать команду от имени любого пользователя, поэтому он был переименован в «заменить пользователя». Команда на самом деле выполняется так, как если бы ее запускал другой пользователь. Если вы не укажете имя пользователя, sudo по умолчанию использует root. Если вы хотите использовать другого пользователя, используйте параметр -u (пользователь).

Мы видим, что команды выполняются от имени другого пользователя с помощью команды whoami.

whoami
sudo whoami
sudo -u mary whoami

Запуск от root без использования su

Проблема с sudo заключается в том, что вы должны использовать «sudo» в начале каждой команды. Если вы просто вводите одну или две команды, это не имеет большого значения. Если вам нужно выполнить более длинную последовательность команд, это может стать утомительным. Это может быть утомительно, но это действует как полезная предохранительная защелка для способностей root, и вы должны сознательно снимать предохранитель каждый раз.

Существует способ эффективно «войти в систему» как root , который не использует su и не требует, чтобы у пользователя root был пароль.

Использование sudo для запуска оболочки Bash открывает новую оболочку с пользователем root.

sudo bash

Обратите внимание, что командная строка изменилась. Последним символом подсказки теперь является решетка «#» вместо символа доллара «$».

Способ отображения командной строки зависит от дистрибутива. В Ubuntu нам сообщают, что пользователь является root, и показывают имя компьютера и текущий рабочий каталог. Цвет подсказки тоже изменился.

Поскольку мы root, мы можем выполнять команды, которые обычно требуют использования sudo.

wc /etc/shadow

Чтобы выйти из оболочки пользователя root, нажмите «Ctrl + D» или введите «exit» и нажмите «Enter».

exit

Меньше Супермена, больше Кларка Кента

Если вы находитесь в списке sudoers, у вас есть суперсила над вашей системой Linux. Просто помните, что Супермен проводит больше времени в образе своего кроткого альтер-эго, чем в красном плаще.

Максимально используйте свою учетную запись обычного пользователя. Переключайтесь на root только тогда, когда вам это действительно нужно.