Пользователи в 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), но нужно ли это — вопрос открытый.

 

Один ответ

  1. Большое спасибо,Сергей, за более-менее толковую объяснялку о правах пользователей в системе Линукс Мята.Ещё было бы полезно заодно добавить объяснения о группе SUDOERS, членом которой я не являлся в одном из опробованных комплектов (а не дистрибутивов!) семейства DEBIAN, из-за чего терминал отказался исполнять некоторые мои команды.Но,по моему мнению, в статье есть некоторые несуразности, которые пока мешают более ясному пониманию сути.Я надеюсь, что вы различаете деловую критику и пустое критиканство.
    Я считаю, что многие пользователи с немалым трудом понимают объяснялки компьютерщиков как раз потому,что у большинства русскоязычных ИТ-спецов в головах содержится мешанина из аглицких терминов, которые очень часто вместо смыслового перевода просто-напросто переписываются русскими буквами с совершенно безалаберной ПОДМЕНОЙ смыслов и понятий при этом.Совсем как в песне «»Ой,Ваня,я гуляю по Парижу»» великого поэта В.С.Высоцкого, которую он посвятил своему коллеге Ивану Бортнику :
    Все эмигранты здесь второго поколенья.
    Они всё путают : и ИМЯ, и НАЗВАНИЕ !
    И ты бы,Ваня, у них был Вания !
    Итак, мои замечания по ходу чтения статьи.
    1.Верно замечено, что существует иерархия (главенство) пользователей внутри системы: рут, администратор(-ы) и рядовой пользователь(-и) (а никак не «стандартный» юзер, поскольку слово *стандарт* имеет другой смысл и к данной иерархии совсем не относится).
    2.В очень неудачном определении *административные действия* слово-прилогательное *административные* прямо-таки заставлЯет читателя понимать это как нечто относящееся к ведению только администратора. Я считаю, что будет горАААздо точнее и понятнее, если обозначить их как *РАСПОРЯДИТЕЛЬНЫЕ действия (в системе)*, которые в вышеуказанной иерархии вправе производить не только администратор.
    3.В главке SU и SUDO первые два абзаца это опять же сплошная *каша* из невразумительных определений.Цитата: *Эта команда переключает текущего пользователя на root*. Мой вопрос: *текущий пользователь* это только администратор? Или только рядовой? Или оба являются *текущими*?
    3-а.В начале второго абзаца речь идёт о некой ОТДЕЛЬНОЙ(?) программе, а в его конце уже о некоей ЦЕЛЕВОЙ(?) программе. Если речь об одной и той же программе, то тогда фразу изначально надо писать более вразумительно, то есть вот так: *…sudo запрашивает пароль текущего пользователя (рядового или админа??), а ВЫБРАННУЮ ИМ программу запускает с правами root.*
    4.В главке SUDO SU последняя фраза составлена весьма КО-РЯ-ВО ! Будет намнОООго понятнее, если написать про каждую команду по отдельности: Команда sudo -i меняет домашний каталог на /root. При команде sudo -s домашний каталог текущего пользователя остаётся домашним.
    5.Оно конечно, вывод №3 сообщает, что *Команду sudo могут выполнять только администраторы, ОБЫЧНЫЕ(видимо,рядовые?) пользователи — нет. Но в тексте самой статьи это объяснено весьма и весьма расплывчато-туманно.

    Сейчас вот собираюсь установливать комплект(!) Линукс Мята на старенький маломощный ноут и в окне настройки параметров учётной записи как обычно *зависаю* от невразумительности требований ко мне, потому что в НОРМАЛЬНОМ русском языке ИМЯ могут иметь только одушевлённые предметы (люди или животные), а все НЕодушевлённые предметы и явления могут иметь только НАЗВАНИЯ. Поэтому я с некоторой изжогой пытаюсь сообразить почему НЕодушевлённый компьютер якобы должен иметь ИМЯ, когда на грамотном русском ему пологается как раз НАЗВАНИЕ.
    Но вобщем-то. Сергей, ещё раз спасибо за толковую объяснялку этих замороченных прав.

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

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