Файл /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. 
         |