Европейский Университет в Санкт-Петербурге
Опубликован: 10.10.2005 | Доступ: свободный | Студентов: 1595 / 258 | Оценка: 4.30 / 3.85 | Длительность: 16:22:00
ISBN: 978-5-94774-820-8
Лекция 1:

Введение в UNIX. Устройство системы

Лекция 1: 123 || Лекция 2 >

Внутреннее устройство UNIX

Система состоит из ядра, демонов и утилит. В системе принят ряд соглашений, которые соблюдаются всеми разработчиками программ под UNIX, в частности, поддержка POSIX.

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

Основная часть ядра Solaris состоит из двух файлов - genunix и unix. Это - статическая часть кода ядра. Независимый от платформы файл genunix содержит общие для всех ядер Solaris компоненты, а unix - это зависимый от платформы файл. Специфичный для платформы файл, который используется программой ufsboot для загрузки системы в 32-разрядном режиме, называется /platform/`uname -m`/kernel/unix. Конструкция "обратные апострофы" ( ` ` ) обозначает, что часть названия (а именно, название аппаратной платформы) можно узнать по команде uname -m2Эта конструкция употребляется в командной строке командных процессоров UNIX, на нее могут ссылаться страницы документации, она называется "подстановка результата выполнения". В то место команды, где находится эта конструкция, командный процессор подставляет результат выполнения того, что заключено в обратные апострофы. Детали см. в лекции 10. .

В файле конфигурации ядра /etc/system можно установить значение переменной moddir, которая содержит список каталогов, разделенных двоеточием. Минимальное значение по умолчанию

/platform/platform-name/kernel:/kernel:/usr/kernel

но это значение может быть различным для различных платформ. Наиболее частым значением для большинства платформ является

/platform/platform-name/kernel:/platform/hardware-classname/
kernel:/kernel:/usr/kernel

Конкретное значение platform-name сообщает команда

uname -i

значение hardware-class-name сообщает

uname -m

Файл конфигурации ядра в Solaris - /etc/system, для получения детальной информации об этом файле следует ознакомиться со страницей руководства system(4), это можно сделать командой

man 4 system

В системах, загружающихся в 64-разрядном режиме, файл unix называется /platform/`uname -m`/kernel/sparcv9/unix. Когда загрузчик ufsboot загрузит оба этих файла (genunix и unix) в память, они становятся одним целым - ядром. Затем это ядро загружает модули, используя ufsboot для чтения файлов.

Подробнее о процессе загрузки говорится в лекции 9.

Демоны - это серверные приложения, отвечающие за обработку запросов от других (клиентских) программ.

Утилиты - это программы, которые нужны для выполнения разных базовых работ в системе: копирования файлов, управления процессами, восстановления файловой системы и т.п.

В разных вариантах UNIX используются разные файловые системы, причем часто поддерживается несколько разных файловых систем. Например, Linux умеет работать с ext2, ext3 (это ее родные файловые системы), UFS, HPFS, NTFS, FAT и другими. Solaris, как и некоторые другие ОС UNIX, использует файловую систему типа UFS.

UNIX - это многопользовательская многопроцессная система, т.е. в ней может одновременно быть запущено несколько процессов от имени разных пользователей. Число процессов, которые можно одновременно запустить, ограничивается размерами таблицы процессов в ядре и другими настройками ядра.

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

Одной из функций ядра является планирование процессов, т.е. передача управления от одного процесса к другому. Для этого в ядре есть отдельная подпрограмма, называемая планировщиком задач. Процессы получают управление от планировщика задач в соответствии со своим приоритетом. Планировщик задач через определенное количество микросекунд решает, следует ли передать управление следующему в очереди процессу.

Ядро представляет собой отдельный процесс, выполняющийся с наивысшим приоритетом. В большинстве систем UNIX, включая Solaris, реализована возможность выполнять несколько параллельных подпроцессов внутри процесса. Эти подпроцессы называют потоками (threads). Более подробно этот аспект процессов рассмотрен в лекции 8.

Каждый пользователь в UNIX имеет свою собственную учетную запись пользователя (account), которая содержит имя пользователя, пароль, идентификатор пользователя (UID), идентификатор главной группы пользователя (GID), описание пользователя, его домашний каталог и путь к командному процессору, который следует запустить при интерактивном входе пользователя в систему.

Пользователь, работающий в UNIX, имеет уникальное имя пользователя и уникальный идентификатор. Идентификатор пользователя (User ID, UID) - это целое число от 0 до 2147483647. Обычные пользователи в Solaris имеют идентификатор в диапазоне от 100 до 60000.

Пользователю не надо знать свой идентификатор, потому что он используется только системой, а для входа в систему пользователь указывает свое имя (username). Имя пользователя может состоять из латинских букв и цифр; длина имени должна быть от 2 до 8 символов. Первый символ должен быть буквой, и по крайней мере один символ должен быть буквой нижнего регистра. Имя пользователя назначает системный администратор при создании новой учетной записи. Имя пользователя в руководствах часто называют "логин" (login) или "username".

Пользователи объединены в группы. Каждая группа имеет свое имя и уникальный идентификатор (Group ID, GID). В группе может быть сколько угодно пользователей, и каждый из них может быть участником любого количества групп. Однако у каждого пользователя есть главная группа - она указывается в свойствах любого файла, который создает пользователь. Идентификатор группы имеет значение от 100 до 60000, если только это не специальная группа. Для специальных (предопределенных) групп зарезервирован диапазон от 0 до 99.

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

Например, если право редактировать содержимое web-сайта надо предоставить нескольким ответственным, то достаточно создать специальную группу, например, webedit, и включить их всех в эту группу.

Предположим, что эти ответственные - пользователи ivan, lena и kira. Тогда в файл /etc/group следует добавить новую группу:

webedit::101:ivan,lena,kira

Концепция прав доступа в UNIX требует объединять пользователей в группы всегда, когда нужно предоставить одинаковые права доступа к файлам или каталогам группе людей.

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

При входе в систему пользователь набирает имя в ответ на приглашение login:. Затем в ответ на password: следует набрать пароль. При вводе пароль никак не отображается, в том числе и звездочками.

Пароль обычно назначается системным администратором при добавлении пользователя в систему. Подробнее о параметрах пароля (частота изменения, ограничение длины и т.п.) в Solaris рассказано в лекции 4.

Пользователь или системный администратор имеют возможность изменить пароль с помощью команды passwd имя_пользователя. Системный администратор может изменить пароль любого пользователя, все остальные - только свой собственный. Команда passwd без параметров меняет пароль того пользователя, который ее запустил. При изменении своего пароля потребуется набрать старый пароль (чтобы подтвердить, что вы - действительно тот, за кого себя выдаете) и затем - новый пароль. Новый пароль потребуется набрать дважды, чтобы система была уверена в вашем выборе.

Пароль может содержать любые символы. Допустимая длина пароля в Solaris составляет от 6 до 8 символов. Символы разных регистров в паролях, как и повсюду в UNIX, считаются различными.

Пароль не должен легко отгадываться. Идеальный пароль в системах UNIX состоит из восьми символов, среди которых есть латинские буквы разных регистров, цифры и знаки препинания. Не следует набирать пароль латинскими буквами, соответствующими русскому слову на клавиатуре, - эти комбинации давно попали в словари взломщиков, так же, как и комбинации последовательных клавиш типа qazwsx.

Так же, как на военном заводе нельзя одолжить чужой пропуск на денек, пользователям нельзя делиться с коллегами своим паролем. Строго запрещено писать пароль на бумажке и приклеивать ее к столу, на стену или монитор.

Если под одним именем и паролем работает несколько человек, нельзя выяснить, кто конкретно выполнил в системе действие от этого имени.

Список пользователей системы хранится в файлах /etc/passwd (в нем нет зашифрованных паролей, и его можно читать всем) и /etc/shadow (здесь есть зашифрованные пароли и дополнительная информация о параметрах пароля, читать можно только пользователю root). Список групп хранится в /etc/group. Структура файлов /etc/passwd, /etc/shadow и /etc/group рассмотрена в лекции 4.

Руководство по системе

В любом варианте UNIX есть главная команда - man. Это команда работы с руководством по системе. Подробнее структура руководства по Solaris будет рассмотрена в лекции 9. Однако уже сейчас, приступая к работе в системе, вы должны знать, что она вас не бросит в трудную минуту. По каждой программе, установленной в системе, по каждому системному вызову из системных библиотек, по многим понятиям и файлам конфигурации, а также драйверам устройств в стандартном комплекте установки системы есть страница руководства.

Для вызова руководства по команде следует набрать

man команда

Для вызова руководства по самой программе man, которая и показывает страницы руководства, наберите

man man

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

Лекция 1: 123 || Лекция 2 >
Игорь Ермачков
Игорь Ермачков
Латвия, Рига
Андрей Мальщуков
Андрей Мальщуков
Россия