Пользователи в Ubuntu (Linux Mint)

Несколько месяцев назад меня озадачили вопросом: какой пароль от root в Linux Mint? Я пользуюсь этой системой не один месяц и к своему стыду никогда по-настоящему не задумывался над этим вопросом. А зря. Для выполнения административных действий я использовал пароль от пользователя, указанный мной при установке системы. Но текущий пользователь и root — это не одно и тоже.

root и другие

В Linux Mint существует два типа учетных записей: администратор и стандартный. При установке системы создается пользователь с типом учетной записи «администратор». Под ним я и работал все время, не задумываясь о root. Единственная разница между этими типами учетных записей состоит в том, что только «администратор» может повышать свои права до root, то есть выполнять команду sudo. Пользователи стандартной учетной записи этого делать не могут. Сразу возникает несколько вопросов. Зачем вообще нужен root? Почему не сделать так, как сделано в Windows, где есть администраторы и обычные пользователи? Причин несколько.

Линус Торвальдс при создании Linux ориентировался на Unix (это было еще до появления многопользовательской Windows) и многое взял оттуда. Пользователь root (он же суперпользователь) — неотъемлемая часть Unix. Это учетная запись с наивысшими правами (по сути тот же администратор в Windows). Предполагалось, что пользователи будут работать под обычными пользователями и лишь изредка для выполнения административных действий заходить под root. Для их удобства даже были созданы команды su и sudo (о них чуть позже). Эта практика перекочевала в Linux.

С появлением Ubuntu Linux-ом стали активно пользоваться не только матерые профессиональные программисты и системные администраторы, но и обычные пользователи далекие от технических деталей реализации и принципов ее работы. Постоянно переключаться между пользователем и root было лень. В результате чего некоторые стали сидеть под root. Разумеется это создавало огромную дыру в безопасности и нарушало сам принцип использования root. С этим нужно было что-то делать. (Кстати, по этой же самой причине Microsoft реализовала в Windows Vista механизм UAC).

В Canonical решили, что пользователям следует «забыть» о root. Как говорится, с глаз долой — из сердца вон. Однако просто удалить root из системы нельзя из-за обратной совместимости с ядром Linux. Поэтому там запретили входить в систему под этим пользователем. А для этого не стали устанавливать для него пароль. Поскольку root без пароля это все равно что самолет без крыльев, пользователи благополучно забыли про него. Чего в Canonical и добивались.

Но как насчет административных действий? Ведь пользователям все-равно как-то нужно устанавливать программы? Предоставлять такую возможность всем пользователям без разбора — слишком глупо. Поэтому пользователей разделили на две большие группы: администраторы (могут выполнять административные действия) и обычных пользователей (не могут их выполнять). Но если всем администраторам дать возможность свободно выполнять административные действия, мы вернемся к тому же от чего и ушли. Пользователи будут сидеть под администратором и это будет полностью эквивалентно тому, что они сидели под root.

Здесь-то и скрывается хитрость: администратор — это не root. Что это значит? Мы помним, что учетная запись root все еще существует в системе. В Linux только из-под нее можно выполнять административные действия. Получается, для того, чтобы установить программу мы все равно должны зайти в систему под root, даже если сидим под администратором. Но как, ведь у root нет пароля? И зачем тогда нужны администраторы? Тут-то и пригождается sudo.

su и sudo

Но начнем с su. Эта команда переключает текущего пользователя на root. Но так как у root нет пароля, она не может выполнить свою задачу и завершается с ошибкой.

Команда sudo запускает отдельную программу с правами root. Она не меняет текущего пользователя в отличие от su. Для подтверждения своей работы sudo, как и su, требует ввода пароля… И вот здесь фокус: она запрашивает пароль не root, а текущего пользователя. Это важный момент: sudo запрашивает пароль текущего пользователя, а целевую программу запускает с правами root.

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

Хорошо, sudo позволяет выполнить одну команду, но если мне надо выполнить несколько команд? Тут есть несколько вариантов. Первый:

sudo su

Здесь используется тот факт, что если su запускается от root, она не запрашивает пароль. После ввода пароля пользователя мы получаем интерпретатор с правами root. Еще два варианта:

sudo -s
sudo -i

Их действие похоже (но не аналогично) на sudo su. При этом sudo -s в отличие от sudo -i не меняет домашний каталог на /root, домашним остается домашний каталог текущего пользователя.

Выводы

  1. В Ubuntu для root не задан пароль, поэтому вы не можете войти в систему под этим пользователем, даже с помощью команды su.
  2. Для выполнения административных действий вы должны использовать sudo, которая запрашивает пароль текущего пользователя, а программы запускает с правами root.
  3. Команду sudo могут выполнять только администраторы, обычные пользователи — нет.
  4. Поскольку Linux Mint основан на Ubuntu, он придерживается такой же практики работы с пользователями.
  5. В Интернете немало руководств как задать пароль для root (и тем самым «починить» su), но нужно ли это — вопрос открытый.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *