Документ взят из кэша поисковой машины. Адрес оригинального документа : http://uneex.lorien.cs.msu.su/Books/LinuxIntro/01ChapterSession
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 03:12:01 2016
Кодировка: UTF-8
Books/LinuxIntro/01ChapterSession - UNИX

Пользователи системы

Между включением питания компьютера и моментом, когда система готова к работе с пользователем, происходит процедура загрузки системы. В процессе загрузки будет запущена основная управляющая программа (ядро), определено и инициализировано имеющееся оборудование, активизированы сетевые соединения, запущены системные службы. В Linux во время загрузки на экран выводятся диагностические сообщения о происходящих событиях, и если все в порядке и не возникло никаких ошибок, загрузка завершится выводом на экран приглашения "login:". Оно может быть оформлено по-разному, в зависимости от настройки системы оно может отображаться в красиво оформленном окне или в виде простой текстовой строки вверху экрана. Это приглашение к регистрации в системе: система ожидает, что в ответ на это приглашение будет введено входное имя пользователя, который начинает работу. Естественно, имеет смысл вводить такое имя, которое уже известно системе, чтобы она могла "узнать", с кем предстоит работать, выполнять команды "незнакомого" Linux откажется.

Многопользовательская модель разграничения доступа

Процедура регистрации в системе обязательна для Linux, работать в системе, не зарегистрировавшись под тем или иным именем пользователя, просто невозможно(1). Для каждого пользователя определена сфера его полномочий в системе: программы, которые он может запускать, файлы, которые он имеет право просматривать, изменять, удалять. При попытке сделать что-то, выходящее за рамки полномочий, пользователь получит сообщение об ошибке. Такая строгость может показаться необязательной, если пользователи компьютера доверяют друг другу, и особенно если у компьютера только один пользователь. Такая ситуация очень распространена на сегодняшний день, когда слово "компьютер" означает в первую очередь "персональный компьютер".

Однако персональный компьютер -- довольно-таки позднее явление в мире вычислительной техники, получившее широкое распространение только в последние два десятилетия. Несколько раньше "компьютер" ассоциировался с огромным и дорогостоящим (занимавшем целые залы) вычислительным центром, предназначенным в первую очередь для решения разного рода научных задач. Машинное время такого центра стоит очень недешево, и при этом его возможности необходимы одновременно многим сотрудникам, которые могут ничего не знать о работе друг друга. Требуется следить за тем, чтобы не произошло случайного вмешательства пользователей в чужую работу и повреждения чужих данных (файлов), выделять каждому машинное время (по возможности избежав простаивания), пространство на диске и при этом не допустить узурпирования всех ресурсов одним пользователем и его задачей, а равномерно делить ресурсы между всеми. Для такой системы принципиально важно знать, кому принадлежат задачи и файлы, поэтому и возникла необходимость выдавать доступ к ресурсам системы только после того, как пользователь зарегистрируется в системе под тем или иным именем.

Такая модель была реализована в многопользовательской операционной системе UNIX. Именно от нее Linux -- также многопользовательская система -- унаследовал принципы работы с пользователями. Но это не просто дань традиции или стремление к универсальности: многопользовательская модель позволяет решить ряд задач, весьма актуальных и для современных персональных компьютеров, и для серверов, работающих в локальных и глобальных сетях, и вообще в любых системах, одновременно выполняющих разные задачи, отвечают за которые разные люди.

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

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

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

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

Учетные записи

Конечно, система может быть "знакома" с человеком только в переносном смысле: в ней должна храниться запись о пользователе с таким именем и о связанной с ним системной информации -- учетная запись. Английский эквивалент термина учетная запись -- account, "счет". Именно с учетными записями, а не с самими пользователями, и работает система. В действительности, соотношение учетных записей и пользователей-людей в Linux обычно не является однозначным: несколько человек могут использовать одну учетную запись -- система не может их различить. И в то же время в Linux имеются учетные записи для системных пользователей, от имени которых работают некоторые программы и которые не предназначены для работы людей.

учетная запись

Объект системы, при помощи которого Linux ведет учет работы пользователя в системе. Учетная запись содержит данные о пользователе, необходимые для регистрации в системе и дальнейшей работы с ней.

Учетные записи могут быть созданы во время установки системы или после установки. Подробно процедура создания учетных записей (добавления пользователей) описана в лекции Конфигурационные файлы.

