ТЕМА 4. СЕТЕВЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ UNIX МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE

advertisement
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
ТЕМА 4. СЕТЕВЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ UNIX
Цель темы: дать классификацию современных сетевых операционных систем и
раскрыть принципы функционирования операционных систем семейства UNIX.
В результате изучения темы обучающиеся должны усвоить:



особенности и возможности современных сетевых операционных систем;
историю возникновения и развития семейства операционных систем UNIX;
особенности архитектуры и основные дистрибутивы операционной системы
Linux;
 многопользовательский и многотерминальный механизм работы операционных
систем UNIX;
 назначение и возможности логической и физической файловых систем в UNIX;
 типы файлов в UNIX, их назначение, свойства и права доступа к ним;
 основные сетевые службы, реализуемые на платформе UNIX.
Оглавление
4.1. Классификация операционных систем ........................................................................................................................ 1
4.1.1. Сетевые операционные системы Windows ....................................................................................................... 2
4.1.2. История семейства операционных систем UNIX ............................................................................................ 3
4.1.3. Архитектура и дистрибутивы Linux ..................................................................................................................... 4
4.2. Программные средства человеко-машинного интерфейса в UNIX ................................................................. 7
4.2.1. Пользователи и группы ............................................................................................................................................ 7
4.2.2. Виртуальные консоли и графические среды ................................................................................................ 10
4.3. Многозадачность в системах UNIX .............................................................................................................................. 12
4.3.1. Процессы в UNIX........................................................................................................................................................ 12
4.3.2. Жизненный цикл процесса в UNIX и основные системные вызовы .................................................... 13
4.3.3. Сигналы ......................................................................................................................................................................... 15
4.4. Файловая система в UNIX ................................................................................................................................................ 15
4.4.1. Файлы и каталоги ...................................................................................................................................................... 16
4.4.2. Права доступа к файлам ........................................................................................................................................ 19
4.4.3. Структура логической файловой системы UNIX .......................................................................................... 21
4.4.4. Физические файловые системы UNIX ............................................................................................................. 22
4.4.5. Монтирование и демонтирование физических файловых систем ....................................................... 24
4.5. Сетевые средства UNIX .................................................................................................................................................... 26
4.5.1. Сетевой интерфейс ................................................................................................................................................... 26
4.5.2. WWW-сервер Apache................................................................................................................................................ 27
4.5.3. FTP-сервер .................................................................................................................................................................... 28
4.5.4. Терминальный доступ.............................................................................................................................................. 29
4.5.5. Почтовая служба........................................................................................................................................................ 30
4.5.6. Взаимодействие с сетью Windows – пакет Samba ...................................................................................... 32
Выводы ............................................................................................................................................................................................. 34
Вопросы для самопроверки ..................................................................................................................................................... 35
4.1. Классификация операционных систем
Все современные сетевые операционные системы по функциональному назначению в сети
можно разделить на два больших класса: операционные системы для рабочих станций, на
которых устанавливаются клиентские модули сетевых служб, и операционные системы для
компьютеров-серверов, на которых устанавливаются серверные модули сетевых служб.
Серверные операционные системы обычно оптимизируются для выполнения задачи
одновременной обработки большого количества запросов, поступающих от клиентов, поэтому
менее эффективны для выполнения функции клиентской операционной системы.
Многие современные серверные операционные системы имеют корни от UNIX-систем.
Несмотря на многообразие сетевых операционных систем, реальными конкурентами на
российском рынке серверных решений для локальных сетей в настоящее время являются
1
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
операционные системы семейства Windows от Microsoft и различные представители семейства
UNIX-систем.
4.1.1. Сетевые операционные системы Windows
Компания Microsoft, разрабатывавшая ранее операционные системы для персональных
компьютеров, следуя за бурным развитием мощностей персональных компьютеров, перешла от
простой DOS с монолитным ядром к серьезным серверным операционным системам Windows NT,
построенным с использованием принципов микроядерной архитектуры.
Первая успешная серверная операционная система этой фирмы – Windows NT 4.0 в конце
1990-х гг. отобрала большую часть рынка у фактическиx монополистов того времени в
серверной продукции для локальных сетей компании Novell.
В линии операционных систем Windows 2000, которая является наследником Windows NT
(поэтому все ОС этой линии имеют логотип «На основе технологии NT»), появилось четыре
продукта для различных категорий потребителей:
 Windows 2000 Professional предназначена для рабочих станций, работающих в сети.
Разработана для замены Windows 95/98 в качестве стандартной платформы для деловых
приложений. Русифицирована;
 Windows 2000 Server – базовый сервер для деловых приложений. Имеет универсальные
средства, необходимые для доменной организации сети на базе Active Directory, и размещения
файловых служб, серверов печати и приложений, коммуникационных и web-серверов в
масштабах подразделения. Поддерживает до 4 Гбайт физической оперативной памяти и до 4
процессоров. Первый русифицированный вариант серверной операционной системы;
 Windows 2000 Advanced Server – более мощный сервер среднего уровня, имеющий
дополнительные средства для поддержания высокой надежности и масштабируемости,
необходимых для предприятия или крупного подразделения. Имеет возможности балансировки
сетевой нагрузки и кластеризации. Поддерживает до 8 Гбайт физической оперативной памяти и
до 8-ми процессоров. Русифицированной версии нет;
 Windows 2000 Datacenter Server – самая мощная и функционально полная серверная
система для крупных корпоративных решений. Поддерживает до 64 Гбайт физической
оперативной памяти и до 32 процессоров. Русифицированной версии нет.
Операционная система Windows 2000 Server, кроме компонентов, имеющихся в Windows
2000 Professional, содержит следующие основные дополнительные средства:
 Active Directory – службу каталогов, позволяющую централизованно хранить информацию обо
всех объектах сети (пользователях, компьютерах, общих каталогах, принтерах и т. д.);
 Dynamic DNS (DDNS) – службу динамических доменных имен, позволяющую компьютерам
автоматически регистрировать и обновлять имена рабочих станций (хостов) и их IP-адреса на
DNS-сервере;
 групповые политики – наборы конфигурационных параметров, которые могут назначаться в
домене или организационной единице (подразделению) Active Directory;
 распределенную файловую систему(Distributed File System, DFS) – обеспечивает
возможность разделения файловой структуры между несколькими серверами;
 службу терминалов – позволяет удаленно выполнять приложения на серверах, либо
администрировать их;
 WWW-сервер (в составе служб Internet Information Services, IIS) – Интернет-сервер,
позволяющий реализовать в сети службы FTP и HTTP;
 аутентификацию Kerberos – протокол безопасности, используемый в распределенных средах
для аутентификации пользователей;
 сервер сертификатов с открытыми ключами – позволяет использовать аутентификацию
пользователей с применением открытых ключей по протоколу SSL/TLS (Secure Sockets Layer/
transport Layer Security), обеспечивающих защиту данных, передаваемых через Интернет;
 Многопротокольную маршрутизацию – позволяет использовать сервер в качестве
маршрутизатора сети;
 служба DHCP (Dynamic Host Configuration Protocol) – реализует протокол динамической
конфигурации рабочей станции (хоста);
 службы качества обслуживания (Quality of Service, QoS) – позволяют совместимым с QoS
приложениям резервировать полосу пропускания и менять приоритет передаваемых данных.
2
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Следующим этапом в развитии операционных систем Windows стало появление Windows ХР –
для рабочих станций и Windows 2003 Server – базового сервера для локальных сетей, который
так же, как предшественник – Windows 2000 Server, имеет локализованную для России версию.
Семейство операционных систем UNIX более разнообразно. На принципах UNIX построены
как коммерческие операционные системы, так и большое число открытых систем, которые не
только бесплатно распространяются, но и имеют открытые исходные коды всех программных
модулей.
4.1.2. История семейства операционных систем UNIX
История операционных систем UNIX началась в 1969 г. в одном из подразделений AT&T Bell
Laboratories, когда на "малоиспользуемой" машине DEC PDP-7 Кен Томпсон (Ken Thompson),
Деннис Ричи (Dennis Ritchie) и другие (прежде в течение 1965-1969 гг. занимавшиеся
созданием операционной системой Multics) начали работу над операционной системой,
названной ими первоначально Unics (UNiplexed Information and Computing System).
В течение первых 10 лет развитие UNIX происходило, в основном, в Bell Labs.
Соответствующие начальные версии назывались "Version n" (Vn) и предназначались для ЭВМ
DEC PDP-11 (16-битовая) и VAX (32-битовая).
Версии Vn разрабатывались группой Computer Research Group (CRG) в Bell Labs. Поддержкой
занималась другая группа, Unix System Group (USG). Разработкой также занималась группа
Programmer's WorkBench (PWB), привнесшая систему управления исходным кодом sccs,
именованные каналы и ряд других идей. В 1983 г. эти группы были объединены в одну, Unix
System Development Lab.
Наиболее существенные версии и события в истории UNIX:
1971: V1. Первая версия UNIX Time-Sharing System на ассемблере для PDP-11/20. Она
включала файловую систему, системный вызов fork() для порождения процессов, утилиты типа
cat, ed, roff. Использовалась для обработки текстов при подготовке патентов. Системный вызов
pipe() и поддержка программных каналов появилась в V2.
1973: V4. Версия, переписанная на языке C, что сделало UNIX легко переносимой на другие
платформы. Язык C создавался для разработки операционной системы UNIX.
1975: V6. Первая версия UNIX, широко распространенная за пределами Bell Labs, в
частности, в университетах. С этого времени начинается появление множества других версий и
UNIX становится популярной операционной системой. На базе этой версии в Калифорнийском
университете в Беркли (UCB) создавалась 1.xBSD (для PDP-11).
1978: версия 2.xBSD (Berkeley Systems Development) для PDP-11, созданная группой
Computer Systems Research Group (CSRG) в Беркли. В ней появились поддержка сети DARPA,
первая реализация стека протоколов TCP/IP и командный интерпретатор csh. В дальнейших
версиях (до 1980) появились: поддержка виртуальной памяти, termcap, curses, редактор vi.
1979: V7. "Последняя настоящая UNIX", которая включала компилятор языка C, командный
интерпретатор sh, систему uucp, была перенесена на 32-разрядный VAX, при этом размер ядра
составлял всего около 40 Кбайт!
1981: 4.1BSD – возможности: управление заданиями, автоматическое конфигурирование
ядра.
System III - первый коммерческий UNIX от AT&T, в котором осуществлена реализация
именованных каналов (FIFO).
1983: 4.2BSD: полная поддержка TCP/IP, сокетов, Ethernet. Применена файловая система
UFS с поддержкой длинных имен файлов и символьных связей.
System V от AT&T: поддержка основных утилит и средств BSD, добавлен пакет средств
межпроцессного взаимодействия (IPC).
1984: первые попытки стандартизации – создание Free Software Foundation (FSF) и
начало проекта GNU – создание свободно распространяемой UNIX-подобной ОС и
соответствующих утилит.
1985: появление архитектуры микроядра Mach. Появление ОС Minix.
3
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
1986: появление операционных систем AIX (IBM) и A/UX (Apple).
1987: появление ОС IRIX (SVR 3.0).
1990: появление ОС Solaris (SunOS 4.1.4).
1991: появление ОС Linux (на базе Minix).
1993: появление ОС FreeBSD.
1995: появление ОС OpenBSD и NetBSD.
1999: появление ОС Mac OS X и проекта Darwin (Mach 4+ FreeBSD 3.1).
Современные версии ОС UNIX
Итак, в настоящее время (июнь 2006 г.) мы имеем на платформе Intel x86 следующие
основные версии UNIX:






FreeBSD 6.1;
OpenBSD 3.9;
NetBSD 2.1;
Linux 2.4, 2.6 в виде множества различных дистрибутивов;
Solaris 10;
SCO OpenServer 6 и UnixWare 7.1.3.
На других платформах (основные версии):








