Сеанс работы в Linux
Аннотация: В лекции описан сеанс работы пользователя в Linux: от регистрации в системе до выхода. Рассмотрено понятие пользователя с точки зрения системы, процедура идентификации пользователя, обоснована многопользовательская модель разграничения доступа. Даются основы работы с интерфейсом командной строки.
Пользователи системы
Прежде, чем система будет готова к работе с пользователем, происходит процедура загрузки системы. В процессе загрузки будет запущена основная управляющая программа ( ядро ), определено и инициализировано имеющееся оборудование, активизированы сетевые соединения, запущены системные службы. В Linux во время загрузки на экран выводятся диагностические сообщения о происходящих событиях, и если все в порядке и не возникло никаких ошибок, загрузка завершится выводом на экран приглашения » login :». Оно может выглядеть по-разному, в зависимости от настройки системы: может отображаться в красиво оформленном окне или в виде простой текстовой строки вверху экрана. Это приглашение к регистрации в системе : система ожидает, что в ответ на это приглашение будет введено входное имя пользователя, который начинает работу. Естественно, имеет смысл вводить такое имя, которое уже известно системе, чтобы она могла «узнать», с кем предстоит работать — выполнять команды неизвестного пользователя Linux откажется.
Многопользовательская модель разграничения доступа
Процедура регистрации в системе для Linux обязательна: работать в системе, не зарегистрировавшись под тем или иным именем пользователя , просто невозможно 1 Вместо формального «зарегистрироваться в системе» обычно используют выражение «войти в систему». Операционная система представляется чем-то вроде замкнутого помещения, внутри которого можно оказаться, только успешно проникнув через «дверь» – пройдя процедуру регистрации. . Для каждого пользователя определена сфера его полномочий в системе: программы, которые он может запускать, файлы, которые он имеет право просматривать, изменять, удалять. При попытке сделать что-то, выходящее за рамки полномочий, пользователь получит сообщение об ошибке. Такая строгость может показаться излишней, если пользователи компьютера доверяют друг другу, и особенно если у компьютера только один пользователь. Эта ситуация очень распространена в настоящее время, когда слово «компьютер» означает в первую очередь » персональный компьютер «.
Однако персональный компьютер — довольно-таки позднее явление в мире вычислительной техники, получившее широкое распространение только в последние два десятилетия. Раньше слово «компьютер» ассоциировалось с огромным и дорогостоящим (занимавшим целые залы) вычислительным центром, предназначенным в первую очередь для решения разного рода научных задач. Машинное время такого центра стоит очень недешево, и при этом его возможности необходимы одновременно многим сотрудникам, которые могут ничего не знать о работе друг друга. Требуется следить за тем, чтобы не произошло случайного вмешательства пользователей в чужую работу и повреждения данных (файлов), выделять каждому машинное время (по возможности избежав простаивания) и пространство на диске и при этом не допускать захвата всех ресурсов одним пользователем и его задачей, а равномерно распределять ресурсы между всеми. Для такой системы принципиально важно знать, кому принадлежат задачи и файлы, поэтому и возникла необходимость предоставлять доступ к ресурсам системы только после того, как пользователь зарегистрируется в системе под тем или иным именем.
Такая модель была реализована в многопользовательской операционной системе UNIX. Именно от нее Linux — также многопользовательская операционная система — унаследовала принципы работы с пользователями. Но это не просто дань традиции или стремление к универсальности: многопользовательская модель позволяет решить ряд задач, весьма актуальных и для современных персональных компьютеров , и для серверов, работающих в локальных и глобальных сетях, и вообще в любых системах, одновременно выполняющих разные задачи, за которые отвечают разные люди.
Компьютер — это всего лишь инструмент для решения разного рода прикладных задач: от набора и распечатывания текста до вычислений. Сложность состоит в том, что для настройки этого инструмента и для работы с его помощью используются одни и те же операции: изменение файлов и выполнение программ. Получается, что, если не соблюдать осторожность, побочным результатом работы может стать выход системы из строя. Поэтому первоочередная задача для систем любого масштаба — разделять повседневную работу и изменение самой системы. В многопользовательской модели эта задача решается очень просто: разделяются «обычные» пользователи и администратор(ы) . В полномочия обычного пользователя входит все необходимое для выполнения прикладных задач, попросту говоря, для работы, однако ему запрещено выполнять действия, изменяющие саму систему. Таким образом можно избежать повреждения cистемы в результате ошибки пользователя (нажал не ту кнопку) или ошибки в программе, или даже по злому умыслу (например, вредительской программой-вирусом). Полномочия администратора обычно не ограничены.
Для персонального компьютера , с которым работают несколько человек, важно обеспечить каждому пользователю независимую рабочую среду. Это снижает вероятность случайного повреждения чужих данных, а также позволяет каждому пользователю настроить внешний вид рабочей среды по своему вкусу и, например, сохранить расположение открытых окон между сеансами работы. Эта задача очевидным образом решается в многопользовательской модели: организуется домашний каталог , где хранятся данные пользователя, настройки внешнего вида и поведения его системы и т.п, а доступ остальных пользователей к этому каталогу ограничивается.
Если компьютер подключен к глобальной или локальной сети, то вполне вероятно, что какую-то часть хранящихся на нем ресурсов имеет смысл сделать публичной и доступной по сети. И напротив, часть данных, скорее всего, делать публичными не следует (например, личную переписку). Ограничив доступ пользователей к персональным данным друг друга, мы решим и эту задачу.
Именно благодаря гибкости многопользовательской модели разграничения доступа она используется сегодня не только на серверах, но и на домашних персональных компьютерах . В самом простом варианте — для персонального компьютера , на котором работает только один человек — эта модель сводится к двум пользователям: обычному пользователю для повседневной работы и администратору — для настройки, обновления, дополнения системы и исправления неполадок. Но даже в таком сокращенном варианте это дает целый ряд преимуществ.
Учетные записи
Конечно, система может быть «знакома» с человеком только в переносном смысле: в ней должна храниться запись о пользователе с таким именем и о связанной с ним системной информации — учетная запись . Английский эквивалент термина учетная запись — account , «счет». Именно с учетными записями , а не с самими пользователями, и работает система. В действительности, соотношение учетных записей и пользователей в Linux обычно не является однозначным: несколько человек могут использовать одну учетную запись — система не может их различить. И в то же время в Linux имеются учетные записи для системных пользователей , от имени которых работают некоторые программы, но не люди.
Учетная запись ( account ) — объект системы, при помощи которого Linux ведет учет работы пользователя в системе. Учетная запись содержит данные о пользователе, необходимые для регистрации в системе и дальнейшей работы с ней.
Учетные записи могут быть созданы во время установки системы или после установки. Подробно процедура создания учетных записей (добавления пользователей) описана в лекции 12.
Главное для человека в учетной записи — ее название, входное имя пользователя. Именно о нем спрашивает система, когда выводит приглашение » login :». Помимо входного имени в учетной записи содержатся некоторые сведения о пользователе, необходимые системе для работы с ним. Ниже приведен список этих сведений.
Входное имя (login name) — название учетной записи пользователя, которое нужно вводить при регистрации в системе .
Идентификатор пользователя
Linux связывает входное имя c идентификатором пользователя в системе — UID (User ID). UID — это положительное целое число, по которому система и отслеживает пользователей 2 Это может оказаться важным, например, в такой ситуации: учетную запись пользователя с именем test удалили из системы, а потом добавили снова. Однако с точки зрения системы это уже другой пользователь, потому что у него другой UID. . Обычно это число выбирается автоматически при регистрации учетной записи , однако оно не может быть произвольным. В Linux есть некоторые соглашения относительно того, какому типу пользователей могут быть выданы идентификаторы из того или иного диапазона. В частности, UID от » 0 » до » 100 » зарезервированы для псевдопользователей 3 Обычно Linux выдает нормальным пользователям UID, начиная с » 500 » или » 1000 «. .
Идентификатор пользователя , UID — уникальное число, однозначно идентифицирующее учетную запись пользователя в Linux. Таким числом снабжены все процессы Linux и все объекты файловой системы . Используется для персонального учета действий пользователя и определения прав доступа к другим объектам системы.
Идентификатор группы
Кроме идентификационного номера пользователя, с учетной записью связан идентификатор группы . Группы пользователей применяются для организации доступа нескольких пользователей к некоторым ресурсам. У группы, так же, как и у пользователя, есть имя и идентификационный номер — GID (Group ID). В Linux пользователь должен принадлежать как минимум к одной группе — группе по умолчанию . При создании учетной записи пользователя обычно создается и группа, имя которой совпадает с входным именем 4 Как правило, численное значение GID в этом случае совпадает со значением UID , именно эта группа будет использоваться как группа по умолчанию для данного пользователя. Пользователь может входить более чем в одну группу, но в учетной записи указывается только номер группы по умолчанию .
Полное имя
Помимо входного имени в учетной записи содержится и полное имя (имя и фамилия) использующего данную учетную запись человека. Конечно, пользователь может указать что угодно в качестве своего имени и фамилии. Полное имя необходимо не столько системе, сколько людям — чтобы иметь возможность определить, кому принадлежит учетная запись .
Домашний каталог
Файлы всех пользователей в Linux хранятся раздельно, у каждого пользователя есть собственный домашний каталог , в котором он может хранить свои данные. Доступ других пользователей к домашнему каталогу пользователя может быть ограничен. Информация о домашнем каталоге обязательно должна присутствовать в учетной записи , потому что именно с него начинает работу пользователь, зарегистрировавшийся в системе.
Командная оболочка
Каждому пользователю нужно предоставить способ взаимодействия с системой: передача ей команд и получение от нее ответов. Для этой цели служит специальная программа — командная оболочка (или интерпретатор командной строки ). Она должна быть запущена для каждого пользователя, который зарегистрировался в системе. Поскольку в Linux доступно несколько разных интерпретаторов командной строки , в учетной записи указано, какой из них нужно запустить для данного пользователя. Если специально не указывать командную оболочку при создании учетной записи , она будет назначена по умолчанию, вероятнее всего это будет bash.
Интерпретатор командной строки ( командный интерпретатор, командная оболочка , оболочка ) — это программа, используемая в Linux для организации «диалога» человека и системы. Командный интерпретатор имеет три основных ипостаси: (1) редактор и анализатор команд в командной строке , (2) высокоуровневый системно-ориентированный язык программирования, (3) средство организации взаимодействия команд друг с другом и с системой.
Понятие «администратор»
В Linux есть только один пользователь, полномочия которого в системе принципиально отличаются от полномочий остальных пользователей — это пользователь с идентификатором » 0 «. Обычно учетная запись пользователя с UID=0 называется root (англ., «корень»). Пользователь root — это «администратор» системы Linux, учетная запись для root обязательно присутствует в любой системе Linux, даже если в ней нет никаких других учетных записей . Пользователю с таким UID разрешено выполнять любые действия в системе, а значит, любая ошибка или неправильное действие может повредить систему, уничтожить данные и привести к другим печальным последствиям. Поэтому категорически не рекомендуется регистрироваться в системе под именем root для повседневной работы. Работать в root следует только тогда, когда это действительно необходимо: при настройке и обновлении системы или восстановлении после сбоев.
Именно root обладает достаточными полномочиями для создания новых учетных записей .