Операционная система BeOS (БиОС). Особенности версии 5.0

Авторы:&#160&#160&#160 Г.В. Курячий, К.А. Маслинский
источник: www.intuit.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Входное имя (login name) — название учетной записи пользователя, которое нужно вводить при регистрации в системе.

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

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

Идентификатор пользователя, UID — уникальное число, однозначно идентифицирующее учетную запись пользователя в 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 работа в графическом режиме может выглядеть по-разному), более того, графический режим может быть даже недоступен после установки системы без специальной настройки. Текстовый же режим доступен в любой реализации Linux и всегда выглядит практически одинаково. Именно поэтому все дальнейшие примеры и упражнения мы будем рассматривать и выполнять в текстовом режиме, возможностей которого будет достаточно для освоения излагаемого в курсе материала.

Первая строка в примере — это просто приглашение, она носит информационный характер. Существует очень много различных реализаций Linux (называемых дистрибутивами, они будут обсуждаться в лекции 18), и в каждом из них принят свой формат первой строки приглашения, хотя почти наверняка там будет указано, с какой именно версией 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]$

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

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

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

— Невозможно определить, кто, что и когда делал в системе, потому что все реальные пользователи работают с одной учетной записью, то есть с точки зрения системы все они — один и тот же пользователь.
— Вся личная информация этого пользователя становится достоянием общественности.
— Пароль легко забывается (пароль все равно есть у любого пользователя), потому что его не нужно вводить каждый день. При этом autologin дает доступ только человеку, сидящему перед монитором, и только к работе с графическим интерфейсом. Если же потребуется, например, скопировать файлы с данного компьютера по сети, пароль все равно придется вводить.

Учитывая все перечисленные минусы, можно заключить, что использовать 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 пароль, придуманный Мефодием, оказался слишком простым). В следующий раз ему придется ввести более сложный пароль. passwd запрашивает новый пароль дважды, чтобы удостовериться, что в первый раз не было опечатки, и если все в порядке, выведет сообщение о том, что операция смены пароля прошла успешно, а затем завершит работу, вернув Мефодию приглашение командной строки :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Название этой команды происходит от английского выражения «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 информации можно заключить, что в системе дважды зарегистрирован пользователь methody, который сначала зарегистрировался на первой виртуальной консоли (tty1), а примерно через сорок минут — на второй (tty2). Конечно, Мефодий и так это знает, однако администратору больших систем, когда пользователи могут зарегистрироваться со многих компьютеров и даже по сети, программа who может быть очень полезна. Могло создаться впечатление, что who — очень интеллектуальная программа, понимающая английский, но это не так. Из всех английских слов она понимает только сочетание «am i» — таким способом Мефодий узнал, за какой консолью он сейчас работает.

Еще одна программа, выдающая информацию о пользователях, работавших в системе в последнее время — last). Выводимые этой программой строки напоминают вывод программы 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)
     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)
     reboot    system boot 2.4.26-std-up-al Thu Sep 23 16:03 (04:13)

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

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

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

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

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

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

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

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


При использовании материалов сайта ссылка обязательна! (Copyright by www.avs-info.ru 2006)