Главное для человека в учетной записи -- ее название, входное имя пользователя. Именно о нем спрашивает система, выводя приглашение "login:". Помимо входного имени в учетной записи содержатся некоторые сведения о пользователе, необходимые системе для работы с ним. Ниже приведен список этих сведений.

входное имя

Название учетной записи пользователя, которое нужно вводить при регистрации пользователя в системе.

Идентификатор пользователя

Linux связывает входное имя c идентификатором пользователя в системе -- UID (User ID). UID -- это положительное целое число, по которому система и отслеживает пользователей(2). Обычно это число выбирается автоматически при регистрации учетной записи, однако оно не может быть совершенно произвольным. В Linux есть некоторые соглашения относительно того, каким типам пользователей могут быть выданы идентификаторы из того или иного диапазона. В частности, UID от "0" до "100" зарезервированы для псевдопользователей(3).

идентификатор пользователя

Уникальное число, однозначно идентифицирующее учетную запись пользователя в Linux. Таким числом снабжены все процессы Linux и все объекты файловой системы. Используется для персонального учета действий пользователя и определения прав доступа к другим объектам системы

Идентификатор группы

Кроме идентификационного номера пользователя с учетной записью связан идентификатор группы. Группы пользователей применяются для организации доступа нескольких пользователей к некоторым ресурсам. У группы, так же, как и у пользователя, есть имя и идентификационный номер -- GID (Group ID). В Linux пользователь должен принадлежать как минимум к одной группе -- группе по умолчанию. При создании учетной записи пользователя обычно создается и группа, имя которой совпадает с входным именем(4), именно эта группа будет использоваться как группа по умолчанию для этого пользователя. Пользователь может входить более чем в одну группу, но в учетной записи указывается только номер группы по умолчанию.

Полное имя

Помимо входного имени в учетной записи содержится и полное имя (имя и фамилия) использующего данную учетную запись человека. Конечно, пользователь может указать что угодно в качестве своего имени и фамилии. Полное имя необходимо не столько системе, сколько людям -- чтобы иметь возможность определить, кому принадлежит учетная запись.

Домашний каталог

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

Командная оболочка

Каждому пользователю нужно предоставить способ взаимодействовать с системой: передавать ей команды и получать ее ответы. Для этой цели служит специальная программа -- командная оболочка (или интерпретатор командной строки), она должна быть запущена для каждого пользователя, зарегистрировавшегося в системе. Поскольку в Linux доступно несколько разных командных оболочек, в учетной записи указано, какую из командных оболочек нужно запустить для данного пользователя. Если специально не указывать командную оболочку при создании учетной записи, она будет назначена по умолчанию, вероятнее всего это будет bash.

интерпретатор командной строки

Программа, используемая в Linux для организации диалога человека и системы. Командный интерпретатор имеет три основных ипостаси: (1) редактор и анализатор команд в командной строке, (2) высокоуровневый системно-ориентированный язык программирования, (3) средство организации взаимодействия команд друг с другом и с системой.

Понятие "администратор"

В Linux есть ровно один пользователь, полномочия которого в системе принципиально отличаются от полномочий остальных пользователей -- это пользователь с идентификатором "0". Обычно учетная запись пользователя с UID=0 называется root (англ., "корень"). Пользователь root -- это "администратор" системы Linux, учетная запись для root обязательно присутствует в любой системе Linux, даже если в ней нет никаких других учетных записей. Пользователю с таким UID разрешено выполнять любые действия в системе, а значит, любая ошибка или неправильное действие может повредить систему, уничтожить данные и привести к другим печальным последствиям. Поэтому категорически не рекомендуется регистрироваться в системе под именем root для повседневной работы. Работать в root следует только тогда, когда это действительно необходимо: при настройке и обновлении системы, восстановлении после сбоев.

Именно root обладает достаточными полномочиями для создания новых учетных записей.

Регистрация в системе

Вернемся теперь к нашей загруженной операционной системе Linux, которая по-прежнему ожидает ответа на свое приглашение "login:". Если Ваша система настроена таким образом, что это приглашение оформлено в виде графического окна в центре экрана, нажмите комбинацию клавиш Ctrl+Alt+F1 -- произойдет переключение видеорежима и Вы увидите перед собой черный экран с примерно следующим текстом:

Welcome to Some Linux / tty1 

localhost login:

Начальное приглашение к регистрации

