Файл /etc/passwd
Каждая строка (учетная запись) в файле /etc/passwd описывает одного известного системе пользователя и имеет семь разделенных двоеточиями полей. Пример записи:
ivanov: x:501:501: Student:/home/ ivanov:/bin/sh
Назначение полей этой записи представлено в табл. 1.
|
Таблица 1
|
Поля файла /etc/passwd и их назначение
|
Поле
|
Назначение
|
Имя пользователя (регистрационное имя)
|
Содержит символьное имя пользователя, используемое при регистрации в системе. В пределах одной машины должно быть уникальным. Регистрационное имя должно состоять из алфавитно-цифровых символов (нижнего регистра), без пробелов, с максимальной длиной, определяемой конкретной ОС. Наиболее часто используется максимальная длина – восемь символов
|
Пароль
|
Поле хранит зашифрованный пароль. Допускается пустое поле. При использовании системы теневого хранения паролей, в этом поле находится только метка пароля x, а зашифрованный пароль хранится в другом месте
|
Идентификатор пользователя
|
Поле хранит числовой идентификатор пользователя, который связан с его регистрационным именем. Любой созданный пользователем файл или запущенный процесс ассоциируется с его числовым идентификатором
|
Идентификатор группы
|
Содержит числовой идентификатор группы. Любой созданный пользователем файл ассоциируется с его идентификатором группы. Указанная здесь группа является основной (первичной) для данного пользователя
|
Комментарий
|
Содержит комментарий – любую алфавитно-цифровую строку. Предположительно это поле содержит информацию о реальном владельце регистрационного имени. ОС UNIX не задает его формат, так что подойдет любой. Некоторые программы печати и электронной почты используют это поле для вывода настоящего имени пользователя
|
Начальный каталог
|
Определяет начальный каталог пользователя. Когда пользователь начинает сеанс работы, система помещает его в данный каталог. Пользователь должен иметь соответствующие права доступа к нему
|
Начальная команда
|
Определяет командную среду пользователя (обычно запускается один из командных интерпретаторов UNIX, но, теоретически, можно указать любую команду)
|
Файл /etc/group
Этот файл соотносит числовые идентификаторы групп с символьными именами. Каждая строка файла /etc/group содержит четыре поля. Поля разделяются двоеточиями. Назначение полей этой записи представлено в табл. 2.
|
Таблица 2
|
Поля файла /etc/group и их назначение
|
Поле
|
Назначение
|
Имя группы
|
Содержит (уникальное) символьное имя группы.
|
Пароль группы
|
Группы могут иметь пароли, хотя использование паролей групп – явление редкое.
|
Идентификатор группы
|
Содержит числовой идентификатор группы.
|
Список пользователей
|
Содержит список регистрационных имен пользователей данной группы. Имена в этом списке разделяются запятыми. Пользователи могут принадлежать к нескольким группам.
|
Пример записи из файла /etc/group:
student:x:2:root,student,ivanov
Файл /etc/shadow
Этот файл используется в системах с теневым хранением паролей, где они вынесены из доступного всем пользователям на чтение файла /etc/passwd для повышения безопасности системы. Здесь (помимо собственно зашифрованных паролей) хранятся дополнительные ограничения, связанные с регистрационным именем и паролем пользователя. Доступ к этому файлу на чтение имеет только пользователь root, а работают с ним команды passwd и login.
Файл содержит по одной записи из восьми полей, разделенных двоеточиями, для каждой учетной записи в системе. Назначение полей этой записи представлено в табл. 3.
|
Таблица 3
|
Поля файла /etc/shadow и их назначение
|
Номер поля
|
Назначение
|
1
|
Имя пользователя
|
2
|
Зашифрованный по особому алгоритму (обычно, DES или MD5) пароль
|
3
|
Количество дней между 01.01.1970 (началом эры UNIX) и днем последнего изменения пароля
|
4
|
Минимальное количество дней между изменениями пароля
|
5
|
Срок действия пароля пользователя
|
6
|
За сколько дней система будет начинать предупреждать пользователя о необходимости изменения пароля
|
7
|
Сколько дней пользователь может не работать в системе, прежде чем его регистрационное имя будет заблокировано
|
8
|
Дата, после которой имя пользователя нельзя будет использовать в системе
|
Каждая версия ОС UNIX резервирует несколько специальных регистрационных имен для предопределенных системных целей. Они прописаны в файле /etc/passwd. Точно так же задаются и системные группы в файле /etc/group. В Linux зарезервированными считаются имена пользователей и групп с идентификаторами от 0 до 100.
Для получения списка пользователей, работающих сейчас в системе, используется команда who или w. Утилита who выдает имя пользователя, терминал, время регистрации, время, прошедшее после последней выполненной команды, а также идентификатор процесса командного интерпретатора.
Для временного изменения действующего (эффективного) идентификатора пользователя и сеанса пользователя используется команда su.
Для создания, изменения и удаления учетных записей пользователей все версии ОС UNIX предлагают три команды, useradd, usermod и userdel, соответственно.
В UNIX-системах имеется хорошее справочное руководство, которое называют «мануалами». Получить справку можно при помощи команды man, например, man useradd (выход из справки Ctrl + z).
Следует помнить, что вновь созданная учетная запись блокируется до тех пор, пока не будет выполнена команда passwd, задающая пароль новому пользователю. В дальнейшем пользователь может изменить свой пароль с помощью команды passwd. Привилегированные пользователи могут запускать passwd для выполнения этих функций для любого пользователя, а также для установки атрибутов пароля для любого пользователя.
Для создания, изменения и удаления групп все версии ОС UNIX также предлагают три команды, groupadd, groupmod и groupdel, соответственно.
Эти команды позволяют выполнить только согласованные и допустимые изменения в файле /etc/group. Команды управления группами, в общем случае, может выполнять только пользователь root. При удалении группы просто удаляется строка из файла /etc/group. Никакие изменения в файловой системе и в учетных записях пользователей команды groupmod и groupdel не производят.
4.2.2. Виртуальные консоли и графические среды
Каждый компьютер, на котором работает UNIX-система, предоставляет возможность зарегистрироваться и получить доступ к системе нескольким пользователям одновременно. Даже если в распоряжении всех пользователей есть только один монитор и одна системная клавиатура, эта возможность небесполезна: одновременная регистрация в системе нескольких пользователей позволяет работать по очереди без необходимости каждый раз завершать все начатые задачи (закрывать все окна, прерывать исполнение всех программ) и затем возобновлять их. Более того, ничто не препятствует зарегистрироваться в системе несколько раз под одним и тем же входным именем. Таким образом, можно получить доступ к одним и тем же ресурсам (своим файлам) и организовать параллельную работу над несколькими задачами.
Характерный для UNIX способ организации параллельной работы пользователей – виртуальные консоли (или терминалы).
Можно переключаться между виртуальными консолями так, как если бы вы переходили от одного монитора с клавиатурой к другому, подавая время от времени команды и следя за выполняющимися программами. По умолчанию в Linux доступно не менее шести виртуальных консолей, переключаться между которыми можно при помощи сочетания клавиши Alt с одной из функциональных клавиш (F1–F6). С каждым сочетанием связана соответствующая по номеру виртуальная консоль. Виртуальные консоли обозначаются "ttyN", где "N" – номер виртуальной консоли.
Виртуальные консоли – это несколько параллельно выполняемых операционной системой программ, предоставляющих пользователю возможность зарегистрироваться в системе в текстовом режиме и получить доступ к командной строке.
Кроме консолей, работающих в терминальном режиме, для работы в системе может использоваться графическая среда (если запущен система XWindow, например командой startx). Переход из консольного режима в графический выполняется после нажатия комбинации клавиш Alt+F7 (обратный переход комбинацией Ctrl+Alt+F1…F6). Процедура регистрации в графическом режиме будет аналогична регистрации в текстовом режиме. С той лишь разницей, что после идентификации пользователя (правильно введенного имени пользователя и пароля) на экране появится не приглашение командной строки, а графическая рабочая среда. Как именно она будет выглядеть – зависит от того, какая система используется и как она настроена.
Программа, которая отвечает за работу с устройствами графического ввода и вывода и обеспечивает при этом логику оконной системы, называется X-сервером (X Server, т. е. сервер системы "Икс"). В рамках XWindow System X-сервер – это ядро. Подобно ядру, он выполняет низкоуровневые операции и взаимодействует с аппаратурой, ничего самостоятельно не предпринимая. Подобно ядру, он предоставляет задачам унифицированный интерфейс к этим низкоуровневым функциям, а также занимается разделением доступа (окно и фокус) к графическим ресурсам.
X-сервер принимает запросы на выполнение графических действий и передает по назначению вводимые данные. Жизнеобеспечение процессов и даже способ передачи X-запросов – дело исключительно операционной системы, по отношению к которой и сам X-сервер – задача.
Задачи, которые обращаются к X-серверу с запросами, называются X-клиентами. Обычно X-клиент сначала регистрирует окно (можно несколько), которое и будет служить ему полем ввода-вывода. Потом он сможет рисовать в этом окне и обрабатывать происходящие с окном события: активность устройств ввода и изменение свойств самого окна (размер, перемещение, превращение в иконку, закрытие и т. п.). X-клиент – это процесс, запускаемый обычно в фоновом режиме (не связанный по вводу с терминальной линией).
Клиент передает серверу X-запросы любым доступным ему способом. Во многих случаях запросы передаются по сети; при этом неважно, какой именно транспортный уровень будет использован для соединения клиента с сервером (в современных системах это, чаще всего, сеть TCP/IP и протокол TCP). Главное, чтобы клиент посылал стандартные запросы, соответствующие определенному протоколу обмена данными. Следует сказать, что другое имя X Window System – X11 (или X11R6) – это просто номер версии X-протокола, стандартизующего X-запросы, при этом R6 обозначает номер подверсии (revision).
Наиболее распространенная версия реализации X11R6 называется XFree86. Эта графическая подсистема изначально проектировалась как реализация X11R5 для машин архитектуры i386 – самых распространенных на сегодня персональных компьютеров. Главная особенность этой архитектуры – бесчисленное многообразие устройств графического вывода (видеокарт) и непрестанное нарушение их разработчиками всех мыслимых стандартов. Поэтому главной задачей создателей XFree86 было устроить гибкую структуру компоновки и настройки X-сервера в соответствии с подвернувшимся под руку устройством графического вывода, а заодно и ввода, потому что клавиатур, мышей и подобных устройств на свете тоже немало. Сегодня XFree86 существует для многих архитектур и многих операционных систем.
В последние годы параллельно с XFree86 развивается основанная на тех же исходных текстах XWindow System графическая подсистема XOrg. До недавнего времени по спектру поддерживаемого оборудования, архитектур и функциональности XOrg мало чем отличалась от XFree86, и сейчас они примерно эквивалентны с точки зрения пользователя. Однако направления развития этих двух проектов, состав их разработчиков и лицензионная политика несхожи. В ближайшем будущем вполне вероятно, что Xorg обгонит XFree86 и по возможностям, и по частоте использования.
Чтобы приспособить графическую подсистему (в любой реализации) к имеющемуся оборудованию, требуется организовать соответствующий профиль. Профиль графической подсистемы находится в каталоге /etc/X11, основной конфигурационный файл XFree86 называется XF86Config-4 – именно его считывает при запуске X-сервер. Конфигурационный файл XOrg называется xorg.conf, а при его отсутствии используется файл XF86Config. Во многих дистрибутивах имеются собственные полуавтоматические утилиты настройки X11. С их помощью можно создать более или менее подходящий профиль, не вникая в тонкости, нередко – непосредственно при установке системы.
Требование гибкости привело к тому, что в реализации XFree86 графическая подсистема стала совсем уже похожа на операционную систему. Сам X-сервер играет роль ядра. Запускаясь, сервер подгружает драйверы – специальные компоненты, работающие с выбранной видеокартой, и модули – компоненты, расширяющие функциональные возможности сервера (в конфигурационном файле XF86Config необходимые модули перечисляются в разделе Modules).
Благодаря стандартному протоколу X11 появилось множество диспетчеров окон для XWindow System. Все они различаются видом и кругом возможностей для манипулирования окнами: от самых простых (рамочка вокруг окна позволяет двигать его, изменять размер и поднимать из глубины) до весьма изощрённых (виртуальные экраны, анимированные полупрозрачные меню, панели инструментов, причудливой формы украшения на окнах; сами окна ползают по экранам, кувыркаются, растворяются как утренний туман; всё это лязгает, попискивает и разговаривает приятным женским голосом). Если в системе установлено несколько диспетчеров окон, то при запуске команды startx будет предложен выбор, какой из диспетчеров окон запустить.
Для решения функций комфортного домашнего компьютера разработаны целые комплексы X-приложений. Наибольшей популярностью пользуются две мощные среды "офисного" плана – KDE и Gnome – они содержат все необходимое для работы (включая собственные офисные приложения и средства просмотра WWW).
4.3. Многозадачность в системах UNIX
4.3.1. Процессы в UNIX
В ОС UNIX основным средством организации и единицей многозадачности является процесс. Операционная система манипулирует образом процесса, который представляет собой программный код, а также разделами данных процесса, определяющими среду выполнения.
Во время исполнения или в ожидании "своего часа" процессы содержатся в виртуальной памяти со страничной организацией. Часть этой виртуальной памяти сопоставляется с физической памятью. Часть физической памяти резервируется для ядра операционной системы. Пользователи могут получить доступ только к оставшейся для процессов памяти. При необходимости страницы памяти процессов откачиваются из физической памяти на диск, в область подкачки. При обращении к странице в виртуальной памяти, если она не находится в физической памяти, происходит ее подкачка с диска.
Виртуальная память реализуется и автоматически поддерживается ядром ОС UNIX.
|