Linux 2.6.x (практически все платформы);
NetBSD 2. 1 (практически все платформы);
Mac OS X 10. 4 (PowerPC);
AIX 5L v5.2 (PowerPC);
Solaris 9, 10 (SPARC);
HP-UX 11i v2(PA-RISC, IA-64);
Tru 64 Unix V.5.1 (Alpha);
IRIX 6.5.2 7 (MIPS).
Хотя изначально UNIX являлся операционной системой для больших ЭВМ, принципы,
заложенные в него, оказались со временем применимы к персональным компьютерам. С
увеличением
ресурсов
персональных
компьютеров
стала
очевидна
ограниченность
операционных систем, традиционно используемых для настольных компьютеров. В то же время
UNIX никогда не привязывался к каким-то конкретным ограничениям, и поэтому его идеология
пришла на помощь в той ситуации, когда пользователи наткнулись на преграды, выстроенные
создателями "простеньких ОС" для "слабеньких компьютеров".
4.1.3. Архитектура и дистрибутивы Linux
Архитектура всех операционных систем UNIX – многоуровневая. На нижнем уровне,
непосредственно над оборудованием, работает ядро операционной системы. Функции ядра
доступны через интерфейс системных вызовов, образующих второй уровень. На следующем
уровне
работают
командные
интерпретаторы,
команды
и
утилиты
системного
администрирования, коммуникационные драйверы и протоколы, – все то, что обычно относят к
системному программному обеспечению. Наконец, внешний уровень образуют прикладные
программы пользователя, сетевые и другие коммуникационные службы, СУБД и утилиты.
Linux – это UNIX операционная система, которая была создана Линусом Торвальдсом (Linus
Torvalds). В начале для него создание данной ОС являлось исключительно хобби. Над
созданием Linux он начал работать будучи студентом Университета Хельсинки (Финляндия). Он
написал "с нуля" ядро операционной системы семейства UNIX. Причиной тому послужило
впечатление, которое на него произвела ОС Minix, распространявшаяся вместе с книгой Энди
Таненбаума. Проблема Minix заключалась в том, что пользоваться ей могли только люди,
купившие эту книгу. Линус же решил написать свободную версию Minix. При этом под словом
"свободную" подразумевается не только бесплатное распространение этой ОС, но и доступность
исходных текстов, а также возможность их изменять и распространять. Правила обращения со
свободным программным обеспечением описаны в общедоступой лицензии GPL (General Public
License).
4
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Такая модель лицензирования оказалась крайне выигрышной для Linux. В результате все
желающие могли принять участие в разработке этой операционной системы. На сегодняшний
день несколько тысяч разработчиков трудятся над Linux. А объединяет их усилия Сеть.
Первая версия Linux (за номером 0.02) была выпущена Линусом Торвальдсом в 1991 г.
Версию 1.0 он создавал еще 3 года и в 1994 г. вышел Linux 1.0. На сегодняшний момент
последняя версия Linux имеет номер 2.6 (она была выпущена в 2004 году), а разработки
непрерывно продолжаются.
Надо сказать, что версии Linux считаются по версиям "сердца" данной операционной системы
– его ядра. В ядро встроено все самое необходимое для функционирования данной
операционной системы. Ядра Linux имеют трехступенчатую систему нумерации версий – N, X, Y.
Если X четное, то значит, данное ядро представляет собой стабильную версию (стабильные
версии 2.0, 2.2, 2.4, 2.6). В этом случае при увеличении числа Y просто устраняются ошибки.
Новые возможности не добавляются. Если X нечетное – это означает, что данное ядро из
линейки разрабатываемых ядер, экспериментальных. С увеличением числа Y в ядрах
появляются новые возможности. Когда разрабатываемое ядро доходит по стабильности до
уровня готового продукта оно "замораживается" и превращается в стабильное N. X+1. 0.
Официальным символом операционной системы Linux является пингвин (рис. 1).
Рис. 1. Логотип Linix
ОС Linux обладает множеством замечательных свойств UNIX, среди которых многозадачность,
многопоточность, эффективная работа с виртуальной памятью, обширные сетевые возможности.
ОС Linux привлекает своей "всеядностью". Она работает на большом числе различных
аппаратных платформ и может использоваться как операционная система сервера, настольного
компьютера или даже ноутбука. И в любой ситуации она сохраняет все родовые признаки UNIX.
Для Linux сушествует огромное количество разнообразного программного обеспечения. Из-за
специфики операционной системы Linux большая часть этого программного обеспечения
распространяется под свободной лицензией, но существуют и коммерческие продукты.
Характерной особенностью всех ОС семейства UNIX является достаточно легкая переносимость
приложений с платформы на платформу на уровне исходных текстов.
В настоящий момент по различным оценкам Linux используют более 10 млн человек.
Произвести более точный учет невозможно, т. к. Linux является свободной ОС и для его
использования не надо нигде регистрироваться.
Система Linux, как и все UNIX-системы, построена по микроядерной архитектуре и состоит из
ядра операционной системы, разработку которого курирует сам Линус Торвальдс
(www.kernel.org), и прочих программ, которые обеспечивают решение пользовательских задач.
Комплекты, объединяющие в себе ядро, набор программ и утилит, а также программуинсталлятор, называются дистрибутивами.
Наиболее популярными являются дистрибутивы RedHat (www.redhat.com), Slackware
(www.slackware.com),
Debian
GNU/Linux
(www.debian.org),
Caldera
Openlinux
(www.calderasystems.com). Лидирующее место занимают дистрибутивы RedHat, от которых
произошли некоторые известные родственные дистрибутивы, такие как Mandrake, Suse и др.
Обычно дистрибутивы содержат все необходимое программное обеспечение для организации
как сервера, так и рабочей станции.
Русскоязычные пользователи предпочитают русские дистрибутивы, среди которых можно
выделить три основных Red Hat совместимых дистрибутива – Red Hat Linux Cyrillic Edition,
Linux Mandrake Russian Edition (ALT Linux) (www.altlinux.ru) и ASP Linux (www.asplinux.ru),
5
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
имеющие русифицированную инсталляционную программу и русификацию "из коробки".
Использование русского дистрибутива дает возможность избежать довольно утомительной для
новичка процедуры русификации консоли и системы XWindow.
Под Linux реализован графический оконный интерфейс – система XWindow. Очень
популярным бесплатным X-сервером является система XFree86 (www.xfree86.org). Этот сервер
поддерживает большое количество различных видеокарт. Есть несколько оконных менеджеров,
среди которых в последнее время особой популярностью пользуются GNOME (www.gnome.org)
и KDE (www.kde.org).
В качестве стандартной системы верстки текста в Linux принята система TeX, являющаяся
стандартом de facto для издательской деятельности, особенно в области научных публикаций.
Также под Linux работают такие офисные пакеты, как коммерческий Applixware
(linux.applixware.com) и StarOffice (www.sun.com/staroffice), который имеет свободный вариант
под называнием OpenOffice. Эти офисные пакеты поддерживают формат файлов MS Office.
Возлагаются большие надежды на бурно развивающийся офисный пакет KOffice
(koffice.kde.org).
Сетевые средства Linux с трудом поддаются краткому описанию. В двух словах можно сказать
просто, что там есть все. И при этом на любой вкус. Это вполне естественно, что операционная
система, рожденная в Сети, отлично приспособлена для работы с ней.
Настолько же богат и мир серверного программного обеспечения для Linux. Под OC Linux
работает популярный Web-server Apache (www.apache.org), на базе которого работает около
половины всех Web-узлов. Этот сервер оказывается эффективным решением для узлов
различной степени сложности. Существуют системы для организации FTP-серверов, почтовых
серверов, DNS, шлюзов, firewall и т. д.
Существует большое количество СУБД, работающих под Linux. Среди них такие бесплатные
SQL-серверы,
как
MySQL
(www.mysql.org),
PostgreSQL
(www.postgresql.org),
mSQL
(www.hughes.com.au) и другие. В рамках ОС Linux легко решаются задачи интеграции баз
данных с web.
Игровой мир Linux также достаточно разнообразен. Передовые производители игр стали
всерьез рассматривать Linux как игровую платформу. Многие игры либо сразу выходят с
версиями под Linux и Windows либо быстро переносятся на Linux. Linux поддерживает довольно
большой список популярных мультимедиа устройств: звуковых плат, TV/FM - тюнеров, 3D
ускорителей.
При выборе аппаратного обеспечения для Linux необходимо убедиться в том, что оно
поддерживается операционной системой. Список поддерживаемого «железа» довольно
обширен, но не безграничен. В нем вряд ли можно найти какие-то малопопулярные или
нестандартные изделия, а также устройства, которые изначально предназначены для работы
исключительно в среде OС Windows, таких как некоторые модели софт-модемов (3COM,
Motorola), принтеров и сканеров. Поэтому перед покупкой какого-либо устройства
рекомендуется посетить соответствующие сайты (www.linmodems.org – софт-модемы,
www.linuxprinting.org – поддержка печати в Linux, www.sane-project.org – поддержка сканеров)
и убедиться, что это устройство будет поддерживаться. К сожалению, не так много
производителей аппаратного обеспечения поставляют драйверы для Linux. А энтузиасты пишут
драйверы в основном для популярных систем.
Следует отметить, что Linux является довольно "отзывчивой" на установку дополнительной
оперативной памяти. То есть при установке дополнительной памяти производительность
системы меняется более существенно, чем в других операционных системах. На тему места на
жестком диске Linux опять-таки предъявляет требования в диапазоне от 60Mb до
бесконечности. Иными словами, эти требования очень различные в зависимости от
потребностей.
Linux неплохо уживается с другими операционными системами. Стандартный загрузчик Linux
– LiLo (Linux Loader) позволяет иметь на одном компьютере несколько операционных систем.
Кроме того, поддерживаются работа с такими файловыми системами, как FAT16 (с длинными
именами), HPFS, NTFS, FAT32, HFS. Поддерживается файловая система CD-ROM. ОС Linux может
быть установлена на уже существующий раздел DOS. Для этого предназначена специальная
файловая система UMSDOS.
6
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Для Linux существуют эмуляторы, позволяющие запускать приложения других операционных
систем. Наиболее популярными являются dosemu (www.dosemu.org) для эмуляции DOS и wine
(www.winehq.com) для эмуляции Windows. Кроме того, последнее время пользуется
заслуженной
популярностью
коммерческое
программное
обеспечение
vmware
(www.vmware.com). Этот продукт позволяет инсталлировать и использовать разнообразные
операционные системы в рамках виртуальной машины (vm), основанной, например, на Linux.
Другими словами, операционную систему Windows можно запустить просто в окошке Linux.
В Сети можно найти обширную информацию по различным разделам ОС Linux. Среди
зарубежных серверов выделяются такие, как www.linux.org, www.linux.com, www.li.org,
www.freshmeat.net, www.slashdot.org, www.linuxtoday.com, www.linuxdoc.org и прочие. Среди
русскоязычных информационных серверов основное место занимают www.linux.org.ru,
www.linux.ru.net а также молодой, но интенсивно развивающийся сервер www.linux.ru. Также
различным аспектам работы с ОС Linux посвящено множество листов рассылки и групп
новостей.
4.2. Программные средства человеко-машинного
интерфейса в UNIX
В операционных системах UNIX реализована вытесняющая многозадачность на основе
процессов, работающих в изолированных адресных пространствах в виртуальной памяти. При
этом поддерживается одновременная работа многих пользователей. Пользовательские процессы
могут запускаться как в фоновом, так и в интерактивном режиме с использованием различных
терминалов (виртуальных консолей).
4.2.1. Пользователи и группы
UNIX – многопользовательская операционная система. Многопользовательская модель
позволяет решить ряд задач, весьма актуальных и для современных персональных
компьютеров, и для серверов, работающих в локальных и глобальных сетях, и вообще в любых
системах, одновременно выполняющих разные задачи, за которые отвечают разные люди.
Процедура регистрации в системе для UNIX обязательна: работать в системе, не
зарегистрировавшись под тем или иным именем пользователя, просто невозможно. Для каждого
пользователя определена сфера его полномочий в системе: программы, которые он может
запускать, файлы, которые он имеет право просматривать, изменять, удалять. При попытке
сделать что-то, выходящее за рамки полномочий, пользователь получит сообщение об ошибке.
Каждый пользователь обязательно принадлежит к одной или нескольким группам. Все
команды выполняются от имени определенного пользователя, принадлежащего в момент
выполнения к определенной группе.
В многопользовательских системах необходимо обеспечивать защиту объектов (файлов,
процессов), принадлежащих одному пользователю, от всех остальных. ОС UNIX предлагает
базовые средства защиты и совместного использования файлов на основе отслеживания
пользователя и группы, владеющих файлом, трех уровней доступа (для пользователявладельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех
базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства
защиты процессов основаны на отслеживании принадлежности процессов пользователям.
Для отслеживания владельцев процессов и файлов используются числовые идентификаторы.
Идентификатор пользователя и группы - целое число (обычно) в диапазоне от 0 до 65535.
Присвоение уникального идентификатора пользователя выполняется при заведении системным
администратором нового регистрационного имени. Значения идентификатора пользователя и
группы – не просто числа, которые идентифицируют пользователя, – они определяют
владельцев файлов и процессов.
Среди пользователей системы выделяется один пользователь – системный администратор или
суперпользователь, обладающий всей полнотой прав на использование и конфигурирование
системы. Это – пользователь с идентификатором 0 и регистрационным именем root.
При представлении информации человеку удобнее использовать вместо соответствующих
идентификаторов символьные имена – регистрационное имя пользователя и имя группы.
7
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Соответствие идентификаторов и символьных имен, а также другая информация о
пользователях и группах в системе (учетные записи), как и большинство другой информации о
конфигурации системы UNIX, по традиции представлена в виде текстовых файлов. Эти файлы –
/etc/passwd, /etc/group и /etc/shadow.
Файл /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.
8
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Таблица 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.
9
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Для создания, изменения и удаления учетных записей пользователей все версии ОС 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-сервер – это ядро. Подобно ядру, он выполняет
низкоуровневые операции и взаимодействует с аппаратурой, ничего самостоятельно не
предпринимая. Подобно ядру, он предоставляет задачам унифицированный интерфейс к этим
низкоуровневым функциям, а также занимается разделением доступа (окно и фокус) к
графическим ресурсам.
10
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
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).
11
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
4.3. Многозадачность в системах UNIX
4.3.1. Процессы в UNIX
В ОС UNIX основным средством организации и единицей многозадачности является процесс.
Операционная система манипулирует образом процесса, который представляет собой
программный код, а также разделами данных процесса, определяющими среду выполнения.
Во время исполнения или в ожидании "своего часа" процессы содержатся в виртуальной
памяти со страничной организацией. Часть этой виртуальной памяти сопоставляется с
физической памятью. Часть физической памяти резервируется для ядра операционной системы.
Пользователи могут получить доступ только к оставшейся для процессов памяти. При
необходимости страницы памяти процессов откачиваются из физической памяти на диск, в
область подкачки. При обращении к странице в виртуальной памяти, если она не находится в
физической памяти, происходит ее подкачка с диска.
Виртуальная память реализуется и автоматически поддерживается ядром ОС UNIX.
Типы процессов
В операционных системах UNIX выделяются три типа процессов: системные, процессыдемоны и прикладные процессы.
Системные процессы являются частью ядра и всегда расположены в оперативной памяти.
Системные процессы не имеют соответствующих им программ в виде исполняемых файлов и
запускаются особым образом при инициализации ядра системы. Выполняемые инструкции и
данные этих процессов находятся в ядре системы, таким образом, они могут вызывать функции
и обращаться к данным, недоступным для остальных процессов.
К системным процессам можно отнести и процесс начальной инициализации init,
являющийся прародителем всех остальных процессов. Хотя init не является частью ядра, и его
запуск происходит из выполняемого файла, его работа жизненно важна для функционирования
всей системы в целом.
Демоны – это не интерактивные процессы, которые запускаются обычным образом – путем
загрузки в память соответствующих им программ, и выполняются в фоновом режиме. Обычно
демоны запускаются при инициализации системы, но после инициализации ядра, и
обеспечивают работу различных подсистем UNIX: системы терминального доступа, системы
печати, сетевых служб и т. д. Демоны не связаны ни с одним пользователем. Большую часть
времени демоны ожидают, пока тот или иной процесс запросит определенную услугу.
К прикладным процессам относятся все остальные процессы, выполняющиеся в системе.
Как правило, это процессы, порожденные в рамках пользовательского сеанса работы.
Важнейшим пользовательским процессом является начальный командный интерпретатор,
который обеспечивает выполнение команд пользователя в системе UNIX.
Пользовательские процессы могут выполняться как в интерактивном (приоритетном), так и в
фоновом режимах. Интерактивные процессы монопольно владеют терминалом, и пока такой
процесс не завершит свое выполнение, пользователь не имеет доступа к командной строке.
Атрибуты процесса
Процесс в UNIX имеет ряд атрибутов, позволяющих операционной системе управлять его
работой. Основные атрибуты:
 идентификатор процесса (PID), позволяющий ядру системы различать процессы.
Когда создается новый процесс, ядро присваивает ему следующий свободный (т. е. не
ассоциированный ни с каким процессом) идентификатор. Присвоение идентификатора обычно
происходит по возрастающей, т. е. идентификатор нового процесса больше, чем идентификатор
процесса, созданного перед ним. Если идентификатор достигает максимального значения
(обычно – 65737), следующий процесс получит минимальный свободный PID и цикл
повторяется. Когда процесс завершает работу, ядро освобождает использовавшийся им
идентификатор;
 идентификатор родительского процесса (PPID) – идентификатор процесса,
породившего данный процесс. Все процессы в системе, кроме системных процессов и процесса
12
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
init, являющегося прародителем остальных процессов, порождены одним из существующих или
существовавших ранее процессов;
 поправка приоритета (NI) – относительный приоритет процесса, учитываемый
планировщиком при определении очередности запуска. Фактическое же распределение
процессорных ресурсов определяется приоритетом выполнения (атрибут PRI), зависящим от
нескольких факторов, в частности от заданного относительного приоритета. Относительный
приоритет не изменяется системой на всем протяжении жизни процесса, хотя может быть
изменен пользователем или администратором при запуске процесса с помощью команды nice.
Диапазон значений инкремента приоритета в большинстве систем – от -20 до 20. Если
инкремент не задан, используется стандартное значение 10. Положительный инкремент
означает снижение текущего приоритета. Обычные пользователи могут задавать только
положительный инкремент и, тем самым, только снижать приоритет. Пользователь root может
задать отрицательный инкремент, который повышает приоритет процесса и, тем самым,
способствует его более быстрой работе. В отличие от относительного приоритета приоритет
выполнения процесса динамически изменяется планировщиком;
 терминальная линия (TTY) – терминал или псевдотерминал, связанный с процессом. С
этим терминалом по умолчанию связаны стандартные потоки: входной, выходной и поток
сообщений об ошибках. Потоки (программные каналы) являются стандартным средством
межпроцессного взаимодействия в ОС UNIX. Процессы-демоны не связаны с терминалом;
 реальный (UID) и эффективный (EUID) идентификаторы пользователя.
Реальным идентификатором пользователя данного процесса является идентификатор
пользователя, запустившего процесс. Эффективный идентификатор служит для определения
прав доступа процесса к системным ресурсам (в первую очередь к ресурсам файловой системы).
Обычно реальный и эффективный идентификаторы совпадают, т. е. процесс имеет в системе те
же права, что и пользователь, запустивший его. Однако существует возможность задать
процессу более широкие права, чем права пользователя, путем установки бита SUID, когда
эффективному
идентификатору
присваивается
значение
идентификатора
владельца
выполняемого файла (например, пользователя root);
 реальный (GID) и эффективный (EGID) идентификаторы группы. Реальный
идентификатор группы равен идентификатору основной или текущей группы пользователя,
запустившего процесс. Эффективный идентификатор служит для определения прав доступа к
системным ресурсам от имени группы. Обычно эффективный идентификатор группы совпадает с
реальным. Но если для выполняемого файла установлен бит SGID, такой файл выполняется с
эффективным идентификатором группы-владельца.
4.3.2. Жизненный цикл процесса в UNIX и основные системные вызовы
Жизненный цикл процесса в операционной системе UNIX может быть разбит на несколько
состояний. Переход из одного состояния в другое происходит в зависимости от наступления
определенных событий в системе.
Возможны следующие состояния процесса:
 процесс выполняется в пользовательском режиме. При этом процессором выполняются
прикладные инструкции данного процесса;
 процесс выполняется в режиме ядра. При этом процессором выполняются системные
инструкции ядра от имени процесса;
 процесс не выполняется, но готов к запуску, как только планировщик выберет его, т. е.
процесс находится в очереди на выполнение и обладает всеми необходимыми ему ресурсами,
кроме процессора;
 процесс находится в состоянии сна, ожидая недоступного в данный момент ресурса,
например завершения операции ввода-вывода;
 процесс возвращается из режима ядра в режим задачи, но ядро прерывает его и
производит переключение контекста для запуска более приоритетного процесса;
 процесс только что создан системным вызовом fork и находится в переходном состоянии:
он существует, но не готов к запуску и не находится в состоянии сна;
 процесс выполнил системный вызов exit и перешел в состояние зомби. Как такового
процесса не существует, но остаются записи, содержащие код возврата и временную статистику
его выполнения, доступную для родительского процесса. Это состояние является конечным в
жизненном цикле процесса.
Процесс начинает свой жизненный путь с состояния 6, когда родительский процесс
выполняет системный вызов fork. После того как создание процесса полностью завершено,
13
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
процесс завершает "дочернюю часть" вызова fork и переходит в состояние 3 готовности к
запуску, ожидая своей очереди на выполнение. Когда планировщик выбирает процесс для
выполнения, он переходит в состояние 1 и выполняется в пользовательском режиме.
Выполнение в пользовательском режиме завершается в результате системного вызова или
прерывания, и процесс переходит в режим ядра, в котором выполняется код системного вызова
или прерывания. После этого процесс опять может вернуться в пользовательский режим.
Однако во время выполнения системного вызова процесса в режиме ядра процессу может
понадобиться недоступный в данный момент ресурс. Для ожидания доступа к такому ресурсу
процесс делает системный вызов sleep и переходит в состояние 4 – сна. При этом процесс
добровольно освобождает вычислительные ресурсы, которые предоставляются следующему
наиболее приоритетному процессу. Когда ресурс становится доступным, ядро "пробуждает
процесс", используя вызов wakeup, помещает его в очередь на выполнение, и процесс
переходит в состояние 3 готовности к запуску.
Планирование процессов в UNIX основано на приоритете процесса. Планировщик всегда
выбирает процесс с наивысшим приоритетом. Приоритет процесса не является фиксированным
и динамически изменяется системой в зависимости от использования вычислительных ресурсов,
времени ожидания запуска и текущего состояния процесса. Если процесс готов к запуску и
имеет наивысший приоритет, планировщик приостановит выполнение текущего процесса (с
более низким приоритетом), даже если последний не "выработал" свой временной квант.
Ядро UNIX является непрерываемым (nonpreemptive). Это означает, что процесс,
находящийся в режиме ядра (в результате системного вызова или прерывания) и выполняющий
системные инструкции, не может быть прерван системой, а вычислительные ресурсы переданы
другому высокоприоритетному процессу. В этом состоянии выполняющийся процесс не может
освободить процессор "по собственному желанию", в результате недоступности какого-либо
ресурса, перейдя в состояние сна. В противном случае система может прервать выполнение
процесса только при переходе из режима ядра в пользовательский режим. Такой подход
значительно упрощает решение задач синхронизации и поддержки целостности структур
данных ядра.
Новый процесс создается в UNIX только путем системного вызова fork. Процесс, сделавший
вызов fork, называется родительским, а вновь созданный процесс – порожденным. Новый
процесс является точной копией родительского. При порождении (разветвлении) процесса
проверяется, достаточно ли памяти и места в таблице процессов для данного процесса. Если да,
то образ текущего процесса копируется в новый образ процесса, и в таблице процессов
возникает новый элемент. Новому процессу присваивается новый уникальный идентификатор
(PID). Когда изменение таблицы процессов ядра завершается, процесс добавляется к списку
процессов, доступных для выполнения и ожидающих в очереди планировщика подобно другим
процессам.
Порожденный процесс отличается от родительского процесса следующими основными
характеристиками:


порожденный процесс имеет свой уникальный идентификатор;
порожденный процесс имеет другой идентификатор родительского процесса, равный
идентификатору породившего процесса;
 порожденный процесс имеет свои собственные копии дескрипторов файлов (в частности,
стандартных потоков), открытых родительским процессом. Каждый дескриптор файла
порожденного процесса имеет первоначально такое же значение текущей позиции в файле, что
и соответствующий родительский;
 у порожденного процесса обнуляются счетчики времени, потраченного системой для его
обслуживания.
Обычно после порождения порожденный процесс выполняет системный вызов exec,
перекрывающий сегменты текста и данных процесса новыми сегментами текста и данных,
взятыми из указанного выполняемого файла. При этом аппаратный контекст процесса
инициализируется заново.
Новый процесс наследует у процесса, вызвавшего exec, его основные характеристики:




значение поправки приоритета;
идентификатор процесса;
идентификатор родительского процесса;
идентификатор группы процессов;
14
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE







терминальную линию;
текущий каталог;
корневой каталог;
маску создания файлов;
ограничения ресурсов;
счетчики времени, потраченного системой на обслуживание этого процесса;
блокировки доступа к сегментам файлов.
Процесс завершает работу в системе при выполнении системного вызова exit. Процесс может
сам завершить свою работу, в соответствии с алгоритмом, либо может быть прекращен ядром.
Для получения информации о состоянии процессов используется команда ps. Команду ps
может выполнять любой пользователь. Динамически отслеживать состояние всех процессов в
системе можно при помощи утилиты top.
4.3.3. Сигналы
Сигналы обеспечивают механизм вызова определенной процедуры при наступлении
некоторого события (аналогично прерываниям). Сигнал отправляется, когда происходит
определенное событие, о наступлении которого должен быть уведомлен процесс.
Сигнал может посылаться одним процессом другому (с помощью системного вызова kill) и
будет доставлен, если оба процесса – одного пользователя или сигнал послан от имени
пользователя root. Сигналы посылаются также ядром.
Ядро генерирует и посылает процессу сигнал в ответ на ряд событий, которые могут быть
вызваны самим процессом, другим процессом, прерыванием или каким-либо внешним событием.
Следует заметить, что любая обработка сигнала, в том числе и обработка по умолчанию,
подразумевает, что процесс выполняется. На системах с высокой загрузкой это может привести
к задержкам между отправлением и доставкой сигнала, т. к. процесс не может получить сигнал,
пока не будет выбран планировщиком, и ему не будут предоставлены вычислительные ресурсы.
Детальная информация о сигналах представлена на страницах справочного руководства
signal (вызываемого командой man signal).
Для посылки сигналов из командного интерпретатора используется команда kill. Она имеет
следующий синтаксис:
kill [ - сигнал ] pid...
Эта команда посылает указанный сигнал (по умолчанию сигнал SIGTERM – завершение
процесса) всем процессам с указанными идентификаторами. Посылать сигнал можно и
несуществующему процессу – выдается предупреждение, но другим процессам сигнал
посылается. Посылаемый сигнал задается по имени без префикса SIG или по номеру.
Два сигнала – 9 (KILL) и 19 (STOP) – всегда обрабатывает система. Первый из них нужен для
того, чтобы убить процесс наверняка (отсюда и название). Сигнал STOP приостанавливает
процесс: в таком состоянии процесс не удаляется из таблицы процессов, но и не выполняется
до тех пор, пока не получит сигнал 18 (CONT) – после чего продолжит работу. В Linux сигнал
STOP можно передать активному процессу с помощью управляющего символа Ctrl + z.
4.4. Файловая система в UNIX
Логическая файловая система в ОС UNIX (или просто файловая система) – это иерархически
организованная структура всех каталогов и файлов в системе, начинающаяся с корневого
каталога. Файловая система UNIX обеспечивает унифицированный интерфейс доступа к
данным, расположенным на различных носителях, и к периферийным устройствам.
Логическая файловая система может состоять из одной или нескольких физических
файловых (под)систем, являющихся разделами физических носителей (дисков, CD-ROM или
дискет).
15
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
В операционных системах UNIX пользователю предоставляется возможность объединения
файловых систем, находящихся на разных устройствах, в единую файловую систему,
описываемую единым деревом каталогов. Такая операция называется монтированием.
Среди всех имеющихся в системе логических дисковых устройств операционная система
выделяет одно устройство, называемое системным, файловая система которого назначается
корневой. Для связи иерархий файлов в корневой файловой системе выбирается некоторый
существующий каталог, обычно с именем mnt или media (рис. 2).
Рис. 2. Пример логической файловой структуры
После выполнения монтирования (при помощи команды mount) выбранный каталог,
например mnt, становится корневым каталогом подключаемой файловой системы. После
монтирования общей файловой системы для пользователя нет логической разницы между
корневой и смонтированной файловыми системами. Именование файлов производится так же,
как если бы с самого начала файловая система была единой.
Файловая система контролирует права доступа к файлам, выполняет операции создания и
удаления файлов, а также выполняет запись/чтение данных файла. Поскольку большинство
прикладных функций выполняется через интерфейс файловой системы, следовательно, права
доступа к файлам определяют привилегии пользователя в системе.
Файловая система обеспечивает перенаправление запросов, адресованных периферийным
устройствам, соответствующим модулям подсистемы ввода-вывода.
4.4.1. Файлы и каталоги
Иерархическая структура файловой системы UNIX упрощает ориентацию в ней. Каждый
каталог, начиная с корневого, в свою очередь, содержит файлы и другие каталоги
(подкаталоги). Каждый каталог содержит также ссылку на родительский каталог (для корневого
каталога родительским является он сам), представленную каталогом с именем две точки (..) и
ссылку на самого себя, представленную каталогом с именем точка (.).
Каждый процесс имеет текущий каталог. Сразу после регистрации текущим каталогом
пользователя (на самом деле, процесса – начальной программы, обычно, командного
интерпретатора) становится начальный каталог пользователя, указанный в файле
/etc/passwd.
Каждый процесс может сослаться (назвать) на любой файл или каталог в файловой системе
по имени. В ОС UNIX поддерживаются три способа указания имен файлов.
 Краткое имя. Имя, не содержащее специального метасимвола косая черта (/), является
кратким именем файла. По краткому имени можно сослаться на файлы текущего каталога.
16
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Например, команда ls -l profile требует получить полную информацию о файле profile в
текущем каталоге.
 Относительное имя. Имя, не начинающееся с символа косой черты (/), но включающее
такой символ. Оно ссылается на файл относительно текущего каталога. При этом для ссылки на
файл или каталог в каком-то другом каталоге используется метасимвол косой черты (/).
Например, команда ls -l../profile требует получить полную информацию о файле profile в
родительском каталоге текущего каталога, а команда vi doc/text.txt требует открыть в
редакторе vi файл text.txt в подкаталоге doc текущего каталога.
 Полное имя. Имя, начинающееся с символа косой черты (/). Оно ссылается на файл
относительно корневого каталога. Это имя еще называют абсолютным или именем от корня, т. к.
оно, в отличие от предыдущих способов задания имени, ссылается на один и тот же файл
независимо от текущего каталога. Например, команда ls -l /home/user01/profile требует
получить полную информацию о файле profile в каталоге /home/user01 независимо от того, в
каком каталоге она выполняется.
Другие символы, кроме косой черты, не имеют в именах файлов UNIX особого значения (это
не метасимволы). В большинстве файловых систем имена файлов могут иметь длину до 255
символов. Имя может содержать практически любые символы, кроме: /; \; ?; >; <; |; *;
«. При этом расширение файла (тип файла в ОС MS DOS – точка и три символа) является просто
частью имени, как и другие символы, и никакой другой функции не выполняет. Следует
отметить, что ОС UNIX чувствительна к регистру символов, поэтому, например, имена файлов
File и file будут различными.
Для изменения текущего каталога используется команда cd [каталог]. Если каталог не
указан, используется значение переменной среды $HOME (обычно это начальный каталог
пользователя). Чтобы сделать новый каталог текущим (войти в каталог), нужно иметь для него
право на выполнение.
Для просмотра информации о типах (и других атрибутах) файлов в ОС UNIX используется
команда ls, которая выдает информацию об указанных файлах или о файлах и каталогах в
текущем каталоге (если файл не задан). Формат и подробность выдаваемой информации
зависит от опций. Основным форматом результатов ls является так называемый длинный
листинг (задаваемый опцией -l). Например, команда ls -l выведет длинный листинг текущего
каталога.
В UNIX существует несколько типов файлов, различающихся по функциональному
назначению и действиям операционной системы при выполнении тех или иных операций над
ними.
Обычный файл. Представляет собой наиболее общий тип файлов, содержащий данные в
некотором формате. Для операционной системы такие файлы представляют собой просто
последовательность байтов. К этим файлам относятся текстовые файлы, двоичные данные и
выполняемые программы.
В длинном листинге (выводимом командой ls – l) признаком обычного файла является дефис
(-) в первой позиции первого столбца, например:
-rw-rw-r-- 1 root sys 8296 Фев 23 15:39 ps_data
Обычные файлы создаются текстовыми редакторами (текстовые), компиляторами
(двоичные), прикладными программами с помощью соответствующего системного вызова или
путем перенаправления вывода, например: cat>f1.txt или >f1.txt (создается файл f1.txt в
текущем каталоге). При этом используется перенаправление со стандартного ввода –
клавиатуры в файл. Закончить ввод данных с клавиатуры можно с помощью комбинации
клавиш Ctrl + с. Команда cat >>file добавляет данные в файл, а не перезаписывает его.
Каталог. С помощью каталогов формируется логическое дерево файловой системы. Каталог
– это файл, содержащий имена находящихся в нем файлов, а также указатели на
дополнительную информацию – метаданные, позволяющие операционной системе производить
действия с этими файлами. Каталоги определяют положение файла в дереве файловой системы.
В длинном листинге признаком каталога является символ d в первой позиции первого столбца:
drwxr - xr - x 2 informix informix 115 Фев 24 13:05 txt
Каталоги создаются командой mkdir.
Специальный файл устройства. Этот тип файлов обеспечивает доступ к физическим
устройствам. В UNIX различают символьные (character special device) и блочные (block special
17
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
device) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и
записи в специальный файл устройства.
Символьные файлы устройств используются для небуферизованного обмена данными с
устройством. Блочные файлы устройств позволяют производить обмен данными в виде пакетов
фиксированной длины – блоков.
В длинном листинге признаком специального символьного и блочного устройств являются
символы с и b в первой позиции первого столбца, соответственно:
crw------- 1 root sys 77, 0 Фев 14 14:03 nv@0,0:0
brw-r----- 1 root sys 29, 0 Апр 20 2001 sd@0,0:a
Специальные файлы устройства создаются командой mknod.
Создавать специальные файлы устройств обычно может только пользователь root.
FIFO – именованный канал. Такой файл используется для связи между процессами по
принципу очереди. Именованные каналы впервые появились в UNIX System V, но большинство
современных систем поддерживают этот механизм.
В длинном листинге признаком именованного канала является символ p в первой позиции.
Именованные каналы создаются командой mknod: mknod имя p.
Связь. Каталог содержит имена файлов и указатели на их метаданные. Такая архитектура
позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с
метаданными и, соответственно, с данными файла, в то время как сам файл существует
независимо от того, как его называют в файловой системе. Стандарт POSIX (Portable Operating
System Interface) требует реализовать поддержку двух типов связей – жестких и
символических.
Жесткой связью (hard link) считается элемент каталога, указывающий непосредственно на
некоторый индексный дескриптор. Жесткие связи очень эффективны, но у них существуют
определенные ограничения, т. к. они могут создаваться только в пределах одной физической
файловой системы. Когда создается такая связь, связываемый файл должен уже существовать.
Кроме того, каталоги не могут связываться жесткой связью.
Символическая связь (symbolic link) – это специальный файл, который содержит путь к
другому файлу. Указание на то, что данный элемент каталога является символической связью,
находится в индексном дескрипторе. Поэтому обычные команды доступа берут из файла, имя
которого приведено в связи, вместо получения данных из физического файла. Этот путь может
указывать на что угодно: это может быть каталог, он может даже находиться в другой
физической файловой системе, более того, указанного файла может и вовсе не быть.
Количество жестких связей файла (а также количество файлов в каталоге, если файл
является каталогом) отображается во втором поле длинного листинга, например 2:
- rw - r -- r -- 2 ivanov 50 643 Мар 26 15:37 f 3. txt
Для создания связей используется команда ln: ln [-s] исходный_файл цель.
В результате выполнения создается жесткая (по умолчанию) или символическая (если
указана опция -s) связь с заданным именем цель. Если файл с таким именем уже существует,
он перезаписывается. Если цель не указана, то создается связь на указанный исходный_файл
с таким же именем в текущем каталоге.
В длинном листинге признаком символической связи является символ l в первой позиции
первого столбца:
lrwxrwxrwx 1 ivanov 50 643 Мар 26 15:57 f 4 -> f 2
Сокет. Сокеты позволяют представить в виде файла в логической файловой системе сетевое
соединение. Создание сокетов выходит за пределы данного курса, хотя понятно, что для этого
ядро предлагает соответствующий системный вызов. В длинном листинге признаком сокета
является символ s в первой позиции первого столбца.
18
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
К основным операциям для работы с файлами, помимо создания и просмотра характеристик,
можно отнести копирование (команда cp), удаление (rm,rmdir) и перемещение
(переименование) (mv), а также просмотр содержимого (команда cat).
При работе в консольном режиме часто используется файловый менеджер Midnight
Commander, который запускается командой mc. В этом случае для просмотра и
редактирования файлов используется клавиша F4. Копирование осуществляется клавишей F5,
переименование (перемещение) – F6, создание каталога – F7, удаление – F8. Скрытие
(открытие) окна файлового менеджера выполняется комбинацией Ctrl+ o.
4.4.2. Права доступа к файлам
Каждый пользователь UNIX (не говоря уже о системном администраторе) должен управлять
дисковым пространством. Пользователь несет ответственность за содержимое своего
начального каталога и обеспечение целостности любых имеющихся у него данных. Целостность
данных обеспечивается проверкой и изменением прав доступа. Защищая файлы и каталоги,
пользователь предотвращает неавторизированный доступ.
Каждый файл в ОС UNIX содержит набор прав доступа, по которому определяется, как
пользователь взаимодействует с данным файлом. Этот набор хранится в индексном дескрипторе
данного файла в виде целого значения, из которого обычно используется 12 битов. Причем
каждый бит используется как переключатель, разрешая (значение 1) или запрещая (значение
0) тот или иной доступ.
Три первых бита устанавливают различные виды поведения при выполнении. Оставшиеся
девять делятся на три группы по три, определяя права доступа соответственно для владельца,
группы и остальных пользователей. Каждая группа задает права на чтение (r, read), запись (w,
write) и выполнение (x, execute). Владелец может разрешить или запретить доступ к файлам
для членов группы. Администратор (root) всегда имеет полные права на все объекты.
Базовые биты прав доступа представлены в табл. 4. В первом столбце таблицы находится
восьмеричное значение, задающее соответствующий бит, во втором столбце представлен вид
этого бита в первом поле длинного листинга и в третьем – право, задаваемое этим битом.
Таблица 4
Права доступа к файлам в ОС UNIX
Восьмеричное значение
Вид в столбце прав доступа
0400
-r--------
Право владельца на чтение
0200
--w-------
Право владельца на запись
0100
---x------
Право владельца на выполнение
0040
----r-----
Право группы на чтение
0020
-----w----
Право группы на запись
0010
------x---
Право группы на выполнение
0004
-------r--
Право всех прочих на чтение
0002
--------w-
Право всех прочих на запись
0001
---------x
Право всех прочих на выполнение
19
Право или назначение бита
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Таблица 4. Продолжение
Восьмеричное
значение
Вид в столбце прав
доступа
Право или назначение бита
4000
---s------
Установленный эффективный идентификатор владельца (бит
SUID)
2000
------s---
Установленный эффективный идентификатор группы (бит
SПID)
1000
---------t
---------T
Клейкий (sticky) бит. Вид для каталогов и выполняемых
файлов соответственно.
Бит чтения для всех типов файлов имеет одно и то же значение: он позволяет читать
содержимое файла (получать листинг каталога командой ls).
Бит записи также имеет одно и то же значение: он позволяет писать в этот файл, включая и
перезапись содержимого. Если у пользователя отсутствует право доступа на запись в каталоге,
где находится данный файл, то пользователь не сможет этот файл удалить, а также
пользователь не сможет создавать и удалять в нем файлы.
Если для некоторого файла установлен бит выполнения, то файл может выполняться как
команда. В случае установки этого бита для каталога этот каталог можно сделать текущим
(перейти в него, например, командой cd), но это не означает, что возможно выполнение
находящихся в нем файлов.
Установленный бит SUID означает, что доступный пользователю на выполнение файл будет
выполняться с правами (с эффективным идентификатором) владельца, а не пользователя,
вызвавшего файл (как это обычно происходит).
Установленный бит SGID означает, что доступный пользователю на выполнение файл будет
выполняться с правами (с эффективным идентификатором) группы-владельца, а не
пользователя, вызвавшего файл (как это обычно происходит).
Следует еще раз отметить, что с каждым процессом UNIX связаны два идентификатора:
пользователя, от имени которого был создан этот процесс, и группы, к которой принадлежит
данный пользователь. Эти идентификаторы носят название реальных идентификаторов
пользователя: Real User ID, RUID и реальных идентификаторов группы: Real Group ID, RGID.
Однако при проверке прав доступа к файлу используются не эти идентификаторы, а так
называемые эффективные идентификаторы пользователя: Effective User ID, EUID и
эффективные идентификаторы группы: Effective Group ID, EGID.
Введение эффективных идентификаторов позволяет процессу выступать в некоторых случаях
от имени пользователя или группы, отличных от тех, которые ему достались при рождении. В
исходном состоянии эффективные идентификаторы совпадают с реальными. Чтобы реализовать
смену прав кроме перечисленных ранее прав доступа, файл имеет два признака разрешения
смены идентификатора – Set User ID on execution (SUID) и Set Group ID on execution (SGID),
которые разрешают смену идентификаторов пользователя и группы при выполнении данного
файла. Их существование обусловлено тем, что некоторые программы требуют для своей
работы
привилегий
пользователя
root.
Например,
команда
passwd
(находится
/usr/bin/passwd), с помощью которой пользователь меняет свой пароль, обращается к файлу,
принадлежащему суперпользователю /etc/passwd, поэтому у нее установлен бит SUID. Она
модифицирует файл строго определенным пользователем образом и завершается.
Если бит SGID установлен для каталога, то создаваемые в нем файлы будут принимать
идентификатор группы каталога, а не группы, в которую входит владелец файла. Это упрощает
пользователям, принадлежащих к одной группе, совместный доступ к каталогу.
Применение прав доступа SUID и SGID чревато опасными последствиями – при некорректном
завершении программы, запущенной обычным пользователем и получившей права
пользователя root, возможна ситуация, когда права root останутся у этого пользователя. Если
нужны привилегированные права, то лучше пользоваться программой sudo (su) – смены
текущего пользователя.
20
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Для расчета прав доступа необходимо сложить восьмеричные значения всех необходимых
установленных битов. В результате получится четырехзначное восьмеричное число. Если
старший разряд имеет значение 0, его можно не указывать.
Например, если необходимо задать права доступа на чтение, запись и выполнение для
владельца, на чтение и выполнение для группы и на выполнение для всех остальных
пользователей, получаем следующее восьмеричное значение:
Чтение для владельца:
0400
Запись для владельца:
0200
Выполнение для владельца:
0100
Чтение для группы:
0040
Выполнение для группы:
0010
Выполнение для прочих:
0001
Сумма:
0751
Итак, соответствующие права доступа – 751. В длинном листинге эти права будут
представлены в виде "-rwxr-x--x" (при "сложении" буквы с дефисом в символьном
представлении остается буква). Полное право доступа всех задается числом 777 (111 111 111).
Наиболее часто используется маска 644 (110 100 100), разрешающая чтение и модификацию
файла для владельца, и только чтение для других пользователей.
Для установки (изменения) прав доступа к файлу используется команда chmod. Права
доступа к файлу может изменять или устанавливать только его владелец или пользователь
root. Права доступа могут задаваться как абсолютным значением (восьмеричным числом,
расчет которого выполняется в соответствии с табл. 4), так и относительным изменением прав
при помощи специальных символов.
4.4.3. Структура логической файловой системы UNIX
Использование общепринятых имен основных файлов и структуры каталогов существенно
облегчает работу в операционной системе, ее администрирование и повышает переносимость.
Типичная структура и назначение каталогов логической файловой системы UNIX представлена в
табл. 5.
Таблица 5
Назначение основных каталогов логической файловой системы UNIX
Каталог
Назначение каталога
/
Корневой каталог. Является основой любой файловой системы UNIX. Все остальные каталоги и
файлы располагаются в рамках структуры, порожденной корневым каталогом (в нем и в его
подкаталогах), независимо от их физического местонахождения. Для корневого каталога
обязательно должна создаваться отдельная физическая файловая система, а сам он является
точкой ее монтирования
/bin
Основные программы для работы в системе пользователей.
/boot
Ядро и фильтры для его загрузки
/dev
Файлы устройств
/etc
Каталог для конфигурационных файлов. Может иметь подкаталоги для различных компонентов и
служб. Конфигурационные файлы в UNIX – обычные текстовые
/home
Начальные каталоги пользователей
/lib
Библиотеки и компоненты языка С
21
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Каталог
Назначение каталога
/lost+found Восстановленные после аварийного размонтирования части файловой системы
/mnt
/media
Точка монтирования для файловых систем на съемных носителях или дополнительных дисках.
Может содержать подкаталоги для отдельных типов носителей, например, cdrom или floppy. Может
быть пустым
/proc
Образы всех выполняющихся процессов (по номерам)
/root
Начальный каталог суперпользователя
/sbin
Команды загрузки и восстановления системы
/tmp
Временные файлы, удаляемые при перезагрузке
/var
Системные данные и конфигурационные файлы (файловой системы, например файлов журналов
системы)
/usr
Иерархия дополнительных файлов и программ
Специальные файлы обычно находятся в каталоге /dev. Стандартные имена основных
устройств представлены в табл 6.
Таблица 6
Стандартные имена основных специальных файлов в каталоге /dev
Файл
Устройство
tty N
Консоль
mouse
Мышь
ttyS N
Последовательный порт (tty0 – COM1)
lp N
hdx N
Параллельный порт
IDE жесткий диск (hda – Primary Master, … hdd – Secondary Slave),
N – раздел (1-4 – первичные разделы, с 5 – логические диски в расширенном разделе)
sdx N
fd 0
eth N
SCSI жесткий диск
Первый дисковод (А)
Сетевая плата N
Если возле файла слева имеется символ +, то данное устройство блочного типа, если символ
–, то устройство символьного типа.
4.4.4. Физические файловые системы UNIX
Физическая файловая система формирует структуру хранения данных на физическом
носителе, в первую очередь – на жестком диске. Следует еще раз напомнить, что важной
отличительной особенностью построения файловых систем UNIX является то, что каждый файл
(в том числе каталог и устройство ввода-вывода) имеет персональный индексный дескриптор
и может иметь несколько имен – ссылок на этот индексный дескриптор.
Рассмотрим общую структуру файловых систем UNIX на примере ufs. В расположении
файловой системы на диске следует выделить 4 области:


загрузочный блок;
суперблок, который содержит самую общую информацию о файловой системе:
o размер файловой системы;
o размер области индексных дескрипторов;
22
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
число индексных дескрипторов;
список свободных индексных дескрипторов (битовая карта индексных
дескрипторов);
o список свободных блоков (кластеров) (битовая карта блоков);
o также другую административную информацию;
 область индексных дескрипторов, в которой порядок расположения индексных
дескрипторов соответствует их номерам.
 область данных, в которой расположены как обычные файлы, так и файлы-каталоги, в
том числе и корневой каталог; специальные файлы (ассоциированные с устройствами вводавывода) представлены в файловой системе только записями в соответствующих каталогах и
индексными дескрипторами специального формата, но места в области данных не занимают.
o
o
Каждый индексный дескриптор имеет номер, который одновременно является уникальным
именем файла в файловой системе и выделяется файлу из числа свободных номеров при
создании файла на диске. Запись о файле в каталоге состоит всего из двух полей: символьного
имени файла и номера индексного дескриптора.
Следовательно, один номер индексного дескриптора (т. е. один реальный файл) может
соответствовать различным символьным именам этого файла. Файл удаляется из системы и его
дескриптор освобождается лишь после удаления его последнего символьного имени.
Индексный дескриптор файла содержит следующие данные о файле:




идентификатор владельца файла;
тип файла (обычный, каталог, специальный, символьная связь);
временные характеристики: время последней модификации файла и т. п.;
число ссылок на данный индексный дескриптор, равный количеству псевдонимов
(символьных имен) файла;
 адресная информация – расположение частей файла по блокам (кластерам) в области
данных диска;
 размер файла в байтах.