Мы переключились в так называемый текстовый режим, в котором нам недоступны возможности графических интерфейсов: рисование окон произвольной формы и размера, поддержка миллионов цветов, отрисовка изображений. Все возможности текстового режима ограничены набором текстовых и псевдографических символов и несколькими десятками базовых цветов. Однако в Linux в текстовом режиме можно выполнять практически любые действия в системе (кроме тех, которые требуют непосредственного просмотра изображений). Текстовый режим в Linux -- это полнофункциональный способ управления системой. В различных реализациях Linux работа в графическом режиме может выглядеть очень по-разному(5), более того, графический режим может быть даже недоступен после установки системы без специальной настройки. Текстовый режим, напротив, доступен в любой реализации Linux и всегда выглядит практически одинаково. Именно поэтому все дальнейшие примеры и упражнения мы будем проделывать в текстовом режиме, возможностей которого будет достаточно для освоения всего излагаемого в курсе материала.

Первая строка в примере -- это просто приглашение, она носит информационный характер. Существует очень много различных реализаций Linux (существующие реализации будут обсуждаться в лекции Политика свободного лицензирования. История Linux: от ядра к дистрибутивам), и в каждом из них принят свой формат первой пригласительной строки, хотя почти наверняка там будет указано, с какой именно версией Linux Вы имеете дело, и, возможно, будут присутствовать еще некоторые параметры. В наших примерах мы будем использовать условную реализацию Linux -- "Some Linux".

Вторая строка начинается с имени хоста -- собственного имени системы, установленной на данном компьютере. Это имя существенно в том случае, если компьютер подключен к локальной или глобальной сети, если же он ни с кем более не связан, это имя может быть любым. Обычно имя хоста определяется уже при установке системы, однако в нашем случае этого сделано не было, и используется вариант по умолчанию -- "localhost". Заканчивается эта строка собственно приглашением к регистрации в системе -- словом "login:".

Теперь понятно, что в ответ на это приглашение мы должны ввести входное имя, для которого есть соответствующая учетная запись в системе. В правильно установленной операционной системе Linux должна существовать как минимум одна учетная запись для обычного пользователя. Во всех дальнейших примерах у нас будет участвовать Мефодий Кашин, владелец учетной записи "methody" в системе "Some Linux". Вы можете пользоваться для выполнения примеров любой учетной записью, которая создана в Вашей системе (естественно, кроме root).

Итак, Мефодий вводит свое входное имя в ответ на приглашение системы:

Welcome to Some Linux / tty1
localhost login: Methody

Password:
Login incorrect

login:

Регистрация в системе

В ответ на это система запрашивает пароль. Пароль Мефодия нам неизвестен, поскольку он его никому не говорит. Когда Мефодий вводил свой пароль, на экране монитора он не отображался (это сделано, чтобы пароль нельзя было подсмотреть), однако Мефодий точно знает, что не сделал опечатки. Тем не менее система отказала ему в регистрации, выдав сообщение об ошибке ("Login incorrect"). Если же внимательно посмотреть на введенное им имя пользователя, можно заметить, что оно начинается с заглавной буквы, в то время как учетная запись называется "methody". Linux всегда делает различие между заглавными и строчными буквами, поэтому "Methody" для него -- уже другое имя. Теперь Мефодий повторит попытку:

login: methody
Password:
[methody@localhost methody]$ 

Успешная регистрация в системе

В этот раз регистрация прошла успешно, о чем свидетельствует последняя строка примера -- приглашение командной строки. Приглашение -- это подсказка, выводимая командной оболочкой и свидетельствующая о том, что система готова принимать команды пользователя. Приглашение может быть оформлено по-разному, более того, пользователь может сам управлять видом приглашения (подробнее это будет рассмотрено в лекции Возможности командной оболочки), но почти наверняка в приглашении содержатся входное имя и имя хоста -- в нашем примере это "methody" и "localhost" соответственно. Заканчивается приглашение чаще всего символом "$". Это командная строка, в которой будут отображаться все введенные пользователем с клавиатуры команды, а при нажатии на клавишу Enter содержимое командной строки будет передано для исполнения системе.

Идентификация (authentication)

Когда система выводит на экран приглашение командной строки после того, как правильно введены имя пользователя и пароль, это означает, что произошла идентификация пользователя (authentication, "проверка подлинности"). Пароль может показаться излишней сложностью, но у системы нет другого способа удостовериться, что за монитором находится именно тот человек, который имеет право на использование данной учетной записи.

