Что такое "root" в Linux

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


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

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

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

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

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

Реклама

Еще одна теория заключается в том, что на заре Unix домашней папкой суперпользователя был корень "/" файловой системы. Суперпользователю требовалось имя. Вместо официального имени использовался термин "root user", но он прижился и стал официальным именем.

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


Команда sudo

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

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

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

СООТВЕТСТВУЮЩЕЕ Как контролировать доступ sudo в Linux

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

Реклама

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


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

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

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

wc /etc/shadow

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

sudo wc /etc/shadow

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

Реклама

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

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

whoamisudo whoamisudo -u mary whoami

RELATED: Как определить текущую учетную запись пользователя в Linux


Запуск от имени 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 только тогда, когда это действительно необходимо.

Ваше имя: *
Ваш e-mail: *
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: