- •И.Н.Акуленок, а.В.Акуленок
- •Часть I. Основы операционной системы unix Утверждено советом университета
- •Введение
- •Глава 1. История создания ос unix
- •Реализации oc unix
- •Unix на платформе Intel
- •Доля компьютеров с ос unix (1993 год)
- •Продажи unix–серверов (III квартал 2007 года)
- •1.2. Исследовательские версии unix
- •1.1. Первые шаги по созданию unix
- •1.3. Основные стандарты
- •1.3.1. Основные задачи стандартизации
- •1.4. Разработчики операционных систем
- •1.4.1. Версии at&t
- •1.4.2. Версии Microsoft/sco
- •1.4.3. Версии университета Беркли
- •1.4.4. Версии компании Sun
- •1.4.5. Версии компании Nowell
- •1.4.6. Популярные версии unix
- •1.4.7. Свободно распространяемые системы unix
- •1.5. Реализация ядра unix
- •1.5.1. Микроядро Mach
- •1.5.2. Микроядро Chorus
- •1.6 Характеристики oc unix
- •1.6.1.Файловая система
- •1.6.2. Многозадачность
- •1.6.3. Многопользовательский режим
- •1.6.4. Мобильность
- •1.6.5. Виртуальная память
- •1.6.6. Связь между задачами
- •1.6.7. Внешние устройства
- •1.6.8. Связь между компьютерами
- •1.6.9. Графический пользовательский интерфейс
- •1.6.10. Безопасность
- •1.6.11. Поддержка баз данных
- •1.6.12. Наличие стандартов
- •1.6.13. Открытость
- •1.6.14. Разработка программного обеспечения
- •1.7. Контрольные вопросы
- •1.8. Тесты
- •Глава 2. Функционирование ос unix
- •2.1. Ядро
- •2.1.1. Функции ядра
- •2.1.2. Структура ядра
- •2.1.3. Файловая подсистема
- •2.1.4. Подсистема управления процессами
- •2.1.5. Подсистема ввода/вывода
- •2.2. Командный процессор Shell
- •2.3. Программы–утилиты
- •2.4. Контрольные вопросы
- •2.5. Тесты
- •Глава 3. Процессы
- •3.1. Контекст процесса
- •3.3. Типы процессов
- •3.3.1. Системные процессы
- •3.3.2. Демоны
- •3.3.3. Прикладные процессы
- •3.4. Атрибуты процесса
- •3.4.1. Идентификатор процесса
- •3.4.2. Идентификатор родительского процесса
- •3.4.3. Приоритет процесса
- •3.4.4. Терминальная линия
- •3.4.5. Реальный и эффективный идентификаторы пользователя
- •3.4.6. Реальный и эффективный идентификаторы группы
- •3.4.7. Идентификатор терминальной группы
- •3.5. Иерархия процессов
- •3.6. Взаимодействие процессов
- •3.6.1. «Отцы», «дети», «сироты», «зомби»
- •3.7. Системные вызовы
- •3.7.1. Механизм создания процесса и запуска программы
- •3.7.2. Графический пример дерева процессов
- •3.8. Связи между процессами
- •3.8.1. Сигналы
- •Сигналы posix 1.1
- •3.8.2. Очереди сообщений
- •3.8.3. Семафоры
- •3.8.4. Совместная память
- •3.8.5. Программные каналы
- •3.8.6. Программные гнезда
- •3.9. Контрольные вопросы
- •3.10. Тесты
- •Глава 4. Файловая система unix
- •4.1. Имена файлов
- •4.2. Структура файловой системы
- •4.2.1. Загрузочный блок
- •4.2.2. Суперблок
- •4.2.3 Дескрипторы файлов
- •4.2.4. Блоки данных и свободные блоки
- •4.3. Типы файлов
- •4.3.1. Обычные файлы
- •4.3.2. Каталоги
- •4.3.4. Символические связи
- •4.3.5. Fifo – Именованные каналы
- •4.3.6. Сокеты
- •4.3.7. Обозначение типов файлов
- •Типы файлов
- •4.4. Дескриптор обычного файла
- •4.5. Дескриптор каталога
- •4.6. Дескриптор специального файла
- •4.7. Системная таблица файлов
- •4.8. Монтирование файловых систем
- •4.9. Демонтирование файловых систем
- •4.10. Проверка и восстановление файловых систем
- •4.11. Журналирование файловых систем
- •4.12. Контрольные вопросы
- •4.13. Тесты
- •Глава 5. Этапы начальной загрузки ос Unix
- •5.1. Загрузка и инициализация ядра
- •5.2. Распознавание и конфигурирование устройств
- •5.3. Создание спонтанных процессов
- •5.4. Выполнение команд оператора
- •5.5. Выполнение командных файлов запуска системы
- •5.6. Переход в многопользовательский режим
- •5.7. Контрольные вопросы
- •5.8. Тесты
- •Глава 6. Обзор командных файлов
- •6.1. Процесс init
- •6.1.1. Формат файла inittab
- •6.1.2. Уровни выполнения
- •Уровни выполнения
- •6.1.3. Дисциплины обработки процесса
- •Дисциплины обработки процесса
- •6.1.4. Запуск и этапы работы процесса init
- •6.2. Процесс rc
- •6.2.1. Сценарии запуска системы Solaris
- •6.3. Процесс cron
- •6.4. Процесс регистрации пользователей
- •6.5. Контрольные вопросы
- •6.6. Тесты
- •Глава 7. Останов системы
- •7.1. Выключение питания
- •7.2. Команда shutdown
- •7.3. Команда halt
- •7.4. Изменение уровня выполнения процесса init
- •Глава 8. Задачи системного администрирования
- •8.1. Инструменты администрирования
- •8.1.1. Администрирование aix
- •8.1.2. Администрирование hp-ux
- •8.1.3. Администрирование Solaris
- •8.1.4. Администрирование Linux
- •8.2. Пользователь root
- •8.2.1. Команда su
- •8.3. Добавление новых пользователей в систему
- •8.3.1. Файл /etc/passwd
- •Идентификаторы пользователей
- •8.3.2. Файл /etc/group
- •8.4. Контрольные вопросы
- •8.5. Тесты
- •Литература
- •Содержание
- •Глава 1. История создания ос unix 6
- •Глава 2. Функционирование ос unix 51
- •Глава 3. Процессы 75
- •Глава 4. Файловая система unix 116
- •Акуленок Ирина Николаевна Акуленок Анатолий Васильевич
- •Часть I. Основы операционной системы unix
Идентификаторы пользователей
Номер идентификатора – UID |
Пользователи |
0 |
суперпользователь (привилегированный пользователь) |
1–10 |
демоны и псевдопользователи |
11–99 |
системные, зарезервированные и “famous” (важные) пользователи |
100-60000 |
обычные пользователи |
В приведенном примере первые 12 строк описывают предопределенных пользователей. При установке системы в файлы /etc/passwd и /etc/group автоматически записываются сведения о предопределенных пользователях и группах. Это делается для того, чтобы было проще управлять правами доступа к системным файлам. Эти предопределенные пользователи называются псевдопользователями.
Предопределенные группы и пользователи требуются для того, чтобы от их имени работали системные службы, и в то же время доступ к файлам этих служб был ограничен для всех остальных.
Записи псевдопользователей не подлежат редактированию. Такие пользователи не имеют права входа в систему, но владеют соответствующими процессами для каждого аспекта, связанного с принадлежностью системы.
daemon – используется серверными процессами системы
bin – владеет исполняемыми файлами пользователя
sys – владеет системными файлами
adm – владеет файлами бюджета
uucp – используется UUCP
lp – используется подсистемами lp или lpd
nobody – используется NFS
Существуют и другие стандартные псевдопользователи, такие как audit, cron, mail, new, usenet. Все они обслуживают связанные с ними процессы и файлы.
Четвертое поле – числовой идентификатор группы, GID (это число от 0 до 255).
Пользователи, связанные между собой при выполнении одной общей задачи, должны иметь один и тот же идентификатор группы.
Пятое поле – комментарий (полное имя, должность, координаты для связи с ним – номер офиса, адрес, телефон).
Эту информацию использует общая команда finger, поэтому она должна разделяться запятыми.
Хорошим стилем является указание в этом поле следующей информации:
полные фамилия, имя и (если это необходимо для однозначной идентификации) отчество пользователя или, если это учетная запись предопределенного псевдопользователя типа bin, полное название приложения, использующего эту запись;
номер комнаты и ее местоположение, или контактное лицо, ответственное за запуск приложения, использующего запись;
рабочий телефон;
другая контактная информация (факс, мобильный телефон и т.п.).
Не всегда требуется указывать всю эту информацию. На деле достаточно указать ровно столько сведений, сколько достаточно системному администратору для однозначной идентификации владельца учетной записи.
Шестое поле – начальный (домашний) каталог пользователя или исходный рабочий каталог. При интерактивном входе в систему пользователь сразу попадает именно в этот каталог. Кроме того, некоторые сетевые службы (например, ftpd) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе, был существующий и доступный для пользователя домашний каталог.
Седьмое поле – командный процессор, который будет запущен для пользователя при интерактивном входе в систему. Некоторые сетевые службы (например, ftpd) требуют, чтобы у каждого пользователя, пытающегося получить доступ к сетевой службе, был существующий в системе на самом деле командный процессор. Файл /etc/shells описывает доступные в системе командные процессоры, которые следует назначать пользователям. Сразу после установки системы файл /etc/shells не образуется. Системный администратор должен создать его вручную, если он требуется для каких-то программ в системе, например, для ftpd.
Пример файла /etc/passwd:
inter:x:104:102:INTER:/home/inter:/usr/bin/sh
uniplex:x:109:102::/home/uniplex:/usr/bin/ksh
Рассмотрим пример файла теневых паролей /etc/shadow.
$ cat /etc/shadow
root::6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
smmsp:NP:6445::::::
listen:*LK*:::::::
nobody:NP:6445::::::
noaccess:NP:6445::::::
nobody4:NP:6445::::::
col:9NvfZSaIQgcQk:12435::::::
temp:*LK*:::::::
qaz:v.srD227fHRx2:12448::::::
Temos:o3HzHXFopdwbU:::::::
Этот файл тоже описывает пользователей. В нем хранятся зашифрованные пароли пользователей. Формат файла таков:
Первое поле – имя пользователя.
Второе поле – зашифрованный пароль, *LK* означает, что учетная запись заблокирована (locked), а NP – что пароль отсутствует (no password).
Третье поле -– число дней между 1 января 1970 года и датой последнего изменения пароля.
Четвертое поле – минимальное количество дней, которое должно пройти от одной смены пароля до другой.
Пятое поле – максимальное количество дней, в течение которого пароль считается действительным; по истечении этого срока система попросит ввести новый пароль, так как старый утратит силу.
Шестое поле – количество дней, за которое система предупредит пользователя о необходимости смены пароля.
Седьмое поле – количество дней, которое пользователь может не работать в системе и считаться активным; по истечении этого срока учетная запись автоматически блокируется.
Восьмое поле – дата, до которой учетная запись считается действительной; после этой даты пользователь не сможет войти в систему.
Девятое поле зарезервировано и сейчас не используется.
Данный формат /etc/shadow характерен как для Solaris, так и для других относящихся к System V систем UNIX, например, для Linux.
В /etc/shadow обязательно наличие только первых трех полей в каждой записи, остальные могут отсутствовать - все или часть из них. Рекомендуется вносить исправления в /etc/shadow не вручную, а с помощью специальных программ администрирования. Однако, в одном случае – когда забыт пароль root – придется исправлять /etc/shadow в текстовом редакторе.