Конечно, процедура идентификации имеет очевидное значение для систем, к которым имеют непосредственный или сетевой доступ многие не связанные друг с другом пользователи. Процедура идентификации дает уверенность, что к такой системе не получит доступ случайный человек, не имеющий права использовать ее ресурсы и хранящуюся там информацию. Одновременно она дает определенную гарантию безопасности от злонамеренного вмешательства: даже если навредить попытается пользователь, имеющий учетную запись, его действия будут зарегистрированы в системе (поскольку системе всегда известно, от имени какой учетной записи выполняются те или иные действия), и злоумышленника можно будет найти и остановить.

Для тех пользователей, кому процедура идентификации кажется утомительной и необязательной (например, единственным пользователям персональных компьютеров), существует возможность получить доступ к системе, минуя процедуру идентификации. Для этой цели служит программа autologin. Она предоставляет доступ к работе с графическим интерфейсом сразу после загрузки системы, не запрашивая имя пользователя и пароль. В действительности, autologin запускает все программы от имени одного пользователя, зарегистрированного в системе. Например, Мефодий мог бы использовать свою учетную запись methody для автоматического входа в систему. Однако у этого подхода есть свои минусы:

Учитывая все перечисленные минусы, можно заключить, что использовать autologin разумно только в тех системах, которые не подключены к локальной или глобальной сети, и к которым при этом открыт публичный доступ (например, в библиотеке).

Смена пароля

Если учетная запись была создана не самим пользователем, а администратором многопользовательской системы (скажем, администратором компьютерного класса), скорее всего был выбран тривиальный пароль с тем расчетом, что пользователь его изменит при первом же входе в систему. Распространены тривиальные пароли "123456", "empty" и т. п. Поскольку пароль -- это единственная гарантия, что Вашей учетной записью не воспользуется никто, кроме Вас, есть смысл выбирать в качестве пароля неочевидные последовательности символов. В Linux нет серьезных ограничений на длину пароля или входящие в него символы (в частности, использовать пробел можно), но нет смысла делать пароль слишком длинным -- сразу возрастает опасность его забыть. Надежность паролю придает его непредсказуемость, а не длина. Например, пароль, представляющий собой Ваше имя или повторяющий название учетной записи, очень предсказуем. Наименее предсказуемы пароли, представляющие собой случайную комбинацию прописных и строчных букв, цифр, знаков препинания, но их и труднее всего запомнить.

Пользователь может в любой момент поменять свой пароль. Единственное, что требуется для смены пароля -- знать текущий пароль. Допустим, Мефодий придумал более удачный пароль и решил его поменять. Он уже зарегистрирован в системе, поэтому ему нужно только набрать в командной строке команду passwd и нажать Enter.

[methody@localhost methody]$ passwd
Changing password for methody.
Enter current password: 

You can now choose the new password or passphrase.

A valid password should be a mix of upper and lower case letters,
digits, and other characters.  You can use an 8 character long
password with characters from at least 3 of these 4 classes, or
a 7 character long password containing characters from all the
classes.  An upper case letter that begins the password and a
digit that ends it do not count towards the number of character
classes used.

A passphrase should be of at least 3 words, 12 to 40 characters
long and contain enough different characters.

Alternatively, if noone else can see your terminal now, you can
pick this as your password: "spinal&state:buy".

Enter new password: 

Смена пароля

Набрав в командной строке "passwd", Мефодий запустил программу passwd, которая предназначена именно для замены информации о пароле в учетной записи пользователя. Она вывела приглашение ввести текущий пароль ("Enter current password"), а затем, в ответ на правильно введенный пароль, предложила подсказку про грамотное составление пароля и даже вариант надежного пароля, который Мефодий вполне может использовать, если никто в данный момент не видит его монитора. При каждом запуске passwd генерирует новый случайный пароль и предлагает его пользователю. Однако Мефодий не воспользовался подсказкой и придумал пароль сам.

Enter new password: 
Weak password: not enough different characters or classes for this length.
Try again.

. . .

Enter new password: 

Смена пароля (продолжение)

В данном случае операция не удалась, поскольку с точки зрения passwd пароль, придуманный Мефодием, оказался слишком простым(6). В следующий раз ему придется ввести более сложный пароль. passwd запрашивает новый пароль дважды, чтобы удостовериться, что в первый раз не было сделано опечатки, если же все в порядке, она выведет сообщение о том, что операция смены пароля прошла успешно, и завершит работу, вернув Мефодию приглашение командной строки.