Данные файла размещаются на диске блоками (так принято называть кластеры в UNIX).
Обычно размер блока 1-8 Кбайт. Для номера блока выделяется 32 бита. Увеличение размера
блока повышает быстродействие файловой системы, уменьшает фрагментированность диска, но
менее экономно расходует дисковое пространство.
Для хранения адресной информации в индексном дескрипторе стандартно выделяется 15
полей (по 32 бита).
Если размер файла меньше или равен 12 блокам (при максимальном размере блока 8 Кбайт
размер файла до 98 Кбайт), то номера этих блоков непосредственно перечисляются в первых 12
полях.
Если размер файла превышает 12 блоков (размер файла от 98 Кбайт до 12 Мбайт), то 13-е
поле содержит адрес блока, в котором могут быть расположены номера следующих блоков
файла.
Если размер файла больше 2060 блоков, то используется 14-е поле, в котором находится
номер блока, содержащего до 2048 номеров блоков (при размере блока 8 Кбайт), каждый из
которых хранит 2048 номеров блоков данных файла (объем файла может быть до 3×1010 байт).
Аналогично, но уже с тройной иерархией используется 15-е поле, что позволяет адресовать
блоки (кластеры) в файлах размером до 7×1013 байт.
Файл в каталоге – это элемент в каталоге, относящийся к одному файлу и называемый
связью. Файлы существуют независимо от каталогов. А связи в каталогах указывают на
дескрипторы реальных файлов. Можно сказать, что каталог – это список индексных
дескрипторов файлов.
В журнализируемой файловой системе после того, как транзакция (изменение) записана, она
может
быть
выполнена
повторно,
что
предотвращает
возникновение
ошибок
и
несогласованностей в файловой системе и необходимость запуска программы проверки
файловой системы fsck. Тем самым уменьшается время перезагрузки в случае сбоя или
некорректной остановки системы.
23
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Журнал выделяется из свободных блоков файловой системы и обычно имеет размер порядка
1 Мбайта на каждый 1 Гбайт файловой системы. Журнал сбрасывается по мере заполнения,
после синхронизации структуры файловой системы с диском.
Различные версии ОС UNIX поддерживают разные реализации журнализируемых файловых
систем. Это, например, файловая система ufs (Solaris), vxfs (Solaris, UnixWare), RaisorFS и
ext3 (Linux), jfs (AIX и Linux) и др. Некоторые файловые системы позволяют включать и
отключать журнализацию (ufs, ext2/ext3). Естественно, журнализация несколько замедляет
работу файловой системы, но в большинстве случаев гарантирует целостность данных.
Создается файловая система на указанное устройство (необходимо указать специальное
символьное устройство) командой mkfs. Файловая система создается на основе указанных в
командной строке типа файловой системы (ТипФС), специфических_опций и операндов,
которые зависят от конкретного типа создаваемой файловой системы. Их можно посмотреть на
соответствующей странице справочного руководства (например, man mkfs).
Для проверки файловой системы и исправления ошибок служит программа fsck, которая
ищет и, автоматически или в интерактивном режиме, исправляет противоречия в файловых
системах. Если файловая система находится в несогласованном состоянии, которое нельзя
однозначно исправить, у пользователя спрашивают подтверждения перед попыткой выполнить
каждое исправление. Следует иметь в виду, что некоторые исправления приводят к
определенным потерям данных. Объем и серьезность потери данных можно определить по
диагностическому сообщению. Стандартным действием при каждом исправлении является
ожидание от пользователя утвердительного (yes) или отрицательного (no) ответа.
При использовании fsck файловая система должна быть неактивной (размонтирована или
смонтирована только для чтения). Если это невозможно, необходимо обеспечить, чтобы машина
находилась в состоянии покоя (без работающих пользователей) и чтобы сразу после
завершения команды она была перезагружена, если исправляется критическая файловая
система, например, корневая.
Для работы команде fsck необходимо указывать специальное символьное устройство.
Корневая файловая система обычно проверяется при запуске автоматически. Система при
запуске может автоматически проверять и другие физические файловые системы, для которых
в таблице стандартных файловых систем указана необходимость такой проверки. Эта проверка
может вестись параллельно, путем запуска отдельного процесса fsck для каждой проверяемой
файловой системы с одним и тем же порядковым номером проверки. Параллельно имеет смысл
проверять файловые системы, расположенные на разных физических дисках.
4.4.5. Монтирование и демонтирование физических файловых систем
Физические файловые системы, кроме корневой (/), считаются съемными (removable) в том
смысле, что они могут быть как доступны для пользователей, так и не доступны. Команда
mount уведомляет систему, что блочное устройство или удаленный ресурс доступны для
пользователей в точке монтирования, которая уже должна существовать; точка монтирования
становится именем корня вновь смонтированного устройства или ресурса. Говорят, что эта
команда монтирует или подключает физическую файловую систему или ресурс к общей
логической файловой системе.
Монтирование других файловых систем к корневой файловой системе может осуществляться
командой mount:
mount –t fs_type device mount_point,
fs_type – параметр, указывающий тип подключаемой файловой системы (vfat, ntfs, ext 2, ext
3, iso 9660 – при монтировании CD - ROM);
device – устройство, являющееся носителем данных, например, /dev/hda;
mount _ point – точка монтирования.
Например, для монтирования дисковода А:
mount –t vfat /dev/fd0 /mnt/floppy
Для монтирования привода CD - ROM:
24
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
mount –t iso9660 /dev/hdd /mnt/cdrom
Команда mount при вызове с аргументами проверяет все аргументы, за исключением
устройства, и вызывает специфический модуль монтирования для указанного типа файловой
системы. При вызове без аргументов mount выдает список всех смонтированных файловых
систем из соответствующей таблицы.
При вызове с неполным списком аргументов (например, только с указанием устройства или
точки монтирования, или когда указаны оба эти аргумента, но не задан тип файловой системы),
mount будет просматривать таблицу стандартных файловых систем (в файле /etc/fstab или
/etc/vfstab, в зависимости от разновидности UNIX) в поисках недостающих аргументов. Затем
она вызывает специфический модуль монтирования для соответствующего типа файловой
системы.
Опции команды mount:
-а – монтирование всех файловых систем, указанных в файле /etc/fstab, кроме тех, для
которых указан параметр noauto;
- r – монтирование в режиме только чтение;
- t тип ФС – задает тип файловой системы;
- o – задает специфические опции для указанного типа физической файловой системы.
Обратная процедура по отношению к монтированию называется
выполняется командой umount с указанием точки монтирования.
демонтированием
и
Любой пользователь может вызывать команду mount для получения списка смонтированных
файловых систем и ресурсов.
Таблица стандартных файловых систем (в файле /etc/fstab или /etc/vfstab, в зависимости
от разновидности UNIX) описывает стандартные параметры для физических файловых систем,
которые могут монтироваться автоматически при запуске системы. Поля в таблице (их 6)
разделены пробелами и символами табуляции и представляют, соответственно:
Монтируемое Устройство Точка Монтирования Тип Файловой Системы Опции (через_запятые)
Флаг Резервного Копирования Флаг Проверки.
В табл. 7 приведены основные опции, применяемые при монтировании физических файловых
систем.
Таблица 7
Некоторые опции монтирования файловых систем
Опции
Описание
exec
Разрешает запуск бинарных (выполняемых) файлов для данной файловой системы. Эта опция
установлена по умолчанию
noexec Запрещает запуск бинарных (выполняемых) файлов для данной файловой системы
noauto Запрещает автоматическое монтирование данной файловой системы при загрузке системы (при
выполнении команды mount – a)
auto
Разрешает автоматическое монтирование данной файловой системы при загрузке системы.
ro
Монтирование в режиме «только чтение»
rw
Монтирование в режиме «чтение/запись». Эта опция установлена по умолчанию
user
Разрешает пользователям монтировать/демонтировать данную файловую систему
nouser Запрещает пользователям
установлена по умолчанию
монтировать/демонтировать
данную
файловую
defaults Использование стандартного набора опций, установленных по умолчанию
25
систему.
Эта
опция
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Для перекодирования русскоязычных наименований файлов необходимо установить опции
iocharset = cp 1251 (или iocharset = koi 8- r), codepage =866
Пример записей в файле /etc/fstab:
/dev/hda 1/ext 3 defaults 0 1
/dev/hda 5/mnt/diskD ntfs auto, iocharset = cp 1251, codepage =866 0 0
/dev/fd 0/mnt/eloppy vfat noauto, iocharset = cp 1251, codepage =866 0 0
Если флаг резервного копирования установлен 1, то программа dump включит данную
файловую систему в архив при создании резервной копии (дампа). Если установлен 0, то
резервная копия данной файловой системы создаваться не будет.
Если флаг проверки установлен 1, то при монтировании эта файловая система будет
проверяться на наличие ошибок в первую очередь (рекомендуется для корневой файловой
системы). Если установлен 0, то проверка на наличие ошибок выполняться не будет
(рекомендуется применять для съемных носителей). Для всех остальных файловых систем
рекомендуется устанавливать значение 2.
В графическом интерфейсе монтирование сменных носителей выполняется автоматически, но
перед их выемкой необходимо выполнить команду Извлечь (при помощи контекстного меню).
4.5. Сетевые средства UNIX
Операционная система UNIX почти с самого рождения интегрировала в себя технологии
локальных сетей, на её основе затем была построена сеть Интернет, распространившаяся ныне
по всему миру. Все UNIX-системы поддерживают стек протоколов TCP/IP.
На компьютере под управлением UNIX-системы могут устанавливаться как клиентские, так и
серверные части всех известных сетевых служб. Наиболее распространенными являются:










WWW-сервер Apache (служба httpd).
FTP-сервер.
Поддержка сети Microsoft – пакет Samba (службы smb и winbind), который эмулирует
работу файлового сервера Windows.
DHCP-сервер.
DNS-сервер.
Прокси-сервер.
Сервер баз данных MySQL.
Почтовый сервер, например, Sendmail.
Службы удаленного терминала на основе протоколов telnet и ssh.
Различные межсетевые экраны, например, iptables.
4.5.1. Сетевой интерфейс
Конфигурирование сетевого интерфейса рабочей станции можно выполнить уже на этапе
инсталляции операционной системы, указав IP адрес, маску сети, шлюз по умолчанию и сервер
DNS, либо разрешив получить эти данные автоматически от сервера DHCP.
Конфигурирование сетевого интерфейса после инсталляции системы можно выполнять как
непосредственно в конфигурационных файлах, так и при помощи программ-конфигураторов, к
числу которых относится консольный конфигуратор setup, а также различные графические
конфигураторы из состава графических сред Gnome и KDE.
Сетевые параметры компьютера хранятся в следующих конфигурационных файлах:

IP адрес компьютера, маска сети, широковещательный адрес сети (BROADCAST) и шлюз
по умолчанию (GATEWAY) в файлах /etc/sysconfig/network-scripts/ifcfg-ethN:M,
где N – номер физического сетевого интерфейса (сетевого адаптера); M – номер
логического сетевого интерфейса;
например: ifcfg-eth0, ifcfg-eth1, ifcfg-eth0:0, ifcfg-eth0:1, и т. д., < (ifcfg-lo – сеть
127.0.0.0).
26
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE


IP-адрес сервера DNS хранится в файлах /etc/resolv.conf и /etc/sysconfig/network.
Имя компьютера хранится в файле /etc/hosts.
При запуске системы запускается служба инициализации сети network, которая выполняет
программу ifconfig с параметрами, представленными в конфигурационных файлах,
размещенных в каталоге /etc/sysconfig/network-scripts/.
Изменения сетевого интерфейса вступают в силу после перезапуска службы network (после
выполнения команды service network restart) или перезапуска всей системы (reboot).
Если запустить программу ifconfig (одноименной командой) без параметров, то будет
выведена на экран текущая настройка сетевых интерфейсов в системе.
Доступность других компьютеров сети проверяется утилитой ping, трассирование маршрута
выполняется утилитой traceroute.
Для просмотра всех существующих в настоящий момент сетевых соединений на транспортном
уровне можно воспользоваться командой netstat.
Для проверки работы системы DNS используются утилиты dig и host.
Таблица маршрутизации доступна при помощи команды route. Примеры добавления новых
маршрутов:
route add default gw 10.10.10.2 netmask 0.0.0.0 metric 1
route add net 10.10.10.0 netmask 255.255.255.0 eth 0
Следует заметить, что ключа – p, обеспечивающего сохранение постоянных маршрутов в
таблице маршрутизации в ОС Windows, в UNIX нет, нужен специальный скрипт – загрузочный
сценарий.
4.5.2. WWW-сервер Apache
Огромному числу абонентов сети Интернет предоставляется возможность просмотра WWWдокументов по специальному протоколу HTTP (H yper T ext T ransfer P rotocol) при помощи
клиентских программ-навигаторов (или браузеров, от англ. "browse", "просматривать").
Apache – это HTTP-сервер, обладающий самым большим набором возможностей. Учитывая
организованный в нем механизм подключаемых модулей, создавать которые может любой
грамотный программист, описать умения Apache полностью невозможно. Документация по
одним только стандартным его возможностям занимает более 50 тысяч строк.
Запускается WWW-сервер Apache путем инициализации службы httpd. Конфигурационные
файлы Apache хранятся в каталоге /etc/httpd/conf/ (или, в зависимости от дистрибутива,
/etc/apache/). Главный конфигурационный файл – httpd.conf. Этот файл неплохо
самодокументирован: вместе с комментариями в нем больше тысячи строк, что позволяет не
изучать руководство, если администратор запамятовал синтаксис той или иной настройки, но,
конечно, не позволяет вовсе не изучать его.
Например,
пользователь,
набравший
в
адресной
строке
браузера
"http://доменное_имя_сервера", увидит содержимое каталога, указанного настройкой строки
DocumentRoot в файле httpd.conf.
Конфигурирование сайтов пользователей, обслуживаемых WWW-сервером, выполняется в
соответствующих секциях VirtualHost.
Каждый каталог, содержащий WWW-страницы, должен быть описан группой настроек,
включающей права доступа к страницам этого каталога, настройки особенностей просмотра
этих страниц и т. п.
В частности, настройка DirectoryIndex описывает, какие файлы в каталоге считаются
индексными – если такой файл есть в каталоге, он будет показан вместо содержимого этого
каталога. Если в настройке каталога Options не указано значение Indexes, просмотр каталога
будет вообще невозможен. Значение Includes этой настройки позволяет WWW-страницам
включать в себя текст из других файлов, FollowSymLinks позволяет серверу работать с
каталогами и файлами, на которые указывают символьные ссылки (это может вывести точку
доступа за пределы DocumentRoot), а MultiViews позволяет серверу для разных запросов на
27
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
одну и ту же страницу выдавать содержимое различных файлов – сообразно языку, указанному
в запросе.
Если настройку каталога AllowOverride установить в All, в любом его подкаталоге можно
создать дополнительный конфигурационный файл, изменяющий общие свойства каталога. Имя
этого файла задает настройка AccessFileName (в примере – ".htaccess"). Доступом к страницам в
каталоге управляют настройки Order, Deny и Allow.
Важное свойство WWW-серверов – поддержка так называемых динамических WWW-страниц.
Динамическая WWW-страница не хранится на диске в том виде, в котором ее получает
пользователь. Она создается – возможно, на основании какого-то шаблона – непосредственно
после запроса со стороны браузера. Никаких особенных расширений протокола HTTP при этом
можно не вводить – просто сервер получает запрос на WWW-страницу, которой не
соответствует ни один файл. Зато HTTP-адрес (точнее говоря, URL) этой страницы распознается
сервером как динамический и передается на обработку выделенной для этого программе.
Программа генерирует текст в формате HTML, который и передается пользователю в качестве
запрошенной страницы. Часто для этого используется каталог /var/www/cgi-bin.
Как и многие другие прикладные протоколы, HTTP был и остается текстовым. При желании
можно выучить команды HTTP и получать странички с серверов с помощью telnet вручную. Это
означает, что любая система идентификации, основанная на одном только HTTP, будет
небезопасна: если передавать учетные данные непосредственно по HTTP, любой абонент сети
на протяжении всего маршрута пакета от браузера к серверу сможет заглянуть внутрь этого
пакета и узнать пароль.
Более или менее безопасно можно чувствовать себя, только зашифровав весь канал
передачи данных. Для этого неплохо подходит алгоритм шифрования с открытым ключом,
описанный в параграфе 4.5.4. Универсальный способ шифрования большинства текстовых
прикладных протоколов называется SSL (S ecure S ocket L ayer (уровень надежных сокетов)).
Идея этого способа в том, что шифрованием данных занимается не само приложение, а
специальная библиотека работы с сокетами, т. е. шифрование происходит на стыке
прикладного и транспортного уровней. Конечно, и клиент, и сервер должны включать в себя
поддержку SSL, поэтому для служб, защищенных таким способом, обычно отводятся другие
номера портов (например, 80 – для HTTP, и 443 – для HTTPS). В Apache этим занимается
специальный модуль – mod_ssl, его настройки и способ организации защищенной службы
можно найти в документации.
Apache работает в системе как демон с именем httpd. Если необходимо, чтобы при загрузке
системы этот демон запускался, то его следует включить в число инициализируемых программ,
например при помощи консольного конфигуратора setup – System services. После изменений
в конфигурационном файле эту службу требуется перезагрузить, например, при помощи
команды service httpd restart.
Несмотря на то, что Apache решает практически любые задачи, связанные с организацией
WWW-страниц, есть, конечно, и области, где его применение нежелательно или невозможно.
Если, например, задача WWW-сервера – отдавать десяток-другой статически оформленных
страниц небольшому числу клиентов, запускать для этого Apache – все равно что стрелять из
пушки по воробьям. Лучше воспользоваться сервером thttpd, специально для таких задач
предназначенным: он займет намного меньше ресурсов системы.
4.5.3. FTP-сервер
В UNIX-системах существует несколько вариантов службы, предоставляющей доступ к
файлам по протоколу FTP (File Transfer Protocol). Как правило, они отличаются друг от друга
сложностью настроек, ориентированных на разные категории абонентов, подключающихся к
серверу. Если выбор предоставляемых в открытый доступ данных велик, будет велик и наплыв
желающих эти данные получить ("скачать"), так что возникает естественное желание этот
наплыв ограничить. При этом, допустим, компьютеры из локальной сети могут неограниченно
пользоваться файловыми ресурсами сервера, тогда соединений из того же города или в
пределах страны должно быть не более двух десятков одновременно, а соединений из-за
границы – не более пяти. Такие ухищрения бывают нужны нечасто, но и они поддерживаются
большинством FTP-демонов, вроде vsftpd, proftpd, pure-ftpd или wu-ftpd.
FTP – по-своему очень удобный протокол: он разделяет поток команд и поток собственно
данных. Дело в том, что команды FTP обычно очень короткие, и серверу выгоднее обрабатывать
28
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
их как можно быстрее, чтобы подолгу не держать ради них (часто – ради одной команды)
открытое TCP-соединение. А вот файлы, передаваемые с помощью FTP, обычно большие,
поэтому задержка при передаче в несколько долей секунды, и даже в пару секунд, не так
существенна, зато играет роль пропускная способность канала.
Для того чтобы эти каналы было проще различить, данные в FTP пересылаются по
инициативе сервера, т. е. именно сервер подключается к клиенту, а не наоборот. Делается это
так: клиент подключается к 20-му порту сервера (управляющий порт FTP) и передает ему
команду: "Хочу такой-то файл. Буду ждать твоего ответа на таком-то (временно выделенном)
порту". Сервер подключается со своего 21-го порта (порт данных FTP) к порту на клиенте,
указанном в команде, и пересылает содержимое запрошенного файла, после чего связь по
данным разрывается, и клиент перестает обрабатывать подключения к порту.
Трудности начинаются, когда FTP-клиент находится за межсетевым экраном. Далеко не
каждый администратор согласится открывать доступ из любого места сети Интернет к любому
абоненту внутренней сети по любому порту (пускай даже и с порта 21). Да это и не всегда
просто, учитывая подмену адресов.
Для того чтобы FTP работал через межсетевой экран, придумали протокол Passive FTP. В нем
оба сеанса связи – и по командам, и по данным – устанавливает клиент. При этом происходит
такой диалог. Клиент: "Хочу такой-то файл. Но пассивно". Сервер: "А. Тогда забирай его у меня
с такого-то порта". Клиент подключается к порту сервера и получает оттуда содержимое файла.
Если со стороны сервера тоже находится бдительный администратор, он может не разрешить
подключаться любому абоненту Интернет к любому порту сервера. Тогда не будет работать как
раз Passive FTP. Если и со стороны клиента, и со стороны сервера имеется по бдительному
системному администратору, никакой вариант FTP не поможет.
Еще один недостаток протокола FTP: в силу двухканальной природы его трудно "затолкать" в
SSL-соединение. Поэтому идентификация пользователя, если таковой имеется, в большинстве
случаев идет открытым текстом. Несмотря на то, что для FTP подходит другой механизм
шифрования, называемый TLS, далеко не все FTP-клиенты его поддерживают, и он оказывается
не востребован на серверах. Поэтому рекомендуется задействовать службу FTP только для
организации архивов публичного доступа.
4.5.4. Терминальный доступ
Текстовый интерфейс позволяет пользователю UNIX-системы работать на компьютере
удаленно с помощью терминального клиента. Весьма удобно, находясь далеко от компьютера,
управлять им самым естественным способом, с помощью командной строки. Препятствий этому
немного: объем передаваемых по сети данных крайне невелик, ко времени отклика,
занимающего полсекунды, вполне можно привыкнуть, а если оно меньше десятой доли
секунды, то задержка и вовсе не мешает. Что необходимо соблюдать строго, так это
шифрование учетных записей при подключении к удаленному компьютеру, а на самом деле – и
самого сеанса терминальной связи, т. к. в нем вполне может "засветиться" пароль: например,
пользователь заходит на удаленный компьютер и выполняет команду passwd.
Для терминального доступа раньше использовался протокол telnet и соответствующая пара
клиент-сервер telnet-telnetd. От них пришлось отказаться в силу их вопиющей
небезопасности.
На смену telnet пришла служба Secure Shell ("Надежная оболочка"), также состоящая из пары
клиент-сервер – ssh и sshd. Шифрование данных в Secure Shell организовано по принципу
"асимметричных ключей", который позволяет более гибко шифровать или идентифицировать
данные, чем более распространенный и привычный принцип "симметричных ключей".
Симметричный ключ – это пароль, которым данные можно зашифровать, и с помощью него же
потом расшифровать.
Упрощенно метод "асимметричных ключей" можно описать так. Используется алгоритм, при
котором специальным образом выбранный пароль для шифрования данных не совпадает с
соответствующим ему паролем для их расшифровки. Более того, зная любой из этих паролей,
никак нельзя предугадать другой. Некто, желая, чтобы передаваемые ему данные нельзя было
подсмотреть, раздает всем желающим шифрующий пароль со словами: "будете писать мне –
шифруйте этим", т. е. делает этот пароль открытым. Дешифрующий пароль он хранит в строгой
тайне, никому не открывая. В результате зашифровать данные его паролем может любой, а
расшифровать (что и значит – подглядеть) – может только он. Цель достигнута.
29
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Тот же принцип используется для создания так называемой электронной подписи,
помогающей идентифицировать данные, т. е. определить их автора. На этот раз открытым
делается дешифрующий ключ (конечно, не тот, о котором только что шла речь, а еще один).
Тогда любой, получив письмо и расшифровав его, может быть уверен, что письмо написал этот
автор – потому что шифрующим ключом не владеет больше никто.
Здесь уместно сделать два замечания. Во-первых, алгоритмы шифрования с асимметричными
ключами весьма ресурсоемки, поэтому в Secure Shell (и упомянутом ранее SSL) они
используются только на начальном этапе установления соединения. Обмен данными шифруется
симметричным ключом, но, поскольку сам этот ключ был защищен асимметричным, соединение
считается надежным. Во-вторых, этот кажущийся надежным алгоритм имеет серьезный изъян, с
которым, впрочем, нетрудно справиться. Опасность таится в самом начале: как, получив от
товарища открытый ключ, убедиться, что этот ключ действительно ему принадлежит? А вдруг
по пути ключ был перехвачен злоумышленником, и до нас дошел уже его, злоумышленника,
открытый ключ? Мы легкомысленно шифруем наши данные этим ключом, злоумышленник
перехватывает их на обратном пути, просматривает их (только он и может это сделать, т. к.
подсунул нам свой шифрующий пароль), и обманывает таким же манером товарища,
притворяясь на этот раз нами.
Такая уязвимость называется "man-in-the-middle" (дословно "человек посередине"), своего
рода "испорченный телефон". Существует два способа борьбы с ней.
Первый: не доверять никаким открытым ключам, кроме тех, которые получил лично от
товарища. Если с товарищем вы незнакомы, можете попросить у него удостоверение личности:
а вдруг он все-таки злоумышленник?
Второй способ: получить от товарища открытый ключ несколькими независимыми путями. В
этом случае подойдет так называемый отпечаток пальца (fingerprint) – получаемая из ключа
контрольная сумма такого размера, что подделать ее еще невозможно, но уже нетрудно
сравнить с этой же контрольной суммой, размещенной на WWW-странице или присланной по
электронной почте.
4.5.5. Почтовая служба
Еще один немаловажный сервис, отлично поддерживаемый в UNIX-системах, – пересылка
электронной почты. Протокол SMTP (Simple Mail Transfer Protocol), задающий порядок
пересылки почты, впервые был описан и помещен в RFC в самом начале 80-х гг. (RFC, Request
For Comments, рабочее предложение – постоянно пополняемое собрание рабочих материалов
(технических отчетов, проектов и описаний стандартов протоколов), используемых
разработчиками и пользователями Интернет).
С тех пор он неоднократно модифицировался, однако в основе своей остался прежним: SMTP
– это протокол передачи текстовых сообщений, снабженных вспомогательными заголовками,
часть из которых предназначена для почтового сервера, передающего сообщения, а часть –
для почтового клиента, с помощью которого пользователь просматривает эти сообщения.
В
качестве
адреса
в
электронном
письме
обычно
используется
сочетание
пользователь@доменное_имя. Изначально поле пользователя совпадало с входным именем
пользователя в UNIX-системе, а доменное_имя – с именем компьютера. Пользователь –
удаленно или через "настоящий" терминал – подключался к системе и просматривал почту,
скажем, при помощи утилиты mail. Такой вариант обмена электронными письмами между
пользователями UNIX-системы доступен и сейчас.
Когда компьютеров в сети стало больше, выяснилось, что, имея учетные записи на многих
машинах, почту все-таки удобнее хранить и читать на одной машине, предназначенной только
для почты, а значит, доменное_имя в почтовом адресе может не совпадать с доменным именем
персонального компьютера адресата. Для удобства решили ввести один уровень косвенности:
прежде чем соединяться с компьютером "доменное_имя", почтовый сервер проверяет, нет ли в
DNS записи вида доменное_имя... MX... сервер. Эта запись означает, что почту, адресованную
на пользователь@доменное_имя, необходимо посылать компьютеру "сервер" – а уж тот
разберется, что делать дальше.
Иногда необходимо, чтобы сервер принимал письма, не предназначенные для
зарегистрированных на нем пользователей. Эти письма немедленно помещаются в очередь на
отправку, и пересылаются дальше. Такой режим работы сервера называется "relay"
30
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
(пересыльщик). Когда-то все почтовые серверы работали в режиме "open relay", т. е.
соглашались пересылать почту откуда угодно и куда угодно. К сожалению, этим немедленно
стали пользоваться желающие подзаработать массовой рассылкой рекламы (т. е. "спамом").
Поэтому открытые пересыльщики сегодня запрещены RFC. Однако как минимум в трех случаях
сервер имеет право работать пересыльщиком: если он пересылает почту от абонента
обслуживаемой сети, если письмо адресовано в обслуживаемый домен или его поддомен, и если
письмо исходит непосредственно от почтового клиента пользователя, который предварительно
каким-нибудь способом идентифицировался в системе (например, с помощью разработанного
для этого расширения SMTPAUTH). Во всех трех случаях ответственность за возможные
злоупотребления почтовым сервисом возлагается на администратора сервера, т. к. он имеет
возможность отыскать провинившегося пользователя.
В Linux существует несколько различных почтовых серверов. Во-первых, Sendmail, корифей
почтового дела, возникший одновременно с SMTP. Возможности этого сервера весьма велики,
однако воспользоваться ими в полной мере можно только после того, как научишься понимать и
исправлять содержимое конфигурационного файла sendmail.cf, который уже более двадцати лет
служит примером самого непонятного и заумного способа настройки. Впрочем, на сегодня для
sendmail.cf на языке препроцессора m4 написано несметное, на все случаи жизни, число
макросов, так что sendmail.cf редактировать не приходится. Вместо него из этих макросов
составляется файл sendmail.mc, небольшой и вполне читаемый, а он, с помощью утилиты m4,
транслируется в sendmail.cf, который не читает никто, кроме самого Sendmail. К сожалению,
упростить исходный текст этой программы невозможно, поэтому специалисты по компьютерной
безопасности не любят давать относительно нее гарантии: редко, но все же находится в
sendmail какое-нибудь уязвимое место.
Другой вариант почтового сервера, Postfix, весьма гибок в настройке, прекрасно подходит
для почтовых серверов масштаба предприятия, и, в отличие от Sendmail, более прозрачно
спроектирован и написан. Он поддерживает все хитрости, необходимые современной почтовой
службе: виртуальных пользователей, виртуальные домены, подключаемые антивирусы,
средства борьбы со спамом и т. п. Настройка его хорошо документирована, в том числе с
помощью комментариев в конфигурационном файле (как правило, /etc/postfix/main.cf), и с
помощью файлов-примеров.
Стоит упомянуть еще как минимум три почтовые службы: QMail – по мнению многих, этот
демон наиболее защищен и от атак извне, и от возможных ошибок в собственных исходных
текстах; Exim – как наиболее гибкий в настройках (в том числе и пока не реализованных); и
ZMailer, предназначенный для работы на больших и очень больших серверах, выполняющих в
основном работу по пересылке.
Доступ к почтовым ящикам
Электронная почта нужна далеко не только тем, кто имеет терминальный доступ к Linuxмашине. Доступ к почтовому ящику на сервере не должен зависеть от того, есть ли у данного
пользователя право запускать на этом сервере какие-то программы. Для этого необходимо
организовать специальную службу, предоставляющую пользователю только возможность
манипулировать сообщениями в своем ящике с помощью программы-клиента. Самые
популярные протоколы доступа к ящикам – POP3 (Post Office Protocol версии 3) и IMAP4
(Internet Message Access Protocol версии 4).
POP3 – довольно простой протокол, в нем определен единственный почтовый ящик
пользователя, где тот может посмотреть список заголовков сообщений, прочитать (скачать) и
удалить некоторые из них. Такой протокол удобен, когда пользователь хранит всю переписку
на своем компьютере, а удаленный почтовый ящик служит исключительно для приема входящей
почты.
Протокол IMAP4 гораздо сложнее: в нем разрешено заводить несколько ящиков на сервере, в
том числе и вложенных подобно каталогам. Каждый из этих ящиков может обладать особыми
свойствами: может быть входящим (тогда пользователь уведомляется о новых поступлениях в
этот ящик), мусорной корзиной (сообщения из которой удаляются после того, как устареют), и
даже быть исходящим (в такой ящик пользователь складывает новые письма, а сервер их через
некоторое время отсылает, удаляя оттуда). IMAP4 подходит для ситуации, когда пользователь
не имеет возможности хранить свою переписку и/или обрабатывать ее с одного и того же
компьютера, поэтому хранит ее в ящиках на сервере. IMAP4 используют и в качестве "движка"
WEB-почты, этого заменителя почтовых клиентов.
31
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
В большинстве случаев с помощью одного и того же почтового клиента можно и
просматривать электронные письма в ящиках, и создавать новые письма, и отсылать их. Это
сделано для удобства пользователя, однако стоит понимать, что общее у этих трех действий –
только формат сообщения. Строго говоря, при доступе к почтовому ящику совершенно неважно,
каким путем там оказалось письмо, а при пересылке почты никак не определяется, каким
способом пользователь будет ее читать. Что касается написания письма – чье же это дело, как
не текстового редактора?
В UNIX есть несколько IMAP/POP-серверов. Наиболее мощный из них – Cyrus (его авторы
участвовали в разработке протокола IMAP4). Наиболее простой – UWIMAP, который вообще не
имеет конфигурационного файла: пользователи, пароли, входящие почтовые ящики и
домашние каталоги для личных почтовых ящиков берутся системные (при этом вместо
командного интерпретатора почтовому пользователю можно выдать /sbin/nologin или
/usr/bin/passwd).
Сервер Binc можно рекомендовать для применения на системах, использующих QMail,
интеграция с которым других IMAP-серверов имеет некоторые шероховатости, а сервер Dovecot
– тем, кто, как и его авторы, в первую очередь озабочен надежностью работы сервиса.
Протоколы POP3 и IMAP4, как и многие другие, являются текстовыми. Как и в большинстве
других протоколов, это порождает проблему передачи пароля в открытом виде. Решается она
так же, как и для других протоколов – "заворачиванием" всего сеанса в SSL (порту 110–POP3
соответствует порт 995–POP3S, а порту 143–IMAP4 – 993–IMAPS), либо использованием
внутрисеансового шифрования с помощью TLS. Кроме того, в протоколе POP3 есть и
собственное расширение, APOP, решающее ту же задачу.
4.5.6. Взаимодействие с сетью Windows – пакет Samba
Пакет Samba создан для поддержки сети Microsoft и эмулирует работу файлового сервера
Windows. Минимально пакет составляют две службы: служба smb (Sever Message Block – блок
серверных сообщений), и служба winbind, которая позволяет пользоваться учетными записями
домена Windows.
Ниже
приведен
образец
изменений
в
основном
конфигурационном
файле
etc/samba/smb.conf для использования Linux в качестве файлового сервера в домене
Windows ivanov. ibi:
workgroup = Ivanov
– имя рабочей группы
окружении Windows)
(как
hosts allow = 10.10.0. 127.
– список сетей (через пробел), из которых
разрешен доступ к машине Linux
security = ADS
– идентификация пользователей выполняется
службой Active Directory
password server = 10.10.0.1
– адрес сервера, где хранятся учетные записи
encrypt passwords = yes
– использовать
пароля
шифрование
для
domain master = no
preferred master = no
name resolve order = wins lmhosts bcast
wins server = 10.10.0.1
– адрес сервера wins
Следует также дописать следующие данные:
realm = IVANOV.IBI
– имя домена (ПРОПИСНЫМИ БУКВАМИ)
unix charset = CP 1251
– кодировки кириллицы в именах файлов
32
в
сетевом
передачи
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
dos charset = CP866
display charset = CP1251
winbind uid = 10000-20000
– параметры для службы winbind
winbind gid = 10000-20000
winbind separator = +
winbind cache time = 10
template homedir = /home/%U
template shell = /bin/bash
#=============== Share Definitions ====================
[public]
– сетевое имя каталога, доступного из сети Windows
path =/tmp/samba
– полное локальное имя каталога, который должен
быть создан и иметь права 777
public = yes
– разрешение на доступ из сети
writable = yes
– разрешение на запись
В конфигурационном файле etc/nsswicth. conf следует дописать в двух строчках параметр
winbind, указывающий, что данные учетных записей следует брать у службы winbind, которая
получает их от контроллера домена:
passwd:
files winbind
shadow:
files
group:
files winbind
В современных доменах аутентификация пользователей осуществляется при помощи
протокола Kerberos версии 5. Для использования при входе в сеть (с машины под управлением
Linux) учетных записей, хранящихся на контроллере домена (под управлением, например,
Windows 2000 Server) тоже должен использоваться протокол Kerberos 5. Для Linux
разработаны два пакета, поддерживающих работу этого протокола: krb-5 workstation – для
клиентской машины Linux, krb-5 server – для сервера Linux, являющегося контроллером
домена. Для выполнения функций файлового сервера в сети Windows достаточно первого
пакета.
Если при инсталляции системы эти пакеты не были установлены, то их требуется установить.
Инсталляция дополнительных пакетов выполняется командой rpm – ivh имя_пакета, где ключ
– i означает режим инсталляции, а – vh позволяют отражать на экране вспомогательную
информацию.
Команда rpm – e имя_пакета позволяет удалить пакет из системы, rpm – q – a позволяет
получить список всех инсталлированных пакетов. Подробная справка: man rpm.
После установки пакета krb-5 workstation необходимо в конфигурационном файле
/etc/krb5.conf указать имя домена и имя контроллера домена (остальные данные из этого
файла можно удалить или закомментировать), например:
[ realms ]
IVANOV.IBI = {
kdc = server.ivanov.ibi
}
33
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Затем на контроллере домена в Active Directory создать учетную запись пользователя с
латинским именем, например admin, и включить его в группу администраторов домена.
Зарегистрировать машину Linux в домене можно командой:
net ads join – U admin
Проверить регистрацию ее в домене можно в соответствующей оснастке контроллера домена
(Пуск – Программы – Администрирование – Active
Directory – пользователи и
компьютеры – Computers).
После перезагрузки системы можно проверить в сети Windows наличие нового узла с именем,
заданным серверу Linux, и доступность его общих ресурсов пользователям домена.
При необходимости можно монтировать сетевые ресурсы на машине под управлением Linux
следующей командой:
mount – t smbfs – o username =имя_пользователя, password =пароль, iocharset = cp
1251, codepage = cp 866, rw //сетевой_ресурс/mnt/точка_монтирования
Выводы
1.
Сетевые операционные системы делятся на две большие группы – клиентские ОС и
серверные ОС. Несмотря на многообразие сетевых операционных систем, реальными
конкурентами на российском рынке серверных решений для локальных сетей в настоящее время
являются операционные системы семейства Windows и различные представители семейства
UNIX-систем.
2.
На принципах UNIX построены как коммерческие операционные системы, так и большое
число открытых систем, которые не только бесплатно распространяются, но и имеют открытые
исходные коды всех программных модулей.
3.
Архитектура всех операционных систем UNIX – многоуровневая. На нижнем уровне
работает ядро операционной системы. Функции ядра доступны через интерфейс системных
вызовов, образующих второй уровень. На следующем уровне работает системное программное
обеспечение: командные интерпретаторы, команды и утилиты системного администрирования,
коммуникационные драйверы и протоколы. Наконец, внешний уровень образуют прикладные
программы пользователя, сетевые и другие коммуникационные службы, СУБД и утилиты.
4.
Linux – это UNIX операционная система, которая была создана Линусом Торвальдсом
(Linus Torvalds) в 1991 г. Версии ОС Linux считаются по версии ядра. Комплекты, объединяющие
в себе ядро, набор программ и утилит, а также программу-инсталлятор, называются
дистрибутивами.
5.
UNIX – многопользовательская система. Процедура регистрации в системе обязательна:
работать в системе, не зарегистрировавшись под тем или иным именем пользователя, просто
невозможно. Характерный для UNIX способ организации параллельной работы пользователей –
виртуальные консоли (или терминалы).
6.
Для формирования пользователям графической среды предназначена система XWindow,
в составе которой программа, отвечающая за работу с устройствами графического ввода и
вывода и обеспечивающая при этом логику оконной системы, называется X-сервером.
Взаимодействие X-клиентов с X-серверов осуществляется на основе протокола X 11.
7.
Конфигурирование UNIX-системы может выполнять только суперпользователь с именем
root путем определения набора служб, инициализируемых при старте системы. Все запускаемые
службы параметры своей настройки берут из соответствующих конфигурационных файлов.
Конфигурационные файлы – текстовые.
8.
В ОС UNIX основным средством организации и единицей многозадачности является
процесс. Выделяются три типа процессов: системные, процессы-демоны и прикладные
процессы. Базовые средства защиты процессов основаны на отслеживании принадлежности
процессов пользователям.
9.
Новый процесс создается в UNIX только путем системного вызова fork. Процесс,
сделавший вызов fork, называется родительским, а вновь созданный процесс – порожденным.
Планирование процессов в UNIX основано на приоритете процесса. Планировщик всегда
выбирает процесс с наивысшим приоритетом.
10.
Логическая файловая система в ОС UNIX (или просто файловая система) – это
иерархически организованная структура всех каталогов и файлов в системе, начинающаяся с
корневого каталога.
34
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
11.
Логическая файловая система может состоять из одной или нескольких физических
файловых (под)систем, являющихся разделами физических носителей (дисков, CD-ROM или
дискет). Процедура объединения физических файловых систем называется монтированием.
12.
В UNIX существует несколько типов файлов, различающихся по функциональному
назначению и действиям операционной системы при выполнении тех или иных операций над
ними: обычный файл, каталог, специальный файл устройства, именованный канал,
символическая связь, сокет.
13.
Важной отличительной особенностью построения файловых систем UNIX является то, что
каждый файл (в том числе каталог и устройство ввода-вывода) имеет персональный индексный
дескриптор и может иметь несколько имен – ссылок на этот индексный дескриптор.
14.
В ОС UNIX используются средства защиты файлов на основе отслеживания трех уровней
доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех
остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на
выполнение).
15.
На компьютере под управлением UNIX-системы могут устанавливаться как клиентские,
так и серверные части всех известных сетевых служб.
Вопросы для самопроверки
1.
Какие типы современных сетевых операционных систем семейства Windows существуют?
Каковы их особенности?
2.
Какие направления разработки современных сетевых операционных систем семейства
UNIX существуют? Каковы их особенности?
3.
Когда, где и кем были разработаны первые версии операционной системы UNIX?
4.
Когда и кто разработал операционную систему Linux?
5.
Как нумеруются версии ОС Linux?
6.
Какие дистрибутивы Linux наиболее популярны в мире и в России?
7.
Как в UNIX-системах обеспечивается многопользовательский режим работы?
8.
Как в UNIX-системах реализуется графический режим работы?
9.
В чем различие понятий: XWindow, X-сервер, X-клиент, X 11?
10.
Как в UNIX-системе создается новый пользователь?
11.
В каких файлах содержатся сведения об учетных записях пользователей UNIX-системы?
12.
Каково назначение конфигурационных файлов в UNIX-системах?
13.
Как можно отобразить список активных пользователей UNIX-системы?
14.
Какие типы процессов имеются в UNIX-системах?
15.
Как создаются процессы в UNIX-системах?
16.
Какие основные этапы жизненного цикла процесса в UNIX-системах?
17.
Какие атрибуты присущи процессу в UNIX-системах? Каково их назначение?
18.
Как осуществляется планирование процессов в UNIX-системах?
19.
Как можно отобразить список процессов, запущенных в UNIX-системе?
20.
Каково назначение и особенности формирования сигналов в UNIX-системах?
21.
В чем отличие логической и физической файловой системы в UNIX?
22.
Каково назначение основных каталогов логической файловой системы UNIX?
23.
Что означает процедура монтирования файловой системы в UNIX?
24.
Какие имена файлов-устройств соответствуют логическим дискам винчестера в UNIXсистемах?
25.
Какие типы файлов и особенности их использования существуют в UNIX-системах?
26.
Что такое длинный листинг каталога в UNIX?
27.
В чем разница между реальным и эффективным идентификаторами пользователя и
группы в UNIX-системе?
28.
Кто и как в UNIX-системе может изменять права доступа к файлам?
29.
Каково назначение и состав индексного дескриптора файла в UNIX-системе?
30.
Какие части имеются в структуре файловой системы ufs?
31.
Каково назначение и принцип работы журнализируемых файловых систем?
32.
Где размещается и для чего предназначена таблица стандартных файловых систем в
UNIX?
33.
Какие сетевые службы наиболее часто разворачиваются на базе UNIX-системы?
34.
Как может быть сконфигурирован сетевой интерфейс UNIX-системы?
35.
Какие протоколы применяются для реализации почтовой службы?
36.
Каково назначение и порядок использования пакета Samba?
35
Download