Enter new password:
Re-type new password:
passwd: All authentication tokens updated successfully
[methody@localhost methody]$

Пароль изменен

Придирчивость, с которой passwd относится к паролю пользователя, не случайна. Пароль пользователя -- одно из самых важных и зачастую одно из самых слабых мест безопасности системы. Отгадавший Ваш пароль (причем не имеет значение, человек это сделал или злонамеренная программа) получит доступ к ресурсам системы ровно в том объеме, в котором он предоставляется Вам, сможет читать и удалять Ваши файлы и т. п. Особенно это важно в случае пароля администратора, потому что его полномочия в системе гораздо шире, а действия от его имени могут повредить и саму систему. Обычному пользователю в некоторых обстоятельствах также могут быть переданы полномочия администратора (этот вопрос будет подробно обсуждаться в лекции Права доступа), в таком случае не менее важно, чтобы и его пароль был надежным.

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

Одновременный доступ к системе

То, что Linux -- многопользовательская и многозадачная система, проявляется не только в разграничении прав доступа, но и в организации рабочего места. Каждый компьютер, на котором работает Linux, предоставляет возможность зарегистрироваться и получить доступ к системе одновременно нескольким пользователям. Даже если в распоряжении всех пользователей есть только один монитор и одна системная клавиатура, эта возможность небесполезна: одновременная регистрация в системе нескольких пользователей позволяет работать по очереди без необходимости каждый раз завершать все начатые задачи (закрывать все окна, прерывать исполнение всех программ) и затем возобновлять их. Более того, ничто не препятствует зарегистрироваться в системе несколько раз под одним и тем же входным именем. Таким образом, можно получить доступ к одним и тем же ресурсам (своим файлам) и организовать параллельную работу над несколькими задачами.

Виртуальные консоли

Характерный для Linux способ организации параллельной работы пользователей -- виртуальные консоли.

Допустим, что Мефодий хочет зарегистрироваться в системе еще раз, чтобы иметь возможность следить за выполнением двух программ одновременно. Он может сделать это, не покидая текстового режима: достаточно нажать комбинацию клавиш Alt+F2, и на экране появится новое приглашение к регистрации в системе.

Welcome to Some Linux / tty2
localhost login: methody
Password:
[methody@localhost methody]$

Вторая виртуальная консоль

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

Наблюдательный Мефодий обратил внимание, что в последнем примере (tty2) первая строка приглашения оканчивается словом "tty2". "tty2" -- это обозначение второй виртуальной консоли. Можно переключаться между виртуальными консолями так, как если бы Вы переходили от одного монитора с клавиатурой к другому, подавая время от времени команды и следя за выполняющимися там программами. По умолчанию в Linux доступно не менее 6-ти виртуальных консолей, переключаться между которыми можно при помощи сочетания клавиши Alt с одной из функциональных клавиш (F1--F6), с каждым сочетанием связана соответствующая по номеру виртуальная консоль. Виртуальные консоли обозначаются "ttyN", где "N" -- номер виртуальной консоли.

виртуальная консоль

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

Во многих дистрибутивах Linux одна из виртуальных консолей по умолчанию не может быть использована для регистрации пользователя, однако она не менее, если не более полезна. Если Мефодий нажмет Alt+F12, он увидит консоль, заполненную множеством сообщений системы о происходящих событиях. В частности, там он может обнаружить две записи о том, что в системе зарегистрирован пользователь "methody". На эту консоль выводятся сообщения обо всех важных событиях в системе: регистрации пользователей, выполнении действий от имени администратора (root), подключении устройств и подгрузке драйверов к ним и многое другое.

Пример двенадцатой виртуальной консоли показывает, что виртуальные консоли -- довольно гибкий механизм, поддерживаемый Linux, при помощи которого можно решать разные задачи, а не только организацию одновременного доступа к системе. Для того, чтобы на виртуальной консоли появилось приглашение login: после загрузки системы, для каждой такой консоли должна быть запущена программа getty. Попробуйте нажать Alt+F10 -- с большой вероятностью Вы увидите просто черный экран. Десятая виртуальная консоль поддерживается системой, однако черный экран означает, что для этой консоли не запущена никакая программа, поэтому воспользоваться ее существованием не получится. Для каких именно консолей будет запущена программа getty -- определяется настройкой конкретной системы. Впоследствии эта настройка может быть изменена пользователем. О том, как это может быть сделано, речь пойдет в лекции Этапы загрузки системы.

Графические консоли

Впрочем, как ни широки возможности текстового режима, Linux ими не ограничен. Подробно работа в графическом режиме будет разбираться в последующих лекциях (см. лекцию Графический интерфейс (X11)). Сейчас важно заметить, что если при загрузке системы приглашение "login:" было представлено в виде графического окна, можно вернуться к этому приглашению, нажав комбинацию клавиш Ctrl+Alt+F7. Процедура регистрации здесь будет совершенно аналогична регистрации в текстовом режиме. С той разницей, что после идентификации пользователя (правильно введенного имени пользователя и пароля) Вы увидите не приглашение командной строки, а графическую рабочую среду. Как именно она будет выглядеть -- зависит от того, какую систему Вы используете, и как она настроена.

Кроме того, что несколько пользователей (или несколько "копий" одного и того же пользователя) могут работать параллельно на разных виртуальных консолях, они могут параллельно зарегистрироваться и работать параллельно в разных графических средах. Обычно в стандартно настроенной Linux-системе можно организовать не менее трех графических консолей, работающих одновременно. Переключаться между ними можно при помощи сочетаний клавиш Ctrl+Alt+F7--Ctrl+Alt+F9.

Чтобы переключиться из графического режима в одну из текстовых виртуальных консолей, достаточно нажать комбинацию клавиш Ctrl+Alt+FN, где "N" -- номер необходимой виртуальной консоли.

Простейшие команды

Работа в Linux при помощи командной строки напоминает диалог с системой: пользователь вводит команды (реплики), получая от системы ответные реплики, содержащие сведения о произведенных операциях, дополнительные вопросы к пользователю, сообщения об ошибках или просто молчаливое согласие выполнить следующую команду(7).

Простейшая команда в Linux состоит из одного "слова" -- названия программы, которую необходимо выполнить. Одну такую команду (passwd) Мефодий уже использовал для того, чтобы изменить свой пароль. Теперь Мефодий решил вернуться на одну из виртуальных консолей, на которой он зарегистрировался, и попробовать выполнить несколько простых команд.

[methody@localhost methody]$ whoami
methody
[methody@localhost methody]$

Команда whoami

Название этой команды происходит от английского выражения "Who am I?" ("Кто я?"). В ответ на эту команду система вывела только одно слово: "methody" и завершила свою работу, о чем свидетельствует вновь появившееся приглашение командной строки. Программа whoami возвращает название учетной записи того пользователя, от имени которого она была выполнена. Эта команда полезна в системах, в которых работает много разных пользователей, чтобы не воспользоваться по ошибке чужой учетной записью. Однако, в приглашении командной строки зачастую указывается имя пользователя (как и в наших примерах), поэтому без команды whoami можно обойтись. Следующий пример демонстрирует программу, которая выдаст Мефодию уже больше полезной информации: who ("Кто").

[methody@localhost methody]$ who
methody       tty1         Sep 23 16:31 (localhost)
methody       tty2         Sep 23 17:12 (localhost)
[methody@localhost methody]$
[methody@localhost methody]$ who am i
methody       tty2         Sep 23 17:12 (localhost)
[methody@localhost methody]$

Команда who

who выводит список пользователей, которые в настоящий момент зарегистрированы в системе (вошли в систему). Данная программа выводит по одной строке на каждого зарегистрированного пользователя: в первой колонке указывается имя пользователя, во второй -- "точка входа" в систему, далее следует дата и время регистрации и имя хоста. Из выведенной who информации можно заключить, что в системе дважды зарегистрирован пользователь methody, который сначала зарегистрировался на первой виртуальной консоли (tty1), а примерно через сорок минут -- на второй (tty2). Конечно, Мефодий и так это знает, однако администратору больших систем, когда пользователи могут зарегистрироваться со многих компьютеров и даже по Сети, программа who может быть очень полезна. Могло создаться впечатление, что who -- очень умная программа, понимающая английский, но это не так. Из всех английских слов она понимает только сочетание "am i" -- таким способом Мефодий узнал, за какой консолью он сейчас работает.

Еще одна программа, выдающая информацию о пользователях, работавших в системе в последнее время -- last(8). Выводимые этой программой строки напоминают вывод программы who, с той разницей, что здесь перечислены и те пользователи, которые уже завершили работу.

[methody@localhost methody]$ last
methody  tty2         localhost        Thu Sep 23 17:12   still logged in
methody  tty1         localhost        Thu Sep 23 16:31   still logged in   
cacheman ???          localhost        Thu Sep 23 16:15 - 16:17 (00:01)     
cacheman ???          localhost        Thu Sep 23 16:08 - 16:08 (00:00)     
cyrus    ???          localhost        Thu Sep 23 16:08 - 16:08 (00:00)     
reboot   system boot  2.4.26-std-up-al Thu Sep 23 16:03         (04:13)     

Команда last

В этом примере Мефодий неожиданно обнаружил кроме себя самого неизвестных ему пользователей cacheman и cyrus -- он совершенно точно знает, что не создавал учетных записей с такими именами. Это псевдопользователи (или системные пользователи) -- специальные учетные записи, которые используются для работы некоторыми программами. Поскольку эти "пользователи" регистрируются в системе без помощи монитора и клавиатуры, их "точка входа" в систему не определена (во второй колонке записано "???"). В выводе программы last появляется даже пользователь reboot (перезагрузка). В действительности такой учетной записи нет, программа last таким способом выводит информацию о том, когда была загружена система.

Выход из системы

В строках, выведенных программой last, указан не только момент регистрации пользователя в системе, но и момент завершения работы. Можно представлять Linux как закрытое помещение: чтобы начать работать нужно сначала войти в систему (зарегистрироваться, пройти процедуру идентификации), а после того, как работа закончена, нужно из системы выйти. В том случае, если в систему вошло несколько пользователей, каждый из них должен выйти, завершив работу, причем совершенно не имеет значения, разные это пользователи или "копии" одного и того же.

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

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

[methody@localhost methody]$ logout
Welcome to Some Linux / tty1
localhost login:

Команда logout

В ответ на эту команду вместо очередного приглашения командной строки возобновляется приглашение к регистрации в системе. На данной виртуальной консоли работа с Мефодием завершена, и теперь здесь снова может зарегистрироваться любой пользователь.

Есть и другой, еще более "немногословный" способ сообщить системе, что пользователь хочет завершить текущий сеанс работы. Нажав Alt+F2 Мефодий попадет на вторую виртуальную консоль, где все еще открыт сеанс для пользователя "methody" и нажмет сочетание клавиш Ctrl+D, чтобы прекратить и этот сеанс. Комбинация клавиш Ctrl+D приводит не к передаче компьютеру очередного символа, а к закрытию текущего входного потока данных. Грубо говоря, командная оболочка вводит команды пользователя с консоли, как если бы она читала их построчно из файла. Нажатие Ctrl+D сигнализирует ей о том, что этот "файл" закончился, и теперь ей неоткуда больше считывать команды. Такой способ завершения совершенно аналогичен явному завершению командной оболочки командой logout.


(1) Вместо формального "зарегистрироваться в системе" обычно используют выражение "войти в систему". Операционная система представляется чем-то вроде замкнутого помещения, внутри которого можно оказаться, только успешно проникнув через "дверь" -- пройдя процедуру регистрации.

(2) Это может оказаться важным, например, в такой ситуации: учетную запись пользователя с именем test удалили из системы, а потом добавили снова. Однако с точки зрения системы это уже другой пользователь, потому что у него другой UID.

(3) Обычно Linux выдает нормальным пользователям UID, начиная с "500" или "1000".

(4) Как правило, численное значение GID в этом случае совпадает со значением UID.

(5) Разнообразие графических интерфейсов Linux гораздо выше, чем, например, в Windows, поэтому составить учебный курс, не ориентируясь специально на ту или иную версию, просто невозможно.

(6) В разных дистрибутивах Linux используется разные версии программы passwd, поэтому не всегда она будет столь придирчива, как в дистрибутиве Мефодия.

(7) Реплики в таком диалоге строго чередуются, а собеседники не могут говорить одновременно -- в естественном диалоге так никогда не происходит. Скорее это напоминает диалог в учебнике иностранного языка. Однако и в диалоге с Linux у собеседников есть возможность "перебить" друг друга -- об этом речь пойдет в последующих лекциях.

(8) В некоторых Linux-системах эта программа может называться lastlog.

Books/LinuxIntro/01ChapterSession (последним исправлял пользователь FrBrGeorge 2008-08-26 21:42:56)