/
Автор: Колисниченко Д.Н. Аллен П.В.
Теги: информатика операционные системы компьютерные технологии операционная система linux linux
ISBN: 5-94387-139-X
Год: 2006
Текст
если вы желаете разобраться в особенностях иыих
и познать ее внутренний мир,
ЭТА КНИГА - ВАШ ЛУЧШИЙ ВЫБОР!
Д. Н. КОЛИСНИЧЕНКО
ПИТЕР В. АЛЛЕН
Полное
руководство
Ь|мих ДЛЯ ПОЛЬЗОВАТЕЛЯ
Сетевые технологии 1лчих или Ьмих для администратора
Программирование Ьмих
ПОЛНОЕ
РУКОВОДСТВО
*
Д.Н. Колисниченко, Питер В, Аллен
Ним III
ПОЛНОЕ РУКОВОДСТВО
Наука и Техника, Санкт-Петербург
2006
Колисниченко Д.Н., Аллен Питер В.
1_|МОХ: полное руководство. — СПб: Наука и Техника, 2006, — 784 с.: ил.
Под редакцией М.В. Финкова
15ВМ 5-94387-139-Х
Серия «Полное руководство»
Данная книга представляет собой великолепное руководство по Ил их, позволяющее
получить наиболее полное представление об этой операционной системе. Книга состоит
из трех частей, каждая из которыхраекрывает один из трех основных аспектов работы
с Спих: Плох для пользователя, сетевые технологии Мп их (и методика настройки Опих-
сервера), программирование Ею их. В книге бх&ачен очень широкий круг вопросов, начиная
с установки и использования Спих *В обычней жизни» (офисные пакеты, игры, видео,
Интернет), и заканчивая описанием внутренних процессов1лпых, секретами и трюками
настройки, особенностями программирования под 1,1 пах, созданием сетевых приложений,
оптимизацией ядра и др.
Изложение материала ведется в основном на базе дистрибутивов Ребога Соге (АеД На!)
и Манбпуа (Мапбгакё). Однако не оставлены без внимания и другие дистрибутивы $и8е,
81аск^аге, (ЗепГоо, АЛ йгшх, Кпорр!Х. Дается их сравнительное описание, а по ходу изложения
всего материала указываются их особенности.
Книга написана известными специалистами И консультантами по использованию 1лп их,
авторами многих статей и книг по Мп их, заслуживших свое признание в самых широких
□ лих-кругах. Если вы желаете разобраться в особенностях Цпих и познать ее внутренний
мир, эта книга — ваш лучший выбор.
Контактные телефоны издательства
(812) 567-70-25, 567-70-26
(044) 516-38-66
Официальный сайт тлллл/.пй.сот.ги
© Колисниченко Д.Н,, Аллен Питер 8.
© Наука и Техника (оригинал-макет), 2006
ООО «Наука и Техника».
Лицензия Мз000350 от 23 декабря 1999 года.
190097, г. Санкт-Петербург, ул. Маршала Говорова, д, 29.
Подписано в печать 10.10.05. Формат 70x100 1/16.
Бумага газетная. Печать офсетная. Объем 49 л. л.
Тираж 5000 экз. Заказ Мэ ш .
Отпечатано с готовых диапозитивов в ОАО «Техническая книга»
190005, Санкт-Петербург, Измайловский пр., 29
Содержание
Введение............................................................. 15
Об этой книге..................................................... 15
Почему Мних?. ........................................................ 16
История ипсх...................................................... 17
Все началось с игры............................................... 17 -
Становление СМ IX как операционной системы....................... 20
Бурное развитие II №Х. ..................................... 22
Какие бывают 0М1Х'ы?........................................ 23
Происхождение Опих.................................................. 24
Операционная система М!гнх.................................... 24
Линус Торвальдс.............................................. 24
Линус недоволен Мох............................................ 26
При чем здесь пингвины? ........................................ 28
Путь к первой версии (1,0)...................................... 30
Они создавали Опих.............................................. 31
Первые дистрибутивы................................................ 31
«Размножение дистрибутивов».................................... 32
Выбор дистрибутива............................... ..................... 36
Робота Соге 3.................................................. 40
81аскиюге...................................................... 47
Упих Малйгаке 10.1............................................. 51
Разное................................................................ 54
А8Р0пих........................................................ 54
АН Опия........................................................ 55
ЗиЗЕЦпих.................................................... 57
Кпорргх...................................................... 57
ОеЫап ........................................................ 58
Глава 1. Установка операционной системы..................................... 59
1.1. Подготовка жесткого диска....................................... 60
1.1.1. Рекомендуемая схема разбиения диска ....................... 61
1.1.2. Имена разделов в ОС Моих .................................,. . 62
1.1.3. Разделы и точки монтирования................................ 62
1.2. Загрузка программы установки.................................... 63
1.2.1. С использованием загрузочного компакт-диска ................ 63
1.2.2. С использованием загрузочной дискеты...................... 63
1.2.3. С использованием жесткого диска ....................... 64
1.2.4. Установка по сети........................................... 64
1.3. Установка Ребога Соге........................................... 65
1.3.1. Описание дистрибутива....................................... 65
Версии Ребога Соге — 1, 2, 3 и 4. Системные требования.....- 66
Специальная технология разгран ичения доступа 3 ЕЬ лих...... 68
1:3 2. Особенности установки различных версий Рейога Соге ......... 68
Еейога Соге 2: подготовка к совместной жизни с УЙлОоиз...... 68
Особенности и преимущества процесса установки Ребота Соге 4. 70
1.3.3. Установка загрузчика...................................... 70
1.3.4. Продолжение установки................................... 71
1.4. Особенности установки Мапбгаке 10.0 .............................. 77
1.5. Проблемы при установке............................................. 82
1.5.1. Конфликты Работа Соге 1 и 2 с различным оборудованием...... 82
Материнские платы А8118............................... 82
Юй-мониторы .............................................. 82
Ноутбуки БОМУ........................................... 82
Не работает мышь...................................... 82
1,5.2, Рейога Сага: не удается войти 8 систему как гоо1
в графическом режиме .............................. 83
1.5.3, Ошибка31дпа1 11 .,...................................... 83
1.5.4. Не определяется мышь, .................................... 83
1.5.5. Проблемы с переходом 8 графический режим................... 83
1.5.6. Проблемы при загрузке..................................... 83
1.5.7. Проблемы с графическим экраном загрузчика.................. 84
1.5.8. Не загружается система ХУйпбо».....................-....... 84
1,5.9. Я забыл пароль пользователя гооТ......................... 84
Т.5,10. У меня больше оперативной памяти!........................ 84
1.5.11. Не работают принтер или звуковая плата................... 84
1,6, Как удалить 1тцх............................................... 64
1.7, Системы с двойной загрузкой....................................... 85
1,7,1. Установка Уйпйо^з 9х и 1тцх............................ 85
1.7,2. Установка УйпсЮмв 9х, \ЛДпбо«з ЫТ/2000/ХР и Ипих............ 86
Первый способ.......................................... - 86
Второй способ .......................................... 87
Использование 1оаРПп ...................................... 87
1.8, Первый запуск Моих............................................. 89
1.9. Стандартные сервисы Ниих......................................... 92
1.10. Справочная система.............................................. 94
Глава 2. Файловая система Цлих................................
96
2,1. Видимая сторона файловой системы.................................. 97
2,1.1. Имена файлов и каталогов.................................. 97
2.1.2. Назначение основных системных каталогов.................. 99
2.1.3. Типыфайлов........................................... 100
Обычные файлы и каталоги .............................. 100
Файлы физических устройств................................ 101
Жесткие и символические ссылки............................ 102
Именованные каналы .........................................104
Гнезда ............. _................................ 104
2,1.4. Команды работы с файлами и каталогами.................... 105
Текущий каталог...................................... 105
Просмотр содержимого каталога............................. 105
Создание и удаление файла................................ 106
Копирование и перемещение файла........................... 107
Просмотр текстовых файлов .............................. 108
Редактирование текстовых файлов....................... 109
Поиск файлов.......................................... 111
Изменение прав доступа к файлу......................... 112
2,2. Изнанка файловой системы 115
2,2,1. Файловая система ех!215 —предшественница ехЙТз ............116
2.2.2. Журналируемые файловые системы.......,.....................119
АеюегРЗ................................................... 121
ХР8 ..................................................... 121
ЗРЗ....................................... -.......... 122
Ех!31з......................................................122
2.3. Создание й монтирование файловых систем......................... 123
Создание файловой системы «вручную». Команда тМз........... 123
Настройка автоматического монтирования
при загрузке компьютера. Команда тоип1......................125
Глава 3. Работаем а командной строке............................ 127
3,1, Как устроен Ыпих: ядро и процессы................................128
3.2. Жизнь процесса...................................................130
Таблица процессов .................................... 130
Системные вызовы 1огк() и ехесО или как размножаются процессы ... 131
Снимок протекающих в системе процессов — команда рв....... 132
Динамика процессов — команда Юр..............................133
Категории процессов......................................... 133
3.3. Взаимодействие процессов...........................................134
3.3.1. Конвейер (р|ре).............................................134
3.3.2. Сигналы..............I..................................... 135
3.4. Командная оболочка. ВазР...........................................136
3.4.1. Встроенные команды........................................ 138
3.4.2. История команд..............................................138
3.4.3. Переменные ........................................... .140
Описание и использование переменных..........................140
Переменные окружения........................................ 141
Быстрая смена каталога................................ .142
Настройка командной строки. Утилита. (рЩ.....................142
3.4.4. Подстановка переменных и команд........................... 144
3.4,5. Шаблоны имен файлов..................................... 144
3.4.6. Потоки ввода-вывода..................................... 145
3.4.7. Группировка команд........................................ 147
3.4.8. Инициализационные файлы ЬазП.............................. 149
Глава 4. Рабочее место пользователя................................... 150
4.1. Графическая система X ИЧпбоуу.................................. 152
4.2. Оконная среда КОЕ.............................................. 154
4.2.1. Рабочий стол КОЕ....................-...... . - -..........154
4.2.2. Запуск программ и переключение между ними....................155
4.2.3. файловый менеджер Копццегог ................................156
Основные возможности....................................... 156
Копциегог —не только файловый менеджер ......................156
4.2.4. Центр управлений КОЕ....................................... 157
4.2.5. Работа со съемными носителями а КОЕ..........................158
4.2.6. Добавление собственных команд в контекстное меню КОЕ.........159
4.2.7. Новое в КОЕ 3.4............................................ 161
4.3. Оконная среда 6П0МЕ........................................... 162
4.3.1. Общее описание й методика работы........................... 162
Что за зверь эта ОЫОМЕ............................. -.......162
файловый менеджер ЫаиИШв................................... 164
Расширенная система управления М1МЕ'Типами ..................165
Поддержка службы ОМБ-Вазеб Беллсе О1всоуегу................ 166
Особенности последних версий............................... 166
4.3.2. Добавление собственных команд в контекстное меню СПОМЕ....... 169
4.3.3. Автоматическая смена обоев................................. 169
4.4. Офисные пакеты.....................................................
Орел ОИсе и К ОГбсе..........................................
Уменьшение времени запуска Ореп ОШсе.........................
Новое в Ореп ОНЮе 2.0........................................
4.5. Издательские системы.................................................
Язык разметки ТеХ............-...............................
Текстовый процессор ЬуХ......................................
Издательская система БспЬиз..................................
4.6. Графика в Моих.....................................................
4.6.1. Графические редакторы.......................................
Редактор растровой графики 61МР — обрабатываем фото......_..
КРаМ.........................................................
К1сопЕй1 ~~ редактор иконок.............,....................
4.6.2. Программы — просмогрщики изображений .......................
(замечу......................................................
Е1ес1пс Еуез.................................................
КщскБЬой.....................................................
КУЮук........................................................
Коока .......................................................
ХБапе .......................................................
4.6.3. Как сделать снимок экрана...................................
170
170
172
172
173
173
175
176
177
177
177
178
178
178
178
179
179
180
180
180
К8лар5ГкЯ................................................... 180
1гпадеМад1ск................................................ 181
4.7, Полезные трюки............................................... 182
Просмотр в консоли документов М8 №гб и РОР....................182
Глава 5. Звук и видео в Цлих ............................................ 134
5.1. Почему воспроизведение аудио в Цпих лучше, чем в \Мпбо«в........185
5.2, Прослушивание музыки........................ .................186
трд123.................................................. 186
Хттз ................................................. 187
Другие программы....................................... 187
Сравнение Хттз и МоАШп.................................. 189
5.3. -Ограбление» Аобю-СО.......................................... 192
5.4. Программы для просмотра видео ..................................194
Обзор программ............................................194
Программа Хте.............................................194
Просмогр ОТО..............................................196
Смотрим телепередачи под Шик......................... 197
5.5. Воспроизведение неподдерживаемых форматов.......................198
200
Глава 6. Сеть и Интернет.....................................................
6.1. Основные сетевые понятий...........................................201
6.1.1. Протокол и интерфейс ........................................201
6.1.2. Уровни взаимодействия 081 ..................................204
Физический уровень (РЬуЙсД! Сауег).......................... 204
Канальный уровень (0а1а Кпк Сауег)......................... 204
Сетевой уровень (МеТиогк1.ауег).......................... 205
Транспортный уровень (ТгапароН 1ауег)...................... 205
Сеансовый уровень {8езз1оп 1_ауег).....................-.....206
Представительный уровень (РгезепШюп 1_ауег)................. 206
Прикладной уровень {АррйсаИоп 1ауег}.........................206
Интернет И модель 051........................................207
Основные протоколы................................... -.....207
6.1.3. Протокол ТСР/1Р и 1Р-адресация ........................... 208
6.1.4. 0145 — система доменных имен ............................ 209
6.1.5. Порты..................................................... 211
6.1.6. Динамическое выделение адреса................................211
6.2. Подключение к локальной сети..................................... 211
6.2.1. Настройка сети в Ыпох МапФаке.............................. 212
6.2.2. Настройка сети в Ьпих Вей На1................................214
6.2.3. Настройка сети в Ребога Соге ,............................. 215
6.2.4. Проверка работы сетевого интерфейса........................ 215
6.2.5. Настройка сети в старых дистрибутивах........................218
6.3. Подключение к\ЛЙпФ№-сети......................................... 218
6.4. Подключение к Интернету . ....................................... 221
6.4.1. Настройка модема........................................... 221
6.4.2. Подготовка к выходу в Интернет...............................223
6.4.3. Специальные возможности браузеров............................227
Копдиегог....................................................227
Са1еоп.................................................>.....228
Ер|ррапу................................................... 230
ЫФзсаре ................................................ 230
РкеРох.......................................................231
6.4.4. Текстовые браузеры...........................................231
6.4.5. Полезный трюк: Что делать, если браузер «подвисает»
на какой-то странице........................................ 232
6.4.6. Набор программ для работы в Интернете................... 233
Болтанка !СС.............................................. 233
Менеджер закачки файлов ОоУяЧоабег Тог X.....................233
ГГР-клиенты..................................................237
Глава 7. Основы администрирования системы ................................. 240
7.1. Что понимается под администрированием системы.....................24(
7.2. Конфигураторы Ипих.................. . . _..................... 242
7.3. Пользователи и квоты.............................................. 244
7.3.1. Учетные записи пользователей.................................244
Файл /еТс/раезий — информация о пользователях............... 245
Информация о группах пользователей. Файл /еЮ/дгоор ............. 246
7.3.2. Создание иудаление пользователей и групп.....................247
7.3.3. Квотирование............................................. 248
Что такое квотирование. Особенности квотирования в Мпих.......248
Ядро и поддержка квотирования.................................249
Назначение и активация квот. *.............................. 251
7.4. Подключение и конфигурирование аппаратных устройств.................255
7.4.1, Ядро и поддержка устройств.............................. 255
7.4.2. Утилиты для работы с модулями................................256
7.4.3. Кибги — утилита для автоматического определения устройств ...257
7.4.4. Настройка установленных устройств......................... 258
7.5. Установка программного обеспечения..................................258
7.5.1, Установка из исходных текстов........... ;................. 258
7.5.2. Установка из бинарных пакетов.............................. 260
Как это делается и что для этого нужно........................260
Менеджер пакетов грпт....................................... 261
Графические менеджеры пакетов .............................. 263
Ар1: ОеЫап-совместимый менеджер пакетов ......................264
7,5.3. Установка из пакетов, содержащих исходный код................267
7.6. Клонирование и восстановление системы............................ 268
Глава В. Язык командного интерпретатора.................................... 270
8.1. Параметры....................................................... 272
8.2. Подстановки........................................................273
8.3. Массивы......................................................... 274
8,4. Управляющие структуры............................................. 275
8.4.1. Условные операторы...................................... 275
Условный оператор К......................................... 276
Оператор 1ез1 и условные выражения............................276
8.4.2. Операторы цикла........................................ 278
Оператор цикла с перечислением 1ог.......................... 278
Оператор цикла с условием иФНе............................... 279
Оператор цикла с инверсным условием ипй!.................... 280
Оператор цикла с выбором ае1ес1.............................. 280
8.5. Условная подстановка параметров................................. 281
8.6. Функции............................................................ 282
8.7. Обработка сигналов и протоколирование...............................283
Глава 9. Управление процессами ............................................. 285
9.1. Как загружается Опух................................................286
9.1.1. Начальная загрузка: 1.110 и 6Й11В.......................... 286
Общие механизмы............................................ 286
Загрузчик 1110........................... /..................287
Загрузчик СНОВ........................................... 291
Как установить графический фон загрузчика ОЯМ В...............293
9.1.2. Продолжение загрузки.........................................293
Демон 1п11 ...................................................293
Уровни выполнения............................................ 294
Конфигурационный файл /еЩ/НйаЬ................................296
Инициализация в стиле В5О.....................................298
Инициализация в стиле Зузтет V.............................. 299
9.2. Команды управления процессами.......................................302
9.2,1, Иерархия процессов: реирзггее....... .............. 302
9.2.2. Информация о ресурсах системы: команды !гее, Ш, би .......-303
9.2.3. Процессы в реальном времени: команда Тор ........... 304
9.2.4. Приоритет процесса: команды п!се и гегисе ................ 306
9.2.5. Фоновый режим: комавдыфЬз, (д, Ьд ....................... 307
9.3. Протоколирование системы .................................... 307
9.3.1. Конфигурационный файл/еТс/5уа1од.сол1..................... 309
9.3.2. Сетевое протоколирование . .............................. 312
9.3.3. Протоколирование ядра. Демон к!одй и команда Отеьд ........- 313
9.3.4. Что делать с протоколами дальше? Утилита 1одгоШ1е------------ 313
9.4. Выполнение заданий по расписанию.............................. 315
9.4.1. Запуск задания в назначенное время: команда аТ .............315
9.4.2. Диспетчер расписаний — демон стоп......................... 316
Управление файлами расписаний...............................316
Формат файла расписания. ................................. 317
Глава 10. Резервное копирование и восстановление данных.............. 318
10.1. Восстановление удаленного файла ............................ 319
10.1.1. М!бл1дМ Сотта пйег ........................................ 320
10.1.2. Утилита беЬидГв ......................................... 320
Ю.2. Стратегия разервного копирования.............. .....................- 321
10.3. Оборудование для резервного копирования ......................... 322
10.3.1, Стример.............................................. 322
Подключение стримера р интерфейсом ЗС81 .................... 323
Подключение стримера с интерфейсом РОС .......................323
10.3.2. Магнитооптический диск..................................... 323
10.4. Программное обеспечение д ля резервного копирования................ . 324
10.4.1. Простое резервное копирование по сети ..................... 324
10.4,2. Управление стримером. ..................................... 325
10.4.3. Команды Цитр и гайоте .......................................326
10.4.4. Архиватор ерю ............................................. 327
10.4.5. Программа АМАЮА ........................................ .329
10.5. Дублирование данных: введение В ПАЮ.................................332
10.6. Как найти, спрятать и безвозвратно уничтожить данные................335
Глава 11. Базовое конфигурирование сервера
.336
11.1. Серверные технологии Мпих........................................... 339
11.2. Организация и состав ипих»сервера...............,................... 340
11.3. Суперсервер х!пей................................................. 344
11.3.1. Установка суперсервера х1пе$б ...............................344
11.3.2. Настройка суперсервера хфей.............................. 345
11.3.3. Запуск хФеЙ ......_____ .....................................349
11.3.3.1. Защита хюеШ.........................................350
11.3.3.2, Пример файла конфигурации /еТс/х1пеМ................350
11.4. Удаленный доступ: зяб и 1е|пе( .................................... 354
11.4.1. Использование Те1пеТ.........................................354
11.4,2. Настройка и использование 55Н................................355
Что такое 55Н.................................................355
Настройка 85Н на сервере................................... 357
Запуск демона ваДЦ............................................359
Использование 55Н*клиента................................... 360
Аутентификация средствами 83Н.................................361
Глава 12. Разделение ресурсов: НР5 и 5атЬа......................... 363
12.1. ЫГ8 — сетевая файловая система................................. 364
12.1.1. Клиент ЫР8: монтирование сетевого каталога................364
12.1,2. Настройка сервера МР8................................ 365
12.2. 8атЬа: Мп их-сервер для Шпс1ода5~1СЛиентов .................... 367
12.2.1. 5атЬа на сервера ......................................... 367
12.2.2. Настройка 5аятЬа........................ .................368
Секция [д!оЬа!].............................................. 369
Секция [Ьотез]............................................_..., 371
Секция [риЬПс]................................................ 371
12.2.3. Практические примеры настройки............................. 371
12.2.4. Доступ к принтеру игшх для УУюбот-машин.................... 372
12,2,5, Доступ к Шпбоюз-принтеру с компьютера, работающего под Ипих.... 374
12.2.6. Конфигуратор 5У/АТ........................................ 376
12.2.7. 5атЬа и безопасность.........................................378
12.2.8. Оптимизация ЗатЬа........................................ 379
12.3, Совместное использование каталогов в Стих МапСтаке..................380
12.4. Программа ИпНе^дНЬоНтоой — правильный выбор.........................381
Глава 13. ОМ5 — служба имен....................................... 383
13.1. Введение в 0Н8.......................................... 384
13.2, Настройка клиента ДЫ5.......................................... 385
13.3. Настройка сервера ОИЗ......................................... 386
13.3.1. Обновление корневого кэша................................ 390
13.4. Кэширующий сервер ПИЗ ........................................ 392
13.4.1. Настройка кэширования на □№-сервере.......................392
13.4.2. Возможные проблемы и их решение ....................... 393
13.5. Вторичный сервер 0Ы5 ......................................... 394
13.6. Просмотр С№-зоны. Утилита пз|оокцр..............................395
13,7. Оптимизация настроек сервера 0№.................................397
13.8. Запрета сервера 0И5 ............................................398
13.8.1. Настройка и запуск ОН 3-сервера в сЬтооТ-окружении .._.. 398
13.9. Использование подписей транзакций. Механизм Т51С............. 399
Глава 14. Почтовый сервер...................................... 401
14.1 Установка и настройка вепРтаП....................................... 404
14.1.1. Базовая наст ройка зепОтаИ............................. 405
14,1,2, Редактирование конфигурационных файлов.......................408
14.2. Аутентификаций в эепртаг!....................................... 412
14,2.1. Установка и настройка 5А5Ь ............................. 412
14.2.2, Настройка зепс1та11+5А81.................................... 413
14.2.3. Настройка почтовых клиентов с использованием аутентификации..414
14.3. Агент доступа — ТеЮЬтаИ......................................... 416
14.4. Автоматическая сортировка входящей почты — программа ртостаУ........416
14.5, Создание списка рассылки............................................420
14.6, Защита программы зепбтаН, Программа зтгзП...........................421
Глава 15. Настройка сервера ГГР..............................................423
15.1. Сервер Ш-РТРО .............................................. 424
15,1.1. Настройка УЛ1-ГГР0. Конфигурационные файлы............... 426
Основной файл Ярассезз. Директивы сервераУЛ1-РТРО............426
Файл йрЬоз1з — параметры доступа для пользователей
с указанных узлов.......................................... 430
Файл Яризетз — список локальных пользователей,
которым запрещено пользоваться УЛ1-ЕТР0................... 430
Файл Дрзегуегз — разные настройки Пр-сервера
для различных узлов.................................... 431
Файл Нрсопуег510пз — форматы сжатия .........................431
Файл хТег1од — журнал ГГР-сервера.......................... 432
15,2, Сервер РгоГГР.....................................................433
15.2.1, Установка и запуск РтоЕТРР.................................433
15.2.2, Настройка РгоГГРО. Файл /еСс/ргоНрФсопТ.....................433
15,2,3. Разграничение доступа к серверу РгоЕТР......................436
Организация анонимного РТР-сервера............................437
15.3. Утилиты обслуживания РТР-сервера..................................438
15.4. Виртуальный узел ЕТР...................................... 439
15.5. Защита ПР.....................................................440
Глава 16. НТТР-сервер АрасНе..................... ....................... 442
16.1. Установка АрасНе.............................................. 443
16.2. Настройка АрасНе. Файлы конфигурации..............................445
16.3. Основные настройки. Файл Мфс1:сопТ(Кйр62.сопГ)....................445
16,3.1. Общие директивы ........,.,.................. -.........— 446
16.3.2. Директивы протоколирования.................................448
16.3.3. Директивы управления производительностью.................. 448
16.3.4. Директивы обеспечения постоянного соединения с клиентом... 449
16.3.5. Директивы создания виртуальных узлов...................... 450
16.3.6. Директивы настройки Отображения каталогов................. 450
16.3.7. Директивы обработки М1МЕ-типов............................ 451
16.3.8. Директивы для работы е многоязычными документами.......... 452
16.3.9. Директивы перенаправления..................................453
16.3.10. Директивы обработки ошибок................................453
16.3.11. Директивы управлениядоступом к отдельным каталогам....... 454
Блок директив Цтй ....................................... 455
Блок директив косабрп.................................. 457
16.4. Файл ротации журналов /е1с/1одго1а1е.б/ЬирР. .................... 457
16.5. Системный файл конфигураций /еГс/зузсопТд/Ьйрб ................. 458
16.6. Сценарий запуска сервера АрасНе/еФ/НГб/ЬПрб.......................458
16.7. ГрафическиеКонфигураторы АрасЬе...................................459
16.8. Каталоги пользователей............................................460
16.9. Виртуальный НТТР-сервер ..........................................461
16.9.1, Виртуальные серверы с идентификацией по имени..............461
16.9.2. Виртуальные серверы с идентификацией по 1Р-едресу _ .... 463
16.10. 351 и АрасНе................................................. 464
16,10,1. Установка 35 Ь.......................................... 464
16.10.2. Подключение ЗЗЬк АрасНе................................. 465
16.10.3. Генерирование сертификатов............................. 467
16.11, Пример файла Нйрб.соп!.............. ...______________- -........468
16.12. Перекодирование русскоязычных документов «на лету» ..............483
16.12.1. Аизв1ап АрасНе: установка, настройка, использование.......484
16.12.2. Настройка перекодировкирусскоязычных документов...........484
16.13. Защита сервера АрасНе............................................486
16.14. Сервер кНТТРР — веб-сервер уровня ядра...........................487
Настройка кНТТРР......................................... 487
Глава 17. Установка и настройка МуЗСИ. Связка АрасКе+РНР+МуЗСН...............489
17.1. Установка Му801 490
17,1.1. Назначение пароля суперпользователя...................... 490
17.1.2, Автозапуск сервера МуЗО1................................. 492
17,1.3. Пользователи сервера Му 301 и их права.....................492
17.2, Клиентская часть МуЗО1............................................494
17.3. Установка РНР и настройка связки АрасНе+РНР+МуЗО1_................494
17,3.1, Первый способ: из пакетов АРМ............................ 495
17.3.2. Тестируем созданную конфигурацию...........................497
17,3,3. Второй способ: из исходных текстов.........................498
17.4, Защита сервера МуЗОГ........................................... 499
17.5. Введение в язык 801.......................................... 500
17.5.1, Общиепонятия...............................................500
17.5.2. Краткий практический курс ЗОЬ..............................500
Глава 18. Прокси-серверы. 501Л0 и 8ОСК8................................. 510
18.1. Что такое прокси-сервер?...................................... 511
18.2. Установка 501110............................................... 512
18.3. Настройка 801Л0................................................ 512
18.4. Запуск 501110....................................................513
18.5. Расширенные настройки 50010, Конфигурационный файл зриф.соп!.....514
18.5.1. Параметры сети ......................................... 514
18.5.2. Параметры соседей...................... .................515
18.5.3. Упревление кэшем ........................................ 515
18.5.4. Протоколирование..................................... 516
18.5.5. Параметры внешних программ.............................. 516
18.5.6, Параметры администрирования ........................... 517
18.6. Списки АСЬ.................................................. 517
18.6.1. Параметры доступа ........................................518
18.7. Отказ от рекламы. Баннерный фильтр...............................519
18.8, Разделение канала с помощью 50МЮ.................................519
18.9. Настройка поддержки прокси у клиентов ......................... 521
18.10. Технология 30СК35, или как использовать аську из локальной сети.522
18.10.1. Введение в 5ОСКЗ. Прокси-сервер 5ОСК85................. 522
18.10.2. Настройка сервера 5ОСК85............................... 524
18.10.3. Запуск сервера воскзб....................................- 525
18.10.4, 0ап1е — еще один сервер 5ОСК35......................... 526
18.10.5, Настройка клиентов ЗОСК85 (!С0 и Кед)....................526
Глава 19. Маршрутизация и межсетевые экраны............................... 528
19.1. Введение в маршрутизацию..................................... 529
19,2. Программы маршрутизации в Плох.................................. 530
19.2.1. Демон гатей............................................. 530
19.2.2. Демон даФй — правильный выбор........................... 532
19.3. Расширенные средства маршрутизации. Комплекс 1ргоц1е2............535
19.3.1, Пакет 1ргоЩе2........................................... 535
19.3.2. Утилита 1р.............................................. 535
19.3.3. Просмотр параметров сетевого устройства................. 536
19.3.4. Операции над адресами: команда (р аРЦгевз............... 536
19.3.5. Управление таблицей маршрутизации....................... 537
19.3.6, Динамическая маршрутизаций.............................. 537
19.3,7, Управление правилами маршрутизации...................... 537
19.4. Что такое брандмауэр.......................................... 539
19.5. Цепочки правил................................................. 539
19.6. (РТаЫез— пакетный фильтр для ядер 2.4.x. и 2,8.x................. 541
19,6.1. Что изменилось в [РТаЫвз по сравнению с !РСКатк...........641
19.6.2. Настройка ядра Моих для поддержки 1РТаЪ1ез --------------541
19.6.3. Первичная настройка !РТаЫез. Задание политики по умолчанию.... 542
19.6,4. Действий над цепочками ................................ 543
19.6.5. Правила фильтрации.................................... 543
19.6.6. Фильтрация по отдельным пользователям.................... 545
Глава 20. Настройка ядра............................................................. 546
20.1, Многообразие ядер Цпих.................................................. 547
2.6.x............................................................ 547
2.4.x............................................................ 547
2.6.х.у........................................................... 548
2.6.Х-ГПЯ1................................................... 548
2.6.х-тгп-|еФ............................................... 548
2.6-х-рге и 2.6.х-гс........................................ 549
2.6-Х-бпу ................................................. 549
2.6.х-ас ,.,................................................. 549
Прочие....................................................... 549
20.2. Зачем настраивать ядро? .... ......................... - - • 549
20.3. Динамические параметры ядра ............................. -.....550
20.4. Загрузочные параметры ядра.,...................................... 551
20.4.1. Параметры корневой файловой системы.........................552
20.4,2. Объем памяти............................................ 552
20.4.3. Управление ЙАМ015К ........................................ 553
20.4.4. Управление планировщиком ввода/вывода.......................554
20.4.5. Другие параметры ядра .................................. 555
20.5. Компиляция ядра................................................ 555
20.5.1. Зачем обновлять ЯДРО?..................................... 555
20.5.2. Конфигурирование ядра................................... 556
20.5.2,1. Собе та1иг|1у1еУе1 орбопв........................ 556
20.5.2.2. (Запета! вёВДр;....................................557
20.5.2.3. СоаРаЫе тосМе виррогТ............................ 558
20.5.2,4. РгосевБОг1уре апб (еайтгез...................... 559
20,5.2.5. Роигег МападетепТ ОрТюпз...........................562
20.5.2.6. Виз ОрДопз 564
20.5.2.7, ВсесииМе'ЯЙ^нтЬ...................................564
20.5,2:8; □еу|сейпуегв... ............................... 564
20.5.2.9. РНезузГетз .......................................571
20,5,2.10. Кете! ГгасШпд................................... 572
20.5.2.11. СгурЮдларЫс орТфпз.............................. 572
20.5.3. Сборка ядра......... ; Л................................ 572
Глава 21. Создаем консольное приложение......................................... 575
21.1. Компилятор дсс........................................................576
21.1.1. Вызовдсс.................................................. 577
21.1.2. Общие ОПЦИИ.......,.,.........................................578
21.1.3. Опции языка................................................. 579
21.1.4. Опции препроцессора ...................................... 579
21.1.5. Опции компоновщика .;.................................... 579
21.1.6. Опции каталогов .......................................... 579
21.1.7. Опции отладки................................................. 580
21.1.8. Опции оптимизации ........................................ 580
21.2. Сборочная утилита таке...... . . . ................................ 580
21.3. Пакет Ыпифа и другие полезные программы.............................. 583
21.3.1. апЫ2кпг.............................................. 584
21.3.2. аз.......................................................... 584
21.3.3. Ызоп.................................................... 584
21.3.4. Пек....................................................... 585
21.3.5. дргоГ...................................................... 585
21.3.6. в»пр......................................................... 585
21.4. Пример программы на С ............................................ 585
Глава 22. Отладка, трассировка и оптимизация программ.................. 588
22.1. Ошибки и отладка............................................ 589
22.2. Отладчик дРЬ................................................... 591
22.3. Пример отладки программы.........................................593
22.4. Трассировка системных вызовов................................ 598
22.5. Оптимизация программ.Профайлер дргоТ........................... 601
22.5.1. Использование профайлера............................... 602
22.5.2. Как оптимизировать программу........................... 604
Глава 23. Разработка графического приложения: библиотека СТК+........... 605
23.1. Введение в СТК+.................................................606
23.2. Библиотека С1Ф............................................... 607
23.2.1. Стандартные типы данных библиотеки 60Ь......................607
23.2.2. Функциидля работы с памятью.................................608
23.2.3. СтрокииСПЬ................................................ 608
23.4.4. Списки.................................................. 608
23.2.4. Таймеры в С51Ф............................................ 610
23.3. Первая программа на 6ТК+............................................612
23.3.1. Виджиты,....................................................612
23.3.2. Окна................................................ 613
23.3.3. Изменение размеров окна.....................................616
23.3.4. Обработка сигналов.............,.......................... 617
23.3.5. Виджит событий — ЕтепТВох ................................ 619
23.4, Виджиты.......................................................... 621
23.4.1. Рождение, смерть и состояния виджита...................... 621
23.4.2. Упаковка виджитое, поля ввода и кнопки..................... 622
Нет файла....................... ...........................623
23.4.3. Переключатели...............................................630
23.4.4. Список................................................... 634
23.4.5. Выбор файлов.............................................. 639
23.4.6. Диалог завершения работы............................ -.....640
23.4.7. Меню.......................................................645
23.4.8. Иерархия виджитое...........................................645
Глава 24. Студия СИаДе.................................................... 648
24.1. Что такое В1абе?.............._................................. 649
24.2. Знакомство с в(абе............................................. 649
24.3. Работа с проектом.................................................659
24.4. Создание меню ........................_.. ........................663
24.5. Интересные виджиты............................................. 664
Глава 25. Пакет В1ак>д.............................................. 667
25.1. Что такое 0|а1од?............................................. 668
25.2. Сообщения....................................................... 668
25.3. Виджит Уев-по................................................... 670
25.4. Окно ввода текста............................................... 671
25.5. Зависимые и независимые переключатели........................... 673
25.6. Организация меню................................................ 675
25.7. Календарь.............................-...........................677
25.8. Шкала прогресса...................................................678
Глава 26. Взаимодействие процессов в Млих.............................. 679
26.1. Способы взаимодействия ..................................... 680
26.2. Полудуплексные каналы...................................... 680
26.3. Каналы типа ЯГО...............................................,. 683
26.4. Основные принципы ВувЩт V1РС...................................686
26.5. Очереди сообщений............................................ 687
26.5.1. Основные структуры ядра для работы с очередями ...... 687
26.5.2. Создание очереди сообщений........................... 690
26.5.3. Постановка сообщения в очередь.........................691
26.5.4. Получение сообщений очереди.......................... 694
26.5.5. Проверка наличия сообщения в очереди................. 695
26.5.6. Тотальный контроль.....................................696
26.6. Семафоры......................................................* 697
26.6.1. Создание множества семафоров...........................699
26.6.2. Выполнение операций над семафорами ....................700
26.6.3. Контроль семафора..................................... 702
26.7, Разделяемые сегменты памяти.................................. 705
Глава 27. Создание сетевого приложения в Моих...................-........ 712
27.1. Протокол ТСР/1Р............................................. ^13
27.1.1. Многоуровневая архитектура стека ТСР/1Р................ 713
27,1 ,1 .1, Уровень сетевого интерфейса..................714
27.1 .1.2. Межсетевой уровень....................... 714
27,1 .1.3. Транспортный (основной) уровень.............. 715
27.1 Л.4. Уровень приложений........................... 716
27.1.2. Структура пакетов 1Р И ТСР ............................. 716
27.2. Протокол 1СМР............................................... 717
27.2.1. Для наго используется протокол ЮМР..................... 717
27.2.2. Структура ЮМР-пакета.....................................718
27.2.3. Тип и код ЮМ Р-сообщения............................. 720
27.2.4. Функции для работы с протоколом 1СМР....,.............. 721
Технические подробности............................. 722
27.3. Программирование сокетов .................................... 726
27.3.1. Что такое сокет?.................................. 726
27.3.2. Создание и связывание сокета.............................727
27.3.3, Установление связи с удаленным компьютером...............730
функция ||5Юп()........................................ 730
Функция соппес1() .......................................731
Функция ассерЦ)...................................... 731
27.3.4. Функция деЙюз1ЬупагПб0,................................ 732
27.3.5. Функции сетевого ввода/вывода.......................... 733
Обмен данными в режиме 8ОСК_8ТНБАМ..................... 733
Обмен данными в режиме 5ОСК0ОКАМ.........................734
27.3,6. Завершение сеанса связи................................ 735
27.3.7. Программа-сервер.........................................736
27.3.8. Программа-клиент..................................... 740
27.3.9. Установка опций сокета................ -...............742
27.3.10. Сигналы и сокеты....................................... 744
27.3.11. Мультиплексирование .................................. 745
27.3.12. Неблокирующие операции..................................749
Глава 28. Программирование ядра ...................................... 750
28.1. Каркасмодуля.................................................. 751
28.2. Компиляция модуля...............................................754
28.3. Работа с устройствами....................................... 755
28.4. Операции над устройством. Поиск устройств.......................760
Приложение. Таблицы соответствия УЛпЦоига- и Цпих-программ ............768
Работа в Интернет................................................. 769
Работа с файлами....................................................771
Прикладные и системные программы............................... 771
Офисные приложения.................................................. 773
Мультимедиа..................................................... 774
Разработка программного обеспечения.............................. 775
СУБД................................................... -..........776
Математические пакеты.......................-............-........ 776
Игры................................................................777
Введение
Об этой книге
Все большую и большую популярность в России и во всем мире заво-
евывает 1лпих — СМХ-подобная операционная система для 1ВМ-со-
вместимых персональных компьютеров. Растет количество приложений,
разработанных для нее. Постоянно расширяется круг задач, для которых
она используется. Из операционной системы для программиста и адми-
нистратора интернет-сервера она уже превратилась в реальную альтер-
нативу ОС \У1пбоу,’^ в сфере домашнего и офисного применения.
Эта книга призвана помочь читателю освоить ОС Ипих и научиться
полноценно работать в ней. Я предполагаю, что читатель знает, с какой
стороны подойти к компьютеру, умеет решать свои прикладные задачи,
работая в среде АУшбоуга или хотя бы М3 008, и хочет попробовать на
практике операционную систему совсем другого класса, чтобы в даль-
нейшем, возможно, полностью «пересесть» на нее. Изложение материала
происходит последовательно, начиная с этана установки ОС и закан-
чивая советами по разработке собственных приложений. Знакомство с
операционной системой — соперницей и'шбо'Л'.ч начинается с описания
прикладных программ, работающих пол ее управлением и предназна-
ченных для решения повседневных задач, стоящих перед пользователем
домашнего компьютера: редактирование текста и изображений, работа
в Интернете, проигрывание музыки и видео и т.п. Для облегчения пере-
хода с ХУшбоу/к на Ёших в конце книги приведена таблица соответствия
популярных У/1пбо\УК-приложениЙ приложениям Еншх, разработанным
для решения тех же задач. Далее в разделе для пользователя изложены
основные сведения о внутренней организации 1дпнх — ядре, файловой
системе, процессах и демонах, их взаимодействии, — необходимые для
настройки и базового администрирования системы, то есть обслуживания
многопользовательской среды, установки программного обеспечения,
обеспечения сохранности данных. Собственно сетевому администриро-
ванию, то есть настройке различных сетевых служб, посвящен второй
раздел книги. И для читателей, знакомых с программированием в среде
Мпбомч, предназначен последний раздел, освещающий особенности
разработки приложений в ОС 1лпихи некоторые полезные инструменты
разработчика.
Почему 1_1 п их?
Устанавливая Стих, вы получаете множество преимуществ:
♦ Гибкость. Мало того, что практически все в Стих поддается настройке в
соответствии с именно вашими задачами и оборудованием, так вам еще и
становятся доступны исходные тексты ядра и приложений, и вы можете
модифицировать систему так, как вам нужно. Такое можно встретить
далеко не в каждой операционной системе, особенно семейства Х’Утбом'з.
Вье видели где-нибудь исходные тексты хотя бы Блокнота ХУшдо^з? Мне,
например, очень не хватает функции замены текста в этом редакторе. Для
решения этой проблемы я написал собственный редактор, в котором и
реализовал эту функцию. А если мне нужно сделать небольшое измене-
ние в ядре? Не буду же я полностью переписывать ХУшбохез? Остается
только надеяться, что новая функция будет реализована в следующей
версии, и ради этой единственной функции устанавливать «монстра»,
пожирающего еще больше системных ресурсов.
♦ Дешевизна. ОС Цпих абсолютно бесплатна. Конечно, компакт-диски
с дистрибутивами продаются за деньги, но эти деньги вы платите не
за лицензию, а за сам носитель, подбор программного обеспечения
на нем и программу-инсталлятор — все, как у пиратов, с той лишь
разницей, что это: а) полностью легально, б) гарантированно работа-
ет и пользуется технической поддержкой. Вы можете и не покупать
дистрибутив, а анонимно и бесплатно выкачать исходные тексты или
уже собранные программы из Интернета, установив их самостоятель-
но и заплатив только за трафик — и это тоже полностью легально.
Вам не прилете» ничего доплачивать, устанавливая 1лпих на каждый
следующий компьютер, не нужно покупать отдельную лицензию на
использование Ыпих на сервере. В любом случае стоимость всего
программного обеспечения составит всего несколько долларов. Я не
буду сравнивать стоимость построения Г ишх-сервера со стоимостью
аналогичного сервера на платформе МёсгохоЙ, вы сами можете это
сделать на сайте компании МЁсгояой.
♦ Простота обслуживания. Сама система и все службы настраиваются
путем редактирования конфигурационных файлов. Это обычные
текстовые файлы; зная их расположение и формат, вы сможете на-
строить любой дистрибутив, даже если у вас под рукой нет никаких
инструментов, кроме текстового редактора. Кроме того, для об-
легчения перехода с ОС ХХбпбоуге МТ/2000/2003 Бегуег, где сервисы
настраиваются в основном через графический интерфейс, создано
множество графических конфигураторов, работа с которыми инту-
итивно понятна и позволяет сосредоточиться на сути выполняемых
действий, а не способе их выполнить.
• Нетребовательность к ресурсам. Системные требования зависят от
дистрибутива (конкретной реализации Стих) и версии ядра. Суще-
ствуют дистрибутивы, специально созданные для корректной работы
на старых и «бедных» машинах. Например, для организации интернет-
сервера на базе дистрибутива Кеб На1 версии 5.2 вам вполне хватит
компьютера с процессором 1п1е1 80486ЭХ и 32 мегабайтами ОЗУ. А
окончательно устаревшую 386 машину, на которой никакая совре-
менная ОС У/тботе не запустится, под управлением 1лпих можно
вернуть в строй в качестве маршрутизатора или брандмауэра.
В чем же причина того, что большинство пользователей до сих пор не рас-
сматривают 1лпих как полноценную настольную операционную систему?
Мет, не в том, что 1лпих так недружелюбен, как его малюют. И не в том,
что под [.тих нет ни офисных приложений, ни игр. И не в том, что 1лпих
довольно долго имел проблемы с русским языком. Причина заключает-
ся в правильной маркетинговой политике Мюгокой — нужно отдать ей
должное. Совсем не обязательно создать лучший программный продукт,
нужно убедить в том, что он лучше. Это я о У/тбо'лх (про ГХ)8 я вообще
матчу — урезанная версия ХЕМIX, которая, в свою очередь является
урезанной версией 1МХ) — эта операционная система использовала
ихТХ-решения 20 летней давности, в то время как о существовании
самой ПМХ некоторые пользователи \\чпскгл'$ 95 и не догадывались.
Задача этой книги — не только научить пользователей работать с 1лпих.
но и развеять мифы о том, что это сложная и неподъемная система,
предназначенная только для профессионалов. Если вы читаете эту кни-
гу, то для себя данный миф вы уже почти разрушили. Осталось только
чуть-чуть. Вам осталось узнать об истории создания и развития 13пих.
Ведь о развитии 008 и \У1пбо^я знают все — об этом написано даже
в школьных учебниках по информатике. А про Юпих и 13Х1Х в лучшем
случае говорят: «Есть такая система».
История 1лпих
Все началось с игры
Не поверите, но все началось с небольшой игры, написанной Кеном
Томпсоном. Но чтобы вам было понятно, при чем здесь игра, нужно
сделать небольшой экскурс во времена «до игры».
В далеком 1965 году начались работы над созданием операционной
системой М1Л.Т1С8 (М1'1Т(р1ехсс1 Ыогтабоп апб СотрнНгф 8уЛет)
для компьютера СЕ-645 (об этом компьютере вы точно не прочитаете
в школьном учебнике по информатике). Инициатором была компания
ВеЛ ЬаЬога1опе» (подразделение компании АТ&Т), а ее помощниками
выступали не менее известные организации — Оепега! Е1ес{пс и Массачу-
сетский технологический институт (МТИ). Что же ожидали от МЕ1Т1С8?
Процессорное время СЕ-645 стоило очень дорого, поэтому нужна была
система разделения процессорного времени, обеспечивающая высокую
скорость обработки данных я их совместное использование. Посмотрите
на рис. 1 — это система СЕ-645. Обратите внимание, какое помещение
она занимает. А теперь вспомните процессор 1гПе1 80386. К чему это я?
Производительность СЕ-645 чуть выше, чем у процессора 80386, До чего
техника дошла (кстати, «шла» она к этому лет эдак 20)!
Операционная система МиЮск была запущена в 1969 году, но она не
оправдала возложенных на нее надежд. Поэтому вскоре компания Ве11
ЬаЬогаЕопеа прекратила работу над этой системой. Коммерческого успеха
эта система не принесла. Правда, для справедливости нужно отметить,
что МТИ умудрился продать около 8(1 инсталляций этой системы, причем
некоторые из них «дожили» до начала 90-х голов.
Но не бывает худа без добра. МиШсз послужила своеобразным толчком
для создания новой операционной системы — ПМХ.
Что же произошло в 1969 году, который считают годом рождения 1ЛЧ1Х?
Четыре сотрудника Вей ЬаЬ», а именно Руд Кенедей (Вибб Сапабау),
Дуг Мак-Ил рой (Оои§ МсИгоу), Дэннис Ричи (Пеппи КйсЫе) и Кен
Рис. 1. (ЗЕ-645 © (Зепега! Е/есМс МогтаИоп Зуз1етв Еци1ртеп{ ОМе/оп, 1968
Томпсон (Кеп ТЬотркоп) попытались возродить Ми1Нс$. Все они ранее
работали над проектом МиШся и не смогли смириться с таким поворотом
событий.
Прежде всего был разработан проект файловой системы — потом эта
файловая система стала файловой системой ЕМХ. Кен Томпсон написал
программы, эмулирующие работу файловой системы и режима подкачки.
Получилось что-то вроде прототипа ядра новой системы. Это ядро было
предназначено для ОЕ-645.
А сейчас на арене появляется та самая игра — «Космическое путеше-
ствие», симулятор полета, написанный Кеном Томпсоном под МиШсв.
Но после прекращения работы над Ми№с$ эту игру оказалось не на чем
запускать. Обнаружив в углу лаборатории редко используемую машину
РОР-7, Томпсон с Ричи решили переписать игру для нее. Переносить
программу на-перфоленте оказалось неудобно, и Томпсон разработал для
РОР-7 файловую систему, утилиты для работы с файлами и командную
оболочку. Все это писалось на машине ОЕ и переносилось на РОР-7 на
перфоленте, но, как только был закончен ассемблер для РОР-7, система
встала на собственные ноги. Получилась новая операционная система
для компьютера РОР-7, которую назвали, по аналогии с МЫбс.ч, “ОЫ1С5”
(ЕМ!р1ехеб 1пГогта1юп апс! ( отриИгщ ЗегЛсе). Такое название ей дал
Питер Нейман (РеГег Кешпапп). Кто же переименовал ее в 1ЛЧ1Х, до
сих пор не известно.
Рис. 2. РОР-7
В то время все программное обеспечение, том числе и операционные
системы, писалось на машинно-зависимом языке (ассемблере), то есть
если программа, например, написана для компьютера РОР-7. ее нельзя
запустить на компьютере с другой архитектурой, например, на ОЕ. Кен
Томпсон задался целью сделать универсальную систему, которая могла
бы работать на нескольких платформах, то есть создать переносимую,
независимую от «железа» операционную систему. Для своей системы
он начал разрабатывать язык В, на котором он хотел переписать всю
систему. Но «до ума» этот язык довел Дэннис Ричи, обновленная версия
языка стала называться С. Да, этот ТОТ самый язык, на котором каждый
из нас написал не одну программу. Сейчас мы подходим к созданию той
идеологии ПЪПХ’а, которая используется по сей день.
О работе над новой операционной системы руководство компании Ве11
РаЬ5 ничего не знало. Они думали, что ведущие программисты работают
над системой обработки текстов для АТ&Т, Действительно, Томпсон на
писал строковый (не текстовый!) редактор еб, который присутствует до
сих пор во всех современных дистрибутивах, а Ричи создал программу
гоГГ Новые разработки понравились компании АТ&Т, которая была
заинтересована в дальнейшем развитии проекта и приобрела новый
компьютер — РЭР-11. Для этого компьютера СМХ был полностью
переписан: вся система, включая ядро, была написана на языке С, что
позволило переносить систему на другие платформы. На ассемблере была
написана только та часть ядра, которая была непосредственно связана с
«железом». Это было в 1971 году.
Становление ВЫ|Х как операционной системы
Очень много новых функций в ядро системы было добавлено всего за
один год — с 1971 по 1972. Система заметно «возмужала» по сравнению
с 1969 годом. Теперь она действительно стала похожа на операционную
систему. Но система не распространялась — ее использовало только
одно подразделение АТ&Т, Первым шагом системы за пределы компа-
нии АТ&Т стала установка системы в компании Хс\х Уогк Текрйопе.
Система была установлена на компьютере РВРП/20. обладавшем аж 56
килобайтами оперативной памяти и двумя жесткими дисками по 2,4 Мб
каждый. С этого момента началось распространение системы.
Уже в начале 1973 1-ода насчитывалось 16 инсталляций системы. Это до-
вольно неплохо для времен, когда такую роскошь, как компьютер, могла
позволить себе только крупная организация, и то не каждая. Компьютер
тогда покупался для решения промышленных задач, а не для набора
текста и прослушивания музыки.
Вот что писал Ричи о ЮТХ'е: “Мы хотели сохранить не только хорошую
среду программирования, в которой можно было решать ладони, но и
систему, вокруг которой могло сформироваться товарищество. Мы по
опыту знали, что сущностью совместного использования компьютера
(дге елзепсе о/соттипа1 сотри(т§} является не только замена перфокар-
точного ввода на терминал, но и предоставление средств и стимулов для
более тесного общения, реализуемого средствами удаленного доступа к
машине, работающей в режиме разделения времени"
Летом 1974 года в журнале «Соттшвсайопз оГ (Не АСМ» появилась пер-
вая статья о 1ЛЧ1Х. Ее авторами были, как и следовало ожидать, Томпсон
и Ричи. Они описывали общее устройство ШЧ1Х. В той же статье гово-
рилось, что по состоянию на июль 1974 года система была установлена
уже на 600 (!) компьютерах. Вы только вдумайтесь в цифру: количество
инсталляций за год возросло более чем в 37 раз. Самое интересно, что
система развивалась почти при полном отсутствии поддержки со стороны
АТ&Т.
После этой статьи операционной системой 1ЛЧ1Х заинтересовались мно-
гие научно-исследовательские организации. Но АТ&Т не имела права за-
ниматься бизнесом, следовательно, система не могла продаваться. Чтобы
система все-гаки развивалась, Томпсон бесплатно рассылал всем желаю-
щим наборы дисков с операционной системой. Такой поворот событий
повлек следующую волну развития ОС. Например, студенты Йельского
университета разработали командную оболочку ($Ъе11), а студенты дру-
гого университета создали первую сеть на основе ОМХ. В университете
Беркли (Калифорния) опять-таки студенты создали огромное количество
различных утилит и новую оболочку.
Если вы читали какую-то литературу по 1Л91Х, то, наверное, знаете, как
I нумеровались версии СИХ1Х — VI, У2 и т.д. Откуда взялась именно такая
нумерация версий? В 1971 году Ричи и Томпсон написали руководство
по программированию в 13М1Х. Версия, которая описывалась в первом
издании этого руководства, стала называться VI, далее — У2 и т.д. Если
бьггь предельно точными, то вот даты выхода изданий руководства:
* 3 ноября 1971 г. (описывалась версия VI)
• 12 июня 1972 г. (описывалась версия У2)
» Февраль 1973 г. (УЗ)
• Ноябрь 1973 г. (У4)
• Июнь 1974 г. (У5)
* Май 1975 г. (Уб)
* Январь 1979 (V?)
* Февраль 1985 г.
• Сентябрь 1986 г.
♦ Октябрь 1989 г.
После 1979 года нумерация Уп больше не использовалась — чуть позже
мы с вами узнаем, почему именно.
Важную роль в развитии БГБЦХ сыграл Калифорнийский университет в
Беркли. Как уже было сказано, студенты (точнее, аспиранты) этого уни-
верситета разработали новую командную ободочку и несколько очень
важных утилит. Одной из этих утилит мы пользуемся до сих пор — это
текстовый редактор VI (правда, в 1975 году он назывался ех). В том же
1975 году Томпсон написал версию Раяса! для 1Л91Х.
Модифицированная в университете Беркли система получила название
В81) (Вегке1еу Бойлуаге Б1бГпЬЩюп). Все мы слышали название РгееВ&Б,
некоторые из нас даже работали с этой системой. Так вот, сейчас мы
знаем, откуда оно произошло. Данная система содержала Раяса! и редак-
тор ех (VI). Университет Беркли имел право заниматься коммерческой
деятельностью, поэтому первая версия В81) сначала продавалась по пене
$50. Всего было продано 30 копий системы. В 1978 году вышла вторая
версия В8Б — 2В8Б. Вторая версия продавалась активнее — было про-
дано 75 копий. Идеи, разработанные в Беркли, позже были использованы
в следующей версии 1.5X1 X от ВеП Баба.
Два года спустя Питер Вэйнер (Регег \Уе1пег) и Гейнц Ликлама (Н1еп7
БусИата) создали компанию 1п1егасНуе ЗуаГетз, которая тоже принялась
продавать БГМХ. Правда, продавалась она под другим именем — 1гсНь
(это первый клон 1Ж1Х).
Вернемся к нумерации Уп. Прекратилась она в 1979 году — в этом году
вышла последняя «настоящая» йбГГХ — Б1Ы1Х У7. В ее состав входили
компилятор С, программы а^к, такс, пнср, йпб, ерю и командная оболоч-
ка Войте (и, разумеется, много других программ, которых здесь перечис-
лять нет смысла), Именно эта система была перенесена Дэннисом Ричи
и Стивом Джонсоном (оба — сотрудники АТ&Т) на платформу 1п1еп1а1а,
а чуть позже несколько программистов из австралийского университета
перенесли ее на платформу 1п1егс1а1а 8. Правда. после переноса на другую
платформу немного пострадала производительность системы — за все
нужно платить. Университет Беркли занялся решением этой проблемы
и решил ее. В 1982 году вышла версия 2.8.1В81), которая работала зна-
чительно быстрее предшествующей.
Бурное развитие ВЙ1Х
В 1980 году агентству БАКРА (ейе БеГепзе Агкапсеб Кекеагсб Рго)ес1$
А«епсу) потребовалось увеличить мощность компьютеров, на которых ба-
зировалась сеть АКРАЙЕТ (предок сети Интернет). Ресурсы стареньких
РБР-10 были уже полностью исчерпаны, поэтому решено было перейти
на более мощные компьютеры — УАХ. Но для этих компьютеров нужен
был стек протоколов ТСР/1Р. Реализация ТСР/1Р от БЕС отпала по ряду
причин, поэтому агентству БАКРА ничего другого не оставалось, как вы-
Рис. 3. РОР-Ю
Рис. 4. 1/АХ
брать систему В8О. Данный факт положительно отразился на развитии
ЕХ1Х — ее выбрали основной системой для интернета.
Благодаря тому, что ОТч1Х сделалась основой интернета, темпы ее раз-
вития возросли. В начале 80-х вышло много различных версий 1Ж1Х. Вы-
пускали их разные компании, но основными конкурентами были компания
АТ&Т и университет Беркли. Первая выпустила системы Рго^гатшегХ
'Л'огкЬепсЬ (рабочее место программиста) и ЮХ 8ук1ет Ш. Университет
Беркли тоже не отставал — с октября 1980 года по сентябрь 1983 года
было выпущено 6 версий системы — 4, 4.1,4,1а, 4ЛЬ, 4.1 с, 4.2. Последняя
версия отличалась высокопроизводительной файловой системой и встро-
енной поддержкой сети (ТСРДР). До этого сеть в 13 XIX поддерживалась,
мягко говоря, весьма слабо. Но после реализации стека ТСР/1Р для ЕХ1Х
все изменилось. В 1983 году большинство подключенных к интернету
компьютеров составляли компьютеры УАХ с ОС 1.Х1Х
Какие бывают 11Ы1Х’ы?
Как только компании осознали, что на (ЗМХ можно заработать, причем
заработать неплохо, на рынке появилось множество клонов 1Ж1Х под
разными названиями. Например, компания Згш Мкгозуйегаз (основана в
1982 году, а одним из основателей был автор редактора ех — Билл Джой)
перенесла В8П на платформу, разработанную в Стенфорде, чем положила
начало новому типу рабочих станций.
Наверное, вы когда-нибудь слышали об операционных системах 1ШХ,
ХЕХ1Х, НР-СХ — все эти системы СХ1Хчюлобные. их создали, соответ-
ственно, компании 801, 8СО, Не^1ей-Раскак1. О ХЕХ IX можно вообще
долго говорить, но все, что вам нужно знать ой этой системе — это то,
что она является первым коммерческим ОМХ'ом для платформы 1гйе1
ОС ШМ НР-11Х 1,0 основана на системе ЗуЯеду.Щ от АТ&Т. Кстати, в
1983 году с компаний АТ&Т был снят запрет заниматься компьютерным
бизнесом, после чего компания сразу же принялась продавать свою си-
стему Зузгет V от Ве11 ЕаЬз (не забываем, что ЭТО подразделение АТ&Т).
Выпускала 1Ж1Х и компания 1ВМ, Правда, она немного опоздала: про-
дажи ее 1Ж1Х — системы А1Х — начались только в 1990 году.
Обилие различных версий О XIX стало причиной так называемых 1Ж1Х-
войн, когда конкурирующие компании выпускали все новые и новые
версии 1’МХ'а,
Это далеко не вся история 1Ж1Х, но рассмотренного материала вполне
хватит, чтобы заполнить пробел в ваших знаниях относительно истории
развития этой операционной системы. Если вы заинтересовались, в Ин-
тернете есть множество статей, посвященных истории ПМХ, Правда,
большая их часть написана на английском языке.
Происхождение Ылих
Операционная система М!п)х
В 80-х годах мощности персональных компьютеров не хватало для запу-
ска на них ОС ОXIX. но к началу 90-х ситуация радикально изменилась.
Вычислительные мощности персональных компьютеров достигли нужно-
го уровня, что позволило запускать ЦЫ1Х на обычном РС. К этому же
времени начали появляться версии 1ЛЧ1Х для РС. Одной из таких систем
была система Мних. Система Мтьхбыла разработана в 1987 году Эндрю
Таненбаумом (АпОгем/ 8. ТаппепЬашп) как учебная программа: ее на-
значением была демонстрация устройства и принципа работы реальных
операционных систем.
Поскольку М1шх была больше демонстрационной, нежели реальной систе-
мой, она была далека от совершенства. К тому же она была ориентирована
на процессор 80286, который был более доступным в то время. Исходные
коды (12 000 строк) этой операционной системы были опубликованы в
книге А.Таненбаума «Операционные системы», которую мог прочитать
любой желающий. Одним из читателей этой книги оказался Линус Тор-
вальдс — будущий создатель 1лпих.
Линус Торвальдс
Линус Бенедикт Торвальдс (Етик ВепефЩ ТогуаИя) родился 28 декабря
1969 года в г. Хельсинки, Финляндия. Первым компьютером Линуса был
Сотпюйоге У1С-20, который купил его дед Лео Вальдемар Тёрнквист.
Лео Вальдемар был профессором в Университете Хельсинки.
На «Коммодоре» Линус написал первую программу «НеНо, \\'ог!с1г'. На-
верно, все мы начинали именно с этой программы. За 4 года (компьютер
был куплен в 1981 году) Линус выжал из него все, что мог, поэтому он стал
копить деньги на новый компьютер. Основным источником его доходов
в то время были школьные стипендии. В 1987 году он купил компьютер
8п!с1ай ОЬ. Это был очень мощный на то время компьютер. На 8тс1а!г
ОС был установлен 32-раз рядный процессор Мо!ого1а 68008 и 128 Кб
оперативной памяти. Не удивляйтесь: именно 128 Кб. Это было очень
много: для сравнения, на «Коммодоре» было установлено всего 3,5 Кб. На
новом компьютере была установлена операционная система О ВО8.
За четыре года Линус основательно освоил компьютер и заинтересовался
работой операционной системы. В своей книге «Зия! Гог Гип” он пишет:
«Операционками я заинтересовался так: купил флоппи-контроллер, но к
нему прилагался такой поганый драйвер, что пришлось написать новый.
Пока писал — обнаружил проколы в самой операционной системе или, по
крайней мере, несоответствие между тем, что обещала документация,
и тем, что реально происходило. Я с этим столкнулся, когда моя про-
грамма отказалась работать.»
81пс1а(г ОЕ «прожил» у Линуса 3 года — на год меньше, чем его пред-
шественник. За эти три года Линус написал собственный ассемблер,
текстовый редактор и несколько компьютерных игр.
После школы Линус поступил в Хельсинский университет на факультет
компьютерных наук. На первом курсе ему немного не повезло — он вы-
нужден был пойти служить в армию и прослужил там 11 месяцев. После
возвращения из армии он продолжил
учебу в университете. На втором курсе
он прочитал книгу Таненбаума, по-
священную операционным системам.
Потом Линус писал: «Как только я
прочел предисловие, познакомился с
концепцией ОЫ1Х и узнал, на что спо-
собна эта мощная, строгая и красивая
операционная система, я захотел ку-
пить такой компьютер, на котором
сможет работать 1/Ы1Х. Я решил, что
поставлю себе Моих — единственную
по-настоящему полезную из известных
мне версий.»
Рис. 5. Линус Торвальдс
С этого все и началось...
Линус недоволен МЕп1х
В январе 1991 года Линус приобрел в кредит компьютер на базе про-
цессора 1п1е1 80386@ЗЗМ1и с 4 мегабайтами оперативной памяти. На
компьютер была установлена операционная система Мш1х. Но установ-
ленная система не совсем оправдала его ожидания. Больше всего ему не
нравилась программа эмуляции терминала, которая была для него просто
необходима — ведь с ее помощью он подключался к университетскому
МюгоУАХ’у. Линус писал: «Беда была в том, что я хотел скачивать и
закачивать файлы. То есть мне нужно было уметь писать на диск. Для
этого моей программе эмуляции нужен был драйвер дисковода. А еще ей
был нужен драйвер файловой системы, чтобы она могла вникать в орга-
низацию диска и записывать скачиваемые файлы. ...разработка драйверов
для дисковода и файловой системы казалась интересным делом. И я решил
им заняться. Написал драйвер дисковода. А поскольку я хотел записывать
файлы в файловую систему Мних, к тому же эта система была хорошо
документирована, я сделал свою файловую систему совместимой с си-
стемой Мйих. Таким образом, я мог читать файлы, созданные в Мййх,
и писать файлы на тот же диск, так что Л/йп'.х могла читать файлы,
созданные моей программой эмуляции терминала»
Линусу ничего другого не оставалось, как написать собственную про-
грамму эмуляции терминала, что он и сделал, как видно из приведенной
выше цитаты.
Кроме отвратительной терминальной программы Линусу не нравилось
то, что в Мних нельзя было перевести текущую программу в фоновый
режим. После написания своей программы эмуляции терминала Линус
фактически взялся за написание своей операционной системы.
Сначала он принялся писать различные системные вызовы, но эта работа
ему быстро надоела ‘— ведь заранее нельзя знать „что именно тебе пона-
добится. Поэтому он взял оболочку Войте А§ат 8Ъе1! (ЬакЬ) и попытался
запустить ее на своей системе методом научного «тыка» (в математике
этот метод называется методом Коши). Он запускал оболочку, она тре-
бовала какой-то системный вызов и завершала свою работу с ошибкой.
Линус анализировал, какой вызов был нужен оболочке, и реализовывал
его. В 1991 году оболочка все-таки запустилась. Это был очень важный
момент в развитии новой ОС: был заложен ее фундамент.
25 августа Линус написал в группу новостей сотр.охлпййх первое со-
общение о создании новой операционной системы. Сохранился даже
оригинал этого сообщения:
Ргот: .ИеУнтпк!.Г1 (Ыпиа ВепесИсЬ То:п/а1дз)
Ме^эдгоирз: сошр. оз . гг!1п1х
есС: кГпаС «си 16 уои Ике г_о нее птазк 1п п;1п 1х?
Зшптагу: втаИ роИ Рог ту пеад орегаЫпд зузбет
Мевваде-Ш: <1991Аид25.205708.9541@к1аауа.Не1Б1пк1.Р1>
ОаРе: 25 Аид 91 20:57:08 ЖТ'
ОгдапхгаИоп: ОпхуегвИу оЕ Не1в1пк1
Нз11о ечегуЬойу оиР РЬеге из!пд т1п1х —
1'т йохпд а (Егее) орегаЦпд зузсет (^ивС а ИоЬЬу,. вдоп'Е
Ье Ыд апб ргобеззХопа! 1.1ке дпи) Рот 3.86(486) АТ С1опез.
Тгйз Ъав Ьееп Ьгеихпд е1псе аргИ, алб 1з збагПпд Ро дег
геайу. 1'Й Ике апу ЕеебЬаск оп сМпдв реор1е Ике/йхвИке
1п тхпхх, аз ту 0$ гезетЬ1ез 1Е вотевдИаЕ (вате рЬузгса!
1ауоиР оЕ Еке РИе-зувЕет (йие Го ргасЫса!. геазопв) атопд
оЕкег РЫпдв) .
1^е сиггепЫу рогЕей ЬавИ(1.08) апб дсс(1.40), апй ЕЫпдз
зеещ Ео ж>гк. ТИ1з 1трИез ЕИаЕ I' 11. деЕ зотеркхпд ргас~
Иса! кхЕЫп а Геи топЕкз, апй 1'6 Ике Ео кпон ^Йхаб реа-
Ригез тповР реор1е иапР. Апу зиддевРхапз аге ие1соте,
ЬиР I вдоп'Р рготхзе 1'11 1тр1ётепР Ркет :-)
Ыпиз (Согуа1йэ0кгиипа. 11е1з1пк1.11)
РЭ. Уез — 1Е’в Нее о! апу тлхх сойе, апй 11 кав а ти111-
Рпгеайеб Ев. И 1з ИОТ ргоЕаЫе (изез 386 Разк вкИсМпд
екс), апЙ 1Р ргоЪаЫу пеуег и!11 зиррогЕ апуЕЫпд оЕкег
РИап АТ-Иаг<Зй1вкв, ав СЬаР'в аП I Иауё
Вот перевод этого сообщения:
Ргот: Со^Vа1с^8@к1ааVа .Не1в1пк1. Р1 (Ъ1пиз ВепесИсЬ Тогуа.Тйз)
Меиздгоирз: сотр.оз.т!п1х
5иЬЗес11! Что вам не хватает в т!п!х?
Зимпагу: небольшой опрос для новой операционной системы
Мезваде-Ш: <1991Апд25.205708.95410к1аата.Не1в1п.к1-РТ>
ОаРе: 25 Аид 91 20:57:08 СМТ
ОгдапПаЫоп: Университет Хельсинки
Привет всем пользователям т1п!х
Я разрабатываю (Бесплатную) операционную систему (это
просто хобби, ничего «огромного» и профессионального вроде
СЖ) для чипов 386(486) АТ.. Я пишу ее начиная с апреля
и похоже, что скоро она будет готова. Мне очень важно
узнать, что вам нравится/не нравится в т!п1х, потому что
моя ОС напоминает тгг.Хх (та же самая фалдовая система (из
практических соображений' и много еще чего).
На данный момент я перенес в нее ЬавИ(1.08) и дсс{1.40),
вроде бы они работают. Похоже, что через несколько месяцев
все будет готово и я хотел бы знать, какие функции вам
нужны. Принимаются любые заявки, но их Выполнение я не
гарантирую :~)
Ыпиз (СогчаХбаЭкгиипа-Ие1з1пк1. Г:1)
Р8. Система свободна от кода т!п1х и обладает много-
потоковой файловой системой- Она не переносима (поскольку
использует переключение задач 386 и др'. ) и возможно
никогда не будет поддерживать ничего, кроме АТ-
винчестеров, поскольку кроме них у меня ничего нет :*(.
Версия Ыпих 0.01 была выпущена 17 сентября 1991 года. В своей книге
Гог Гип» Линус пишет:
«И вот я решился ее выложить. Я не делал публичных объявлений, а просто
написал пятерым-десятерым хцкерам на личные адреса, что она лежит
на ВТР-сайте. В числе прочих я написал знаменитому среди фанатов
Мних Брюсу Эвансу и Ари Лемке, Я выложил исходники самой Ыпих и
еще несколько бинарников, чтобы можно было хоть что-то делать. Я
сказал, что нужно, чтобы запустить все это хозяйство. На машине
должна была стоять М1п1х (версия 386) и нужен был компилятор ССС.
Причем на самом деле нужна была моя версия ОСС, поэтому ее я тоже
выложил.
Не думаю, чтобы ту версию проверяло больше одного-двух человек. Для
этого нужно было возиться с установкой специального компилятора,
выделить пустой раздел, чтобы использовать его для загрузки, отком-
пилировать мое ядро и запустить оболочку. А кроме запуска оболочки,
делать было особенно нечего. Можно было распечатать исходники — всего
10 000 строк.
Я стал распространять свою операционку прежде всего, чтобы доказать,
что все это не пустая болтовня — я действительно что-то сделал. В
Интернете много болтают. О чем бы ни шла речь —об операционке или
о сексе — многие в киберпространстве просто вешают лапшу на уши.
Поэтому важно после того как ты растрезвонил, что пишешь опера-
ционку, иметь возможность сказать: «Вот — я ее и правда сделал. Я не
трепло —можете сами посмотреть».
При чем здесь пингвины?
Кто и когда придумал для новой операционной системы название и ло-
готип? Линус с самого начала хотел назвать свою операционную систему
ЕВЕАХ. Вот и работали бы мы сейчас на ЕКЕАХ’ах. Если не верите —
найдите в Интернете файл кегп1/МакеН1е ядра версии 0.11.
А название “Ыпих” получилось следующим образом. Ари Лемке отвел
место на ЕТР-сервере под исходные коды новой системы. Он назвал ката*
лог с новой операционной системой риЬ/О8Л,.тих. Впоследствии именно
это название за ней н закрепилось,
А логотип Ыпих придумали в 1996 году. Тогда в рассылке Нпих-кегпе!
гпаШп§ П81 прозвучала идея о выборе логотипа для 1лпих. Сами понимае-
те, желающих заняться разработкой логотипа — предостаточно, поэтому
различных вариантов было много. В процессе обсуждения логотипа Линус
сказал, что ему нравятся пингвины. В ответ на это было предложено мно-
жество пингвинов в разных позах. Был также вариант пингвина, держа-
щего на руках земной шар. На это Линус ответил: «бедный пингвин не так
силен, чтобы удержать земной шар, он, пожалуй, будет раздавлен... Так
что если вы думаете о «пингвине», вы должны представлять себе слегка
растолстевшего сидящего пингвина, хорошо поевшего а отрыгнувшего. Он
сидшп с довольной улыбкой — мир кажется прекрасным, если вы только
что съели несколько галлонов свежей рыбы...».
Логотип 1.1ПСХ — полностью соответствует пожеланию Линуса. Логотип
создал Ларри Ивинг (Ьаггу Етп§), причем он нарисовал его прямо в
1 .тих с помощью программы СЛМР (ТЬе СкА’О 1таде МагнрикНюп Рго-
§гат). Если вы хорошо знаете зоологию (или хотя бы видели пингвинов
ио телевизору), то, наверное, заметили, что у настоящих пингвинов клюв
и ласты — черные, а у нашего пингвиненка — оранжевые. Это сделано
специально, чтобы пингвин был узнаваем.
Рис. 6. Символ ипих
Путь к первой версии (1.0)
Нумерация версий Ыпих началась с 0.01, и путь к стабильной версии 1.0
занял почти три года.
Версии едраОлихдо Персии ТО Таблица !
Версия Дата выхода Особенности версии
0 01 17 09.1991 Только ядре, включающее драйвер диска и несколько драйверов устройств. Программ не было. Практически система использоваться не могла
0.03 26 10.1991 В системе уже запускалась командная оболочка и компилятор С Си» стему уже можно было использовать и писать в ней новые программы
0 10 12.1991 Система поддерживала АТ-жесткий даек. Программы 1одт но было — после загрузки ядра сразу загружалась оболочка ЬавИ,
0.0 12.1991 Уже что-то. Зга версия поддерживала РМ>, многонациональны» кля. виатуры, мониторыТАЗА, Е<ЗА. НегсШев. Самое главное, что системой начали пользоваться — ее загрузили и установили несколько человек
0.12 05.01.1992 Появилась подкачка — свопинг оперативной памяти на диск. Систему скачало несколько сотен человек. Это первая версия системы, кото- рая распространялась по лицензии ОРГ
0.96 04.1992 Нет, я не пропустил несколько версий. Просто нумерация была из- менена всвязи с приближением к стабильной версии. Данная версия позволяла запускать систему X ОТпОои — у Цпых появился графиче- ский интерфейс
0.99.14 12.1993 А вот здесь Я пропустил определенное количество подверсий версии 0.99 — их описывать престо нет смысла
1.0 16.04.1994 Первая версия! С момента выхода версии 0,01 прошло 2 год а и 7 месяцев
В апреле 1992 года Орест Збровски перенес на [дпих систему X ХУшйомл
Это был настоящий прорыв — но не из-за того, что у 1дпих появился
графический интерфейс, а потому что обмен между X-клиентом и X-
сервером осуществлялся с помощью 1'1)8 — 1.5Х1Х 1)оташ 8оскеЬ. Со-
кеты позволили использовать сеть в Хдпих. Система «повзрослела», что
вдохновило Торвальдса на изменение нумерации версий. Вот что он сам
пишет по этому поводу: «.мы с большим воодушевлением принялись раз-
рабатывать сети для Ьтих поверх этих самых Оотат 5оске1.у хотя они
вовсе не были для этого предназначены. Я был настолько уверен, что все
получится, что даже сделал скачок в нумерации версий. В марте 1992 года
я планировал выпустить версию 0.13. А вместо этого, получив графиче-
ский интерфейс пользователя, уверился, что мы на 95% достигли цели —
выпуска полноценной, надежной операционной системы, пригодной к тому
же для работы в сети. И поэтому выпустил версию 0.95.»
Разработка сетевой подсистемы — дело довольно сложное. Именно по-
этому у версии 0.99 так много подверсий. Версия 1.0 уже могла исполь-
зоваться в сети.
Они создавали Плох
Линусу помогало много энтузистов, но на первых порах особенно важен
вклад следующих добровольцев:
♦ Вернер Альмесбергер (ХУегпег А1те.чЪег§ег) — разработал драйверы
РЭЭ и загрузчик Ыпих — ЫЬО (Ыпих ЕОабег):
♦ Теодор Тео (ТЬеобоге Тй’о) -— создал файловую систему ех12 (у меня
эта файловая система использовалась до конца прошлого года!), би-
блиотеки, распределитель памяти ядра;
* Дональд Беккер (ОопаМ Вескег) — занимался разработкой сетевых
драйверов;
• Олаф Кирч (О1аЕ КзгсЬ) — написал руководство по сетевому админи-
стрированию Ыпих;
♦ Питер Мак-Дональд (РеГег МсОопа1с!) — разработал поддержку за-
гружаемых модулей в версии 0.99. Правда, в современных версиях
ядра этот механизм полностью переделан;
* Пол Гортмейкер (Раи! ОоПтакег) — разработал драйвер К.ТС (Кеа!
Тшзе С1оск), несколько сетевых драйверов (в т.ч. №>2000), написал
документы «Ыпих Е±егпе1 НО\УТО» и «Воо1-Рготр1 ПО\\'ГО'>.
Первые дистрибутивы
Если системой заинтересовались, значит, ее нужно распространять.
Сейчас Ыпих распространяется в виде так называемых дистрибутивов.
Но первые версии распространялись по-другому. Версии 1.991 года по-
мещались на двух дискетах, копии которых можно было скачать с сервера
университета в Хельсинки. Первая дискета была загрузочной — на ней
было ядро. Вторая содержала корневую файловую систему и основные
утилиты. Установка и конфигурирование первых версий системы было
очень сложным занятием. Установить систему мог только эксперт в
П№Х.
Чтобы упростить процесс установки 1! настройки системы, были созданы
так называемые дистрибутивы. Попробую объяснить «на пальцах», что
такое дистрибутив. Предположим, что у нас есть те две дискеты, содер-
жащие ядро и файловую систему. Чтобы превратить «это» в дистрибутив,
достаточно еще одной дискеты, на которой будет программа установки
системы на компьютер пользователя. Программа установки поможет не
только установить, но и настроить основные параметры системы. Со-
временные дистрибутивы кроме самой системы и программы установки
содержат еще и набор различных пользовательских программ.
Первые дистрибутивы появились в 1992 году, когда Линус выпустил ядро
Ыпих по Стандартной Общественной лицензии ОУ1' (ОРЕ). Независи-
мые разработчики (группы программистов) начали выпускать свои дис-
трибутивы Ыпих: они разрабатывали программы установки, программы
управления пакетами, прикладные программы. Ясно, что каждый дис-
трибутив выпускался под своим именем.
Первый дистрибутив, созданный в феврале 1992 года Оуэном Ле Бланк
(Оигеп Ее В1апс), назывался МСС 1п1егпп Ешнх (МапсЬехгсг Сотри11п§
СегИге — Манчестерский компьютерный центр). Любой желающий мог
загрузить этот дистрибутив с ЕТР-сервера МСС. Чуть позже сотрудники
университета Техаса разработали дистрибутив ТАМЕ.
А в октябре 1992 года появился дистрибутив БоШашйп^ Еших 8ук1ет
(8Е$), созданный Питером Мак-Дональдом (Ре!ег МсОопаШ). Важность
этого дистрибутива заключается даже не в том, что это первый дистри-
бутив, содержавший систему Х АМшФж и поддержку ТСР/1Р. 8Е5 — это
прямой предок всемирно известного дистрибутива §1аскххаге.
«Размножение дистрибутивов»
Можно сказать, что современные дистрибутивы распространяются так
же, как и первые дистрибутивы:
♦ На дискетах (только сейчас вместо дискет используются СП и
О\О);
♦ На ГТР-сайгах и досках ВВ8 (правда, сейчас из-за большого размера
на ВВ$ дистрибутивы не выкладываются).
С удешевлением СП-КОМ дистрибутивы начали распространяться на
СП. Первыми компаниями, распространявшими дистрибутивы на СП.
были: 1пГоМа§1с, Мотзе Тексоттигисабоп. ИаксепГ, Неб На1 ЗоЙмаге,
Тгапк- АтегйесЬ, \Уа1пи( Сгеек и У^бгаы! СотриПпс 1нс. Один СО — на-
много удобнее двух-трех десятков дискет (средний размер первых дис-
трибутивов был около 50 Мб). К тому же на СП можно было записать
много дополнительной информации: дополнительные программы, коды
ядра и приложений, систему X ^шбом', документацию и пр. Диск с дис-
трибутивом стоит от 20 до 40 долларов, а дистрибутив на дискетах — 20
долларов. Как видите, разница небольшая (если не считать стоимости
односкоростного СО-КОМ. который тогда стоил 100 долларов).
Первое, что вы должны помнить о версии дистрибутива — то, что версия
дистрибутива почти никогда не совпадает с версией ядра. Например,
взять версию дистрибутива Мапбгаке 10.1 — она содержит версию ядра
2.6. Точно также было и с первыми дистрибутивами; дистрибутив мог
называться XXX 2.0 ге!еаке, но содержать версию ядра 1.0, что создавало
определенную путаницу.
О дистрибутивах можно говорить очень долго. Сегодня существует три
основных дистрибутива: Кеб На!, 81аскхуаге и ЭеЫап. Все остальные дис-
трибутивы являются производными от этих трех дистрибутивов. На наших
просторах более популярны КН-совместимые дистрибутивы (Мапбгаке.
АКТ Ыпих, АЗР Ыпих), поэтому мы остановимся только на этих дистрибу-
тивах, точнее только на дистрибутиве Кеб На!, поскольку, если описывать
историю каждого (или более или менее известного) дистрибут ива, можно
написать книгу толще, чем та, которую вы держите в руках.
Компания Кеб На! была основана Марком Ивингом (Маге Г.\ь1п§) в 1994
году, а в 1995 году была куплена компанией АСС Вооккгогея, принадле-
жавшей Бобу Янгу (ВоЬ Уош1§). Дистрибутивы от Кеб На! пользовались
большой популярностью, поскольку они были достаточно надежны (их
смело можно было устанавливать даже на серверы), обладали удобной
программой установки и удобными средствами конфигурирования си-
стемы. Кед На! — это самая большая коммерческая компания, которая
занимается только ОС Ыпих.
Давайте рассмотрим этапы развития дистрибутивов Кед На! (источником
информации послужил сайт компании Кед На! — й!!р://1едога.гедИа!.
сот/аЬои!/й18!огу/).
История дистрибутивов Яед Наг Таблица 2
Дата Версии Описание
29 июля 1994 Просто бета-версия Первая бега-версия, основанная на ядро версии 1.1,18 и системе управления пакетами ЯРР (разработка Йеб Ьаг). Данная версия поставлялась на СО, на котором кроме всего прочего поставлялась полная документация к этой системе. На получила широкого распространения. Данная версия называлась «Леб На! Зойшаге Мпих*
31 октября 1994 АН1 0.9 (НаПслуееп) Первая бета-версия, получившая широкое распростране- ние. Пользователи могли выбрать два ядра — стабильное (10.91 или экспериментальное (1.1.54). В этой версии появился графический интерфейс к программе грр — ЫМ (□пик 1пс!аЙй1изп Мападег). Кроме ИМ е этой версии появи- лись графические программы настройки ОС: управления пользователями и группами, файлом Гз!аЬ и сетью
май 1995 вне 1.0 (МогНег'в Оау) Первый релиз (не бета-версия). Построена наядре 1.2.8. В документации она называлась не «Веб На: Койудие Ольх», а «йеб На! Соттегс1а! Моих*. Очевидно, изменениеназва- ние произошло после покупки компании Най На: фирмой АСС Воокзтогез. Логотип этой версии содержал «красную шляпу* — на логотипа был изображен мужчина, несущий в одной руке красную шляпу, а а другой — портфель
Август 1995 АНЬ 2.0 Ье:а Отличительная особенность этой версии — поддержка формата исполнимых файлов ЕЬР (ЕхасгНаЫе Цикаде Госта!), до этого использовался формат “а.оиГ. Система управления пакетами ВРЯ была заменена системой ПРМ, в результате чего была полностью не совместима с пред- ыдущими версиями
20 сентября 1995 КН12.0 То же самое, но не бета-версия. Дистрибутив использует систему АРМ
2 Чак. 38*
33
Продолжение табл. 2
Дата Версия Описание
23 ноябри 1996 АШ 2.1 В этой версии были исправлены некоторые ошибки пред- ыдущей,, На основе этой версии компания 01дНа1 создала диск «НейНа!2.1 С!ЫС1Х* (для х86-компьютеров), который послужил основой для создания АН для платформы А)рЪа («ЯеФНаТЦпцХ/АфЬа 2.1=)
Март 151996 АН1 3.0.3 (Р1сазко) Первая многоплатформенная версия. Поддерживались архитектуры х86 И АфИа. Для Альфы использовался формат исполнимых фай лов а.оц!, а для Х86 — ЕСЕ В этой версии п оявил ся X-серне р Ме!го-Х, утилита настройки принтера и оболочка д1ш1 для программы грт.
и юль-август 1996 ЯНС 3.0.4/3.95 (Й0ГпЬгапс1|) СистемаАРМ переписана на С (до этого она была написана на Ре г!). Появились новые средства конфигурирования, модуль РАМ (РЮддаЫе Ац(РепТ(оа!1оп Мойи!ег). Благода- ря переходу на ядро версии 2-0 появилась возможность использовать модули ядра, а до этого на дисках дис- трибутива ЯН поставлялось 72 варианта ядер, из которых пользователь должен был выбрать наиболее подходящее вго «железу*
3 октября 1996 АНС 4.0 (Со1да!е) Ядро — 2.0.18. Поддерживаются уже три архитектуры: х86. А1рЪа и ЙРАЯС. Впервые на АфЬа используется формат ЕСЕ Изменен логотип дистрибутива, который используется до сих пор —• $$$(п!го.Гг(
3 февраля 1997 АНС 4.1 (УзпйегЬШ) Исправляла ошибки предыдущей версии
19 мая 1997 ЙН14.2(ВИ1тота) Отличалась использованием стабильной, хотя и устарев- шей, версии ИЬс 5.3. Использование устаревшей версии себя оправдало: в версии 5.4 обнаружилось очень много ошибок
27 августа — 16 сентября 1997 АНС 4.8/4.8.1/4.95 (ТНипбегЬкф Использовалась библиотека д||Ьс 2.0.
7 — 16 октября 1997 АНС 49/4.9.1/4.96 (Мийапд) Исправлены ошибки, связанные с переходом на другую версию С-библиот0к (с КЬс на дНЬс)
1 Декабря 1997 АНС 5.0 (Нитсапе) Этот Дистрибутив включал программу резервного копиро- вания ЗЙС120С0 РС'“ и клиент для Аеа! Аобю ™
1 июня 1998 АНС 5.1 (Мап Напал) Особенности этого дистрибутива: графическая среда СЫОМЕ (но не устанавливалась ио умолчанию), единая утилита конфигурации — ИпихсопТ, браузер Мешсаре (до этогоиспользоаался браузер АеО Вагоп, содержавший много сшибок).
12 октября 1998 АНС 5.2 (АроИо) -
17 марта 1999 АНС5.9(31атЬрск) -
19 апреля 1999 АНС 6.0(Нед«1д) Среда ЭЬЮМЕ наконец-то интегрирована в дистрибутив. Ядро 2.2, рХЬз 2.1. Это первый мой ЯН-дистрибутив. За- помнился как отличный стабильный дистрибутив. У меня до сих лор есть компакт-диск с этим дистрибутивом.
6 сентября 1999 АНС 6.0.50 (Сотах) Новый инсталлятор системы апасопра мог работать как в текстовом, так и графическом режимах.
4 октября 1999 АНС 6.1 (СаНтап) -
27 марта 2000 АНС 6,2(2001) 150-образы этой версии были доступны на РТР-сервере Ней На!
25 сентября 2000 АНС 7.0 (Си1ппезз) В составе дистрибутива была новая версия библиотеки 91Фс 2,2 и последняя версия дос 2.96. Включение версии дес 2.96 не было согласовано с разработчиками дсс, что вызвало небольшой конфликт между ними и компанией Аей На!
Продолжение кабл. 2
Дата Версия Описание
31 января 2001 АНЬ 7.0,90 (РкФег) Первая версия, использующая ядро 2.4
16 апреля 2001 АШ 7.1 (8еачто«) Впервые появилась поддержка большого количества язы- ков (дистрибутив поддерживал даже китайский и японский языки). Вместе с МеТнсаре поставлялся браузер МогШа
2-21 августа 2001 АНЬ 7.1.93, 7.1.94 (Аок1Л>е1|) По умолчанию использовалась новая версия файловой системы — еяЗ вместо ех(2. А вместо ИЮ начал исполь- зоваться загрузчик САМ В. Хотя при установке можно было выбрать МЮ. если САКВ пользователю не нравился
22 октября 2001 АНЕ7.2(ЕШдта) Довольно неплохая версия, она «прожила» на моем компью- тере до версии 7.3. Правда, в ней были некоторые ошибки, которые были исправлены в версии 7.3. Особенности: 6МОМЕ 1.4. КОЕ 2,2, Послужила основой для дистрибутива Аеб На1 ЕшегрНве Опих 2.1 АЗ (АбУапсеб Зегувг).
22 марта 2002 ЯНк 7.2.91 (8кф)аск) -
6 май 2002 ЯШ 7.3 (УаИъаИа) Выход версии 7.3 не планировался — сразу должна была выйти версия 8.0. Поэтому версию 7.3 нужно рассматри- вать как «переходную» версию. В версии 8.0 должны быть дссЗ. СТК+ 2, Ру1Ноп 2 и другие новые версии инструмен- тальных средств. Но они «опаздывали» к запланированному сроку выпуска версии 8.0, поэтому было решено выпуск версии 8.0 немного отложить, а вместо нее выпустить версию 7.3 без всех этих нововведений. Но в версии 7.3 все же были исправлены некоторые ошибки версии 7.2. Я лично работал <; этим дистрибутивом, и ок мне понравился даже больше, чем 8.0. Это последний дистрибутив, содержавший браузер Нетзсаре
6 мая 2002 ЯНЕ12.1 АЗ (Репвасо1а) Яеб На: ЕптегрШе Ипих 2.1 А5 — дистрибутив, предназначенный для корпоративного применения. Его основа — дистрибутив АН 7.2
30 сентября 2002 ЯШ 8.0 (РзусИе) В этой версии были дес 3.2. дНЬс 2.3. 6МОМЕ 2, КОЕ 3.0.3 и Орел Об: се. огд 1.0.1
31 марта 2003 ЯН1_9(5Мке) Основан на ядре 2.4.20 с поддержкой МРТ1- (Набте РОЕ1Х ТНгеаб ИЬгагу). Послужил основой для Яеб На: ЕтегрНье Плох 3
21 июля 2003 АШ 9.0.93 (5еуегп) Это последняя версия «Красней Шапочки» — после этого дистрибутивы стали называться Ребога Соге (для настоль- ных систем) и АНЕ1 (для корпоративного применения). Ребога Соте — это открытый (читайте — бесплатный) про- ект, а АНЕЬ — коммерческий проект от НН
26 сентября 2003 РС 0.94 (Зечет) Пробная версия Работа Соге
13 октября 2003 РС 0.95 (Замет) Первый дистрибутив от ЯН, использующий репозиторий ушп для обновления системы
22 октября 2003 ЯНЕ13(Тагсюп) Неб На: Ептегрпяе Ыпах 3 поддерживал одновременно 7 архитектур: |п№) Х86, 1п:е1 иапШт, АМО АМ064, |8М гЗепез, 1ВМ |5епез, !ВМ рЗебез и 1ВМ 5/390. Основан на ядре 2.4.21
5 ноября 2003 РС 1 (Уаггои) Первый релиз Ребога Соге, используется пока что ядро 2.4 — в последний раз
12 февраля; 29 марта; 27 апреля 2004 РС 1.90, 1.91, 1.92 Первые версии, использующее ядро 2.6, Поддерживаются архитектуры к86 и х86-64
5 марта 2004 КС 1 (Уагтои/) Ребога Соге 1 для х86-64
Продолжение тзбл. 2
Дата Версия Описание
1Я мяо 2004 РОЗ рмйшвд) Второй релиз РесЮгя Сото; КЙЕ3.2, <2ЧОМЕ 2.6
в ноября 2004 ГС 3 (НеШеЙтегд) Третий релиз Рвйога Сото. ОН ОМЕ 2.8 и КОЕ 3.3 Довольно «глючное» создание, до недавнего времени обитавшем на моем компьютере
13 июня 2005 РС4($1етг) ЧегаерШЙ релиз Рейога Соте. ОЫОМЕ 2ЛО и КОЕ 3,4. До- вольно много нововведений
Дистрибутив К.с<1 На1 Ыпих имеет множество потомков — производных
дистрибутивов, которые основанынаЯН и практически полностью с ним
совместимы. Самыми изпестнымиЙОтомкамп КН являются:
♦ Ыпих Мапйтаке (версия МЕК 5,1 была основана на К.Н 5.1) — а на
МОК основан АЕГ Ыпих;
• В1аск Са1 (Версия ВС 5.2 основана на К.Н 5.2) — впоследствии ВС
перерос в А8Р Ыпих.
Выбордистрибутива
Итак, дистрибутив — это ядро + системные утилиты + заранее под-
готовленный пакет программного обеспечения, снабженный удобной
программой-инсталлятором.
Строго говоря, название Ыпих принадлежит только ядру. Другие ком-
поненты ОС Ыпих и прикладные программы для нее разрабатываются
не какой-то одной компанией, а независимыми группами программи-
стов, работающих на условиях Стандартной Общественной Лицензии
(Сюнега! РиЬНс Ысепзе; ее русский перевод можно прочитать по адресу
ИЬтр: / /гиз-Ипцх. пес./МуЕПР/МвЬог! / др! /др!гиз .ИЬтаХ). Эта
лицензия обязывает ее держателя Шйщатно предоставлять исходный код
распространяемого им программного обеспечения, так что теоретически
каждый может легально скачать сПубличного сервера тексты программ,
скомпилировать и собрать их на своем компьютере и получить готовую
к установке операционную систему.
Если вы решитесь собрать Ыпих с нуля, то прочитать руководство можно
по адресу «мм. Ы.тгхЫ’отвсгаксй.огд (русский перевод: тнИзИДп-
их.еакЬ. сот). Если нет — то покупайте дистрибутив. Необходимость
платить деньги вовсе не противоречит некоммерческой идеологии Ыпих:
поставщик дистрибутива продает не код, а только услуги по его записи
на носитель, доставке, установке, технической поддержке и т.п.
На сегодня существуют и поддерживаются разработчиками сотни раз-
ных дистрибутивов, различающихся по области применения, версии
ядра, составу включенных в них прикладных программ, требованиям
к аппаратному обеспечению и другим признакам. Классификации
этого многообразия посвящены статьи В.Костромина и А.Федорчука
в Библиотеке ЛинуксЦентра по адресу тт . I гг.ихсепгег . ги/11Ь/
а г г 1с1ее/б1зрг 1Ь.
Можно с уверенностью утверждать, что каждый начинающий пользо-
ватель Стих столкнется или уже столкнулся с проблемой выбора среди
такого изобилия. Какой дистрибутив лучше? Чем отличается Кеб Нас от
Мапбгаке? Некоторых начинающих пользователей этой замечательной
ОС вводят в заблуждение имена дистрибутивов, например, ЫпихХР.
Вот они его и покупают, а потом полностью разочаровываются в Стих.
Не скажу, что ЫгшхХР очень плохой дистрибутив, но у начинающего
пользователя будет меньше проблем с полной, а не облегченной, версией
какого-нибудь «серьезного» дистрибутива, например, 1.1 них Мапбгаке
или Ребога Соге.
Сейчас я попытаюсь помочь читателю выбрать дистрибутив, с которого
можно начать свое знакомство с Стих.
Прежде всего нужно определиться, для чего вам нужен Стих. Хотите ли
вы глубоко изучать эту операционную систему? Или, быстро освоив ее,
заменить ею ЛУтботе в своем офисе, чтобы избежать визитов «борцов с
компьютерным пиратством»? Или, может быть, вам нужно настроить сервер
Д|’!я выхода вашей локальной сети в Интернет? Многие компании выпускают
дистрибутивы, адаптированные под любое из указанных применений.
Следующий вопрос — совместимость с имеющимся у вас оборудованием:
установится ли выбранный дистрибутив на ваш компьютер? А если уста-
новится, то не откажется ли работать, например, с модемом? Не секрет,
что долгое время разрыв по количеству поддерживаемых устройств между
УЛпбои'з и Глпих был попросту вопиющим. Сегодня ситуация значительно
выровнялась. Нынешние дистрибутивы неплохо распознают современное
оборудование — процессоры, чипсеты, ЮЕ-, 8С81- и С 8 В-устройства.
Практически наверняка не возникнет проблем даже с ГУ-тюнерами и
приводами СО-ЯЛУ.
Правда, почти у всех дистрибутивов не сложились отношения с ЛУтбо-
и дмодемами. Ситуация обусловлена тем, что производители не спешат
предоставить информацию по своим продуктам для создания Ыпих-
драйверов. Первая попытка поддержки УЛпбом^-модема была сделана
компанией АЕТ Стих, на сайте которой есть пакет ЬкГ, обеспечивающий
работу устройств на чипе Соппехапг. В Интернете можно также поискать
драйверы для других модемов, скажем, Мо1ого1а.
Примерно то же самое относится и к СЭ1-принтерам. Их производители
неохотно поддерживают 1лпих, во многих случаях приходится надеяться
исключительно на энтузиастов. Относительно благополучно дела обстоят
разве что с оборудованием компании Окт
В целом же ситуацию с аппаратным обеспечением можно подытожить
таким образом: со «средним» оборудованием, не слишком старым и не са-
мым новым, существенных проблем возникнуть не должно. Для новейших,
дорогих и «навороченных» устройств могут поддерживаться лишь их ба-
зовые функции, то есть деньги, заплаченные вами за усовершенствования,
окажутся потрачены впустую. Поэтому стоит предварительно изучить
список совместимых устройств и базовую комплектацию (как минимум
версию ядра и графической системы ХГгее86) каждого конкретного дис-
трибутива. Обычно эту информацию легко найти на сайте разработчика:
например, для Кеб На( это Ьагйиаге . гейИаС .сот/Ис1.
Что касается минимальных системных требований, то малыми ресурсами
могут обойтись лишь дистрибутивы, предназначенные к установке на
компьютеры, обслуживающие сеть (шлюзы, интернет-серверы), кото-
рые в графическом режиме работать не должны. Для дистрибутивов же,
ориентированных на домашнее или офисное применение, официальные
данные (как и в случае с У/тбогуз) занижаются беззастенчиво. Да, на ма-
шине с РепНшп 133 и 32 МВ ЯАМ можно запустить 1лпих, но не работать.
Репбит 200 ММХ и 64 МВ больше похожи на правду, но если вы планиру-
ете использовать оконную среду КОЕ. 3, то и 128 МВ памяти не окажутся
лишними. В противном случае применяйте менее ресурсоемкую среду
ОМОМЕ. Дополнительно нужно учитывать потребности прикладных
программ, которые сами по себе могут быть весьма немаленькими.
Одно из правил, которое следует всегда помнить: ОС Глпих гораздо более
требовательна к объему оперативной памяти, чем к частоте процессора:
РепПит 111 600 МГц/32 Мб будет работать гораздо медленнее, чем Се1ёгоп
400 МГц/64 Мб.
Следует позаботиться и о видеосистеме — она должна обеспечивать
(как минимум) комфортную работу с разрешением 1024x768. Дело в том,
многие Ъш их-приложения проектировались исключительно для данного
режима, поэтому при использовании 800x600 могут возникнуть затрудне-
ния (часть окна просто не будет видна).
Потребности в дисковом пространстве вполне стандартны по нынешним
временам. Минимальная конфигурация требует 300—500 Мбайт, однако
новичкам рекомендуется сразу устанавливать определенный набор при-
кладных программ, для которого требуется около 1,5 Гбайт. К тому же
нужно оставить место для документов и рабочих файлов, так что в каче-
стве отправной точки вполне подойдут два гигабайта.
Я перечислю несколько дистрибутивов, которые купить можно, но сна-
чала скажу о тех, которые покупать категорически не советую. Не нужно
покупать экзотические дистрибутивы вроде ЫгшхХР и Ындотех (он же
Ып8рйе). Правда, последний дистрибутив — редкость в интернет-ма-
газине, но если вы его все-таки найдете, то не вздумайте покупать. Не
верите мне? Тогда купите его. Вы поймете, что даром потратили свои
деньги и время.
В некоторых интернет-магазинах дистрибутивы Ыпих ставятся в один ряд
с дистрибутивами ГгееВЗЭ. Так вот, ГгееВ8О покупать не стоит — во
всяком случае, если вы не хотите купить еще одну книгу, но только по
ГтееВЗЭ- Да, ГгееВ8В является дальним родственником Ыпих, но начи-
нающему Ыпих-пользователю лучше с ГгееВЗЭ не связываться.
Вы смело можете покупать Стих Мапбпха (в прошлом — [.тих Мапбгаке)
и Ребога Соте 4 (в прошлом — Ыпих Кеб На!), а также дистрибутивы,
так или иначе основанные на них — это АЪТ Ыпих 2.4, АЗР Ыпих 10.
Также смело можете купить не очень новую, но проверенную версию
Ыпих Мапбгаке 10 — очень хороший дистрибутив.
Вы можете купить дистрибутив Кпорргх, но не как основной дистрибутив,
а как вспомогательный, который вы сможете использовать как средство
восстановления системы, когда в очередной раз вы переустановите \Уш-
или же после неудачного эксперимента с загрузчиком Ыпих пере-
станет загружаться. Особенность Кпорр1х в том, что он может загружаться
и нормально работать с компакт-диска.
Дистрибутивы ПеЫап и 81аск^аге Ыпих — очень хорошие, стабильные
и проверенные временем, но вам их лучше не покупать, поскольку они
основаны на В8Э-системе инициализации, которая ближе к миру В8Э и
в этой книге подробно не рассматривается. Конечно, если вы можете себе
позволить еще одну книгу — по 81аску/аге — то можете его купить. Но
все-таки 81аск\уаге несколько сложнее в освоении, поэтому я рекомендую
попробовать этот дистрибутив после того, как вы научитесь работать с
Мапбгаке или Гебога Соте. То же самое относится и к 8и8е — немецкому
дистрибутиву со своими, немецкими, особенностями. Лично мне больше
нравятся французский дистрибутив Мапбгаке.
Дистрибутив ОегПоо, о котором много говорили определенное время
назад, хорош тем, что позволяет настроить систему «под себя» в прямом
смысле этого слова. Все устанавливаемые программы компилируются на
вашем компьютере, а не устанавливаются из КРМ-пакетов, содержащих
уже откомпилированные на чужой машине двоичные файлы. Это главное
достоинство этого дистрибутива, но оно же является и его главным недо-
статком — ОеШоо начинающим пользователям противопоказан.
Покупать остальные дистрибутивы нужно только в том случае, когда
вы точно знаете, что это за дистрибутив и зачем он вам нужен.
Теперь давайте рассмотрим дистрибутивы 1лпих Мапбгаке. Гебога Соге
3 и 8!асклуаге 1.ших поближе. Первые два рассматриваются, чтобы у вас
была возможность сравнить, а 31 зеки/аге — чтобы вы поняли, почему его
вам не нужно покупать (во всяком случае — пока).
Смотреть на дистрибутивы я буду глазами начинающего пользователя,
поэтому не удивляйтесь, что я не буду приводить рекомендации по ис-
правлению той или иной ошибки — начинающий пользователь не знает,
как ее исправить. Во время установки и работы с системой буду про-
водить небольшие тесты: а именно, сколько времени занимает процесс
установки, сколько — загрузка системы, копирование файла и т.д. Время
буду измерять не какой-нибудь программой, а обычным секундомером,
встроенным в мобильник — это же домашние условия. Все дистрибутивы
тестировались на следующей рабочей лошадке: Пигоп 1,6 (И1/ 256МВ
НЭП 40 СВ 7200 грш МахЮг/128 МВ СеРогсеРХ.
Итак, начнем наш обзор. И начнем его с классики, то есть с дистрибутива
Еебога Соге.
Гебога Соге 3
Установка
Дистрибутив Еебога Соге 3 поставляется на четырех компакт-дисках, но
программа установки, если не отмечать какие-нибудь дополнительные па-
кеты, а оставить все как есть, требует только первые три компакт-диска.
Как обычно, загружаюсь с компакт диска, нажимаю ЕпГег для начала
установки и одновременно (практически одновременно, сотые учитывать
не буду) запускаю секундомер.
Программа установки спросила .меня, хочу ли я протестировать устано-
вочные диски. Как начинающий и ничего не понимающий в установке
Ешшх пользователь, я согласился. Да мне и не хотелось «убивать» нор-
мально работающий и уже установленный Етих Мапбгаке в случае, если
что-то с компакта не скопируется, ведь РСЗ должен быть установлен на
его место.
Во время установки я не отхожу от компьютера, чтобы оперативно от-
вечать на запросы программы-инсталлятора. Проверка первого диска
не заняла много времени, а от проверки остальных дисков я отказался,
нажав кнопку Сотйтие.
Программа установки очень удобна и проста — даже у начинающего
пользователя не будет с ней проблем. Выбираю Выборочную установку
и ручное разбиение дисков. Даже если вы — начинающий пользователь,
я настоятельно рекомендую сделать то же. Ведь если выбрать другой тип
установки, ваш винчестер будет переразбит. что приведет к потере всех
ваших данных и установленной вместе с ними. Здесь у меня будет
небольшая погрешность в измерениях — ведь у меня уже есть созданные
1л пих-разделы, я только изменил тип файловой системы с ех!2 на ехГЗ и
выбрал форматирование этих разделов. Если у вас никогда еще не был
установлен Ыпих, вам понадобится дополнительное время на создание
разделов и изменения границ уже имеющихся разделов.
Параметры загрузки — по умолчанию, чтобы не тратить дополнительное
время на их установку.
Следующий шаг — выбор программного обеспечения. Ведь я — начинаю-
щий пользователь, поэтому не знаю, что и для чего используется. Просто
оставляю все как есть. Как пользователь понимающий, нужно заметить,
что ЕСЗпо умолчанию использует среду (ЖОМЕ, а КОЕ вообще даже
не предлагается устанавливать.
Появляется окно «Запуск процесса установки ...» и я перезапускаю
секундомер. До этого весь подготовительный этап занял 7 минут и 31
секунду (7:31).
Оекк<ор$
Раскаде Сгоир
; 5е1есбоп
5е I ес! !Ьераскаде (аррЙсаЬоп)
; дгоирз (Ьмуои иап( со тзиЯ. То
; зека а раскаде дюир. сНскоп
(Ье сКеск ЬохЬевМеЛ
Опсе а раскаде дюирйазЬееп
зе|ес!ей. сйск оп 0е!аЙ5и> у)ел
»ЫсЬ раскадез асе !пз!ай₽й Ьу
' йеЬик апд и а<й от гетоте
; арнопа! раскадев кот !ка(
: дгоцр.
Й1ХЛУ1ПАЖ5У51™ |жт«В Ййи&
«ЙЙ !пма111И.5 дтир <Х риАадез ю 1ва йи базе дгарЫса) (X;
<вг ишТтеИке,
СМОМЕ ОеаМер Елз(тпт«« ИДОЧ ВйЙЙ.
* СМОМЕ еч д рдоеОД «рарКка! из** «МсЪ
Г бпдкий» а рапе), додклод |сог>1г апй & дгарЫсд!
Ше тагвдеЕ
О КОЕ (К Оса&ор Еп^|готт«я1)
□ ХРСЕ
КЗЕ & а рсмегТык деде |т^и&5
& р-атек $у$№т «04 а дгарНка# №е
тагане?.
1<иея
МА ЙдЬ№ед1а йезктор еолгапптегй гЬаг >оЛз иеЙ оп
«гк9 тас^нез.
АррбсаСюп»
т1
л ЙотеЬтев сай4 «х! Йюте аге рпэдгат» гЬя*
айол уои Ч о ауи4 ГЙ5- ТЬеы? |осщ^ Е тас
ая^ V).
Т<х^ 5)ге:2 Д71М
I . .. В&^е.Ыа1вЁ|
) <1 Ввек ]
Рис. 7. Установка Голота Соге 3
Началось копирование пакетов на мой жесткий диск. Таймер программы-
инсталлятора при копировании бессовестно врал* показывал 15 минут до
вставки второго диска, а после этого момента стал показывать 10 минут,
хотя прошло больше чем 5 минут. Четвертый диск в моем случае (все
пакеты — по умолчанию) не понадобился. Установка (до появления окна
перезагрузки компьютера) заняла 15 минут и 38 секунд (15:38).
После первой перезагрузки система попросила указать некоторые пара-
метры (дату/время, параметры дисплея), добавить новых пользователей,
настроить звуковую плату и т.д. Сразу скажу, моя встроенная звуковая
плата отказалась работать. Плата была опознана, но звука при воспро-
изведении семпла я так и не услышал. Пока оставил все как есть.
Вторая перезагрузка
Сразу перезагружаю систему. Запускаю секундомер (с момента начала
загрузки ядра). Запуск системы (до окна ввода имени пользователя и па-
роля) занял на моей машинке всего 1 минуты и 8 секунд. Запуск СЖОМЕ
занял еще 7 секунд.
Начинаю работать с системой. Обновленный СгЫОМЕ (версия 2.8,0)
мне очень понравился. Первым делом я попытался выяснить, что же
все-таки случилось с моей звуковой платой. Поскольку я начинающий
пользователь, на ум мне не пришло ничего другого, кроме проверки
уровня громкости. Ада! Так все же устройства выключены, вот поэтому
я и не слышал звук! Включаю, устанавливаю максимальную громкость.
Запускаю проигрыватель компакт-дисков и вставляю ЕхГга СО. СЖОМЕ
предложил мне или открыть диск (чтобы просмотреть дорожку данных)
или же воспроизвести (аудио-дорожки). Мелочь, а приятно. Выбираю
воспроизведение. Все равно звука нет. В общем, звукбвую карточку я
пока оставил в покое. Пока посмотрю, что же нового в системе.
Во время исследования файловой системы, я обнаружил, что файловые
системы 1Ушс!о№ (а у меня 4 \Унк1бш-раздела), не подмонтированы. Под-
монтировать вручную особого труда не составляет, но что, если человек
впервые видит Глпих, и еле справился с установкой ОС, он ведь не знает,
что есть команда пюнпс! Но это уже другой вопрос — как говорится,
ЯТЕМ перед установкой.
Посмотрим, сколько места осталось после установки системы. Это можно
выяснить программой ей". Я устанавливал систему на раздел /беу/Ьба5, а
раздел /беуфбаб использовал для каталога фоте. Сама система (феуфбаЗ)
заняла 2446188 блоков по 1 Кб, то есть 2 388 Мб. На разделе /йетфбаб
место практически не использовалось, поскольку при установке я не
создавал пользователей.
Введение
Программное обеспечение
По умолчанию устанавливается не все программное обеспечение, а только
самое необходимое. Очень понравился удобный просмотрит изображе-
ний РЬоТО Тоо1 (рис. 8).
Также понравился обновленный СЛМР 2.0,5, хотя с ним делал только
скриншоты, его интерфейс стал более красивым и удобным (рис. 9),
Хочу просмотреть видео. Пусть и без звука. Запускаю НеНх Р1ауег —
именно этот проигрыватель используется в РСЗ для просмотра видео.
Открываю файл, который без проблем воспроизводился в МОК, и вижу
картину “ТЬе р!ауег боек по1 Нахе 1Ье сараЫНйея (о р!ау Ьаск Низ сопГепГ
Больше комментариев нет.
Далее все как обычно — Ореп ОГПсе. Рндес! Р1аппег, Диаграммы О1А.
утилиты настройки системы. Стоп! Кажется, в группе Интернет есть что-
то новенькое — ГчгеГох У/еЬ Вготаег. Запускаю. Как следует из названия,
данный браузер основан на МогШа. Только почему-то на английском.
Рис. 8. РЬо(о Тоо1
Файл Ржи, Слраякй
Ц|# X 1 Ж:
П / Р Л '
шв а йт
Ф ц $ / & /
у & а а <
Лрмкзугдаьим »«дам« 3 Й5
₽^ЕЕЩ..................
С Ржтуянмитнера*
о Двгос1Жр®це蹫нйдвлен
: О Обтдййинзть по о
•ШйрмниЛ-
ГВыг.слтг.? 1 =7( рк
Исследовав опции, я так и не нашел выбора языка интерфейса, скорее
всего, для его русификации нужно доустановить какой-то пакет.
Тесты
Переходим к самому интересному ™- тестам. Тесты будут следующими:
тест чтения блока данных с помощью Ьбрагш, тест на время копирова-
ния большого файла с раздела ЕАТ32 в раздел ехгЗ и копирование этого
же файла из одного раздела ехВ в другой раздел ех13. Хотел запустить
привычный мне МИш§Ь( Сопнпап^ег, но его я не нашел и попытался
установить с помощью утилиты «Управление пакетами». Данная утилита
мне не понравилась. Она отлично подходит для начинающего пользова-
теля, который и сам не знает, что он хочет установить. Мне же лучше
было ввести имя пакета и хстановить его. К сожалению, в этой программе
данной возможности не было.
Тратить время на установку МС я не стал, а решил воспользоваться
Браузером файлов. Может это й правильнее, ведь начинающий пользо-
ватель будет использовать именно его, а не какой-то МС, который даже
не устанавливается по умолчанию.
Устаноака/удаление пакетов
Оконные ивнаджеры
Системах
Уйтанс#ит« згу Г0ДОУ
графический
Графическая сред* СЫОМЕ
ЗДОМЁ -зто мощней графический интерфейс
лД* пользователя, который акяючзот п&нэль„ рабочий
* стсиц.системна* пиктсвграм*^ и графический
менеджер файлов.
□ Гр*Ф«Н*С*« среда КОС
КПЕ - это щиянъМ графический интерфейс,
включающий в рвиел* приложений, рабочий
.СТОЛ, снстймией* зндчкй к графический менеджер-
..............................................,,.......... .
ОДжд;ЙЗДм-^Т№О0*№ 2,405 Мегабайт
Рис. ТО. Управление пакетами
! йрави» Йад Пфчгод Э^вадм! Одом* *.
!Й -И ' % > „ А О ... .$ -.Ц: О
Вадо Пврвэдгдоять'* Начета Кся^ыдеер
1М|м&|^« I ^1всж,®Ь
Сведения* '*
Вздй?ар
дгыс оойа41 .<!$
ГООГ
<акй*, Я 4ДММНГМ
даю идеи
5СГ№Лд,рпд
дедегХртЗ
«яжМрпд
йш^ШсзлуЫцд
1 э/нн«^ея^^ 1;:0 ГБ
Рис. 11. Браузер файлов
У нас есть уже все необходимые программы для проведения тестов.
Начнем по порядку — с Ьёрапп. Запускаю Терминал (находится в меню
Приложения-^ Система). Результат чтения блока размером в 174 Мб за
3,02 сек довольно неплохой — это около 57,68 Мб/с.
Теперь буду копировать файл размером ровно 700 Мб. Это фильм, кото-
рый мне так и не удалось просмотреть. Получил такие результаты:
• Копирование с раздела РАТ32 (/беу/йбаЮ) на раздел е.мЗ (/деу/Ьдаб):
2 мин 32 сек.
* Копирование с раздела ех13 (/Йеу/Нбаб) на раздел ех(3 (/Яеу/Маб);
1 мин 04 сек.
Как видите, с «родными» разделами РСЗ работает в два раза быстрее.
Файловая система ех13 использовалась только потому, что при нормаль-
ной установке она предлагается по умолчанию — ее и выберет начинаю-
щий пользователь. Он же и не подозревает о наличии других файловых
систем.
Все, обзор РСЗ на этом заканчивается, и я решил выключить компьютер.
При выключении вижу картину из серии «Не ждали»:
Роме г йомп
аср1_рсмёт„с^1' саИей
И все. Так машинка простояла минут пять, пока я вручную не выключил
питание. Лично я вспомнил времена Х\Чпс1о'л,х 95: «А теперь питание
компьютера можно отключить... вручную».
Диагноз
Лично я так и не понял, для кого этот разрабатывался этот дистрибутив:
для начинающих или для продвинутых пользователей. Если для начи-
нающих, о чем свидетельствует дружественный интерфейс СгМОМЕ, то
почему так много недоработок, с вторыми начинающий справиться не
в состоянии: неработающая звуковая плата (у меня довольно распро-
страненная модель, поэтому такая неисправность будет наблюдаться не
только у меня), ошибки при воспроизведении видео (очень актуальная
задача для домашнего компьютера), не подключены файловые системы,
а вдобавок ошибка при выключении питания? И это при том, что я по-
работал с системой какой-то час. Поработай я больше, даже не могу пред-
положить, сколько недоработок я бы нашел в ней. Если же дистрибутив
разрабатывался для продвинутых пользователей, почему нет привычных
им программ (того же МС)? В любом случае я бы не рекомендовал этот
дистрибутив начинающим пользователям. Сначала нужно поучиться на
более легком дистрибутиве, у которого с самого начала все работает, а
затем переходиться на Ребога Соте 3, если, конечно, захочется.
Ребога Соге 4, к сожалению, попробовать не получилось, привожу только
версии программного обеспечения, входящего в этот дистрибутив.
Преимущества Недостатки
Дружественный интерфейс СЧОМЕ 2.8.0 Проблемы с определением звуковой карты
Хороший выбор программного обеспечений Нехватвет видес-кодеков
Удобная программа установки Проблемы с выключением питания
Новые версии (ЗИ ОМЕ и КОЕ По умолчанию не устанавливаются некоторые привычные программы
По умолчанию не подмонтируются файловые системы Ийпйодав
Требует самостоятельно^ данастройки после установки
Программное обеспечение
Ре йога Соге 3 Ядро версия 2.6.9 ОМОМЕ 2.8.0 КОЕ 3.3.0 Ореп ОД1Се 1.1.2 С1МР 2.0.5 Загрузчик сана Рейога Соте 4 (") Ядро версия 2.6.11 ОИОМЕ 2.8.3 КОЕ 3.4.0 Ореп ОГЛсе 1.9.104 С1МР 2.2.7 Загрузчик ОЯиВ
51аскшаге
Вторым дистрибутивом я решил выбрать Маску/аге. Просто хотелось на
него посмотреть: ведь до этого я видел его в работе только несколько раз.
Л тут еще и последняя на данный момент версия — 10.1. Дистрибутив
поставляется на двух дисках.
Установка
Как обычно, загружаюсь с первого компакт-диска. Вижу экран привет-
ствия:
ИеХсоте Со ЗХаскиате уегезоп 10.1 (Ыпих кетпе! 2.4.29)
Что? Неужели последний дистрибутив от 8!аскутаге основан на старом
ядре? Возможно, разработчики посчитали, что новое им не нужно.
Так и есть; в состав 8!аскхсаге и ОеЫап включаются только старые добрые
версии программного обеспечения, в том числе и ядра. Так разработчики
пытаются создать стабильный дистрибутив, чтобы в нем не было различ-
ного рода недоработок.
Знакомая загрузка ядра предыдущей версии. Программа установки пред-
ложила выбрать раскладку клавиатуры, отличную от (38:
ЕпСег 1 Со зе1есь а кеуЬоагй тар
Неужели установка системы будет в текстовом режиме? Да еще и без
меню. Ага, нет, меню все-таки появилось, но текстовое. Меню выбора
раскладки клавиатуры содержит список файлов (!) раскладок безо всякого
описания. Догадайся, мол, сам. Выбираю ц^ег(у/ги.тар и нажимаю ЕпХег.
Честно говоря, текстовая программа установки выглядит как-то архаично.
Такое впечатление, что устанавливается одна из первых версий Кеб На(.
Уже в 6,0 версии Веб На1 программа установки была намного удобнее,
хотя она тоже работала в текстовом режиме. Затем система предложила
ввести пароль Пользователя гооН На данный момент пароля нет, поэтому
можно просто нажать Еп(ег. что я и сделал. Система сообщила, что для
изменения таблицы разделов можно ввести команду Гсйяк. Мне повезло —
(л пих-разделы у меня уже есть, а начинающему пользователю лучше
вообще отложить эту затею и попросить кого-нибудь более знающего
переразбить жесткий диск за него. Только на использование текстовой
версии й&к может уйти минут пять — это при условии, если знаешь,
что делаешь. К тому же (Фйк не умеет изменять размеры разделов без
уничтожения всей информации. Поэтому лучше использовать для этой
цели какую-нибудь другую программу, например, тот же РагППоп Мат-
тля У/шбо\У5. Да, есть в 81асктлаге более удобная программа — сСсйзк, ио
в программе установке о ней ни слова...
Для начала установки нужно ВВёйтагкоманду зешр. Ввожу. Появляется
меню программы установки. я уже выбрал, поэтому выбираю
второй пункт АШХАУАР. Он позволяет установить раздел подкачки
для вашей системы. У меня уже йрздан, поэтому программа запросила
разрешения только активизировать этот раздел. После этого появилось
текстовое окошко ЕОЯМАТ, в котором нужно выбрать, какие Ыпих-раз-
делы нужно форматировать, а также файловую систему. По умолчанию
предлагается Ке^ег Е8, но для равенства условий я решил выбрать ех13,
чтобы результаты файлового тестирования были более объективными.
Программа установки работает только на английском языке, поэтому если
не знаете его, лучше вам попытаться установить другой дистрибутив.
Затем программа спросила, хочу ли я добавить найденные У^пбоуге-раз-
делы в /е(с/ййаЬ. Соглашаюсь и добавляю 2 из четырех раздело» — для
экономии времени. После этого нужно выбрать источник установки, вы-
бираю 81аскцдге СП от 1Э\ О. а также опцию ашо для автоматического
определения диска.
Какие пакеты устанавливать? Выбираю ГиП, то есть установку всех паке-
тов, чтобы не терять время на их выбор. До этого весь подготовительный
процесс занял 6 минут и 6 секунд. У вас, скорее всего, этот показатель
будет другим. А если у вас еще нет Цпих-разделов, то можно смело
умножить это время на 2.
Время копирования пакетов с двух компактов заняло 13 минут и 10
секунд. После копирования пакетов программа установки настраивает
шрифты, документацию и выполняет другие действия. На все про все
ушло 53 секунды.
Вот мы и добрались до самого интересного. Программа установки не
знает, откуда брать ядро. Она предлагает несколько вариантов: Ъоо1ййк,
81асктгаге СО и др. Причем первый — по умолчанию. Я его и выбрал,
просто механически так получилось. Программа попросила вставить за-
грузочную дискету в дисковод У меня не только нет этой дискеты,
но и самого дисковода. Отказаться никак. Пришлось, не долго думая,
нажать ЯезеГ и повторить весь процесс заново. Правильный вариант —
81аскм'аге СО. Затем — список ядер. Какое устанавливать? Я выбрал
ядро, которое использовалось при установке:
/ с<3.гогп/к.егпе1/Ьате. 1/Ьг1таде
Следующий этап — просто анекдотический. Программа хочет создать
загрузочный диск, который она запрашивала на предыдущем этапе. Во
как. Я отказался от этой возможности. После этого я также отказался от
использования НОТРГД'Сл-устройсгв, Для экономии времени.
Настройку загрузчика Ш.О я производил вручную. Не полагаясь на
интеллектуальные возможности программы, я выбрал ехрег! и ввел все
параметры вручную. [..П О установил » М ВК. Затем добавил две записи:
Ьтих (/Йеу/Ыа5) и Жп (/беч/Ма1). Обычно эти параметры указывают-
ся автоматически — но это в нормальных программах установки... Для
инсталляции НЕС) выбрал команду меню 1ик1а11 Е1ЕС).
После этого мудай указать различные параметры системы — тип мыши,
параметры сети (я их не устанавливал), выбор запускаемых сервисов
(оставил кая есть). Потом программа спросила, хочу ли я добавить свои
собственные консольные шрифты. А откуда ж они у меня? Ясно, что я
отказался от этого. Затем — параметры времени (1ГГС или не СТС, вы-
бор региона, я выбрал ЕшореКкч).
После установки времени нужно выбрать оконный менеджер по умолча-
нию. Программа предложила КОЕ, я согласился.
Последний этап — ввод пароля гоо1, Все. Перезагружаться сами не за-
хотели — мол. уже не маленькие, знаете, как Сч1 + АН + 1)е1 нажимать.
Нажимаю заветную комбинацию, и система перезагружается. С момента
выбора ядра до перезагрузки прошло 4 минуты и 51 секунда.
Загружаюсь. Система встретила меня голой консолью. Ввожу имя пользо-
вателя гоо( и свой пароль. Все. Для запуска X ХУшбохх (ну и КОЕ) нужно
ввести МагГх. Некоторые пользователи Плох, даже которые уже исполь-
зовали эту ОС, и не подозревают о существовании такой команды.
Вторая перезагрузка
Я перезагружаю систему, чтобы вычислить время второй загрузки. Оно
составило 22 секунды до появления приглашения ввести имя пользова-
теля и пароль и еще 22 секунды на запуск ХХУшбо-л- и КИЕ. Итого 44
секунды. После установки на разделе размером 3 Гб осталось 473 Мб
свободного места.
Программное обеспечение
В этом дистрибутиве используется новая версия КОЕ — 3.3.3 и еще более
новая, чем в ЕСЗ, версия О1МР — 2.2.3.
КОЕ русифицировать никак не удалось. Я установил все пакеты, а из
доступных языков был только английский. И кому нужен такой дистри-
бутив?
Существенным недостатком, на мой взгляд, является отсутствие пакета
ОрепОНзсе. Вместо него установлен К ОГбсе 1.3.4.
Рис. 12. Рабочий сгол КйЕ 3.3 (З/аскууаго}
Тесты
А вот тут началось самое интересное. Результат Ьбрапп такой же, как и
у ЕСЗ. 174 Мб скопировалось за 3,01 секунды. При копировании того же
самого 700-Мбайтного фильма я получил следующие результаты:
• Копирование с РАТ32-раздела на ехй-раздел: 1 мин 12 сек (!)
♦ Копирование с ехгЗ-раздела на ех13-раздел: 0 мин 31 сек
Вот вам и ядро 2.4. Разница с ЕС почти в два раза: 81аск^аге в два раза
быстрее работаеч с файлами, чем Еебога Соге. Файловая система одна и
та же — ех(3. Уже и не знаешь, куда отнести версию ядра 2.4 — к пре-
имуществам или недостаткам. Никуда не буду относить. Будем считать
это особенностью данного дистрибутива.
Диагноз
Неудобная текстовая англоязычная программа установки сразу отпугает
начинающих пользователей. Отсутствие Ореп ОГПсе и поддержки русско-
го языка тоже не в сторону выбора дистрибутива. Зато это компенсируется
быстрой работой файловой системы и более быстрым запуском системы:
44 секунды против 1 минуты и 15-секунд у ГО. Этот дистрибутив можно
порекомендовать квалифицированным пользователям, знающим толк в
Ыпих — уж они-то смогут довести его «до ума». И вообще, учитывая
особенности этого дистрибутива, он больше подходит для установки на
сервере, чем на рабочей станции.
Преимущества Недостатки
Дружественный интерфейс КОЕ 3.3 Неудобная, текстовая и англоязычная програм- ма установки •
Высокая производительность файловой системы Нет поддержки русского языка. Ее обеспечить можно, но начинающему пользователю придет- ся потратить на это уйму времени
Выстрел загрузка системы Отсутствует пакет Ореп ОНгее
Программное обеспечение
Ядро версия 2.4.29 СИ ОМЕ 2.6.2 КОЕ 3.3 Ореп ОТбсе — отсутствует Б1МР 2.2.3 Загрузчик ИЮ
1дпих МагЩгаке 10.1
Этот дистрибутив я устанавливал последним специально: до этого на моем
домашнем компьютере был установлен именно он. Как обычно, начнем
с установки дистрибутива.
Установка
Как и Ребога Соте 3, Мапбгаке поставляется на четырех компакт-дис-
ках. Все четыре диска нужны при установке —? даже если не отмечать
дополнительные пакеты.
Программа установки понятна и новичку, с «^ практически не бывает
проблем — это я уж знаю точно, потому что данный дистрибутив я уста-
навливал не один раз, причем на разные компьютеры.
Весь подготовительный процесс в моем случае (напомню, что я не созда-
вал разделы— они ужебыли созданы) занял всего 2 минуты и 1 секунду.
На копирование пакетов, выбранных по умолчанию, понадобилось всего
7 минут и 2 секунды. После копирования пакетов на указание дополни-
тельных параметров (я оставил все по умолчанию, только добавил одно
пользователя) понадобилось 1 минута и 12 секунд. Итого на установку
системы понадобилось 10 минут и 15 секунд (!)
После перезагрузки приятно обнаружить, что гноя звуковая плата работа-
ет. консоль полностью русифицирована (а не как в случае с РСЗ), подмон-
тированы все ХУпДо’Л'.ч-раз.телы (причем под.монтированы правильно —
с русскими буквами проблем нет), да и выключается компьютер без
всяких глюков.
Вторая перезагрузка
Вторая загрузка (с запуском X ЧЛЧпдоте и автоматическим входом
пользователя) заняла 42 секунды. После установки осталось свободным
2,1 Гб дискового пространства.
Программное обеспечение
На четырех компакт-дисках Ьших Мапбгаке вы найдете все необходи-
мое программное обеспечение — от офисных приложений до простых
игрушек. Для меня наиболее важны офисный пакет ОрепОГйсе 1.1.0 и
графический редактор С1МР 1.2.5. Версия С1МР не очень новая, но это
поправимо — всегда можно загрузить новейшую.
&?гаж».
:-5 З.ЯУг
СехЛзс/
Мял_э11=
ПГлИрйк Ог-гвры.'
Йь/ер.:
да
<^рвийвч«»т>.||тЛг|
С^глзде сь®
й&аккф <Ф
ТЬ^яЬайй
«а^и.рпд
Прхгс* ваш имо $6к>Ы(я) л*»
: ^Пб^^Л'ЪйЗ
0О1.
Л
Рис. 14. У/Машз-разделы сразу правильна подмонгированы
!0 Сй«$я|!ИП1 силки: л файле: : :::<:
|$д ^олранщл нлск вд•ёта^ .. .,...
Рис. 15. Воспроизведение фильма
В качестве оконной среды по умолчанию используется КВЕ версии 3.2 —
довольно удачная и быстрая версия.
С воспроизведением видеофайлов нет никаких проблем — все фильмы,
имеющиеся у меня на ХМтйочга-разделах, были воспроизведены про-
игрывателем То(ет — даже те, для которых я в ЗУшсктаъ выкачивал из
Интернета дополнительные кодеки.
Тесть/
Дополнительно описывать тесты я не буду, а приведу только уже готовые
результаты:
• Нфапп: 174 Мб прочитано за 3,02 секунды, скорость чтения 57,55 Мб/с,
• Копирование 700-Мбайтного файла с ЕАТ32-раздела на ехв-раздел: 01г26;
♦ Копирование 700-Мбайтного файла с езйЗ-раздела на ехВ-раадел: 0:36
Диагноз
Ыпих Мапбгаке — отличный дистрибутив для начинающих пользователей.
После установки системы пользователь получает «готовую к употребле-
нию» рабочую среду. Все, что ему нужно настроить (и то, только если
он это не сделал при установке системы) — это настроить сеть и/или
подключение к Интернету. Никаких особых проблем ни при установке,
ни при работе с дистрибутивом не возникло.
Преимущества Недостатки
Простая и быстрая установка Особых недостатков нет, если не считать немно- го устаревших версий СЫрМЕ и С1МР
Хороший выбор программного обеспечения
После установки система полностью готова к работе и не требует дснастройки
Нет проблем ни со авуком. нис видео-кодвкамиг
Программно* обеспечение
□пух МапбгаКо 10 Ядро версия 2.6.3 СЫОМЕ2.41 КОЕ 3.2 Ореп ОН1се1.1.0 ®МР.1,2.5 ЗагрузчикЙН0 В 2005 (*) Ядро версия 2.6 11.6 8М0МЕ2,8.3 КОЕ аОе поДДвржкой функций 3.4.0 ОрепСЙке 1.1 >4 ' '01МР-2.2.5 ЗагруэчикОЯив
Ыпих МапДпуа МгаНей ЕсПЬоп 2005—это первый выпуск популярного дистрибутива
после слияния компаний МапйгакеБоП и СопесЯУа. В этом дистрибутиве есть очень
много интересного — от полной поддержки контроллеров АйарГес до поддержки
игровых консолей ХЬох.
Разное
А5Р Ыпих
Если вы не достанете Мапбгаке (что маловероятно), установите АЗР
1лпих (ими. азр11.пих. гц) — вам понравится. Своей сглаженностью и
стабильностью он произвел на меня очень приятное впечатление.
Дистрибутив отличается хорошей совместимостью с видеоакселератора-
ми \У1сПа, АП, а также чипсетом 515630, который часто используется в
ноутбуках,
АБР Ыпих также выделяется улучшенной поддержкой украинского
языка и возможностью легкой смены кодировки (ко<8-г, ко(8-и, ср1251,
;$о8859-5). Естественно, в состав дистрибутива входят ОрепОЖсе и дру-
гие традиционные Ыпих-приложения. Неожиданностью для меня стало
наличие антивируса (е8а(е от компании А1ад<Ип), а включение в дистри-
бутив бухгалтерского программного обеспечения (от компании Наша) —
явление просто уникальное. Имеется также масса вспомогательных
средств, например, система автоматического обновления, автоопределе-
ние приводов СО-КУ/ и ПУЛ и т.п.
Наиболее полный дистрибутив версии 7.3 «Восток» распространяется
на десяти (!) компакт-дисках, среди которых три установочных, два с
исходными текстами, по одному с документацией, играми и пользова-
тельскими приложениями. На отдельном СОКОМ поставляется полная
версия Асгошк 05 5е1есюг 8.0, еще один диск содержит демонстрацион-
ные версии серверных приложений.
В коробочную поставку АБР 1ляих входят печатные руководства «Бы-
стрый старт», «Руководство по инсталляции», «Руководство пользовате-
ля», «Руководство администратора», которые фактически освобождают
пользователя от необходимости приобретения дополнительной литера-
туры по Ыпих.
К тому же на Ооситеп1абоп СИ, кроме традиционных РАО и НОЗУТО
от группы Ыпих Посшпепибоп Рго)ес(. содержатся и их переводы, вы-
полненные командой АБР Ыпих и сторонними переводчиками. Просмотр
электронной документации обеспечивается через удобный гипертексто-
вый интерфейс.
На момент написания книги уже вышла десятая версия этого отличного
дистрибутива.
АЬТ Ыпих
Использовать для обучения дистрибутив АКТ .кшюг 2 я не рекомендую —
уж слишком все там просто. Так вы уподобитесь иным пользователям
ЗУшбото, которые привычно переустанавливают ОС при малейших за-
труднениях. Зато этот дистрибутив прекрасно подойдет, если вы хотите
заменить ЗУтбомга в офисе или дома — поставьте и не мучайтесь. В нем
имеется полный комплект «стандартных» офисных приложений, прило-
жения для работы в Интернете, проигрыватели МРЗ и МР4, поддержи-
ваются цифровые камеры, ИБВ-принтеры и много чего еще. Сразу после
установки практически все это будет уже настроено, останется лишь
изменить имя компьютера и параметры РРРсоединения. Интересно, что
при этом АГТ .кпн'ог 2 очень компактен, все необходимое ПО уместилось
фактически на одном компакт-диске, на втором размещены исходные
тексты и дополнительные средства разработки.
Что еще хорошо в этом дистрибутиве, а точнее, в политике компании
А1_Т Стих (мыи. а 1x1 хпих. ги), так это сопровождение — обновления
появляются регулярно и оперативно. Скажем, версия 2.0 отличалась не-
которой нестабильностью работы^ однако вскоре вышел доработанный
Литот 2.1.
Дистрибутив АГТ Ма.Мег предназначен для пользователей, уже знакомых
с Ьишх. Он также создает впечатление более стабильного и надежного,
чем АГТ 5 итог. К тому же в коробочной версии вы найдете целых шесть
компакт-дисков с различным программным обеспечением для Еших, в том
числе — популярный эмулятор УМШагё, который позволяет запускать
одну ОС внутри другой.
Говоря о локализации, зачастую подразумевают только перевод интер-
фейса и возможность ввода символов национального алфавита и напрочь
забывают о документации. Компания АГТ Еших демонстрирует более
цельный подход и в этом вопросе: в комплект стандартной поставки
АГТ Липюг 2 входит печатное руководство по установке операционной
системы. Хотя, на мой взгляд, в нем не хватает иллюстраций, с его по-
мощью новичку будет гораздо проще инсталлировать ОС. Кроме того,
в нем содержится краткая информация по установке дополнительных
программ и обновлений.
В состав коробочной версии дистрибутива АГТ МавСег входят четыре (!)
прекрасных печатных руководствам по инсталляции ОС, администратора
и пользователя, а также отдельное по ОрепОНюе. Можно с уверенностью
сказать, что на первое время этой литературы более чем достаточно. А
если учитывать, что руководства составлены разработчиками АГТ Ыпих и
все описанные в них примеры ориентированы на «родной» дистрибутив,
то им и вовсе цены нет.
Говоря о политике компании АЕТ, невозможно не упомянуть 8(курЬи» ~
ежедневно обновляемый репозиторий пакетов программного обеспе-
чения. Все дистрибутивы АЕТ 1лпих созданы на его основе. Для чего
это нужно? Если у вас есть постоянный доступ к Интернету, вы можете
настроить ваш дистрибутив на ежедневное обновление пакетов — тогда
ваша система всегда будет поддерживаться в «актуальном состоянии»
и вам не нужно будет периодически устанавливать новые версии — все
будет происходить автоматически.
Конечно, автоматическое обновление имеет свои преимущества и не-
достатки — вы же обновляете программное обеспечение, а не простую
базу данных. Новое программное обеспечение может содержать новые
функции, что является положительной стороной, но и «подводные кам-
ни»; никто не знает, сколько ошибок было внесено в программу при ис-
правлении уже известных ошибок и добавлении новых функций. Лично
я никому не доверяю обновлять свою систему (это даже недопустимо с
точки зрения безопасности), поэтому предпочитаю покупать и устанав-
ливать новые версии дистрибутивов. Впрочем, если в ваш дистрибутив
какой-то пакет не включен, в репозитории Зззурйпк вы, скорее всего, его
найдете.
Подробнее о ЗДурйиз вы сможете прочитать поадресу дам.а1гЛ тпих.гц.
5и8Е Мпих
8и8Е Еших — немецкий дистрибутив компании Ыоуе11. Это очень хоро-
ший, надежный дистрибутив с «немецким качеством». Чего стоит только
тот факт, что разработчик этого дистрибутива — компания Моуей — раз-
работала одну из самых надежных сетевых операционных систем Коуе11
\’е1м,аге. Ранние версии 8и$Е грешили недружелюбием ИО отношению к
русскому языку, но в последних версиях этот недостаток искоренен. По-
следние версии 8и8Е можно порекомендовать не только опытным (как это
было с предыдущими версиями), но и начинающим пользователям Ыпих.
Последняя на момент написания этих строк (9.2) версия 8и8Е содержит:
• ядро версии 2.6.8;
• КОЕ версии 3.3.0;
• Орел Ойзсе 1.1,3 — популярный офисный пакет, аналог М8 ОШсе;
• КОЖсе 1.3.3 — еще один офисный пакет;
• Тйе С1МР 2,0.4 — мощнейший графический редактор, аналог РЬо1-
о81зор;
• много другого полезного программного обеспечения.
Версия 9.2 поставляется на пяти компакт-дисках — как видите, дис-
трибутив не маленький (для сравнения: Манйгаке 10 поставляется на
четырех СО).
Подробно об этом дистрибутиве вы сможете узнать по адресу ывди. низе .
аом, а если заинтересуетесь, то можете купить его в любом интернет-
магазине.
Кпорр!х
Эта разработка Клауса Кноппера (ими. кпоррег .пек/кпоррхх) — са-
мый лёгкий н быстрый способ познакомиться с Цпих. Дистрибутив по-
ставляется на одном-единственном компакт-диске и может работать
прямо с него, без установки на компьютер. Хотя при желании вы можете
и установить его на жесткий диск, а дополнительные программные пакеты
скачивать из архива на ътгн. ЛтЫап. ото. Да, этот дистрибутив основан
на БеЫап, т.е. не родствен Кес! На1.
При таком детском размере Кпорр1х содержит недетское количество
программного обеспечения, включая офисные пакеты, медиа-плейеры
и средства работы в Интернете. Дело в том, что программы уложены на
диск в сжатом виде и в процессе запуска распаковываются из архивов
на лету.
Самая свежая на момент написания этой книги версия дистрибутива —
Кпорртх 3.8.1 — продается в интернет-магазине кпорргх.ги за 99 ру-
блей.
ОеЫап
ИеЫап — это целая линия развития 1л пих. альтернативная Яеб На! и не
слишком совместимая с ней. Среди лидирующих дистрибутивов ЭеЫап —
единственная полностью некоммерческая система. Если разработкой Кеч!
На! занимается Кеб На! $о?№аге, а за 81аск'лаге стоит \Уа1пШ Сгеек, то
дистрибутив ВеЫап/ОМН Стих создает и по ддержйвает группа энту-
зиастов — строго в духе движения за открытые исходники. Не зря его
предпочитает Ричард Столлмен, лидер Фонда Свободного Программного
Обеспечения.
ВеЫал — настоящая энциклопедия свободных программ; в его состав
входит более 15490 пакетов заранее скомпилированного программного
обеспечения, которые можно бесплатно скачать с иииЛеЬ^ал.огд/
сИвСттЬ/раскадев. Там же предлагаются дополнительные пакеты, ко-
торые нельзя включать в основной дистрибутив, потому что их лицензии
не соответствуют принятому в этой группе определению бесплатного
программного обеспечения (с правом дальнейшего распространения, на-
личием исходных текстов, разрешением их модификации и использования
в качестве основы новых разработок). Система управления пакетами у
ОеЫап собственная, похожая на Кеб Натовскую только внешне.
ОеЫап пользуется также репутацией самого надежного дистрибутива
благодаря тому, что его разработчики имеют опубликованные точные
критерии качества программного обеспечения и отлаживают его ис-
ключительно тщательно. Вместе с тем поддерживается так называемая
«нестабильная» ветвь — экспериментальное направление, на котором
разрабатываются новейшие идеи.
Годы работы многих сотен разработчиков сделали йеЫап самым понят-
ным, логичным в настройке и администрировании дистрибутивом. Но для
быстрого старта он не подходит: разработчики не приняли во внимание
интересы желающих щелкать мышью и не лезть в основы системы.
Глава 1
УСТАНОВКА
ОПЕРАЦИОННОЙ
СИСТЕМЫ
--- ПОДГОТОВКА ЖЕСТКОГО ДИСКА
*---ЗАГРУЗКА ПРОГРАММЫ УСТАНОВКИ
---УСТАНОВКА РЕООВА СОНЕ
ОСОБЕННОСТИ УСТАНОВКИ
| МАШААКЕ 10.0
ПРОБЛЕМЫ ПРИ УСТАНОВКЕ
о— как удалить иыох
СИСТЕМЫ С ДВОЙНОЙ ЗАГРУЗКОЙ
первый запуск ишх
---СТАНДАРТНЫЕ СЕРВИСЫ Ы1Ч0Х
о---СПРАВОЧНАЯ СИСТЕМА
1ЛМЫХ ПОЛНОЕ РУКОВОДСТВО
1.1. Подготовка жесткого диска
Сейчас на вашем компьютере установлена, скорее всего, одна из ОС
семейства УУшбоууд со своей файловой системой. ОС 1лгшх использует
другой тип файловой системы, поэтому для ее установки вы должны осво-
бодить место на диске и отформатировать его (т.е, создать на нем новую
файловую систему). Если вы не намерены окончательно избавляться от
Мпдохте, то вам придется создать на диске несколько разделов, каждый
для своей операционной системы.
гав
Существует несколько определений файловой системы. Дли себя вы можете
выбрать одно из нижеприведенных — они оба вполне корректны.
Файловая система — часть операционной системы, обеспечивающая выполнение
операций над файлами.
Файловая система — способ организации и представления битов на жестком
диске.
Разделом называется участок жесткЬго диска, к которому можно обра-
титься как к отдельному диску, что достигается использованием таблицы
разбиения жесткого диска (рапйкт 1аЫе). Эта таблица записана в самом
начале диска и подразделяется на 4 секции, содержавшие характеристики
4 возможных разделов: их расположение, тип и отметку об активности,
Отметка об активности используется загрузчиками некоторых ОС. в част-
ности, \У1пс!очх может быть загружена только из «активного» раздела.
Эти 4 раздела называются первичными (рптагу). Один из разделов может
иметь тип «расширенный» (ехгед^). Такой раздел содержит собственную
таблицу разбиения на один или несколько разделов, называемых логиче-
скими (1о$са1). Такимобразом, пространство жесткого диска может быть
структурировано удобным вам способом.
Итак, на вашем диске достаточно места для установки 1лгшх, но все
это место находится в активно используемом разделе, содержащем ОС
Шпбоугй и все данные. Вы можете:
• Полностью переразметить диск.
При этом вы уничтожаете один большой раздел и создаете на его
месте несколько маленьких. Все данные, конечно, будут потеряны, и
ХУникнте тоже придется переустановить. Ваши действия:
1. Убедитесь, что у вас есть компакт-диск, с которого можно пере-
установить исходную ОС;
2. Создайте резервную копию всех своих данных;
3. Разбейте диск на разделы с помошью утилиты Ебгзк от
\У1Пбо\ук;
4. Восстановите свои данные и возвращайтесь к установке Еших.
• Уменьшить имеющийся большой раздел с сохранением данных.
Существует несколько программ, позволяющих это сделать. В преды-
дущие дистрибутивы Кеб На1 входила утилита Пр.ч. умевшая работать с
разделами РАТ и РАТ32, но не КГР8. Она все еще доступна по адресу
Исср; I/ . Над, с!е/-айспае Ее/ Г1рв, но в современные дис-
трибутивы обычно не включена. Вместо нее лучше воспользоваться
программой ТяНШопМа^с от БутапШс Лойол, понимающей все
типы файловых систем. Ваши действия:
1. Уплотните существующие данные (дефрагментируйте ваш диск),
чтобы увеличить свободное место в «конце» раздела.
2. Уменьшите размер раздела, создав на диске неразмеченное про-
странство.
3. Создайте новые разделы. Можете отложить этот шаг до этапа
установки Стих: инсталляторы современных дистрибутивов (в част-
ности, Ребога Соге и Мапбгаке) вызывают специальную программу
для работы с разделами диска.
1.1.1. Рекомендуемая схема разбиения диска
♦ Раздел подкачки или свопинга {ыарр1п&) — используется виртуальной
памятью. Иными словами, данные, не умещающиеся в оперативной
памяти, перемещаются на жесткий диск. Например, у вас в данный
момент свободно всего 8 Мбайт оперативной памяти, а вы пытаетесь
открыть документ размером в 16 Мбайт. В оперативную память при
этом будут загружены первые несколько мегабайт, а все остальное
будет находиться во внешней памяти. Когда вам потребуется перейти
в конец документа, операционная система подкачает в память нужные
данные, а неиспользуемые будут помещены во внешнюю память. Раз-
мер раздела подкачки должен быль не меньше 32 Мбайт. Обычно его
размер равен удвоенному объему оперативной памяти.
♦ Раздел /ЬооС — содержит ядро операционной системы и несколько
файлов, используемых при загрузке. Необходимость этого раздела вы-
звана «барьером 1024 цилиндра», то есть тем, что В1О8 большинства
персональных компьютеров «не видит» цилиндров с номерами больше
1024. Рекомендуемый размер этого раздела — 100 Мбайт,
» Корневой раздел, содержащий файлы, необходимые для работы си-
стемы и прикладных программ;
» Раздел Люте для пользовательских данных.
1.1.2. Имена разделов а ОС Ыпих
1лпих представляет наименования разделов как имена файлов, в виде
/<1еу/хху\!, где:
♦ Меу — это каталог, в котором расположены все файлы, связанные
с устройствами;
* хх — две буквы названия раздела, указывающие тип устройства, на
котором размещается раздел. Как правило, это либо Ьб (если это ГОЕ
диск), либо (для 8С81 дисков);
♦ у — буква, описывающая само устройство, на котором находится раз-
дел. Например, /деу/гЛа (первый ГОЕжесткий диск) или /с1еу/®бЬ
(второй 8С81 диск);
♦ 1М — число, обозначающее непосредственно раздел. Первичные раз-
делы нумеруются числами с 1 по 4. Нумерация логических разделов
начинается с 5, даже если первичных разделов меньше четырех.
Таким образом, /Деу/ИйаЗ —: это второй первичный раздел на первом
диске ГОЕ, а Меу/зОЬБ — это первый логический раздел на втором
диске 8С81.
1.1.3. Разделы и точки монтирования
С логической точки зрения файловая система каждого раздела представ-
ляет собой отдельное дерево каталогов. Объединение их в общую иерар-
хическую структуру с одним корнем достигается путем ассоциирования
раздела с одним из каталогов, содержащихся в корневом каталоге. Эта
операция называется монтированием (тоип(1п§). Монтирование раздела
дает доступ к нему через указанный каталог, называемый точкой монти-
рования (тоипПпв рот/).
Например, если раздел /йем/зДЬБ был смонтирован как /йоте/туап/
йос, то все файлы и каталоги, находящиеся в / йоте/Злтап/аос, физиче-
ски будут размещаться на /йеу/зйЬБ. А файлы, находящиеся в /йоте/
1уап/аос/В.изз1ап, — на /йеу/зйЬб, если назначить каталог Киев!ап
точкой монтирования для раздела /с1еу/вбЬб.
1.2. Загрузка программы установки
1.2.1. С использованием загрузочного компакт-диска
Самый удобный и уже самый распространенный способ. Первый диск
любого дистрибутива — загрузочный. Вставьте его в дисковод, переза-
грузите компьютер, войдите в В1О5 8е:ир и сделайте СП-привод первым
в последовательности загрузки.
Некоторые дистрибутивы (например, Мапдгаке 10.0) предлагаются на
ПУП, с которыми нужно поступать точно так же (если, конечно, у вас
есть соответствующий привод).
1.2.2. С использованием загрузочной дискеты
Способ настолько устаревший, что в современные дистрибутивы загру-
зочный образ для дискеты и не включен. Опишу его, опираясь на дис-
трибутив Нес! Наг 7.1.
1. Скопируйте каталоги довиЫТЕ, и .гтадез на жесткий диск (жела-
тельно на С: ).
2. Перезагрузите компьютер в режиме М8 ПО8.
3. Введите команду гаит 1 Ье (если вы — на свой страх и риск — предпо-
читаете работать в ХУтбоч/к, то пользуйтесь командой гаиг1Сеи±п):
С: \>с: \<3ознс11в\гаиг1Се
На запрос программы
ЕпСег б1зк гтаде зоигсе ^11е пате:
введите:
с.* \1тадев\ЬооС Лтд — для обычной установки или
с: ХйпадевХЬоошеС . 1тд. — для установки по сети.
А затем на предложение программы ввести диск назначения введите
имя дискеты:
ЕпЬег с1еес1.паС1оп «Згтче:
а:
4. Вы получили загрузочную дискету. Вставьте ее в дисковод и переза-
грузите компьютер.
Внимательно прочитайте 1Х.ХГА1.1..ТХТ в корневом каталоге СП, загля-
ните также в каталог 1тадез и прочитайте файл КЕАПМЕ. Инструкции
по установке обычно находятся там.
1.2.3. С использованием жесткого диска
Если вы скачали образы компакт-дисков дистрибутива, то можете про-
жечь их на СО и устанавливать так, как сказано в п.1.2.1. Когда скорость
вашего СП-привода слишком мала (например, 4х), имеет смысл разме-
стить 180-образы на жестком диске, а с СР только загружаться. Загрузоч-
ный образ находится в каталоге ххпадез на первом диске дистрибутива
и называется ЬооС Лао.
Если какой-то вариант Ыпих у вас уже установлен, то вы можете извлечь
этот файл из файла образа, смонтировав этот образ:
$ гпоипт -о 1оор 1зо9660 <файл_хзо> <точка_монтирования>
Прожгите файл Ьооб. 1зо на компакт-диск и загрузитесь с этого ком-
пакт-диска.
Если ваш В1О5 поддерживает загрузку с ШВ-устройств, то вы можете
скопировать на ШВ-диск загрузочный образ хтадеэ/аХзкЬоос Л год с
первого диска дистрибутива. Из-под Глпих это можно сделать так:
$ И=ё115к.ЬооС Лтд оС=/с1еч/ас1а1
После чего загрузитесь с СЯВ-диска и следуйте указаниям программы
установки.
Если вы загружаетесь с дистрибутивного СП, но устанавливать собирае-
тесь с жесткого диска, то в ответ на приглашение загрузчика
ЬООГ ;
введите тот вариант загрузки, который позволяет выбрать устройство (в
дистрибутиве Ёебога Соге эта директива называется авктегбоб). Укажите
инсталлятору раздел диска и каталог, в котором находятся образы дисков
дистрибутива.
1.2.4. Установка по сети
Для этого варианта установки вам нужно иметь доступ к РТР-серверу, где
хранится каталог с избранным вами дистрибутивом. Загрузитесь с того
носителя, на который вы скопировали загрузочный образ, ответьте на
вопросы инсталлятора и выберите в качестве устройства для установки
РТР-сервер.
Рис. 1.1. Установка ЯеОНа* по протоколу ГТР
1.3. Установка Еедога Соге
1.3.1. Описание дистрибутива
Название проекта Ребога Соге не имеет никакого отношения к знакомому
нам с детских лет произведению К.И. Чуковского «Федорино горе». Ре-
йога Соге является наследницей линейки Кеб Наг (бесплатной), а Рейоге
означает фетровая шляпа (против Красной Шапочки КебНаг)
Рейога Соге Ыпих — это наследник культового дистрибутива Кеб Наг 14-
пих. созданный сообществом добровольцев Рейога РпуесЕ (1и ср : //ътъм.
геШтаг. .сот/ Гейота) при участии и спонсорской поддержке компании
Кеб На! Дистрибутивы Ребога Соге содержат только новейшие версии
программного обеспечения. Лучшие решения, найденные командой
разработчиков Ребога, Кеб На1 включает в программное обеспечение,
поставляемое в ее коммерческих дистрибутивах ЕШегрпзе Ыпих.
Несмотря на это, Ребога Соге — не тестовая площадка для энтузиастов,
а полноценный дистрибутив, пригодный для домашнего, офисного или
серверного применения. Дистрибутив включает удобную программу для
установки и полный набор приложений офисные пакеты, браузеры
и у/еЪ-сервера, мультимедийные средства и инструменты разработчика
ПО. Ребога Соге Ыпих может легко соседствовать с М$ ^УшбохУх как на
одном компьютере, так и в локальной сети, а офисный пакет ОрепОГйсе
позволяет без проблем открывать, редактировать и сохранять документы
в форматах М8 Шогб и М8 Ехсе1.
3 Зяк. 388
65
Версии Еебога Соге — 1,2,3 и4. Системны» требования
На момент написания этой книги вышло четыре версии дистрибутива
Ребога Соге. Первая версия работала еще недостаточно стабильно. Во
второй замечен довольно неприятный баг, мешающий Сосуществованию
Рейога Соге 2 и особенно ШпЙохуз ХР, на одном компьютере:
после установки РС2 на некоторый Жесткие диски ЗУтбохух перестает
загружаться. Данные в разделах ЗУщботе при этом не портятся, но для
того, чтобы ЧЛЧпйож снова стала распознавать эти разделы, требуется
вру иную реконфигурировать жесткий диск. В третьей версии этот баг
устранен, однако появилось множество других. Так что рекомендуется
использовать вторую версию вместо третьей. В последней, четвертой
версии ГС ошибки предыдущих версий были исправлены. Так что что в
качестве рекомендации могу посоветовать именно ее.
Третью версию устанавливать не рекомендуется ввиду ее нестабильности
и большого количества возникающих коллизий (типа неработающих драй-
веров и т.п.), разрешить которые может только опытный пользователь,
но и ему зачем с этим всем возиться — тоже не совсем понятно. Лучше
изначально выбразъ стабильный дистрибутив.
Команда разработчиков Ребога Рго)ес1 обещает выпускать новые версии
дистрибутива 2-3 раза в год. Вы можете следить за новостями на странице
Нс ср://Ееаога.гейкас.сот.
Системные требования всех версий обычны для современных дистрибу-
тивов;
♦ процессор класса не ниже Репйшп (Репйшп 200 МГц для работы в
текстовом режиме, РепИшп П 400 МГц или лучше — для работы с
графикой);
♦ память: не менее 64 Мб для текстового режима, не менее 192 Мб
(рекомендуется 256 Мб) для графического;
♦ пространство на диске зависит от выбранного типа установки:
♦ 620 Мб — минимальная установка;
♦ 1.1 Гб —сервер;
* 2.3 Гб — настольный компьютер;
* 3,0 Гб — рабочая станция;
♦ 6.9 Гб — полная установка.
Кроме того, сама программа установки требует еще от 90 Мб (мини-
мальная установка) до 175 Мб (полная установка) дополнительного про-
странства на жестком диске, которое после завершения установки будет
освобождено. И, конечно, нужно место для пользовательских данных и
не менее 5% дискового пространства для работы самой системы.
Вторая версия Ребога Соге отличается от первой следующими новин-
ками:
♦ Ядро версии 2.6 со всеми вытекающими отсюда последствиями
(лучшая масштабируемость, производительность и поддержка новых
устройств).
• Новая версия системы X ХУшйоху XIIКб.7.0.
♦ Новая версия оконной среды 6X0X1Е (2.6), которая работает значи-
тельно быстрее предыдущей.
♦ Новая версия оконной среды КЕЕ (3.2.2), в которой исправлены не-
которые проблемы, включая проблемы с переводом интерфейса.
• ХГсе 4: легкое и быстрое окружение рабочего стопа.
• Поддержка технологии 8иЬ\'егмоп 1.0, которая должна заменить тех-
нологию СУ8.
* Реализация системы безопасности ЗЕЕтнх.
В третьей версии добавлены или обновлены:
♦ Новая версия оконной среды (ЖОМЕ 2.8.0.
♦ Новая версия оконной среды КЕЕ 3.3.0 (к сожалению, пока только
на английском).
• Клиент электронной почты Есо1и(юп 2.0.
• Дополнительная «целевая?* политика безопасности ЗЕЫпих, следящая
не за всеми операциями, а только за определенными демонами.
♦ Динамическое управление каталогом устройств (программа идет), позво-
ляющее создавать файлы устройств по мере подключения драйверов.
В четвертой версии Еебога Соге, появившейся 13 июня 2005 г, можно
отметить следующие особенности:
♦ Ядро версии 2.6.11.
♦ Гейога Соге 4 стала первым дистрибутивом, скомпилированным с
помощью четвертого компилятора 6 ХЕ С (ОСС).
♦ Новая версия системы X ХУшбсях' XI1 Кб .7.0.
♦ Новые версия оконных сред: СЖОМЕ 2.10 и КЕЕ 3.4.0.
♦ Кластерная файловая система ОГ8 6.1.-0.рге22.
♦ Универсальный просмотрщик документов Елзпсе 0.2.1.
♦ Существенно улучшенная и расширенная целевая политика безопас-
ности ЗЕЕших (дополнительно стали покрываться еще 80 демонов).
• Есйряе ЗДМ6. — полнофункциональная средаДауа-разработок.
* Некоторые приложения оказались из дистрибутива изъяты. В чет-
вертой версии ЕС вы не найдете ехйп, ХГсе 4, медиаплеера хзптв и
даже КОГПсе. Разработчики пошли, на мой взгляд, вполне правильным
путем и стали помещать в дистрибутивы только приложения, лучшие
в своей функциональной категории. Например, возможности ХГсе 4
с лихвой покрываются возможностями КЕЕ и (ЖОМЕ, так зачем же
из дистрибутива делать свалку программ. При этом, если вам нужна
какая-то программа, отсутствующая в дистрибутиве, вы всегда смо-
жете ее бесплатно скачать.
Детальную информацию о новинках и нововведениях в четвертой версии
можно узнать по адресу кии. гМ.ги/досз/тапиа!в/€ейога/4/КЕЬ-
ЕАЗЕ-ЫОТЕЗ-ги.. кЫп! .
Специальная технология разграничения доступа 5Е1лпих
ЗЕЬтих (Зесигйу ЕпИапсеб Ыпих) — это технология, позволяющая
лучше защитить ваш компьютер от взлома и непродуманных действий
пользователей. Технология 8Е1лпих работает совместно с механизмом
прав доступа в Ыпих, позволяя администратору ввести дополнительные
правила доступа к файлам.
Работает это так: если права доступа запрещают доступ к файлу, запрос
отклоняется сразу. Если же права доступа разрешают доступ к файлу,
настает черед 8Е1лпих. Система ЙЕЫпих проверяет текущие правила
работы с данным файлом для запросившего его процесса, запустившего
процесс пользователя и выполняемой им «роли» (например, сам адми-
нистратор может запретить себе доступ к критически важным ресурсам,
когда он не в административной роли. Тогда даже украденный пароль
гоог не слишком поможет злоумышленнику). Если правила ЗЕХлпих не
разрешают доступ к этому файлу, операция отклоняется. Как видите,
ЗЕЫпих — это еще один барьер в системе безопасности вашего сервера
(или просто домашнего компьютера).
Кроме ограничения доступа к файлам, с помощью 8ЕЫпих можно огра-
ничивать действия отдельных пользователей, групп пользователей, про-
цессов. Подробно о ЗЕЫппх на русском языке вы сможете прочитать по
адресу Исср://ыик.ореппеС.гц/Ъаяе/яес/1пСго_зе11пих.СхС. НЬт!.
1.3.2. Особенности устаноаки
различных версий Еебога Соге
Ребога Соге 2: подготовках совместной жизни с УУтбом/з
Если вы собираетесь держать на одном компьютере ОС и Редога
Соге 2, то не торопитесь устанавливать ЕС 2. Дело в том, что программа-
инсталлятор этой версии дистрибутива по-своему определяет параметры
физической разметки жесткого диска. После того, как эти параметры бу-
дут занесены в таблицу разделов, АУшдоч'к перестанет распознавать диск.
Чтобы обойти эту ошибку, нужно помешать инсталлятору автоматически
определять параметры разметки диска, указав их вручную.
Для определения геометрии лиска (цилиндры, головки и секторы, СН8)
служит утилита 1<Ияк. входящая в любой дистрибутив Стих. Вели никако-
го 1Дгшх у вас еще не установлено, то загрузитесь с первого компакт-дис-
ка устанавливаемого дистрибутива и в ответ на приглашение загрузчика
введите параметр ядра геясие:
ЬооС: Ыпих гевссе
Будет загружено средство восстановления операционной системы. Вы-
берите язык, раскладку клавиатуры и нажмите кнопку СопИпие. В ко-
мандной строке введите команду:
ГсИзк -1 /беу/Ы-а
(Меу/йба — это ваш загрузочный жесткий диск, на который вы собира-
етесь устанавливать Ьших).
Программа йШк выведет среди прочей информации сведения о количе-
стве цилиндров, головок и секторов (СН5) вашего диска, как показано
на рис. 1.2.
Затем перезагрузитесь с первого компакт-диска (С(г1 + АИ+1)е1) и в ответ
на приглашение загрузчика введите геометрию диска:
ЬооЬ : Игшх ййа=С,Н,8
где С — количество цилиндров, Н — количество головок и 8 — количе-
ство секторов.
Рис. 1.2. Информация о геометрии диска
В нашем случае строка загрузки Еших будет выглядеть так:
Ипих Ма-2438,255,63
Теперь инсталлятор будет руководствоваться этими параметрами вместо
того, чтобы пытаться определять геометрию диска самостоятельно.
Не следует пытаться определять геометрию диска с помощью В(О8, так как способы
определения СН5 уОС Моих и ВЮ8 отличаются, и вы можете указать неправильную
информацию. Для определения СН8 нужно использовать только ТсПьк!
Если вы поспешили и уже установили Ребога Соге 2, в результате чего
ваша ХУшбомо} ХР перестала загружаться, обратитесь к сайту К.еб На1.
По адресу Иг.ьр: //ьтоы. гебИаЪ.есйп/агсЫуез/Ее<Зога~Йеуе1~118С/
2 о о 4-Мау/тпвдо о 9 0 8 .Ест! вы сможете прочитать рекомендации по
решению проблемы загрузки Ребога + ХР.
Особенности и преимущества процесса установки Ребога Соге 4
Собственно особенностей то никаких и нет — все стандартно. А среди
преимуществ, на которые упирают даже сами разработчики — это на-
личие подробнейшего руководства по установке Еебога Соге 4.
1.3.3. Установка загрузчика
На одном из этапов установки (в некоторых дистрибутивах — ближе к на-
чалу, в других — к концу) программа-инсталлятор позволит вам выбрать
и установить загрузчик. Стандартными загрузчиками Ешихслужат ЫЬО
(Ыпих !.О(1(1ег') или Ст В. Е! В (СКапс! Утрес! Воо!1оас1ег). Сейчас я не буду
описывать достоинства и недостатки этих загрузчиков, а только скажу,
что я бы выбрал Е1ЬО: он мне больше нравится. Потом вы сможете сме-
нить загрузчик в любой удобнейЩИ вас момент. Программа установки
спросит вас, куда установить загрузчик:
* В МВК (Ма$1ёг Якю1 Кесоп!—Главная загрузочная запись);
♦ В первый сектор раздела Ыпих;
♦ Не устанавливать загрузчик вообще.
Если вы не планируете загружать Еших посторонним загрузчиком, напри-
мер, загрузчиком РГГ —МТоабег, то устанавливайте загрузчик в
МВК. В этом случае загрузчик получит управление сразу после загрузки
компьютера, и вы сможете выбрать любую из установленных на вашем
компьютере операционных систем.
Ыога
.] Настройка
-Зи усяодздфк ни
начального
загрузчика
( По умолчанию
! усгамавливаетеда загрузчик
! доеркцывяной системы
СНЛЖ Если эд не хотите
' устанавливаться!^
! кз жнит е кнопку Сменить
зд грузчик.
ВН »^Х»ГВ>ЖТрбИТ41»»75у>Ч»« дяя дорунщ други*
спврйфнжнмх инбтйй. Зго тв&з^У1в?Н)ра1>
юпврацшх(муюЕ:Иста$ йпискаг^из^грузк^ Что&ы
Д(МдайТЬ:^уГ.У13Ш)№Й^йС*«Т:«му« каторачнв
^лаойчяруж«М5адГ1жд7кчейк^ нажтше'кмете.у
'До₽*ииг»*> %ейбР|В1ЙраУ1» ОС, ?й^яфи*у<а'№
удеЛчааод.удеейДОГ? тараадтр "По'уЙюЧянйРда*
»тм*.ОС,. • •*•
| Устройств»
Дсваяить
Г«4огзС »е л^Л^гоорОУЫ | ____
Е уЬШННиГи
Хвалив
&
Вы можете также выбрать,
какай ОС {езди у вас их
несколько) должно
загружаться но умолчанию,
Пойгаен.т» отметку Пр
Парод» И*р«лншге»грп41тев «аяИй^.ш'пчайД»'™
№1^м^Т1№т:<!тшв| лдруь Дп^усялени* в^ргизанРстН
оистсиырвссшндуетоя ус гдомить упреть
□ ХетвН1Ш*Т»1М|ММ1|'ХвГрузчихВ ^зме^и’: г, ргаг^ъ
□ падгакетрмздсррч^л
Рис. 1.3. Выбор загрузчика
Если вы планируете загружать Глпих другим загрузчиком, выберите уста-
новку загрузчика в раздел жесткого диска.
Последний вариант — Не устанавливать загрузчик — следует использо-
вать, если вы хотите загружать Глпих с дискеты,
1.3.4. Продолжение установки
Выберите класс установки (рис. 1.4).
Класс «Персональный компьютер» подойдет для начинающих пользо-
вателей. Будут установлены: графический интерфейс, очень похожий на
привычный рабочий стол ОС ТУшбо^к, и программы, необходимые для
домашнего использования компьютера или для организации домашнего
офиса. Этот набор программного обеспечения будет занимать около 1.5
Гбайт на жестком диске, а если вы установите сразу две оконных среды
(ОИОМЕ и КОЕ), то такой вариант займет около 1.8 Гбайт.
Класс «Рабочая станция» подойдет, если вы планируете использовать
свой компьютер в локальной сети или для разработки программного обе-
спечения. Класс «Рабочая станция» занимает около 2 Гбайт на жестком
Ыога
Тип установки
; Выберите ют установки,
; старый наиболее полно
: вашим
Н потребностям.
Р Установка уничтожит всю
(ранее содрвяекнук»
информацию на выбранных
н разделах.
р Для получан ил более
! подробной информации о
р различиях между классами
' установки обратитесь к
• документации.
Ыога
Дщ*п 1ПМ1 ыийкяй тестер
'Ттик^иьто йедхс**т X** «стож^вныж'. и поргжт у^гяы*
; тйп4«.уетяе^игрю?»тФ№ота:
Р» ИЙ® Д« л^нммиега .И
•:.ЖЙКМЯ1Ж»«*Ив,
Р^Л. ВНонмешщма
Ш ЗОД ТК9 уС^НЯШНЛИвТ Г 1а|ЦЧ>1(^.к|!»Ы!рухдама. ^родта» :
г то ифигстюга алчдоктоиемкнйм
-Мм*... .......
В^бармтрятот
4**НКИ»йеев»ж^б^^ ивчлгивдрЛи* »«* асгут
г^кутнэдты дот«тммик4ариш».вм *мия« и*йе*т&
«М1СК|ТМТЙк1Й^Й^*^^ттИФ^^>^«ж1У^№ им«в1
.фмберочма
:.ЭМ5вЗИ»Т<! «ТОТ.ТИП^ЛКДИ Лштгв КэпТ^е.
чм^лрдеодс утпкаж< » л&й йшгацягвтй*:^ довным».
Рис. 1.4. Выбор класса установки
Автоматическое
разбиение /
; Латона гическап размена Р
; позволит вам ||ц
; контролировать процесс !В
= удаления данный с вацл&й Щ
;' смет о и ы, если удаление |р$
• будет иметь место. ;|Й
; й
Для удаления то нем со <
= разделов Цлих (разделов, 11
; созданных гтрм предыду&ей [ &
: установке 14 лыхк выберите ;''=
; Удалить все раэдышЦйих.||^
! Чтобы удалить все разделы
.....гь.шшшж.^аеджмх> *>ч*пг(ми , . и У
5; ЙСкрага^раа^у | [^^чаеаг^
П®?едт®К«МТ^к>П’1Ив« уйТанавги мйм^нмт .:
'ав<мй(Т*м«жм рй^ивмия, юдохям «'йдо*!
кв< 6уд^ исяа^и»»<о место на жютких:диа<^'
ЛШиуЖ*ю.йН1аш«НЧ1ми«1: (ииЛиеиие:
.&УдшДО№№ге.редде>и Шых «й зйяй Састе*а "
. О Упамгя» ясврллдалм ка «I ей .аистямв:'
•О Соф№М»в.-и»-рмтмм м тлшж«тв^^тжу«вйо СТоЬццм1ЖТХ>0сфйж;т
Е 5^А мр, у’Л'Лйге, УМиАг« Утлгд! $
^гПрЙДОр ^ МОЛИфикацив} доданных
- -ЯУЗДуак
|«<.№&дд ] ) > Лаям
Рис. Л5. Угоч^енив параметров а «тома у ического разбие;^^
диске, а если вы хотите установить данный класс с возможностью выбора
графической среды (К[)Е или такой вариант займет около
2.3 Гбайт.
Класс «Сервер» нужно использовать, если вы хотите установить и н астро-
ить сервер на основе ОС Стих. Будет установлено все необходимое для
организации сервера программное обеспечение. Графический интерфейс
по умолчанию не устанавливается. Минимальный размер установки —
1.3 Гбайт и еще около 900 Мбайт, если графический интерфейс вам все-
таки нужен.
Я рекомендую вам выбрать класс установки «Выборочная», даже если
вы — начинающий пользователь. Этот класс позволяет более гибко на-
строить вашу систему еще на стадии установки, точно определить уста-
навливаемые пакеты и их размер.
После выбора класса установки программа поинтересуется, как вы будете
разбивать жесткий диск: автоматически или с использованием программы
П!$к Вгик1. Если вы сомневаетесь — выберите автоматическое создание
разделов.
При выборе автоматического разбиения программа попросит вас уточ-
нить параметры разбиения:
♦ Удалить все Цпнх-разделы (Ветоуе а!1 Гапих Рагббопк),
♦ Удалить все разделы (Кешохе аП Рагббопз).
• Оставить все разделы и использовать свободное место (Кеер а!1 раг-
Шюпв).
В первом случае инсталлятор удалит все Ыпих-разделы, если такие име-
ются на вашем диске. Во втором — будут удалены абсолютно все разде-
лы, включая ХУтбохуз-разделы. Последний вариант предполагает, что на
жестком диске имеется неиспользуемое пространство (не относящееся ни
к одному из разделов), которое будет использоваться для установки.
Если вы выберете возможность просмотра автоматически созданных раз-
делов, то следующий шаг установки вы сделаете с программой разметки
диска 1)пы1 (рис. 1.6).
Кнопка Создать создает новый раздел. Для этого нужно освободить
пространство на жестком диске (именно пространство, т.е. область жест-
кого диска, не принадлежащую ни одному из разделов, а не свободное
место).
Для редактирования параметров раздела предназначена функция Из-
менить. Она позволяет изменить точку монтирования раздела, его тип и
размер. Если раздел уже был создан на диске, то программа Ю&к ГЭпнс! не
в состоянии изменить его размер. Для изменения размера нужно удалить
этот раздел и создать заново, но с другими параметрами.
ГесЗога
Настройка
I разметки диска
; Выберите, куда вы хотите
| установить Ге&иа Соте.
Ёслиеынеанаете.гак :
: провести разив чу диска или /й
: Вам нужна помощь по
использованию
инструментария для ;^|
проведения размечи
1\ вручную, обратитесь к
р документации.
; Если вы выбрали
! автоматическое разбиение
:-Листа ны щтжвтл пибв <
:.|(^ТД~^Д»ДГО.|
СтНЯ И«М»а| йеИ МВ>Т№»>»Ь УМ»«к.т»*.о»е УЬЫЬЙТ
яйг '
□ СкрычуодаЯмьа НКВуучзствиижтдущтм 1УМ
Шм
Рис. 1.6. Программа О18к ОпМ
Для создания Гт их-раз дела нам нужно удалить один из Уивбоу^-разде
лов. Желательно удалять тот, которой вы создали с помощью программы
РагННоп Мафс. поскольку он не одержит данных. После удаления раз-
дела на его месте нужно создать три раздела:
1. Еших \а1пе (файловая система ех(2 или ехгЗ, точка монтирования /);
2. Еших 8н?ар (точка монтирования не нужна);
3. 1лпих КаНхе (файловая система ех12 или ех(3, точка монтирования
/Ноте).
В таблице 1.1 представлена рекомендуемая схема разбиения единствен-
ного жесткого диска (/<Зеу/И<За) для установки на нем двух ОС: Стих
и ЗКзпдоу/^.
Далее программа-инсталлятор предложит вам настроить сеть и бранд-
мауэр (рис. 1.7) — эти шаги можно пропустить, оставив их настройку
на потом. Систему безопасности ЗЕЫппх обязательно выключите или, в
крайнем случае, оставьте в режиме предупреждений — в этом режиме
она не запрещает недопустимые с ее точки зрения действия пользователя,
а протоколирует их.
Схема разбиения диска/Ц е и/Ша Таблица I. I
Раздел Актив- ный Тип/ФС Размер, Гб Комментарий
Нйа1 (диск С:} Да Первичный/ и(а1 1.5-2 Для самой УУМоие больше и не нужно, прило- жения можно поместить на диск □:
Ма2 Расширенный Все оставшееся место На жестком диске может быть четыре первич- ных раздела. Дополнительные разделы следует помещать а расширенный раздел. Некоторые ОС (в частности, (ЛИпйочче) требуют, чтобы их раздел был обязательно первичным и актив- ным. Цпих может загружаться как с активных, так и с неактивных разделов
Ма5 Логический/ ех12 ИЛИ ех13 2.5-3 Для корневой файловой системы Ипих. Нуме- рация логических разделов начинается с 5!
Маб □нихвиар 128-256 Мб Не следует этот раздел помещать в конец дис- ка. поскольку операционная система использу- ет его в качестве раздела подкачки. Минималь- ный размер данного раздела — 32 Мб
Ма7 Логический/ ехГ2 или ехТЗ 5-10 Для пользовательских данных — файловой системы /Иоте
Май (дискО;) Логический/ Иэ! Все оставшееся место Это диск 0: — на него следует устанавливать программы \Мпбои/5
Еедога
Настройка
брандмауэра
Брандмауэр же ПгежаН}
находится между шыдой
системой и сетью и
определяет, к секи»
ресурсам вашего
компьютера уделенный
эдпъмдетель о сети может
иметь доступ. Грамотно
настроенный брандмауер
; сильно поаъшяет
безопасность вашей
системы.
выберите подходящий для
...
пр«жй?^тмт>.й^тс^*<иа^й д&туя <
мздыу яммргфу изтдажй йир^'.вкм^мть Йрщцшяувр?
•0 Ё^ФрАНф^ЗДО
'0^Ьмкм*г» ,^р-анд«яу»р^
• Вагмажете^гк^аэмтъарвядмй^^
Хив«ОТй0ЫМ СЭДгВИСЛМ ЬВИЖГО СОМ^Т^АСОСтО^й други*.
хстртмэтфое, К *я*им оеренош иужчй .ддатуп?
П Уддомный а*сл#»5Н)
О Веб-сервер <НТТР, НТТРЙ)
О Передача фвйвря <ГГИ
О П«чговый сервер (5МТР)
Шй Бяа«ж«я^ п>ш®о
у^аветт^вездавс1«»этьюг чмтдоод№Йй&
««тором т«Лй*о должно
.быть даройно, йлй'в.яшжею'до
:Вк(йО*1йТ*».&Еипш1;??. Включено :*
номер |
| М! Назад | [ ► ^аяяя ^
Вы также можете выбрать дополнительные языки, установить дату и вре-
мя и ввести пароль суперпользователя (пользователя гоо1). Задаваемый
пароль должен быть не короне 8 символов. При вводе символы не будут
отображаться на экране. Категорически не рекомендуется использовать
в качестве пароля что-то вроде 123456, с^егГу, разкмюгд и тому подобное.
Подумайте о выборе пароля: он должен быть одновременно легким для
запоминания и трудным для подбора, Осторожно! Забыв этот пароль, вы
не сможете настраивать систему.
Постоянно работать под учетной записью гоо! категорически не рекомен-
дуется из соображений безопасности — вы можете нечаянно разнести всю
систему. Поэтому нужно добавить хотя бы одного непривилегированного
пользователя, который будет выполнять повседневные задачи (набор тек-
ста, просмотр видео, программирование), даже если этим единственным
пользователем будете вы сами. Учетную запись гоо( нужно использовать
только для настройки системы.
Теперь нужно выбрать пакеты программ для установки (рис. 1.8). Если
вы хотите выбрать пакеты самостоятельно, установите переключатель
«Уточнить наборы».
Гедога
{ Установка
1 пакетов по
: умолчанию
- Программа установки
: автоматически подберет
; группы пакетов, которые
: будут установлены в системе.
Р Выберите Принять текущий
Н список пакетом, чтобы
р про до п жить установку и
5; установить то. что
> предлагается по умолчанию. :
т Выберите Уточнить Набор
Е8 Скрыть дпражу | | Здта^ога^
УС'а-и>го :» уиолчвчно иклсч»?рпадукмр!й
рвконшиягввНм^'ЬММ набор пакетом:
Ра&ЖЯФ'кДООМЕ}
0фис«»Штшвт(ррепад1:е.ад:
Эижтронн» почт® Днйиктп)
. .’МШММПЫДОМвММИ*
Звуки яидаот.
Игр»
СредствврктраИотки ПО
Сраигтввждатшютйироваяияо^-жы
Паслоуотвновкиатряпьнивтйкоты магутвмть.дйвЯЙна
чоч удв"«*'чпря'(<ЖЯйИ ути."и»“’5уЯ«п<жВ^.ра<Ьо9еа‘;
В:№.*иэй*^.$’Г^аСвяь«ммаж.№*Ис**«,.№:^’. ?
от двльнао пакеты, котчриквыаогитартпим№ьшш..о
которые ив должны уетаипалгват воя. Лев этого нужна .
уогнноаит» фяажок/ржлопожвииыя ниже.
ф уртанаоитн пакеты до.умолчаяио
О Утрчяит» новоры устфявливавикк пакетов
ЕЕ]
< ЦвайД
Рис. 1.8. Выбор групп пакетов
При ипливидуалыюм выборе пакетов будьте внимательны: некоторые из
них для своей работы требуют наличия других пакетов — это называется
зависимостью пакетов. Если это первая в вашейжизни установка Хлпнх, не
используйте возможность индивидуального выбора пакетов: просто выберите
из списка категории гцюграмм. которые вас интересуют. После этою останется
немного подождать, пока инсталлируются выбранные вами пакеты.
Обязательно создайте загрузочную дискету. Если вы в очередной раз
переустановите ОС У/йкЬте, она поместит в МВК. собственный загруз-
чик, который и не подумает загружать вашу ОС 1лпих. В таком случае
загрузитесь с загрузочной дискеты, зарегистрируйтесь как пользователь
гоо! и введите команду дгцЬ (или И1.о, если вы используете 1.11,0).
Для создания загрузочного диска вам понадобится одна отформатиро-
ванная дискета.
Я рекомендую использовать графический вход в систему: при этом систе-
ма X \У)пс!оц- (графический интерфейс) будет зафужатъся автоматически,
и вам не нужно будет запускать ее командой есагех.
Все, установка завершена. Извлеките компакт-диск из привода и пере-
загрузите компьютер.
Загрузчик предложит вам список установленных у вас операционных
систем. Выберите из него Ыпих. Если у вас двухпроцессорная машина,
то следует выбрать пункт не Ыпих, а Йпих-лпр — это ЗМР-ядро, под-
держивающее несколько процессоров.
1.4. Особенности установки Мапскаке 10.0
Относительно недавно вышла версия 10.1 этого замечательного дис-
трибутива. В ее состав вошли средства для работы с ХУ1Е1 и ВкнЧоогН -
устройствами, драйверы для ноутбуков 1п1е1 СеШппо (на этой платформе
производится большая часть ноутбуков). Что же касается программного
обеспечения, входящего в дистрибутив, то в нем вы найдете:
* Ядро версии 2.6.8.
♦ Новые версии графических интерфейсов КОЕ 3.2.3 и ОМОМЕ 2.6.
♦ Компилятор §сс версия 3.4.1.
♦ ХУеЬ-сервер АрасНе версии 2.0.50 и интерпретатор РНР 4.3.8.
♦ СУБД Му8ОЪ версии 4.0.18.
♦ Новую версию популярного офисного пакета ОрепОШсе — 1.1.3.
Загрузите с компакт-диска программу-инсталлятор. Когда появится экран
приветствия, вы можете нажать <Ввод> для начала установки в обыч-
ном режиме или <Е1> для выбора из списка дополнительных режимов
(рис. 1.9).
Рис. 1.9. Дополнительные режимы установки
Эти режимы включают:
♦ т§а!о — если у вас слабенькая видеоплата и вам нужно произвести
установку системы при разрешении 640x480 (16 цветов);
• (ех! — если вы хотите, чтобы программа установки работала в тек-
стовом режиме;
* 1йшх самая обыкновенная установка;
• ехрег! — режим эксперта (вы должны хорошо разбираться в «железе»,
чтобы устанавливать систему в этом режиме);
♦ геясие — если вы хотите восстановить уже установленную систему.
Вы также можете ввести дополнительные параметры, например,
.1.1.ППХ тет=512М
После нажатия ЕпГег будет запущена программа установки в нормальном
графическом режиме, и система будет знать, что у вас установлено 512
Мб оперативной памяти.
В отличие от предыдущей версии Ыгшх Мал (1га ке, выбор класса установки
ограничен двумя пунктами:
♦ Установка (1п81а11)
♦ Обновление (Пр&гайе).
Если у вас установлен кйшх МапОгаке версии 8.1 или выше, вы можете
его обновить до версии 10.0. Если же у вас установлена версия Мапбгаке
древнее 8.1 или вообще другой дистрибутив, нужно выбрать пункт «Уста-
новка».
При выборе пункта «Установка» старая версия 1ишх МапОгаке, если она
была у вас установлена, будет уничтожена. В то же время, если вы хотите
ОТ*МапйгакеНпих Ю.О ОШскд 1т*аИаНоп
Р!довеязд$е !Мйй«|г«9 ««нгйу йм»1
9у^1«т нявяОДде
♦ илдйаф*
• ис«пв
* ваещйу
« РайййХ^
Зу*шл
• рдодегё
• маяглмг
* Г'шШ&йй№к№
• ВйШТНУу
» йгаШ гфсяй»
• Елк 1таЫ
витаем; тм I* В1в «{йпйая йвсигЙу гесотглвчфаа иг & сатри<«г 11ш «411 &в и»«1 №
сопиес! Ю 1ра Егги&тнй « Л оВют1
ндН* Тнда да штату лоте гшмс!Еапя. ала <пвт «лаприе сйсскд да гт «и«у лбдщ.
НДОаг; №№ Ш здешИу Ейе от $т& «у»1йт м и веете? Ьас&пм роевйй, ТНв
к«шл1у 1$ гни» МдМ епоодл Ь нм йи> $уийят ар ж сенат *йк;Н екл вес «л согитвсФопя
(гот тапу рнап^«... М<М« Я уйцг тас^е |& огйу айИ&гй он 1ликл<м у») «п«иЦ
&№эд а кмегнне*.
... ЗвС(а^ н»# ...
ЙвП1«
Рис. I. Ю. Выбор уровня безопасности
изменить разбиение диска или тип файловой системы 1лпих, вам нужно
выбрать именно этот пункт.
После выбора раскладки клавиатуры инсталлятор Мпих Мапбгаке (ко-
торый, кстати, называется ЭгакеХ) предложит вам установить уровень
безопасности. Помните, чем выше уровень безопасности, тем неудобнее
работать в системе пользователю. Для домашней машины (на которой
вы будете экспериментировать) подойдет средний уровень, а для сервера
сети не лишним будет и повышенный. Не устанавливайте параноидальный
уровень безопасности при установке системы: вам потом будет трудно ее
настроить. Данный уровень подойдет для систем, относящихся к классу
«поставил и забыл»: программных маршрутизаторов или шлюзов, адми-
нистрирование которых не выполняется или выполняется очень редко.
Обычно такие системы таятся где-нибудь в углу серверной комнаты и
работают круглосуточно, например, передавая пакеты из одной локаль-
ной сети в другую.
Вы сможете полностью настроить систему, не дожидаясь для этого пере-
загрузки (рис. 1.9). Настройке поддаются:
• Раскладка клавиатуры (КеуЬоагб)
• Страна (Соип1гу/Ке§1оп)
• Часовой пояс (Тшзегопе)
♦ Тип мыши (Мойле)
♦ Тип принтера (РптНег)
* Тип звуковой платы ($онпй сап!)
♦ Параметры видео подсистемы (СпарЫса! пНегСасе)
• Параметры сети (Мейтогк)
♦ Уровень безопасности (Зесигйу 1еуе1)
♦ Параметры брандмауэра (Нге«а11)
♦ Загружаемые сервисы (Кептсек)
♦ Конфигурация начального загрузчика Еших (13оойоас1ег)
* Параметры других устройств, например. 18О\'-платы или ТУ-тюнера.
Обычно инсталлятор правильно определяет параметры видеосистемы
вашего компьютера, но в некоторых случаях нужно уточнить тип вашей
видеокарты, ее модель, тип монитора. Обязательно нажмите кнопку Про-
верить для проверки выбранного видеорежима.
Если вы хотите запускать систему X \Мшс1о'л автоматически при загрузке
Еших, нажмите кнопку Параметры (ОрЕоля). Если же ваша система будет
использоваться в качестве сервера, автоматическая загрузка X \У1пйочг
не нужна.
В параметрах сети вы можете попросить инсталлятор автоматически
распознать ваши сетевые параметры, если это возможно. Если же он не
- 10.0
аЛоНап
• ЕагДОдДО
*
• Зз&игйу
• РайШайтф
« Нов раввжхй
* айй а иве!'
• 1л<[гэй Роядюйея
• • Бцтгаагу
* ктеГдп ррзязг
* Ех-П |Я5(аИ
:: ............. ................................ ...... .—............
...:
- ИЗ НнуЬо«с1 !
{'' .........г ,|=
Е' : .. алчае - ре?й- Я4ЖиЙ1^Лл:->:..-: : |
' - к - ' ' " р
! ММмчМо-рМ»? }
|? Зий«Са^-тТЪдГН?^ 1
? Огарда
Л (гаеггиГ $
фвсш* '
Занижу I.
Рис. 1.11. Настройка параметров системы
Глава 1. Установка операционной системы
определил параметры вашей сетевой платы или модема автоматически,
попробуйте настроить эти сетевые устройства в режиме эксперта. При
этом вам нужно знать следующие параметры:
* ТР-адрес этого компьютера й его имя, которое должно быть прописано
на сервере О\'8 — эту информацию вы можете уточнить у админи-
стратора вашей сети;
♦ 1Р-адрес шлюза;
♦ 1Р-адрес сервера Е>\8.
Инсталлятор позволяет настроить традиционное соединение по модему,
по локальной сети, 18ПМ/А1)$Е-соединения и даже выделенное соеди-
нение.
Наконец, вы сможете даже заняться администрированием системы пря-
мо в процессе установки (рис. 1.12), отключив не нужные пока сервисы,
чтобы система загружалась быстрее.
Вы не знаете, что именно стоит отключить? Думаю, в этом вам поможет
таблица 1.3 (см. п. 1.9).
Откажитесь от автоматического обновления системы, и установка за-
вершена, Нажав кнопку Дополнительно, вы можете создать дискету для
клонирования Ыпих. Эта дискета может понадобиться, если у вас есть
СЙ“Малйгакейпих - К).О Ойк^а! 1пйаВа1юп
дунет
« Сяпдиайв
• (Холее
* Эдо&лу
« №»№ яуяют
Зу «отп
«:М».а им^
« рсмДтоазет
:б
4 црВДаб.
« Ехй йнййй
геу«-
|Цпй
ЕггаЗдв
реяв
и>а1оек
*ЙЙп--'
* •
; ^И|В№-
рУУвйпйп I* а гогпйй и&пд
□
П
п
&
&
&
Рис. 1.12. Выбор служб, запускаемых при загрузке системы
нескол ько одинаковых компьютеров* на которые нужно установить Ыпих.
Я же рекомендую создать эту дискету, даже если у вас всего один компью-
тер — дискета для клонирования существенно облегчит переустановку
системы на этом компьютере. Конечно, вы не будете переустанавливать
1лпих так же часто, как ’Йбпбо'У?, но кто его знает?
Чтобы использовать дискету клонирования, загрузитесь с первого СВ,
когда увидите приветствие программы установки, нажмите <Ё1> и вве-
дите деЕс^д=’Е1орру''.
1.5. Проблемы при установке
1.5.1. Конфликты Ребога Соге 1 и 2
с различным оборудованием
Материнские платы А5115
На материнскую плату А8118 серии Р4Р800 Ребога Соге 2 не устанав-
ливается. Пока данная проблема не решена. Остается сменить либо
материнскую плату, либо дистрибутив. Следить за ходом устранения
ошибки можно по адресу Игера; //ЪидйШ.а, геацас ..еот/ЬидгШа/
зЪои__Ьид. сд1?16=121819.
ЮО-мониторы
На некоторых ЬСЛ-мониторах не удается запустить программу установ-
ки в графическом режиме. В этом случае в ответ на приглашение ЬооГ
введите параметр поГЬ:
Ипих погЬ
Ноутбуки ЗОНУ
На некоторых моделях ноутбуков БОКУ УАЮ возникают проблемы с
установкой Ребога Соге 2, решить которые поможет параметр ядра:
Ипих рс1=оП ИеЗ^ОхЗбО,0x386
Не работает мышь
В процессе установки Ребога Соге 2 обыкновенные СОМ-мыши (по-
следовательные) не работают. Они начнут работать после завершения
установки, а пока обходитесь клавиатурой или подключите Р8/2-мышь.
1.5.2. РеРога Соге: не удается войти в систему
квк гоо1 в графическом режиме
Включена система безопасности $ЕЫпих, При установке некоторым
файлам в домашнем каталоге гоо1 назначается ошибочный контекст без-
опасности. Для исправления этой ошибочки зарегистрируйтесь в консоли
как гоо1 и введите команду:
зеХЕИев /еСс/8есиг1Су/зе11пих/Е11е_сопСехГ-5 /гооЬ
1.5.3. Ошибка 8!дпа111
Возникает при сбое шины памяти вашего компьютера. Это может про-
изойти, если ваше аппаратное обеспечение не поддерживается Ыпих или
драйвер для этого аппаратного обеспечения работает некорректно. Спи-
сок поддерживаемых аппаратных средств находи тся по адресу ыхр: / /
Ьшз2111а.ге<ЗИае.. сош/Ьу?с.егС, а по адресу пт Ср: / /тлям .ЫСиХгагй.
п1/з1д11 вы сможете более подробно прочитать об ошибке 8г§па1 11.
1.5.4. Не определяется мышь
Если программа установки не смогла определить мышь, вы увидите со-
ответствующее сообщение. При этом вам будет предложено продолжить
установку в текстовом режиме, который не требует мыши. Проверьте,
работает ли мышь вообще (на другом компьютере).
1.5.5. Проблемы с переходом в графический режим
Программа установки Ыпих работает в графическом режиме. Если у вас
старая видеокарта, не поддерживающая разрешения 800x600, иди старый
монитор, вам придется запускать инсталлятор в режиме с низким разре-
шением. В ответ на приглашение Ьоог. : введите Хоигев — программа
установки будет использовать разрешение 640x480.
1.5.6. Проблемы при загрузке
ОС 1лпих может использовать разделы, которые расположены дальше
1024-го цилиндра, но не может загружаться с таких разделов. Поэтому,
если вы не можете создать Ыпих-раздел «ближе» к началу диска, создайте
небольшой раздел для точки монтирования /Ьбоб (не более 100 МБ),
который нужно разместить до 1024-го цилиндра. Второй вариант — за-
грузка с дискеты.
1.5.7. Проблемы с графическим экраном загрузчикв
1. ОКОВ: отредфййруйте файл 7Ьоок/дгиЬ/дгиЬ.сопЕ, закоммен-
тировав строку .чрЫхйшкще.
2. 1.П.О: отредактируйте файл 7Мс/1 Но. соп^, удалив строку
тенк^е=Лхю1/тек8а§е. Изменения вступят в силу после введения
команды НЮ.
1.5.8. Не загружается система X МЛпйспм
Зарегистрируйтесь в. системе ц введите команду зЬагтх. Если при за-
пуске X УУтбом? возникла ошибка, запустите конфигуратор системы
ХХУтйом/.
1.5.9. Я забыл пароль пользователя гоо1
Бывает... Перезагрузите компьютер и д строке приглашения загрузчика
Шо введите Ипих мпДе. Будет запущен однопользовательский режим. Для
изменения пароля введите команду раввиа гоот.
1.5.10. У меня больше оперативной памяти!
Иногда Ьших не может точно определить объем оперативной памяти.
Например, у вас установлено 128 Мбайт, а Етих видит только 64. Для
исправления этого в файл Мс/Шо.соп!: допишите строку:
аррепс!--- "л>е’Т!= ц 2 8М"
Для того, чтобы изменения вступили в силу, введите команду 11.Ю.
1.5.11. Не работают принтер или звуковая плата
В более ранних версиях Кеб На( Ыгшх настройка принтера происходила
при установке операционной системы. Теперь принтер и звуковую плату
нужно конфигурировать отдельно. В Неб На11.1'пих для этого служат гра-
фические конфигураторы гебкаГ-сопГф-рппиг и кпгкопГф соответствен-
но. В Рейота Соге — 8ув1ет-сопй^рг1п1ег и ^ухГет-сопП^-зоипбсагс!.
1.6. Как удалить Ыпих
Любой дистрибутив 1лпнх удаляется в два этапа:
1. Удаление загрузчика Бтнх. Проще всего восстановить оригинальный
загрузчик \УнккАУ5 98, введя команду ГФвк /тЬг в командной строке
1Уи1йож. Если у вас ТУшйож 2000/ХР, восстановить оригинальный
загрузчик помогут команды йхЬооС и йхшЬг — именно в таком по-
рядке. Удалить загрузчик 1.11,0 можно и с помощью самого 1,11.0: за-
регистрируйтесь как пользователь гооС и введите команду 1 Но
2. С помощью программы установки 1зпих удалите разделы 1,ших. Для
этого выберите тип установки «Установка» (I п.ьГаН), затем выберите
ручное разбиение диска, удалите Ьших-разделы, сохраните таблицу
разделов и перезагрузите машину, нажав Яе$е1.
1.7. Системы с двойной загрузкой
Прежде чем устанавливать на своем компьютере вторую операционную
систему, обязательно сделайте резервное копирование важных данных,
потому что процесс установки операционной системы включает в себя
переразбиение жесткого диска на разделы и форматирование созданных
разделов. Переразбиение жесткого диска необходимо, потому что 1.1 них и
\У1пбо\У8 используют разные файловые системы. Хотя существуют сред-
ства установки Еших в раздел ЕАТ/ГАТ32 — Ьт4У/т, но я не рекомендую
их использовать, т.к. в этом случае 1лпих работает крайне нестабильно
и медленно.
Рассмотрим два наиболее распространенных варианта установки не-
скольких операционных систем :
1. Вы устанавливаете 5УшЙохта 9х и Еших.
2. Вы устанавливаете \Мпс1ол> МТ, Майотта 9х и Еших.
1.7.1. Установка Ш1пйож& 9х и Мпих
Главное правило при такой установке заключается в том, что сначала
следует устанавливать Мпйо\у8 9х, и только после этого Еших. Дело в
том, что при установке Мпйой'в 9х перезаписывает главную загрузочную
запись МВЯ (МоуГег Воо! Кесон!) и загрузить Еших с диска вы уже не
сможете. При этом очень напрашивается следующий совет: создайте за-
грузочную дискету для Еших! Если вы в очередной раз переустановите
\У'1пс1о\У5. без этой дискеты загрузить Ыпих не удастся.
Что делать, если вы переустановили Мпйотта и Ыпих больше не загру-
жается:
♦ У вас есть загрузочная дискета для Ыпих. Загрузитесь, используя
эту дискету. Затем зарегистрируйтесь в системе как пользователь
гоо! и введите команду 11 До. Затем перезагрузите машину (команда
геЬооь).
♦ У вас нет загрузочной дискеты: используйте программу 1оа<Шп — ее
описание будет приведено ниже.
* Нет загрузочного диска и нет программы 1оа<1|т: переустановите Ыпих —
после установки ХУшбом/х, естественно. При установке Ыпих не фор-
матируйте разделы, и ваши данные останутся неповрежденными.
Оптимальным загрузчиком при данной схеме установки (УУшбомуз 9х +
Ыпих) будет ЫЪО. Я бы не рекомендовал использование каких-либо
посторонних загрузчиков, как бы стабильно они ни работали. Во время
инсталляции Ыпих программа установки спросит, куда устанавливать
ЫЬО — выберите МВК.
В случае деинсталляции Ыпих (после того, как вы уже удалили разделы
Ыпих) восстановить МВК. то есть удалить ЫЕО, поможет команда М1зк
/тЬг. При этом нужно использовать программу Мкк из комплекта за-
грузочного диска ХУтОохтБ.
1,7,2. Установка Штйоуге Эх,
МТ/2000/ХР и Ыпих
Первый способ
В этом способе используется загрузчик ИТЬоайег. Выполните установку
ХХ’шОочл 2000 в раздел а ЖтЙош 9х — в раздел РАТ/ЕАТ32. Не
забудьте приготовить четыре системных дискеты для восстановления!
Напомню, что если вы хотите установить ХУшсЬхуб 95, то ее нужно уста-
навливать первой, а потом ХУшОохта 2000. При установке ХУпккпук 98 и
ХУшбом^ 2000 порядок установки не имеет значения.
Устанавливать Ыпих нужно после установки ХУтйоте 20(Х). При этом не-
обходимо учесть, что раздел Ыпих должен находиться до 1024 цилиндра!
Это связано с «барьером 1024 цилиндра» — Ыпих может использовать
разделы, расположенные после цилиндра 1024, но не может загружаться с
таких разделов. В последних версиях Ыпих данная проблема устранена, но
рассматриваемый способ установки требует, чтобы вы создали раздел Ыпих
до цилиндра 1024 —: иначе вам придется загружать Ыпих с дискеты.
Еще раз напоминаю: обязательно создайте загрузочную дискету для
Ыпих. При установке ЫЬО выберите МВЯ — Ыпих перезапишет глав-
ную загрузочную запись. Далее загрузите с четырех загрузочных дискет
ХУтОо'лъ 2000 и выберите пункт «Йесоуег» в меню загрузчика и режим
«СотшапО тобе». Затем зарегистрируйтесь в системе как АОтпн.Мга!-
ог. Выполните команды НхЬоо1 и ПхшЬг — теперь ХУтбохте 2000 будет
нормально загружаться.
Утилиты ЯхЬооТ и ЯхтЬг используются а У^пйсздб 2000 для восстановления главной
V 1 загрузочной записи (М8Я)_ Команда йхтЬг практически аналогична команде МГвк
/шЬг в УИпс1о*8 9х.
Затем загрузитесь с системной дискеты Ыпих и войдите в систему как
гоо1. Откройте в любом текстовом редакторе файл /еьс/111о.соп±. В
начале файла есть ссылка на загрузочный раздел по умолчанию, напри-
мер, /йеу/Ма. Вам нужно изменить это значение на диск и раздел, в
который была установлена ОС Тлгшх. например /<1еу/МЫ.
Введите команду Шо и увидите, что загрузочный раздел не является
первым на диске — именно это вам и нужно. В этом случае загрузочная
запись \М1пс1о’йъ 2000 не будет повреждена. Запишите загрузчик Ыпих в
файл /ЬооТкесЬ.1пх:
# сИ 1^ = /<йем/ййЫ Ьй=512 соипТ-1 ог = /ЬоочзесС. 1пх
Теперь этот файл нужно скопировать на дискету;
# тонн Г -с тзйоз /сГ^/ЗгсГО /тп-С
# сору /ЬооТзесС . 1пх /гипс
# итоипЬ /тпС
Перезагрузите Ьших командой геЬооТ и загрузите 2000. Ско-
пируйте файл ЬсюТкесЬ , 1пх в корневой каталог диска С: и присвойте
ему атрибут геа<$~оп!у. Добавьте строку в файл Ьоос . 1п1:
С:\ ЬооЕ;зесС. 1пх ="Ыпих"
В результате при перезагрузке компьютера вы сможете загрузить Стих
с помощью МТоайег
второй способ
Существует более простой способ установки Ьших и любой операционной
системы семейства М1егозой Хк'шсктч — ХУшбоууя 9х, ЬГГ, 2000. Сначала
нужно установить все ОС АЭДщбр^з, а потом установить Ыпвх, При этом
вместо начального загрузчика буде т использоваться не М'Ьоайег. а 1Л .О
В этом случае вы получите двойное меню: сначала нужно выбрать между
загрузкой Ьших и а потом выбрать нужную вам ОС ^тйочуз —
9х или ЬГГ/2000—в зависимости от того, какую систему вы установили,
кроме Уйпботе» МТ. Второе меню — это как раз меню загрузчика МТЫайег.
Использование ГоаОПп
В этой книге я просто не мог не упомянуть о компактном загрузчике
1оа<Шп, который позволяет загрузит ь 1лпих из-под ПО 8 или УУтйохуз 95.
Если вы используете \У1п<1оич 98,1оа6Пп работать у вас не будет — нужно
перезагрузиться в режиме М8 008. Кроме этого, следует учесть, что при
использовании 1оа<Жп могут возникнуть проблемы с разделами ЕАТ32.
В этом случае создайте загрузочную дискету ВОЗ (ЕогтаЬ а: /а) я
в асНоехес.Ьа! этой дискеты пропишите !оагШп. Загрузить Ыпих из-под
операционных систем ДМпскшв 98, Ме или У/шйоху.ч 2000/\Т вам не
удастся в любом случае.
Использовать 1ошШп я рекомендую лишь в том случае, если при очередной
переустановке ЛУЫочуй оказался «затертым» МВК (а вместе с ним и 1.1ЕО).
а системную дискету 1дпнх вы не создали. Вызов программы 1оа<Иш имеет
следующий формат (описание параметров приведено в табл. 1.2):
1.оа<П1п <ядро> сгооЬ-корневаяюФС* <опции>
или
1оа<П 1п @файл_с„ндраметрами.
Параметры программы 1оабНп Таблица Е 2
Параметр Описание
Ядро Ядра, катаров вы используете. Если у вас из данный момент нет именно тоге ядра, которое было установлено, можно взять практически любое {лучше не самой древнее). Обычно ядро можно взять на компакт-диске с дистрибутивам Опих. Оно вам потребуется всего один раз — нужна только загрузиться и перезаписать 1!1о (команда Н|о)
ГО01= КРрняяаяФС Корневая файловая система, например ккЛ=/аеу/ЬбаЗ
ОПЦИИ Опции, которые будут переданы ядру во время загрузки. Обычно используется (р уда=погта(
©файлов „параметрами Если параметры, которые вы передаете !оаШ|П (д не ядру!) окажутся слишком длинными, то их можно записать в отдельный файл, а затем указать его имя в качестве параметра
Сонет: можно включить загрузку 1лпих в стартовое меню И08. Для этого
отредактируйте свой сап Лд. вуз следующим образом (см. листинг 1.1).
Листинг 1.1. Фрагмент файла солНд.зуз
МЕШ]
МЕМШТЕ^ТЮБ, Ьоай РОБ
МЕЖЛТЕМ^ЫМЦХ, БоаЗ Ь1пих
МЕШ0ЕКадЬТ=П02,5
[ЪIМУХ 1
1пзБа11=с: \1оаЙИп\ 1р^311п. ехе с; \1оа<Ш.п\кегпе1\Уш11пик
гао" -/<^еV/^1йаЗ го уда^погта!
[РОЙ]
; езй.ш предыдущий сопИд. вуз
1.8. Первый запуск Шлих
Если вы выбрали для входа в систему графический режим (или инстал-
лятор выбрал его сам, ни о чем не спросив), то вы увидите графический
экран с полем ввода имени и пароля. Зарегистрируйтесь в системе (лучше
под тем именем, которое завели для обычного пользователя: используйте
гоо1, только если обычных учетных записей у вас еще нет), и вы увидите
рабочий стол той оконной среды, которую установили в качестве среды
по умолчанию, внешне довольно похожий на рабочий стол ЮТшкшк
Как же так, вы ведь слышали, что настоящие линуксоиды работают в
среде командной строки? Сейчас найдем и командную строку.
Вы знаете, что консолью, или терминалом (для персонального компьютера
эти понятия—синонимы) называются устройства ввода-вывода, предназна-
ченные для общения системы с пользователем, то есть клавиатура и монитор.
В 1Ж1Х-нодобных системах существует понятие виртуальных консолей —
консолей, по очереди занимающих физически одни и те же монитор и
клавиатуру. На каждой из них может быть открыт отдельный сеанс р л боты
пользователя, запушены свои приложения, в общем, они представляют со-
бой почти независимые друг от друга вычислительные системы.
В бол ьшинстве дистрибутивов Ыпих по умолчанию обслуживается шесть
текстовых виртуальных консолей, седьмая — графическая. На ней вы и
находитесь. Чтобы переключиться с нее на первую текстовую консоль, на-
жмите комбинацию клавиш Ссг1+А1г+Г1 (на шестую — С1г1+АИ+Г6).
В ответ на приглашение программы 1о^гп: введите гоо1 и нажмите
<Ввод>. Потом введите пароль, и ваш сеанс работы в текстовой консоли
начат.
Информацию о сетевом имени машины, версии ОС, архитектуре можно
получить по команде штате -а .
Если учетной записи для обычного пользователя у вас еще нет, самое
время ее завести. Введите команду
#изега<3<3 < имя >
Если вам ответили «сотщапс! по( Гоипд», то, значит, в вашей системе эта
команда называется аадивег.
Вы добавили нового пользователя. Однако это еще не все, нужно указать
его пароль:
йраввиа < имя >
Теперь можно регистрироваться под новым именем на другой вирту-
альной консоли. Чтобы с текстовой консоли переключиться на другую
текстовую, нажмите комбинацию А11+Е'п, где п — число от 1 до 6. Вы
снова увидите приглашение
Зарегистрировались? Обратите внимание на строку приглашения. На
той консоли, где вы зарегистрировались как гоо1, она оканчивается сим-
волом а для любого обычного пользователя — символом $. Кроме
этого символа, приглашение обычно состоит из имени пользователя,
имени системы и текущего каталога» причем вид его можно изменить,
как только вы узнаете, как это делать. В дальнейших примерах строки,
начинающиеся с # или $, будут обозначать вводимую команду, а строки
без такого символа — ее сообщения.
Теперь убедитесь сами, что Ыпцк — действительно многозадачная и
многопользовательская система, то есть, в отличие от \Ушс1оадя, несколь-
ко пользователей могут работать одновременно. Спросите, кто сейчас
работает в системе, введя команду ^йо.
Вы увидите что-то вроде:
ГООС
туап.
г оо и
ССу1 сдата. И время начала сеанса ГООТ>
У Су 2 и время начала сеанса 1Уап>
:0 <дата и <на гра< время начала сеанса фической коясоли> ГООЬ>
НуК — это номер виртуальной текстовой консоли.
Если вы потерялись и хотите узнать, на какой консоли находитесь сейчас,
введите команду г ’ у. Если вы забыли, под каким именем зарегистри-
ровались на текущей консоли, введите команду иЬоат! . Команда «
покажет не только работающих сейчас пользователей, но и запущенные
ими задачи.
Листать экран можно комбинациями клавиш 5Ый+Р§Пр и 81нй4-Р$Пп.
Для копирования текста в командную строку используйте мышь: прота-
скивание мыши при нажатой левой кнопке выделяет фрагмент, щелчок
правой кнопки вставляет его в текущую позицию курсора на любой
виртуальной текстовой консоли.
Если вы хотите, не сходя с этой консоли, поработать под именем другого
пользователя, введите зи <им.я>. По умолчанию в качестве имени под-
ставляется гоой Обычно это нужно для того, чтобы быстро выполнить
какое-то администраторское действие. Возвращайтесь к работе под своим
именем по команде ех1г..
Чтобы переключиться обратно на графическую консоль, нажмите
АЙ + Е7.
•<гиИН
:|^3»?г*1вдк
□лгхлд, ,
VI» О
&м.п Пр®»® В*л. Здаижадщ • вадявоя
]роага .ХдаминФл Шла^и &домх
[ айЛ«И!1 5 -1 )<4&Я “ ]$
год*-. Г-Г.ух
« •ЛйфяЛякж
В : |О^ТШН«й.:.1ЭД»*ЧТр«/
; 05^«ат^.|е^.«ж.
.. .
^3 Т^иика:
? К«уйпзМ*т^«’
Й ф Яда(Ш:.Ней!и?5Ь-
I Мйст^ ва1кн1>«й<йи^
® 101би^<йдруд»ш*м
13 Ога»ЙЙВД!Н»Ч.Зб
Пропжиа ф^+шрройШл» дйегьвг
^сд^^ар мйстр«ж
Ф С]®т₽#ЩыЛ журедяы
СйстйШЛ млм?ор '.' :;'
Наг
Мл.г
Мае
Маг
Мзг
4!в
23
25
23
сгГ.йг/2
Г ИаЬз - .1 3
Рис. 7. 13. Окно виртуального терминала
^?|коИЙНДНДЯ СТ|ННя|и
^Ущ»^л^щуг^р«^7ъзмй догм.
] О
В графическом режиме тоже можно не только щелкать мышью по знач-
кам, но и вводить команды. Для этого запустите виртуальный терминал
(рис. 1.13) — графическое приложение, в окне которого можно работать
в режиме командной строки.
Количество виртуальных терминалов, в отличие от количества виртуаль-
ных консолей, не ограничено ничем, даже традицией.
Чтобы завершить сеанс работы на виртуальном терминале или на вирту-
альной консоли, введите команду ех1ь (на виртуальной консоли можно
также 1одоис) или нажмите комбинацию клавиш СШ+В.
Завершение работы одного пользователя не приводит к остановке всей
системы. Чтобы выключить машину, нужно с правами суперпользователя
отдать команду
# зИиЬгЗдап -И 19:00 (Конец рабочего дня]
При этом за несколько минут до указанного времени всем, кто работает в
системе, будет разослано предупреждающее сообщение «Конец рабочего
дня», после чего система будет корректно остановлена. Краткой формой
этой команды служит Иа1с, останавливающая систему сейчас же и без
предупреждения. Перезагрузиться можно командой геЬоос .
1.9. Стандартные сервисы Ыпих
Описание стандартных сервисов Ыпих приведу в виде таблицы (см.
табл, 1,3).
Стандартные сервисы ипих Таблица 1.3
Сервис Описание Нужен?
апасгоп, сгспй Планировщики заданий« запускающие по графику определен - ные программы Да
арптб Отслеживает состояние бйтдрей ноутбука, У вас стационарный компьютер? Тогда смело отключайте этот сервис, конечно, он вам понадобится, если у вад умный ИБП: тогда арий может кор- ректно завершить работу системы, если пропало напряжение, а батарея ИБП разряжена
аМ Еще один планировщик заданий
аи1о?в Средство автоматического монтирования сменных носителей (СОНОМ, дискета! Да
сйагдеп, сПагдеп-ир Внутренний сервис демона хтв(ф геяерирующийсймволы с опрйёд^нйым интервалом времени и посылающий его по сети
сризреес! Динамическое управление скоростью процессора
сире Система печати в Игах-подобных ОС (Сопттоп Ошх Рпп! Бузтет) Принтер у вас есть? Тогда она нужна
сирк-сопй д -беатоп Демон для конфигурирования сирз
0!а1б Автоматический дозвон к провайдеру
дрт Поддержка мыши в консоли Цпих Да
дззйр РВР-оервис, входящий в состав суперсервера хФеЮ (гя.11) и использующий авторизацию на КегЪ«ток-сервере
1Гйа Поддержка работы с инфракрасным портом
[щЬа1апсв Осуществляет балансировку прерываний на мнсгопроцессор* НЫХсистемах
[щегле! Устанавливает соединение с провайдером при загрузке систе- мы и Обрывает его при завершении работы
[рТаЫез Межсетевой экран
НаЩаегпоп Собирает информацию об оборудовании
кеутаЫе Загружает раскладку клавиатуры, указанную в файле /е!с/зузс- адбд/кеуЬоагб Да
И одр Протоколирует сообщения ядра в файле /чаг/фд/кетпе! Да
кибги Ищет изменения а аппаратной конфигурации компьютера. Вполне может запускаться вручную. Обычно запуск коски не- обходим один раз — после установки системы, потом его можно отключить и запускать только при установке новых устройств в компьютер (или удалении ранее установленных)
![за Демон, собирающий информацию о ресурсах сети М[егозой
ПпихсопТ Организовывает выполнение различных задач конфигурирова- ния при загрузке системы
Продолжение габл. 1.3
Сервис Описание Нужен?
тйтопйог Мониторинг и.управление программным НАЮ
пат ей Сервер 0Ы5
пейз Обеспечивает монтирование удаленных сетевых файловых систем (Т!Р5, 5МВ. ЫСР(1^ЗД1ОД|
пе'луогк Поддержка сети. Этот сервис должен быть включен всегда, по- скольку даже графическая система и система в печати в Ьпих нуждаются в нем Да
пШоск Механизм блокирования файлов ^Г5
пшпкэск Включение режима клавиатуру Мот Коек
акИйаетсп Поддержка ОК! Дй-принтерое
РСГПС1Э Поддержка устройств РСМС1А
ропгодр Необходим ДЛЯ приложений, использующих удаленный вы- зов процедур ЙРС. Нужен для НРБ и ЙИ5 (№адотк (лТогша^оп Бегущее)
р$йсс: Служба учета процессов
пИрЙ, ргоНрй, и!Ц-йрй, аепйтаЯ, роатГи УУеЬ-, РТР- и почтовые серверы. Пока включать их не нужно, поскольку они не настроены и будут дополнительной «дырой» в безопасности зашей системы
гапйот Улучшает качество генерации случайных чисел Да
галйеисев Не вдаваясь в технические подробности, просто отключите этот сервис
геайаПезб, геа йа!1еайеаг!у Сервисы, позволяющие выполнять предварительную загрузку программ в оперативную память
тПпсй В дистрибутивах Ней На! и Рейога — демон, который периода- чески подключается к серверу Лей На; на предмет обновлений
зтагШ Мониторинг жеских дисков, с использованием протокола Б.М.А.Р1.Т
ваз1аи!ПЙ Обработка запросов аутентификации
срата35а5з1п Сервис, предназначенный для борьбы со спамом
еаМ Сервер, предназначенный для безопасного удаленного админи- стрирования системы
зуаюд Служба ведения системных журналов
сп* Если вы планируете работать а сети М1сгО5оТ! включите этот сервис, но только после его настройки, описанной в админи- стративном разделе. А пока отключите Да
ИЙПЬ|ПЙ Используется для аутентификации БатЬа-лользоватвлей в до- мене МТ
хй Сервер шрифтов, нужен для системы X Шпйоиг Да
иатей Сервер {Ж8
урЬта Служба, используемая для обеспечения доступа к К!3-серверу
уит Сервис; осуществляющий обновление системы в автоматичб’ ском режиме
Узнать, какие сервисы установлены у вас в системе, можно воспользовав-
шись системной утилитой 5уж1ежсрнЙ8'5епчсе8 (пункт меню Системные
параметры -> Настройка сервера Службы) — это в Гейога Соге. Кроме
того, можно воспользоваться консольной утилитой пиукт.
1.10. Справочная система
«Родной» для 1'Х1Х справочной системой, аналогом Справки У/Ги^оу/к.
служат страницы интерактивного руководства (тапиа1ра§ез, тап-стра-
ницы). Ими снабжена практически каждая программа, важный конфи-
гурационный файл или системный вызов. Это обычные текстовые фай-
лы, содержащие сведения о назначении, синтаксисе, опциях команды,
формате файла, примеры их применения, имена и СВЬ разработчиков.
Обычный дистрибутив содержит тысячи страниц такой документации.
Просматривают ее командой тан. Например, таи тап — это вызов
справки о самой команде таи.
При установке каждого программного пакета включенные в его состав
тап-страницы копируются в стандартные каталоги, так что программа тзп
легко их находит. В этих каталогах страницы сгруппированы в секции по
темам. Перечислим эти секции в порядке просмотра программой шап:
1 Команды пользователя
8 Системные команды
2 Системные вызовы
3 Библиотечные вызовы (подпрограммы)
4 Устройства
5 Форматы файлов
6 Игры
7 Разное
9 Ядро (кегпе1 щГегпак)
Так что, если вас интересует справка не о консольной команде ехаХ, а о
системном вызове ехг/(), запрашивайте ее командой тап 2 ех1л.
Чтобы ознакомиться с содержанием раздела, введите команду
тап <номер_раэдела> 1л.1го,
Вот несколько самых употребительных команд управления выводом гвап-
справки на экран:
<Ввод> вывод следующей строки текста
<Пробел> вывод следующего экрана текста
<О> выход из программы
</>образен<Ввод> поиск образца
<1Ч> повторение поиска.
Альтернативой команде тап служит гипертекстовая справочная система
нт Го. Ссылки обозначены звездочками (*), и перемещает по ним клавиша
<ТаЬ>. Чтобы пройти по ссылке, нажмите <Ввод>. Чтобы перейти на
следующую или предыдущую страницу, нажмите <?<> или <Р> соот-
ветственно. Чтобы попасть на один уровень иерархии страниц вверх,
нажмите <О>. И клавиша <0> завершает работу с программой шГо.
Сверхкраткую (одна строка) справку о командах дает команда
ыЬаСзя <ключевое_слово>
Для работы ей нужна база данных о системных командах, создаваемая
программой такемйаН*,.
Если точного имени команды вы не знаете, но примерно догадываетесь,
какие фрагменты слов могут встретиться в ее имени или кратком описа-
нии, вам поможет команда аргороя, производящая поиск в той же базе
по фрагментам слов. Например, отдав команду
$ аргорон сопгтд
вы получите список команд, имеющих отношение к конфигурированию
системы и различных служб.
Команда тап с ключом ~к тоже умеет выполнять поиск по ключевым
словам. Если вы хотите узнать, какие программы имеют отношение к
некоторому системному файлу (конфигурационному или журнальному,
например, /еЬс/развшЗ), введите команду
$ тап -к раззий
Вы получите список тап-страниц по командам, функциям, формата
файлов и т.п., на которых встречается слово «ра^у-сЬ. В общем, поиск
информации в справочной системе ИМХ очень похож на поиск в Ин-
тернете: находите что-то похожее и переходите по ссылкам все ближе к
истине.
Есть и команда Ье1р: она выводит справку о встроенных командах ко-
мандной оболочки (о командных оболочках сказано в гл.З).
Наконец, правильно написанные команды понимают ключи --Ье1р и
-и8;ще, с которыми выдают краткую справку о себе.
К сожалению, многие страницы документации на русский язык пока
не переведены. Ьтих — ОС некоммерческая, и переводом занимаются
добровольцы на общественных началах. Может быть, со временем к ним
присоединитесь и вы? А пока загляните на
Ьсср: / ИпихзЪаге . ги/рго) есСз/Сгапе / з.пйех. ЪСт.1.
ФАЙЛОВАЯ
СИСТЕМА ШУХ
ВИДИМАЯ СТОРОНА
ФАЙЛОВОЙ СИСТЕМЫ
---ИЗНАНКА ФАЙЛОВОЙ СИСТЕМЫ
л СОЗДАНИЕ И МОНТИРОВАНИЕ
ФАЙЛОВЫХ СИСТЕМ
1ДЫМХ полное руководство
2.1. Видимая сторона файловой системы
С точки зрения пользователя, файловая система — это логическая струк-
тура каталогов и файлов. В отличие от ХУтскнте, где каждый логический
диск хранит отдельное дерево каталогов, во всех ОМХ-подобных систе-
мах эта древовидная структура растет из одного корня: она начинается
с корневого каталога, родительского по отношению ко всем остальным,
а физические файловые системы разного типа, находящиеся на разных
разделах и даже на удаленных машинах, представляются как ветви этого
дерева.
2.1.1. Имена файлов и каталогов
Имена файлов и каталогов могут иметь длину до 255 символов. Символы
«/» (слэш) и символ с кодом 0 запрещены. Кроме того, ряд символов имеет
специальное значение для командного интерпретатора, И их использова-
ние не рекомендуется. Это символы:
- ! @ # $ & % * ( ) (] { } ' " \ : ; > < ' пробел
Если вам все-таки нужно употребить один их этих символов в имени фай-
ла, то при указании его имени в команде этот символ нужно экранировать
знаком «\» (обратный слэш) или заключать все имя в двойные кавычки.
Например, вы хотите вывести на экран командой сас содержимое тек-
стового файла с именем ту С11 е, содержащим символ пробела:
$ саС ту Е11е # неправильно
саг : ту: Мо зисЬ от <31тесГ.огу
са^;: И.1е: Ио зисЪ С11е от сНгесСогу
$саб "ту # правильно
Привет’
$саС шу\ Ше # правильно
Привет!
Знак # — это символ комментария для командного интерпретатора ЬааИ,
о котором подробнее рассказано в главе 8. Командный интерпретатор
игнорирует все символы от этого знака до конца введенной строки.
Возможность комментировать не слишком полезна при вводе команд с
консоли, но неоценима при написании командных сценариев, о которых
мы еше будем говорить.
Заметьте, что точки среди специальных символов нет, и имена вроде
СИ15.1в. а. С.ех*;. Ше .сопЕаЗпХпд. СЬе. гатоиз. зНгЕпд .Ие11о .жпТб
допустимы и широкд распространены. Часто последняя отделенная точ-
кой часть имени используется подобно «расширению имени» в ЛУшйоч/к,
обозначая файл определенного типа, но это обозначение несет смысл
только для человека. Так, человеку имя файла 1уап_Ъотпе. Саг. дг под-
сказывает, что это домашний каталог пользователя хузп, упакованный
архиватором 1аг и сжатый компрессором §г!р.
Если имя файла начинается с точки, то этот файл считается скрытым:
некоторые команды его «не видят». Например, введя в своем домашнем
каталоге команду просмотра содержимого каталога 1д с ключом -а,
означающим «показывать скрытые файлы», вы увидите больше файлов,
чем введя ту же команду без ключей.
[.тих различает регистр символов в именах файлов: так, в одном каталоге
могут находиться два разных файла НЕАЕМЕ и йеайте. Кстати, файлы с
подобными именами обычно содержат информацию, действительно до-
стойную прочтения.
Имена каталогов строятся по точно тем же правилам, что и имена файлов.
Полным именем файла (или путем к файлу) называется список вложен-
ных друг в друга каталогов, заканчивающийся собственно именем фай-
ла. Начинаться он может с любого каталога, потому что в древовидной
структуре между любыми двумя узлами существует путь. Если этот спи-
сок начинается с корневого каталога, то путь называется абсолютным.
Если с любого другого — то относительным (по отношению к этому
каталогу).
Корневой каталог обозначается символом «/» (слэш), и этим же симво-
лом разделяются имена каталогов в списке. Таким образом, абсолютным
именем файла ЕЕАЮМЕ в домашнем каталоге пользователя йен будет
/Гюте/йеп/НЕАПМЕ.
В каждом каталоге существуют два особых «подкаталога» с именами
«две точки» и «точка». Первый из них служит указанием на однозначно
определенный родительский каталог, а второй — на сам данный каталог.
Для корневого каталога, у которого нет родителя, оба эти «подкаталога»
указывают на корневой каталог. С помощью этих имен образуются отно-
сительные имена файлов. Так, именем вышеупомянутого файла кеавме
относительно домашнего каталога /Ноте/ 1тап пользователя IV ап будет
. . Меи / К.ЕА.ОМЕ .
2.1.2. Назначение основных системных каталогов
В системных каталогах находятся файлы, необходимые для управления
и сопровождения системы, а также стандартные программы. Их имена,
расположение и содержание почти одинаковы почти во всех ОС Еших.
поэтому эти каталоги называют также стандартными. Впрочем, на данный
момент эпитет «стандартные» отражает скорее благие пожелания, чем
действительность: иерархия каталогов одинакова только для дистрибути-
вов, связанных единством происхождения, а исторически сложившиеся
различия создают опасность несовместимости разных дистрибутивов.
Стандарт файловой иерархии для СМХ-подобпых систем разрабатывает
группа добровольцев, и с его текущей версией можно ознакомиться по
адресу ИЬЬр: //шт.раЕИпате. сот/ Г Ив.
Краткое описание основных каталогов линии Веб На1 и Гебога Соге
сведено в табл. 2.1.
Стандартные каталоги Таблица 2.1
Каталог Назначение
/Ып Основные программы, необходимые для работы в системе: командные оболочки, файловые утилиты и т,л.
/кЬю Команды для системного администрирования, з также программы, выполняемые в ходе загрузки
/Ьоо1 Файлы, необходимые для загрузки системы (образ ядра)
/Ноте Домашние каталоги пользователе й, кроме гоо!
/Оеч Файлы устройств
/ею Файлы настроек: стартовые сценарии, конфигурационные файлы графической системы и различных приложений
/ЙЬ Системные библиотеки, необходимые для основных программ, и модули ядра
/!03<+(О1)Пб Восстановленные после аварийного размонтирован™ части файловой системы
,гтеФа Сюда обычно монтируются съемные носители: компакт-диски ЛавН-накопители
/тп( Временные точки монтирования жестких дисков. Использовать этот каталог необя- зательно: подмонтировать файловую систему можно к любому другому каталогу
/орг Дополнительные пакеты программ. Если программа, установленная сюда, больше на нужна, то достаточно удалить ее каталог без обычной процедуры деинсталляции
/ргос Виртуальная файловая систама, дающая доступ к информации ядра (например, выведите на экран файл /ргос/сроЫо). Другие файлы в этом каталоге в каждый мо- мент времени содержат информацию о выполняющихся в этот момент программах
/гоох Домашний каталог суперпользователя. Домашние каталоги всех остальных могут Находиться на отдельном разделе, но /гост должен быть я корневой файловой си- стеме, чтобы администратор всегда мог войти в систему для ремонтных работ
/тр Временные файлы
/гаг Место меняющиеся данные: системные журналы и протоколы приложений, замки, почтовые ящики, очер&ди печати и т.п.
/изг Практически асе остальное: программы, исходные коды, документация. Сюда по умолчанию устанавливаюгся новые программы
Скорее всего, в ваш Дистрибутив включена шап-страница Ыег, подробно
описывающая назначение этих каталогов и их основных подкаталогов.
2.1.3. Типы файлов
С точки зрения С .XIX-подобных ОС, файл представляет собой поток или
последовательность байтов. Такой подход позволяет распространить по-
нятие файла на множество ресурсов не только локального компьютера,
но и удаленного, связанного с локальным сетью любого рода. Доступ
к любому такому ресурсу осуществляется через универсальный интер-
фейс, благодаря чему запись данных в файл, отправка их на физическое
устройство или обмен ими с другой работающей программой происходит
аналогично. Это очень упрощает организацию данных и обмен ими.
В ОС Едпих можно выделить следующие типы файлов:
♦ обычные файлы — последовательность байтов (текстовые документы,
исполняемые программы, библиотеки и т.п.);
♦ каталоги — именованные наборы ссылок на другие файлы;
♦ файлы физических устройств, подразделяющихся на:
• файлы блочных устройств, драйверы которых буферизуют ввод-вы-
вод с помощью Ядра и
• файлы байт-ориентированных, или символьных, устройств, по-
зволяющих связанным с ними драйверам выполнять буферизацию
собственными средствами;
• символические ссылки (аутПпк, зутЬоНс Ник);
♦ именованные каналы (патеб ргреа);
♦ гнезда (зоскеГз).
Обычные файлы и каталоги
Свойства (атрибуты) файлов и каталогов можно вывести на терминал с
помощью команды 1а с ключом -1:
$15 -1 /ЬотеМеп/ЙЕАОМЕ
-ГШГ-ХГ-- 1 йеп изегв 0 ЕеЬ 14 19^08 /Ноте/Йен/КЕАОМЕ
Что это за свойства?
Первый символ выведенной строки, в данном случае дефис, обозначает
тип файла. Другие значения этого свойства: с! — каталог, Ъ — блочное
устройство, с — символьное устройство, 1 — символическая ссылка, р —
именованный канал и 8 — гнездо.
Следующие 9 символов означают права доступа к файлу. Они делятся
на три тройки, обозначающие права: владельца, членов его группы и
всех остальных. Внутри каждой тройки может присутствовать или от-
сутствовать: право чтения (г), записи (ху) и исполнения (х, от ехеси(е).
Отсутствие права обозначается символом дефиса. С файлом ЯЕАОМЕ из
нашего примера владелец (в общем случае, пользователь, создавший его)
имеет право делать все, что угодно; члены его группы — только читать и
запускать файл на выполнение; все остальные — только читать.
О следующем свойстве, количестве ссылок на файл, будет сказано в па-
раграфе о символических ссылках.
Далее указаны имя владельца файла и имя его группы; размер файла в
байтах; дата и время последней модификации и имя файла.
Для каталога вывод команды к выглядит так же, но значение некоторых
свойств отличается.
$1я -1 ~а /Ъоте/йеп
сЗгих-----3 беп озегз 4096ГеЬ 14 19:02 .
бгихг-хг-х 4 гооС гоок 4096РеЬ 02 11:32 ..
. .1
Ключ -а нужен, чтобы увидеть псевдоподкаталоги «.» и «..» (их имена
начинаются с точки, поэтому эти файлы скрыты).
Бит чтения в правах доступа означает право просматривать содержание
каталога, записи — право создавать и удалять файлы в каталоге, испол-
нения — право переходить в этот каталог (делать его своим текущим
каталогом).
Файлы физических устройств
Все подключенные к компьютеру устройства понимаются операцион-
ной системой как файлы: вывод информации на терминал, печать на
принтере, отправка почты — все это, с точки зрения ОС, есть запись в
файл. Технически файл устройства — это коммуникационный интерфейс
драйвера, ведающего взаимодействием с этим устройством. Большинство
таких файлов располагается в каталоге /деу.
Загляните в этот каталог, введя команду 1$ -1 /дет. Вывод этой команды
займет несколько экранов, что создает повод для знакомства с коман-
дой-фильтром тоге, выводящей поступающие к ней на вход данные по
одному экрану за раз:
$ 1в -1 | тоге
Чтобы увидеть следующий экран, нажмите пробел; чтобы прервать ра-
боту команды — С1г!+С. О символе вертикальной черты, разделяющей
команды 1я и тоге, подробнее сказано в п. 3.3.1.
Об именах устройств, соответствующих разделам жесткого диска, сказано
в главе 1. В следующей таблице приведена краткая справка по именам
других часто используемых устройств. Символ Ы означает номер устрой'
ства в группе однотипных с ним устройств.
Наиболее часто используемые стандартные имена устройств Таблица 2.2
Файл Устройство
Ли1! Пустое устройство. Все данные, выводимые в него, просто исчезают. Удобно использовать его для вывода ненужных сообщений
С0П8О1В Системная консоль, т.е. физически подключенные клавиатура и монитор
пум Пользовательская (виртуальная) консоль. Ыпих поддерживает до в таких консолей, для переключения между которыми служит комбинация клавиш АП+Гп, где п — число от 1 до 6
ри/м Виртуальный терминал. Программа графического режима, в окне которой можно работать как в консоли
тоисеМ Мышь
ашФоМ Звуковая карта
Пу8М Последовательный порт. Файл /Реу/пуЗО соответствует порту СОМ1 в М5-0ОЗ, /беч/Пу81 — порту С0М2
1рМ Параллельный порт
сиаМ Специальное устройство для работы с модемом
е!ЬМ Сетевая плата
ЙМ Дисковод для гибких дисков. Первому, то есть А:, соответствует /беч/ЙО, для В: используется имя /РеуДЩ
ПйхМ Жесткий диск с интерфейсом ЮЕ, где х — буква, обозначающая номер такого диска (начиная с а), М — номер раздела надиске
Жесткий диск с интерфейсом 5С31
Вместо размера файла команда выдает два числа. Это так называемые
старший и младший номера устройства. Старший номер несет информацию
о драйвере, к которому относится данный файл, а младший номер указы-
вает, к какому именно из однотипных устройств следует обращаться.
Жесткие и символические ссылки
Жесткая ссылка является просто другим именем для исходного файла.
После создания такой ссылки ее невозможно отличить от исходного
имени файла. «Настоящего» имени у файла нет, точнее, все такие име-
на будут настоящими. Команда 1$ показывает количество именно таких
жестких ссылок. Удаление файла по любому из его имен уменьшает на
единицу количество ссылок, и окончательно файл будет удален только
тогда, когда это количество станет равным нулю. Поэтому удобно ис-
пользовать жесткие ссылки для того, чтобы предотвратить случайное
удаление важного файла.
Создадим жесткую ссылку на файл К.ЕАОМЕ и посмотрим, что измени-
лось в его свойствах:
$ 1 п /Иоте/Йеп/ЙЕАПМЕ /Иоте/йен/геа<5те_Хсю
$1:з -1 /Ноте/беи/КЕАИМЕ
-ГТОСГ-ХГ-- 2 йен цзеге 0 ЕеЬ 14 19:08 /Ьоте/Йеп/ЙЕАСМЕ
Жесткую ссылку можно создавать в любом каталоге, но обязательно на
том же физическом носителе (то есть в той же файловой системе), что и
исходный файл. О причине этого будет сказано в п. 2.2.1,
Другой тип ссылок представляют собой символические ссылки. По на-
значению они аналогичны ярлыкам в ОС ^шс1о«га: указывают на файл,
расположенный где угодно (например, на съемном носителе), и после
удаления такого файла или размонтирования съемного носителя стано-
вятся бесполезны.
Символическая ссылка создается той же командой 1п с ключом -в:
$1п -з /Ьоте/беп/ЙЕАВМЕ /лоте/беп/сЭо.поб. геайте
$1з -1 /Ьоте/йеп/йо.по!.геайте
Хгмхгюсгих 1 йен изегэ 16 Рей 14 19:17 /Ъоте/йеп/йо.поб.
геайте -> /Иоте/йеп/НЕАПМЕ
В поле имени файла после стрелки указано его настоящее имя. Права
доступа у всех символических ссылок одинаковы и не значат ничего:
возможность доступа к файлу определяется правами исходного файла.
Заметьте, что в отличие от файла-оригинала файл-ссылка имеет ненулевую
длину: в нем хранится абсолютное имя исходного файла. Попытайтесь
вывести файл-ссылку на экран с помощью команды саг, и вы увидите
содержание исходного, пустого, файла:
$ саб /Иоте/йеп/йо.тюб.геайте
$
Значение самой ссылки, то есть имя файла, на который она ссылается,
можно узнать с помощью команды геабНпк.
Символические ссылки на каталог создаются и выглядят точно так же,
как символические ссылки на обычный файл. Можно создать и цепочку
ссылок на ссылки: ядро ОС проследует по всей цепочке и в итоге под-
ставит вместо ссылки имя исходного файла.
Можно даже закольцевать такую цепочку:
$ СоисЬ а1
$ 1п -в а1 а2; гш а1
$ 1п -в а2 а!
$ 1з “1 а? # это шаблон имени. Ему соответствуют все имена
из двух букв, первая «а»
а1 -> а2
а2 -> а!
$ саЪ а!
саС: а1: То о тапу 1еуе1з оЕ вутЬоНс Пика
Практический смысл этого упражнения — убедить вас в том, что Еших
корректно справляется с разрешением ссылок даже в намеренно некор-
ректной ситуации.
Символическая ссылка на каталог может участвовать в образовании пол-
ного имени файла, но есть одна тонкость; по ссылке нельзя проследовать
обратно в направлении корня дерева каталогов. Вместо псевдоподкатало-
га «..» подставляется родительский каталог каталога-оригинала. Так, если
в домашнем каталоге пользователя гУап есть ссылка на домашний каталог
пользователя йен, то путь /1юте/1Уап/!1пк_1о_с1еп_1к5те/.. эквивалентен не
/Ьоше/щап, а /Ьоте/беп/.., то есть фоте.
Именованные каналы
Этот тип файла еще называется буфером Г1ЕО (Е(т 1п — Нт Ои<).
Через файлы такого типа два независимых процесса (две работающих
программы) могут обмениваться данными: все, что записано в файл одним
процессом, может быть прочитано оттуда другим. Именованный канал
создается командой ткПГо.
Гнезда
Механизм гнезд (сокетов, зоскеГа) впервые появился в версии 4.3 В8П
СМХ (ветвь С.ХЧХ, начавшая развиваться в калифорнийском универси-
тете Беркли). Позже он превратился в одну из самых популярных систем
сетевого обмена сообщениями, реализованную во многих, не только
иШХ-подобных, операционных системах. В честь создателей этот меха-
низм до сих пор называют Вегке1ёу БоскеГз.
Собственно гнездо — это абстрактная конечная точка сетевого соеди-
нения. Процесс отправляет данные в сеть, записывая их в файл гнезда.
При этом процессы, установившие связь через пару гнезд, могут быть
запущены как на разных компьютерах, так и на одном,
Межпроцессный обмен через гнезда используется такими стандартны-
ми компонентами Стих, как служба учета $у$1о§ и оконная система X
Х'/шскул'.
2.1.4. Команды работы с файлами и каталогами
Предварительно замечу, что командой в ОС 1.1 пах называется все, что
может быть выполнено: исполняемый файл, встроенная команда текущей
программы и даже формируемая на ходу последовательность символов.
Синтаксис обычной команды:
имя„команды [короткивыключи] (длинные_ключи] [аргументы],
где в квадратные скобки взяты необязательные данные. Ключи можно
указывать в любом порядке, разделяя их пробелами. Аргументы тоже
отделяются друг от друга пробелами.
Имена коротких ключей, или опций, состоят из одной буквы, перед
которой стоит символ «-» (дефис). У ключа может быть свой аргумент.
Короткие ключи, у которых нет аргументов, можно соединять под одним
дефисом: так, команда 1 в -1 ~а -а эквивалентна команде 1з -1а<3.
Имена длинных ключей — это осмысленные слова, перед которыми стоят
два символа «-» (дефис). Большинство команд понимают ключи -йе1р и
--икаве, требующие вывести краткую справку об использовании команды.
Необязательный ключ «--» сигнализирует об окончании списка ключей
и начале аргументов.
Справку о ключах и аргументах команды можно получить по команде
тап.
Текущий каталог
Текущий каталог — это каталог, от которого отсчитываются относитель-
ные пути. В каждый момент времени с каждой работающей программой,
в том числе с командной оболочкой, связан единственный такой каталог.
Узнать, какой каталог сейчас является текущим, можно с помощью ко-
манды рч’й без аргументов.
Сменить текущий каталог можно командой
ей [новый_каталог]
Для смены текущего каталога на домашний каталог пользователя можно
вместо имени нового каталога указать специальный символ ей ~.
Разрешается переходить также в псевдоподкаталоги «.» и В первом
случае ничего не изменится, а во втором текущим каталогом станет ро-
дительский.
Просмотр содержимого каталога
Уже знакомая команда 1а [ имя._.ката по га ] выводит его содержимое
на экран. Если не указывать имя каталога, команда выведет содержание
текущего каталога.
Вместо имени каталога можно указать шаблон имен файлов: например,
1з ту * покажет все файлы и подкаталоги, имена которых начинаются
с «ту».
Подробнее об аргументах и ключах команды Ь (как, впрочем, и любой
другой команды) можно узнать у справочной системы, набрав команду
там 1з.
Создание и удаление файла
Создать пустой файл можно командой
Соисп <имя_файла>
Вообще-то она предназначена для того, чтобы для всех заинтересованных
программ (например, утилиты сборки проекта таке) файл выглядел новее,
чем на самом деле: она меняет время последнего изменения файла на текущее
время. Но если файла с таким именем не существует, то она его создаст.
Текстовые файлы можно создавать, вводя текст с консоли:
$сат > Ье11о.ког1<3
Привет’
Оказывается, команду са1 можно заставить не только выводить файл на
консоль, но и вводить с нее. Это достигается перенаправлением ввода-
вывода, о котором подробнее будет сказано в главе 8. В таком режиме
команда са1 считает своими входными данными поток байтов, поступа-
ющий с клавиатуры, и выводит его в указанный файл. Иными словами, в
файл записывается все, что вы после Этой команда введете с клавиатуры.
Чтобы закончить ввод, нажмите С1г1+О.
Если файл с указанным именем существует, то команда саС перепишет
его. Чтобы вместо этого добавить данные в конец файла, перенаправьте
ее вывод с помощью символов >>:
$саС >> Ие11о.^ог1й
Каталог создается командой
тксИг <имя_каталога>
Чтобы операция создания файла или подкаталога прошла успешно, вы
должны иметь право записи в каталог, в котором вы его создаете.
Удалить пустой каталог можно командой
гпкИг <имя„..к=1талога>
Удаляется файл командой
ггп <имя__.файла>
При этом наличие прав на запись и даже чтение этого файла не требует-
ся: достаточно иметь право на запись в каталог, где находится этот файл.
Ключи команды гт:
• -I: требует подтверждения удаления для каждого удаляемого файла.
Если вы заказали удаление группы файлов (например, по шаблону
имени гш сИегпоутк*), то среди них может оказаться файл, который
вам еще нужен: безопаснее применить ключ -к Подтвердите удаление
каждого файла или откажитесь от него, введя символ У или К соот-
ветственно;
♦ -Г : не запрашивать подтверждения, не выводить сообщений об
ошибках. Если указаны оба ключа -( и -Г, то срабатывает последний
укачанный;
* -г : рекурсивное удаление каталога со всеми его подкаталогами. Не-
пустой каталог можно удалить только так.
Копирование и перемещение файла
Файл копируется командой ср. Формат этой команды:
ср [ключи] <исходныи_файл> (<файл_назначения> | <каталог_
назначения:»}
Полезные ключи команды ср:
* -I : требовать подтверждения перед перезаписью существующего
файла;
♦ -Г : не требовать подтверждения;
♦ -г : рекурсивно копировать каталог со всеми подкаталогами;
♦ -а : сохранять атрибуты файла;
• -й ; копировать символические ссылки вместо файлов, на которые они
указывают;
♦ -8 : создавать символические ссылки вместо копирования (-1 — жесткие);
♦ -и ; не переписывать существующий файл, если он модифицирован
позже;
♦ -х : игнорировать подкаталоги, расположенные в других файловых
системах.
Кстати, команда со/ с перенаправленным выводом тоже может скопиро-
вать файл:
$саГ. Ъё11о.иог1й > сору. .кеИо.-могХй
Команда шт перемещает или переименовывает файлы. Формат команды:
ту [ключи] <исходный„файл> [ <файл_на.зцачения> 1
<каталог„назначения>)
Ключи -I, -Г имеют тот же смысл, что для команд ср и гтп.
Просмотр текстовых файлов
Перед тем, как просматривать файл, неплохо было бы убедиться, что он
действительно является текстовым, то есть содержит только печатные
А8СП-символы. Для проверки типа файла служит команда
М1е <имя_файгга>
Если ее ответ содержит слово «1ехЪ>, то файл можно безопасно вывести
на терминал. Вывод двоичного файла может сбить кодировку так, что
вместо набираемых на клавиатуре символов вы увидите черт знает что.
Если это все же случилось, введите вслепую команду
$ ТриЬ генеС
(или, если вы работаете в графическом режиме в окне виртуального тер-
минала, выберите в его меню команду Терминал ] Спрос и очистка для
среды (ЭЬЮМЕ или Ейй | Кеве! & С1еаг Тегтша! для среды КЭЕ).
Кроме уже упомянутой команды са1, для вывода файла на терминал
служат команда
гпоге <имя_файла>
и ее улучшенный вариант 1еяя.
Команда-фильтр тоге разбивает поток своего вывода на порции разме-
ром в экран и ожидает ввода пользователя для отображения следующей
порции. Чтобы увидеть следующую строку, нажмите <Ввод>; чтобы
увидеть следующий экран, нажмите <пробел>; чтобы прервать работу
команды, нажмите <О> или СЫ+С.
Утилита 1е85 позволяет листать выводимый файл не только вперед, но и
назад (клавишами Р§Пп и Р^Пр), перемещаться к указанному месту в
файле, искать по образцу и дает еще много полезных возможностей. В
общем, тап 1е88.
Если интересующая вас информация находится в конце файла (напри-
мер, вы хотите просмотреть журнал системных сообщений теввадез в
каталоге /маг/1од, чтобы узнать, что именно только что пошло на-
перекосяк), то вам поможет команда
НаП [имя„_файла] ,
где — число выводимых строк файла, считая от последней. Коман-
дой
ЪеасЗ [-И] [имя_файла]
можно просмотреть, наоборот, только первые К его строк. Значение Ы
по умолчанию равно 10.
Если вы хотите просмотреть не весь файл, а только те его строки, которые
содержат заданный фрагмент текста, используйте команду-фильтр §гер.
Например, я хочу сменить клавишу переключения раскладки клавиатуры
в графическом режиме. Я знаю, что строки конфигурационного файла
/еьс/Х11/хогд.сопГ, имеющие отношение к клавиатуре, содержат
фрагмент ХКВ... а может, ХкЬ или хкЬ? Неважно:
$ дгер -1п хкЬ /еСс/Х11/хогд.сопС
[. . .]
65:ОрЫоп "ХкЬЬауоиЬ" "из,ги"
66: ОрСтоп “ХкЬОрЫопз" “дгр:зЫЕС_Содд1е,дгр_„1ей:зсго1.1*
Я указал ключи: -ц требующий игнорировать различия регистра в образце
для поиска и файле, и -п, требующий выводить номера строк, в которых
встречается образец хкЬ.
Для всех команд ключи без аргументов можно соединять: запись нп эк-
вивалентна записи Ч -в.
Редактирование текстовых файлов
Вышеприведенный пример показывает, что переключением расклад-
ки клавиатуры в графическом режиме управляет комбинация клавиш
8ЫЙ+5ЫЙ. Неудобно: в консольном режиме я привык к СШ4-8ЫЙ. Надо
заменить значение зЫГМ:о|*§1е на сГг1_8Ь1Й_1о§§1е. Такие мелкие правки
конфигурационных файлов — обычное дело для администратора, по-
этому средство их внесения присутствовало в 1Ж1Х-системах всегда.
Это консольный редактор VI, входящий в каждый дистрибутив 1лпих
(в дистрибутив ЕеЧога Соге 3 включен его улучшенный вариант упп, но
команда Ч тоже доступна: она стала псевдонимом для команды упп).
Итак, я делаю на всякий случай резервную копию конфигурационного
файла /еСс/ХИ/хогд. соп^ и приступаю к его редактированию:
$ ср /еСс/Х11/хогд. согД /е6с/Х11/хогд . сопЕ . агг/
$ VI /еЬс/Х11/хогд.сопё
Перемещаюсь к строке 66 командой 666 (буква 6 заглавная: редактор
VI различает регистры). Клавишами управления курсором перемещаюсь
к началу слова зЫй.
Включаю режим вставки командой I (строчная буква). Набираю с(г1_.
Выключаю режим вставки клавишей Езс. Сохраняю изменения командой
:уу. Выхожу по команде щ.
Сложно и на вид бессистемно? Да. Зато есть команда :Ье1р.
Как полноэкранный редактор, VI может находиться в одном из двух ре-
жимов. В режиме вставки вводимые символы поступают в редактируемый
файл, в командном режиме они воспринимаются как команды. Перечислю
коротко самые употребительные команды редактора VI:
РЕЖИМ ВСТАВКИ.
Включение режима вставки:
♦ 1 * I ♦ XV * XV в текущей позиции курсора; перед первым непробельным символом в текущей строке; в новой строке, добавленной после текущей; в новой строке, добавленной перед текущей.
Выключение режима вставки:
* <Екс>
Команды режима вставки:
♦ (’1гИа повторить предыдущую вставку;
• С'1г1 + у вставить символ, находящийся над курсором
(в предыдущей строке);
♦ С1г1 + е вставить символ, находящийся под курсором
(в следующей строке).
КОМАНДНЫЙ РЕЖИМ.
Удаление (здесь и далее X — это число):
♦ Их К символов под курсором и справа от него;
• \ X И символов слева от курсора;
♦ К сИ М строк;
♦ О до конца текущей строки;
» X' Г) до конца текущей строки и еще Ы-1 строку.
Копирование и вставка строк:
♦ К уу взять в буфер М строк от текущей и ниже;
♦ р вставить содержимое буфера после текущей строки;
• Р вставить содержимое буфера перед текущей строкой.
Поиск и переход:
♦ К О перейти к строке с номером М;
♦ $ 6 перейти к последней строке файла;
♦ /<образец> искать образец вниз от курсора;
♦ ?< образец > искать образец вверх от курсора;
• п повторить поиск в том же направлении;
« (буквально «К»): повторить поиск
в обратном направлении.
Сохранение и выход:
♦ сохранить текущий файл;
♦ :ху <имя> сохранить под новым именем, если файл <имя>
еще не существует;
• :м/’ <имя>
♦ -Ч
* :Ч!
* ™Ч
Разное полезное:
♦ Ын
* И Ог1+г
* Н
♦ Лг <символ>
♦ К >>
* И «
♦ :зЬ
• :!<команда>
сохранить под новым именем, переписав
существующий файл;
выйти;
принудительно выйти без сохранения;
сохранить и выйти.
отменить последние И изменений;
вернуть последние И отмененных изменений;
отменить изменения в последней строке;
заменить И следующих символов на < символ >;
добавить отступ (ТаЬ) в следующих строк;
удалить один отступ (ТаЬ) из И следующих строк;
временно выйти в Оболочку (вернуться — ехй);
выполнить команду оболочки.
Поиск файлов
Быстрый поиск имени программы можно выполнить прямо из командной
строки: для этого введите первые буквы нужной вам команды и нажмите
<ТаЪ>. Если введенные вами буквы однозначно определяют команду или
исполняемый файл, то ее имя появится в командной строке. Эта функция
называется автозаполнением командной строки. Если не появилось ни-
чего, нажмите <ТаЬ> еще раз для вывода списка всех доступных команд,
начинающихся со введенных букв. Если таких команд окажется больше
сотни, у вас попросят подтверждения того, что вы действительно хотите
увидеть их все.
В разных каталогах может оказаться несколько исполняемых файлов с
одинаковыми именами. Какой из них будет исполнен? На этот вопрос
отвечает команда и1нсЬ. Она просматривает каталоги, перечисленные в
переменной окружения РАТН, в поисках исполняемого файла с указан-
ным именем, и выводит абсолютное имя первого встреченного из них.
Команда мФеге!» ищет не только исполняемый файл, но и его справочные
страницы и исходный код.
Команда 1оса(е ищет файл по образцу имени, опираясь на свою базу
данных о файловой системе. Ее вариант с повышенной безопасностью
з1оса1е сохраняет данные о правах доступа к файлам, так что пользова-
тель не увидит тех файлов, на которые у него нет прав. В дистрибутиве
Рейога Соге 3 команда 1оса1е представляет собой символическую ссылку
на утилиту $1оса1е.
Команда Ппй ищет файл по его атрибутам в указанном каталоге и его
подкаталогах на заданную глубину. Например, при установке операци-
онной системы я отказался устанавливать файловый менеджер МИт&Ы
Сопипапбег, а теперь он мне понадобился. Для каждого из 4 компакт-
дисков дистрибутива запускаю команду поиска по шаблону имени «тс*»,
то есть всех файлов, имена которых начинаются с тс:
$^1пд /теЛа -пате тс*
/тедга/сйгесогсЗег/РесЗога/ЙРМЗ/тс-й . 6.1-0.8.1386. грт
В итоге на третьем диске найден пакет КГМ. Об установке программного
обеспечения из пакетов КРМ будет сказано в главе 7.
Изменение прав доступа к файлу
Как многопользовательская операционная система, ОС Ыпих содержит
механизм разграничения доступа к данным, позволяющий как защитить
данные одного пользователя от нежелательного вмешательства других,
так и разрешить другим доступ к этим данным для совместной работы.
Как уже сказано, любой ресурс компьютера под управлением ОС 1.ших
представляется как файл, поэтому мы будем говорить только о правах
доступа к файлу.
По отношению к файлу пользователь может входить в одну из трех ка-
тегорий: владелец, член группы владельца, все остальные. Для каждой
из этих категорий есть свой набор прав доступа.
Первым владельцем файла становится его создатель. Дальше файл можно
передать другому владельцу или в другую группу командой
с И омп [ключи] <новый_пользоватеиь> [ -.новая^группа] <файл>
или
скдгр [ключи] < новая„группа > <файл>
В некоторых реализациях Ыпих передать файл другому владельцу имеет право
только суперпользователь, а в других —также его текущий владелец.
Набор прав доступа состоит из прав на чтение, запись и исполнение фай-
ла. В символьном представлении он выглядит как строка «пух», где вме-
сто любого символа может стоять дефис. Буква означает наличие права
(г — чтение, XV — запись, х — исполнение), дефис — его отсутствие.
Очевидно, что эти три бита могут быть записаны еще и как восьме-
ричное число. Так, права доступа г-х (чтение и исполнение без записи)
понимаются как три двоичные цифры 101 или как восьмеричная цифра
5. Численное представление прав доступа называется абсолютным, или
двоичной маской.
Полная строка прав доступа в символьном представлении устроена так:
<права_владельца><права_группы><права__остальных>
В абсолютном представлении права владельца являются старшим разрядом
восьмеричного числа, права группы — вторым и права остальных — тре-
тьим. Так, права пухг-х-х выглядят как число 111101 001, или 751.
Команда изменения прав доступа сЬпюб понимает как абсолютное, так
и символьное указание прав.
Назначим файлу /Ъоте/с1еп/НЕАОМЕ права ну-г---, то есть разрешим
себе чтение и запись, группе только чтение, остальным пользователям —
ничего:
$сй - # переход в свой домашний каталог
$сИтоа 640 К.ЕАОМЕ # 110 100 000 == 640
$1в -1 КЕАСМЕ
-ги-г----- 1 беп изегв 0 ЕеЬ 14 19:08 /Ьоте/йеп/ВЕАОМЕ
В символьном представлении можно явно указывать, кому какое право
мы хотим добавить, отнять или присвоить. Добавим право на исполнение
файла К.ЕАВМЕ группе и всем остальным:
$сйшоа до+х НЕАОМЕ
$15 -1. НЕАПМЕ
~гу?—г-х—х 1 бед ивеге 0 ЕеЬ 14 19:08 /Иоте/йеп/КЕАОМЕ
Формат символьного режима:
сгппоб <категория><действиехнабор_прав> < файл >
Возможные значения аргументов команды представлены в таблице 2.3.
Аргументы команды сЛтоН в символьном режиме Таблица 2.3
Аргумент Значение
Категория и Владелец
д Группа владельца
О Прочие
а Все пользователи, то есть «а» эквивалентно «идо»
Действие Добавить набор прав
< Отменить набор прав
= Назначить набор прав
Право г Право на чтение
йг Право на запись
X Право на исполнение
$ Право смены идентификатора пользователя или группы
1 Бит прилипчивости (збску-бит}
и Такие же права, как у владельца
3 Такие же права, как у группы
с Такие же права, как у прочих
Название бита прилипчивости унаследовано от тех времен, когда объем
оперативной памяти был маленьким, а процесс подкачки медленным.
Этот бит позволял оставлять небольшие часто используемые программы
в памяти для ускорения их запуска. Сейчас его значение переосмысле-
но: этот бит, установленный для каталога, приводит к тому, что удалять
файлы из этого каталога могут только владелец файла и владелец ката-
лога. Обычно это используется в каталогах, открытых для записи всем
(например, / стр).
Права смены пользователя и группы (ЗСЮ-бит и ЗОЮ-бит) означают
следующее. Обычно исполняемый файл (программа или командный
сценарий) получает те же права на доступ к файлам, что и пользова-
тель, который запустил его на выполнение. Но у этого файла есть еще
и владелец, полномочия которого могут быть совсем другими. Наличие
одного из этих битов позволяет выполняющейся программе пользоваться
полномочиями владельца программного файла или члена его группы.
Так, команда яи (хи&Мйше ихег), позволяющая «стать» другим пользовате-
лем без завершения своего сеанса и входа под новым именем (это нужно,
например, чтобы быстро выполнить административную задачу от имени
суперпользователя), имеет следующие атрибуты:
$1з -1 ’тебхсЪ ви'
-гмзг-хг-х 1 гооС гооЬ [размер, дата, время] /Ып/ви
Биты «х» сообщают, что любой пользователь может запустить эту про-
грамму, а бит «я» — о том, что во время ее выполнения он будет пользо-
ваться правами суперпользователя гоог (если, конечно, знает пароль).
Обратите внимание на применение обратных апострофов: они нужны для
того, чтобы направить вывод команды кЫсй на вход команды 1я.
Следует учитывать, что программы, требующие установления 81ЛО (или
ЗОЮ) для своей работы, являются потенциальными дырами в системе
безопасности. Представьте такую ситуацию: у вас в системе установлена
программа яирегГогтаГ которая предназначена для форматирования
дисков. Создание файловой системы, пусть даже на дискете, — это при-
вилегированная операция, требующая полномочий суперпользователя.
При установке этой программы для нее сразу устанавливается право
ЗСШ, чтобы разрешить пользователям форматировать дискеты. Поль-
зователь запускает ее для форматирования дискеты. Программа запуска-
ется, получает права гоо1, форматирует дискету и нормально завершает
работу.
А если она завершает работу аварийно, например, по ошибке переполне-
ния стека (такие случаи отмечались)? Тогда запустивший ее пользователь
получит права гооН Неквалифицированный пользователь с правами гоо1 —
это намного хуже, чем просто крах системы. Помните о потенциальной
опасности при работе с такими программами и по возможности избегайте
использования прав $1ЛЕ> и ЗОЮ.
Справедливости ради нужно заметить, что ряд системных программ (в
частности, демон установления интернет-соединения рррб) разрабатывал-
ся с учетом прав 811Ю и 8010. и эти программы являются максимально
защищенными, хотя полной уверенности в этом нет. Поэтому использо-
вать право 811Ю нужно только в самых крайних случаях.
Я позволю себе сделать еще несколько замечаний относительно прав
доступа ЗИЮ и ЗОЮ:
1. Лучше не использовать программы, требующие привилегий, на серве-
ре, точнее, не разрешать обыкновенным пользователям их использо-
вать. Использование права доступа 811Ю вы можете себе позволить
только на своей домашней машине, например, для установления того
же коммутируемого соединения, чтобы каждый раз при подключении
к Интернету не вводить команду ни.
2. Перед использованием программ, требующих привилегий гоо1, убе-
дитесь в их надежности. Если программа получена из ненадежного
источника, лучше ее не использовать. Надежными источниками
считаются сайты или ЕТР-серверы разработчиков Дистрибутивов
□них. Желательно подучить исходный код такой программы, чтобы
убедиться, что она не производит каких-либо несанкционированных
действий.
3. Нет ни одной причины, по какой нужно было бы разрешить исполь-
зование ЗПЮ-программ в домашних каталогах пользователей. Для
разделов, в которые разрешена запись обыкновенным пользователям,
установите опцию тюывс! в файле /сСс/ГвеаЬ.
2.2. Изнанка файловой системы
С точки зрения операционной системы, под файловой системой по-
нимается внутренняя управляющая структура, заведующая хранением
данных на физическом носителе, их поиском, извлечением и записью
по запросам программ. Такие управляющие структуры в каждом семей-
стве операционных систем строятся по схожим принципам. Так, 008/
АМпсЬто используют файловую систему ГАТ с вариантами ЕАТ32 и УЕАТ.
Файловые системы ОМХ-подобных ОС разнообразнее, но тоже могут
быть объединены в одно семейство. Ьших умеет работать со множеством
файловых систем, как с родными, и с еще большим их количеством об-
мениваться данными.
л ШЮЭ
Хотя существуют средства установки Моих в раздел РАТ/РАТ32 — иг»4МЛп, я не
в ' я рекомендую их использовать, т.к. в этом случае Плох работает край не нестабильно
и медленно.
Типичным представителем файловых систем 1Ж1Х является «вторая
расширенная файловая система» ех(2Г$, основная до недавнего времени
файловая система 1лпцх. С момента выхода ядра версии 2.4.16 она начала
уступать место «файловой системы по умолчанию» полностью совмести-
мой с ней системе ех&& Рекомендуется использовать именно ех13&, и
именно она устанавливается по умолчанию инсталляторами большинства
современных дистрибутивов.
2.2.1. Файловая система ех12Тз —
предшественница ех13Тз
Рассмотрим логическую структуру файловой системы ех(21к
Физически жесткий диск разбит на сектора размером 512 байт. Первый
сектор дискового раздела в любой файловой системе считается загрузоч-
ной областью. В первичном разделе эта область содержит загрузочную
запись — фрагмент кола, который инициирует процесс загрузки опера-
ционной системы при запуске. На других разделах эта область не исполь-
зуется. Остальные сектора объединеныв логические блоки размером 1, 2
или 4 килобайта. Логический блок есть наименьшая адресуемая порция
данных: данные каждого файла занимают целое число блоков. Блоки, в
свою очередь, объединяются в группы блоков. Группы блоков и блоки
внутри группы нумеруются последовательно, начиная с 1.
Раздел диска, на котором сформирована файловая система ех(2й, может
быть представлен такой схемой:
Структуры данных, применяемые при работе с файловой системой ех12(в,
описаны в заголовочном файле /и8Г/1пс1ийе/11пих/ех62Ев.Ь.
Суперблок служит начальной точкой файловой системы и хранит всю
информацию о ней. Он имеет размер 1024 байта и располагается по сме-
шению 1024 байта от начала файловой системы. В каждой группе блоков
он дублируется, что позволяет быстро восстановить его после сбоев.
В суперблоке определяется размер файловой системы, максимальное
число файлов в разделе, объем свободного пространства и содержится
информация о том, где искать незанятые участки. При запуске ОС супер-
блок считывается в память и все изменения файловой системы вначале
находят отображение в копии суперблока, находящейся в ОП, и записы-
Загрузочный сектор Суперблок Группа блоков Группа блоков » • * Группа блоков
Копия суперблока Описание группы блоков Карта блоков Карта (поре Таблица 1поде Блоки данных
Рис. 2.1. Структура файловой системы
ваются на диск только периодически. Это позволяет повысить произво-
дительность системы, так как многие пользователи и процессы постоянно
обновляют файлы. С другой стороны, при останове системы суперблок
обязательно должен быть записан на диск, что не позволяет выключать
компьютер простым выключением питания. В противном случае, при
следующей загрузке информация, записанная в суперблоке, окажется не
соответствующей реальному состоянию файловой системы.
После суперблока следует описание (дескриптор) группы блоков. Хра-
нящаяся в нем информация позволяет найти битовые карты блоков и
индексных дескрипторов, а также таблицу индексных дескрипторов.
Битовой картой блоков (Моск Ьшпар) называется структура, каждый бит
которой показывает, отведен ли такой же по счету блок какому-либо фай-
лу. Значение 1 показывает, что блок занят. Эта карта служит для поиска
свободных блоков в тех случаях, когда надо выделить место под файл.
Битовая карта индексных дескрипторов выполняет аналогичную функцию
по отношению к таблице индексных дескрипторов: показывает, какие
именно дескрипторы заняты.
Каждому файлу соответствует один и только один индексный дескриптор
(тоде, 1-узел, информационный узел), который идентифицируется своим
порядковым номером — индексом файла. В индексном дескрипторе хра-
нятся метаданные файла. Среди них — вес атрибуты файла, кроме его
имени, и указатель на данные файла.
Для обычного файла или каталога этот указатель представляет собой
массив из 15 адресов блоков. Первые 12 адресов в этом массиве явля-
ются прямыми ссылками на номера блоков, в которых хранятся данные
файла. Если данные не помещаются в 12 блоков, то включается механизм
косвенной адресации. Следующий адрес в этом массиве является косвен-
ной ссылкой, то есть адресом блока, в котором хранится список адресов
следующих блоков с данными из этого файла.
Сколько блоков с данными можно так адресовать? Адрес блока занимает
4 байта, блок, как уже сказано, — 1, 2 или 4 килобайта. Значит, путем
косвенной адресации можно разместить 256 — 1024 блока. Размер файла,
занимающего столько блоков, считайте сами.
А если файл еще длиннее? Следующий адрес в массиве-указателе указы-
вает на блок двойной косвенной адресации (ЖшЫе тЖгес! Ыоек у Этот
блок содержит список адресов блоков, которые, в свою очередь, содержат
списки адресов следующих блоков данных.
И, наконец, последний адрес в массиве-указателе задает адрес блока
тройной косвенной адресации, то есть блока со списком адресов блоков,
которые являются блоками двойной косвенной адресации.
Пока остается непонятным, где находится имя файла, если его нет ни
среди данных файла, ни среди его метаданных. В ПМХ-подобных си-
стемах имя файла есть атрибут не самого файла, а файловой системы,
понимаемой как логическая структура каталогов. Имя файла хранится
только в каталоге, к которому файл приписан, и больше нигде. Из этого
вытекают любопытные следствия.
Во-первых, одному индексному дескриптору может соответствовать любое
количество имен, приписанных к разным каталогам, и все они являются
настоящими. Количество имен (жестких
ссылок) учитывается в индексном дескрип-
торе. Именно это количество вы можете
увидеть Но команде Ь Ч.
Во-вторых, удаление файла означает про-
сто удаление записи о нем из данных ката-
лога и уменьшение на 1 счетчика ссылок.
В-третьих, сопоставить имя можно
только номеру индексного дескрип-
тора внутри одной и той же файло-
вой системы, именно поэтому нель-
зя создать жесткую ссылку в другую
файловую систему (символическую —
можно, у нее другой механизм хранения).
Сам каталог таким же образом приписан
к своему родительскому каталогу. Корне-
вой каталог всегда записан в индексный
дескриптор с номером 2 (номер 1 отведен
для списка адресов дефектных блоков). В
каждом каталоге хранится ссылка на него
самого и на его родительский каталог —
это и есть псевдоподкаталоги «.» и
Таким образом, количество ссылок на каталог равно количеству его под-
каталогов плюс два.
Данные каталога представляют собой связный список с записями пере-
менной длины и выглядят примерно так, как на рис. 2.2.
А как же файлы физических устройств? Они могут находиться й тех же
каталогах, что и обычные файлы: в каталоге нет никаких данных, гово-
рящих о принадлежности имени файлу на диске или устройству. Разни-
ца находится на уровне индексного дескриптора. Если Еузел обычного
файла указывает на дисковые блоки, где хранятся его данные, то в 1-узле
файла устройства содержится указатель на список драйверов устройств
в ядре — тот элемент списка, который соответствует старшему номеру
устройства (рис, 2.3).
Рис. 2.3. Разница мезкду обычным файлом и файлом устройства
Свойства файловой системы ех(2й:
• Максимальный размер файловой системы — 4 Тбайт.
• Максимальный размер файла — 2 Гбайт.
♦ Максимальная длина имени файла — 255 символов.
♦ Минимальный размер блока — 1024 байт.
• Количество выделяемых индексных дескрипторов — 1 на 4096 байт
раздела.
2.2.2. Журналируемые файловые системы
Представим такую ситуацию. У вас есть жесткий диск, скажем, на 80 Гб.
Сегодня таким объемом никого не удивишь, не так ли? Вы поленились
разбить его на разделы, и у вас есть один большой раздел, занимающий
все ваши 80 Гб, И вот в момент записи на диск произошло отключение
питания. Хорошо, если это случилось во время записи данных какого-то
файла, пусть и очень важного: файл можно восстановить хотя бы ча-
стично. А вот если свет погас, когда операционная система записывала
метаданные, то расположение файла на диске перестанет соответствовать
списку принадлежащих ему блоков в индексном дескрипторе. Файловая
система может утратить целостность, то есть такое состояние, когда каж-
дый блок принадлежит не более чем одному файлу (ним/е). В результате
вы можете не досчитаться не одного, а сотни файлов.
Признаком потери целостности служит бит чистого размонтирования
(с1еап ЬИ), точнее, его отсутствие. Этот бит сбрасывается при подключе-
нии (монтировании) файловой системы в знак того, что файловая систе-
ма сейчас используется. После успешного размонтирования файловой
системы этот бит устанавливается снова.
Если при монтировании файловой системы в процессе загрузки операци-
онная система обнаруживает, что чистый бит не установлен, она запускает
средство проверки файловой системы — программу Гаск. Представляете,
сколько времени займет такая проверка? Даже при условии, что ошибок
будет мало или вообще не будет, придется ждать довольно долго. А если
еще будет нарушена целостность, тогда восстановление этой целостности
займет еще несколько минут вашего времени.
Все это справедливо для обычной файловой системы. Журналируемая же
файловая система перед тем, как что-то сделать с файлами, записывает
на диск некое описание планируемой операции и вычеркивает каждый
пункт плана только после того, как он успешно выполнен. Тогда после
сбоя можно будет не проверять на целостность весь огромный раздел, а
только просмотреть журнал и откатить незаконченные операции.
Имейте в виду, что целью журналирования является обеспечение целост-
ности файловой системы, а не сохранность пользовательских данных как
таковых.
Журналировать операции записи самих данных тоже можно: в этом случае
есть вероятность, что данные после сбоя будут восстановлены. Правда,
согласно золотому правилу механики, за все нужно платить, и платить
приходится быстродействием.
Решают вопрос разными ухищрениями: например, запись происходит в
момент наименьшей активности, некоторые журналируемые файловые
системы позволяют разместить журнал на другом физическом диске. Да
и фактически время работы с журналом намного меньше, чем работа
непосредственно с данными. И, естественно, некоторый полезный объем
теперь приходится отводить под сам журнал, но его размеры обычно не
превышают 32 Мбайт, что по нынешним временам не так уж и много.
И все же лучшим средством от неожиданного отключения до сих пор
являются источники бесперебойного питания...
Современные версии ядра Ыпих (2.6.x) поддерживают в качестве родных
четыре журналируемые файловые системы: Ке&егРЗ, ех1$К ХЕ8 и Л'8.
Из них журналирование данных поддерживает только ех&& Список
файловых систем, которые поддерживаются вашим ядром, содержится в
файле /ргос/ ЕНевувСетв.
йе15егР5
Разработана Хансом Райзером (Напв Ке&ег) и его компанией Ыатеауз
(НС Ср: / /иыи . патле ку з . сот) и официально включена в ядро 2.4.4.
Преимущества данной ФС в основном проявляются в работе с мелкими
файлами: они целиком хранятся в своих 1-узлах (шся/е). без выделения
блоков в области данных. Вместе с экономией места это способствует
и росту производительности, так как данные и метаданные хранятся
в непосредственной близости и могут быть считаны одной операцией
ввода/вывода.
Другая особенность Ке^егРЗ состоит в том, что хвосты файлов длиной
меньше чем в один блок могут быть упакованы в один дисковый блок
(режим тайлинга). Это обеспечивает около 5% экономии дискового про-
странства. Именно работа с маленькими файлами (меньше килобайта)
и обслуживание большого их количества выделяет данную ФС среди
прочих.
К.е15егР8 несовместима с ехг2Гз на уровне утилит обслуживания
файловой системы, однако соответствующий инструментарий, объ-
единенный в пакет ге15ег15рго§з, уже давно включается в стандартную
поставку современных дистрибутивов. Если у вас его нет, то скачать
можно по адресу ;//^Ьр.патезуБ.сот/риЬ/гехзегИвргодв/
геСзегГвргодз-З.6.19.Саг.дг.
Там же можно взять патчи для ядра 2.4.x.
К сожалению, загрузчики Ыпих (1-11-0 и ОКОВ) не способны загрузить
ядро 1лпих с раздела Ве^егГЗ. оптимизированного в режиме тайлинга.
Поэтому под каталог /Ьоог лучше отводить отдельный раздел с файловой
системой, совместимой с ех12К
ХР5
При работе с огромными (терабайтными) файлами вне конкуренции оста-
ется файловая система ХР$, разработанная компанией ЗШсоп ОгарЫс^
(сейчас 8 СИ) специально для операций с мультимедийными данными
и впервые появившаяся в 1994 г. в версии ОС 1пх 5.3. Она использует
64-битную адресацию, что позволяет увеличить максимальный размер
файловой системы до 18 тысяч петабайт (при этом предельный размер
файла составляет 9 тысяч петабайт).
Особенностью этой файловой системы является устройство журнала: в
журнал пишется часть метаданных самой файловой системы таким обра-
зом, что весь процесс восстановления после сбоя сводится к копированию
этих данных из журнала в файловую систему. Размер журнала задается
при создании системы, он должен быть не меньше 32 мегабайт.
ХЕ8 эффективно распараллеливает операции ввода-вывода: она делит
все пространство раздела на несколько равных областей (аНосшюп §гоир),
служащих своего рода автономными файловыми системами в рамках
единой XI'8.
Пакет утилит1 обслуживания х(врго^ можно скачать с Нс Ср: //озв.вд!.
сот/рго)есСв/хГ8/йо;га1оаа.ИЬт1 (содержит ссылку на российское
зеркало).
4Е5
Разработана 1ВМ для рабочих станций под управлением ОС А1Х, за-
тем портирована для 1лних и выпущена по Стандартной Общественной
лицензии. Всю необходимую информацию о ней можно найти по адресу
ЬЬТр://)Те.еоигсе^огде.пей.
Размер журнала составляет примерно 40% от размера файловой системы.
Эта файловая система может содержать несколько сегментов, содержащих
журнал и данные. Такие сегменты называются агрегатами и могут монти-
роваться отдельно. Умеет она также хранить маленькие файлы и каталоги,
содержащие не больше 8 файлов, в пределах индексного дескриптора.
Широкого признания пока не получила.
ЕхГЗ(з
Файловая система ехСЗТз официально включена в ядро Еших с версии
2.4.16. Впервые она появилась в дистрибутивах КебНа! и 8и8Е. Совре-
менные дистрибутивы, основанные на ядре 2.6.x, предлагают установить
ех13(я по умолчанию.
Некоторые источники утверждают, что ех13& — Йо всего лишь «над-
стройка» над файловой системой ех(21х, а не самостоятельная файловая
система. Благодаря такому происхождению ехгЗ(х совместима со всеми
программами для обслуживания и настройки файловой системы ехТ2й.
И перейти на ех(ЗЕ можно простым добавлением файла журнала к ех12Ь,
не только без переформатирования раздела, но даже и без перезагрузки
машины. Более того, ОС !лпих на старых ядрах, не поддерживающих
ехгЗГя, могут работать с разделами, на которых сформирована эта фай-
ловая система, просто подключая их как разделы ех(2!к
Кроме того, ех!3& — самая надежная из рассмотренных в этом параграфе
новых файловых систем: в ней предусмотрено журналирование операций
не только с метаданными, но и с данными файлов.
Журнал может быть включен в одном из следующих режимов:
♦ полного журналирования 0оигпа1);
* последовательном (огйегей, применяется по умолчанию);
* обратной записи ('лгйеЬаск).
Режим полного журналирования позволяет минимизировать ваши потери
при отключении питания, но является наиболее медленным из всех трех
режимов. Этот режим и подразумевает журналирование записи пользо-
вательских данных.
Самый быстрый режим — это «обратная запись». Это обыкновенное
журналирование только метаданных.
Режим «последовательный» представляет собой компромисс между ско-
ростью и полнотой. Официально журналируются только метаданные, но
блоки соответствующих им данных записываются первыми. В большин-
стве случаев такой режим гарантирует сохранность данных, особенно если
данные дописывались в конеп файла, как обычно и бывает.
Какой режим выбрать? Если ваш сервер является файловым (РТР, УУУУ'Л'
сервер), то есть таким, который используется пользователями для хране-
ния файлов, выберите режим полного журналирования — пользователи
будут вам благодарны. Пусть в этом режиме сервер будет работать чуть
медленнее, зато в случае ЧП можно минимизировать потери информации.
Во всех остальных случаях нужно установить режим «Последовательный»,
точнее вообще не нужно ничего устанавливать — он используется по
умолчанию.
2.3. Создание и монтирование
файловых систем
Создание файловой системы «вручную». Команда тКз
Из предыдущего параграфа следует, что создать файловую систему на
разделе жесткого диска или внешнем носителе — это значит разметить
его сектора на структуры данных, специфические для этой файловой
системы (суперблок, список 1-узлов, блоки данных). В ООБЛМшйочге этот
процесс называется форматированием. В 1ЖIX-системах понятие фор-
матирования не используется, а процедура и соответствующая команда
так и называются — создание файловой системы.
В ходе установки Ыпих файловые системы на разделах жесткого диска
создал для вас инсталлятор, и переделывать за ним ничего не нужно.
Ручное создание ФС может понадобиться при подключении нового диска
или, что гораздо чаще, дискеты. Выполняет его команда ткГя:
ткЕв [-С <тип>] [опции_ФС] ФС [блоков]
Типы и описание файловых систем, поддерживаемых Тлпих. вы найдете
в справочной системе по команде тан зЕз. Те типы, которые чаще всего
используются на съемных носителях, перечислены в таблице 4.3. Ясно,
что если вы «отформатируете» дискету с типом тГа1, то она будет читаться
и из-под У/шёоия. а если с типом ехГ2/ех13 — только из-под Ейшх.
Если не указывать тип, то будет создана ФС с типом по умолчанию — в
настоящий момент это ех12.
В качестве аргумента ФС можно указывать либо имя устройства
(Меу/МО), либо точку монтирования (/тесНа/ивЬсИвк). Последним
аргументом можно указать количество блоков, которые нужно отвести
под новую файловую систему.
Опции ФС — это параметры, специфические для файловой системы
определенного тина. Например, для ех(2/ех13 можно указать:
♦ -Ь <размер_блока> (по умолчанию 4096 байт, но может быть и 1024
или 2048);
♦ -М <количество_д-узлов>,
♦ -I <байт__яа_1-узел>.
Утилита шкГ*> передает эти опции настоящему конструктору ФС, кото-
рого вызывает в зависимости от указанного типа. Установленные у вас
конструкторы можно найти по команде 1з /зЫп/ткЕз*, а список
опций конкретной ФС посмотреть на тап-странице соответствующего
конструктора (например, тан ткГе -у^аь).
Замечу только, что для ехтЗЕ после ключа -Л можно указать опции жур
налирования: мге=<размер> — размер журнального файла в мегабай-
тах, и беу1се= <устройство> — внешний журнал, заранее созданный на
другом разделе.
Как я уже сказал, преобразовать существующий раздел ех12Ь в ехГЗЬ
можно без перезагрузки системы, простым добавлением журнала коман-
дой (ипе2Г$:
# Еипе2Ев -] /йеу/И<35
Дополнительные конструкторы (для Ке^егЕЗ, ХГ8 и т.п.) устанавлива-
ются из пакетов гейзег&ргозв и хГчргоц* соответственно.
В результате на новом разделе образуется корневой каталог новой фай-
ловой системы и в нем — подкаталог /ХозС+гоипа. Не удаляйте этот
подкаталог: утилита Гяск, предназначенная для проверки целостности
ФС, помещает в него найденные куски нарушенных файлов.
Настройка автоматического монтирования
при загрузке компьютера. Команда тоипГ
Чтобы с новой файловой системой можно было работать, она должна быть
при помощи операции монтирования включена в общее дерево каталогов
(п.1.1.3). О ручном монтировании/размонтировании применительно к
съемным носителям сказано в п.4.2.5, а здесь я скажу, как сделать так, что-
бы разделы жесткого диска автоматически монтировались при загрузке
системы и демонтировались при останове. Для этого их нужно прописать
в файл /еСс/ЕзсаЬ, который читает команда тоипГ в ходе начальной
загрузки (об этапах загрузки и загрузочных сценариях см. п.9.1).
Каждая строка этого файла соответствует одной файловой системе и со-
стоит из шести полей, разделенных пробельными символами:
<устройстао> <точка_монт!трования> <тип> <оп.ции> <дамп>
<номер„^вск>
* Устройство — это файл устройства, к которому подключен раздел
(например, /Деу/МаБ). Для сетевой файловой системы здесь должно
быть указано имя сервера и каталог на нем.
• Точка__монтирования — это имя каталога, к которому файловая систе-
ма будет подключена. Он должен существовать и (желательно) быть
пустым. Для раздела подкачки (отар) значение этого поля не исполь-
зуется, но в файле /еСс/СзсаЬ присутствовать все равно должно.
♦ Вместо типа ФС можно указать значение аШо: в этом случае команда
тошН попытается определить тип самостоятельно.
♦ Дамп — это отметка о необходимости резервного копирования дан-
ной ФС программой битр (п. 10.4.3). Значение 1 говорит о том, что
резервировать нужно, значение 0 — нет.
♦ НомерГяск: утилита Свек обычно запускается перед автоматическим
монтированием ФС, проверяет ее на целостность и пытается ис-
править найденные ошибки. Это процедура долгая, и для ускорения
загрузки можно либо отключить проверку для некоторых ФС (значе-
ние 0), либо д ля некоторых разделов запускать ее параллельно. Зна-
чение этого поля задает порядок проверки разных ФС: если номера
одинаковые, то системы будут проверяться параллельно. Ясно, что
ускорение может подучиться только в том случае, когда параллельно
проверяемые разделы находятся на разных физических дисках.
Справку об опциях монтирования команды тошН можно получить по
команде тап тонне. В таблице 2.4 перечислены самые употребительные
из них.
Основные опции монтирования Таблице 2.4
Опция Назначение
ЙЦЮ ФС может быть смонтирована автоматически
го Смонтировав, файловую систему в режиме «только чтение»
гл Смонтировать файловую систему для чтения и .для записи (ле умолчанию)
йеч ФС может содержать файлы блочных и символьных устройств. Они интерпретиру- ются как специальные файлы
ехес Файлы на ФС могут быть исполняемыми
вой Разрешить использование битов 8В© и ВСЮ
изег Разрешить непривилегированному пользователю монтировать и размонтировать данную файловую систему, Это значение влечет Зв собой поехес, позой и паОеч, если после него явно не указано ехее, виИ или без
поздга побеу поехес позшд поизег Значения, противоположные соответствующим без ,.но»
йе(аи!Ь Установки по умолчанию: т«,зи1Й,ДеУ,ехес>аыо,пои5ег,азупс
собераде- <значение} Интерпретировать символы в именах файлов согласно кодовой странице
юсНаг$е!= <значение> Выводить символы в именах файлов согласно набору символов
Программа установки создала файл /еЬс/ ЕвСаЬ, в котором перечислены
все ваши Ыпих-разделы (корневой, к\сар и, если вы послушались п.1.3.4,
/Иоте). Теперь нужно сделать так, чтобы из-под Ыпих были видны данные
на ваших З’/шботек-разделах. Проверьте, поддерживает ли ваше ядро типы
ФС на ХУйккжБ-разделах (саЬ /^гос/ЕИезуэЬетв, в выводе команды
должны присутствовать слова у±аС и/или п/ /з). Обычно ядро, поставляе-
мое с дистрибутивом, собрано без поддержки ИГЕ8 — если ваш ’Л'тс1оу«
раздел отформатирован с этим типом, то вам придется либо пересобрать
ядро, либо, что гораздо проще, конвертировать раздел в тип ЕАТ32.
Итак, после всех этих проверок я вписал в файл /ебс/€вСаЬ строку:
Мем/Маб /тпсуЕаС плг,собераде=866,1осЬаг8еС=иЫ8
...и получил каталог /тпг./сИзк_е, всем файлам в котором приписан в
качестве владельца гоо1, а в качестве прав доступа пух-гхг-х. Если вас
такой режим доступа не устраивает и хочется иметь право писать в этот
каталог от имени непривилегированного пользователя, прочитайте на
шап-странице команды шошМ об опциях шб, $к! и шпавк.
Глава 3
РАБОТАЕМ
В КОМАНДНОЙ
СТРОКЕ
КАК УСТРОЕН ИШХ:
ЯДРО И ПРОЦЕССЫ
---ЖИЗНЬ ПРОЦЕССА
«---ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ
О--- КОМАНДНАЯ ОБОЛОЧКА. ВАЗН
к1ыих ПОЛНОЕ РУКОВОДСТВО
3.1. Как устроен Мпих: ядро и процессы
Главная, постоянно находящаяся в оперативной памяти, часть ОС 1-1пих
называется ядром (Кегие!). Ядро ОС обрабатывает прерывания от
устройств, выполняет запросы системных процессов и пользовательских
приложений, распределяет виртуальную память, создает и уничтожает
процессы, обеспечивает многозадачность посредством переключения
между ними, содержит драйверы устройств, обслуживает файловую си*
стему (см. рис. 3.1).
Лис. 3.1. Устройство ас ипох
Пользовательские процессы не могут непосредственно, например, порож-
дать другие процессы, производить чтение или запись на диск, выводить
данные на экран или создавать гнездо (яоскег) для обмена по сети. Для
выполнения этих действий они должны воспользоваться сервисами ядра.
Обращения за такими услугами называются системными вызовами.
Начальная загрузка системы состоит в том, что файл с образом ядра счи-
тывается в оперативную память, начиная с нулевого адреса. Этот файл
находится в каталоге /Ьоос и называется утКпиг-х.у.х, где х.у.г — это
номер версии ядра. На текущий момент большинство дистрибутивов
основано на ядре версии 2.4, хотя уже вышло ядро 2.6 (Гебога Соге 3) и
кое-где еще встречается версия 2.2.
примечаний]
По соглашению разработчиков ядра, все ветви с четным номером (2.2, 2.4 и
т.д.) считаются стабильными и рекомендуются для широкого использования,
а на ветвях с нечетным номером испытываются новые идеи. Линус Торвальдс
предложил распространить эту схему нумерации и на третью цифру версии: в ядра
с нечетными номерами добавлять новые функции, а в четных — только исправлять
обнаруженные ошибки.
В 1Ж1Х*подобных системах в отличие от других ОС ядро минимизи-
ровано и не выполняет ни одной функции, служащей непосредственно
пользователю. Для этой цели применяются многочисленные утилиты,
выступающие в качестве посредников между пользователем и ядром.
Только в комплекте с ними ядро образует полноценную операционную
систему.
Этих компонент ОС Линус Торвальдс не создавал: они поступили из
проекта О1ЧТ1 (Ь&Гр: //жл». дни. отд), участники которого с 1984 гола
работают над созданием полноценной СМХ-подобиой ОС, педиком со-
стоящей из свободно распространяемого программного обеспечения. К
1991 году им не хватало только ядра, и эту-то прореху и заполнил Тор-
вальдс. Так что ОС, которой посвящена эта книга, правильнее называть
не 1лпих, а «операционной системой ОМС, основанной на ядре 1лпих»,
или просто 6№С/Ыпих.
Итак, ядро обслуживает запросы процессов. Что же такое процесс? Это
понятие является базовым в 1Ж1Х-подобных системах. Процесс можно
представить себе как виртуальную машину, отданную в распоряжение
одной задачи. Каждый процесс считает, что он на машине один и может
распоряжаться всеми ее ресурсами. На самом же деле процессы надежно
изолированы друг от друга, так что крушение одного не может повредить
всей системе (сколько раз вы наблюдали в ’Л'пкЗо'ль, как сбой одной про-
граммы приводил к общему зависанию?).
Каждый процесс выполняется в собственной виртуальной памяти (см.
рис. 3.2), в которую никакой другой процесс вмешаться не может. Этим
и обеспечивается устойчивость всей системы.
Рис. 3.2. Виртуальная память процесса
Напоминаю, что такое виртуальная память. Каждому процессу разрешено
считать, что его адреса начинаются с нулевого адреса и от него наращи-
ваются. Таким образом, в 32-разрядной ОС процесс может адресовать 4
гигабайта оперативной памяти. Механизм виртуальной памяти позволяет
процессу думать, что именно столько ему и выделено, хотя физически
объем ОЗУ вашей машины — какие-то жалкие 256 Мбайт. Недостающую
память заменяет жесткий диск путем записи временно не используемых
страниц памяти в раздел подкачки (свопинга).
Разделяемость библиотек между процессами обеспечивается тем, что
их код и статические данные отображаются на один и тот же участок
физической оперативной памяти.
3.2. Жизнь процесса
Таблица процессов
С точки зрения ядра процесс представляет собой запись в таблице про-
цессов. Эта запись содержит данные, существующие в течение всего
времени жизни процесса, и сведения о его состоянии. Размер таблицы
процессов позволяет запускать несколько сотен процессов одновремен-
но. Другая важная информация о процессе — например, таблица всех
открытых процессом файлов — хранится в его адресном пространстве.
Запись в таблице процессов и пространство процесса вместе составляют
контекст, или окружение, процесса. В него входят:
♦ РИ) — идентификатор процесса. Он принудительно назначается
планировщиком при запуске процесса.
♦ РРШ — идентификатор родительского процесса (о порождении про-
цессов — дальше в этом же параграфе).
* ТГУ — имя управляющего терминала (терминал, с которого запущен
процесс).
♦ ГУ1) — текущий каталог процесса, от которого отсчитываются отно-
сительные пути.
♦ ЕЮ, КОГО — реальные ГО и групповой ГО пользователя, запустив-
шего процесс.
♦ ЕГ1ГО, ЕСШ — эффективные ГО и ОГО: см. п.2.1.4.8.
* МСЕ — показатель уступчивости. Процессы выполняются в режиме
разделения времени, то есть время центрального процессора делится
между готовыми к выполнению процессами с учетом их приоритета.
Чем выше показатель уступчивости, тем ниже приоритет.
* Переменные окружения.
Системные вызовы Тогк() и ехес() или как размножаются процессы
Каждый процесс порождается другим процессом, использующим для
этого системный вызов /огА.'(). Таким образом, структура процессов, по-
добно файловой системе, древовидна. Корнем этого дерева служит шй —
процесс инициализации системы. Он запускается ядром первым, полу-
чает идентификатор 1 и порождает еще несколько процессов (сколько и
каких, можно узнать из его конфигурационного файла /ехс/1п1ССаЬ),
которые, в свою очередь, при участии пользователя порождают другие
процессы.
В результате системного вызова 1'огк(. ) родительский процесс полностью
копирует свое окружение, включая адресное пространство, в дочерний,
так что в момент рождения дочерний процесс отличается только своим
ГО. Потом дочерний процесс с помощью вызова е.тес() загружает в свое
адресное пространство какой-нибудь исполняемый файл и начинает ис-
полнять содержащуюся в нем программу.
Может случиться и так, Что процесс выполняет вызов ехес() без /ог!с():
тогда не возникает нового процесса, но в старом начинает выполняться
другая программа. Например, программа 1орп выполняется с привиле-
гиями суперпользователя, поскольку ей нужен доступ к файлу паролей.
Проверив пароль, она устанавливает себе права зарегистрировавшегося
пользователя и выполняет вызов ехес(), замещая свой код кодом ко-
Дочерний
(порожденный)
процесс
Рис. 3.3. Как размножаются процессы
мандной оболочки. После этого из командной оболочки изменить свои
привилегии обратно на гоо( нельзя, потому что кода программы 1о|*4п в
текущем процессе уже нет.
Каждый процесс, завершившись, возвращает родительскому процессу
какое-то значение, называемое кодом завершения или кодом возврата.
По соглашению разработчиков, нулевой код возврата означает успешное
завершение, а ненулевые — разнообразные ошибки. Процесс-родитель
может приостановить свое выполнение до завершения потомка и вы-
полнить разные действия в зависимости от возвращенного дочерним
процессом значения, а может и не делать этого.
Снимок протекающих и системе процессов — команда рз
Моментальный снимок протекающих в системе процессов можно посмо-
треть с помощью команды ре (ргосем МаГнх). Без аргументов она покажет
список процессов, связанных с текущей консолью (или виртуальным
терминалом). Список возможных ключей команды можно, как обычно,
получить по команде ре —Ье1р. Вот некоторые полезные из них:
♦ -р < список ₽1П> : только процессы с указанными Ю;
♦ -и < список_1'$ЕКН) > : только запущенные указанными пользова-
телями;
♦ -е : все процессы в системе;
♦ -Г : полная форма вывода;
♦ -Н : вывод иерархии процессов в форме дерева.
--------у-------
команды
Рис. 3.4. Фрагмент иерархии процессов
Динамика процессов — команда <ор
Представление о динамике процессов дает команда Сор. Она выводит
список процессов, отсортированный по количеству занятой памяти или
использованного процессорного времени, и обновляет его через указан-
ные промежутки времени (по умолчанию через каждые 3 секунды).
Категории процессов
Процессы делятся на три категории:
♦ Системные. Они порождаются ядром особым образом в процессе за-
грузки и выполняют системные функции (например, планирование
процессов или смену страниц виртуальной памяти). Выполняемая
ими программа берется не из исполняемого файла, а является частью
ядра.
* Пользовательские. Как правило, они порождаются во время сеанса
работы пользователя и связаны с терминалом. Если пользователь-
ский процесс работает в интерактивном режиме, то он захватывает
терминал в монопольное владение и, пока он не завершится, поль-
зователь не имеет доступа к командной строке на этом терминале.
Пользовательские процессы могут работать также в фоновом режиме,
освободив командную строку.
• Демоны. Запускаются после инициализации ядра. Выполняются в
фоновом режиме, не связаны ни с одним пользователем, обеспечива-
ют работу различных служб (например, управление сетью). Главным
демоном считается тИ — процесс инициализации системы.
Название «демон» (Даетоп) не имеет ничего общего с потусторонними существами:
это просто сокращение от Озк Алб ЕхеснРоп МОИ Ног
3.3. Взаимодействие процессов
Из всех средств межпроцессного взаимодействия, которыми так богаты
иМХ-подобные ОС, в этой главе мы рассмотрим только конвейеры и
сигналы.
3.3.1. Конвейер (р!ре)
В главе 2 вы познакомились с командой-фильтром тоге, вызываемой так:
<команда_„выводящая_мнаго_строк> I тоге
Символ «|» — это и есть конвейер. Его можно понимать как канал, в
который один процесс может только писать, а другой — только читать
из него. Выборка и помещение информации в такой канал происходит в
порядке ПРО (Гих1 1п}1Чг$Г Ош).
Посредством конвейера вывод одной команды подается на вход другой.
Это одно из мощнейших средств Ц1Ч1Х, позволяющее комбинировать из
простых команд длинные и изощренные цепочки обработки данных.
Например, я хочу узнать, осталась ли у меня еще свободная виртуальная
консоль, чтобы зарегистрироваться там и спросить справку по какой-то
команде, не прерывая процессов^ протекающих на других консолях. Я
знаю, что виртуальную консоль обслуживает программа пИп^еНу, которая
после регистрации на этой консоли замещает свой код на код командной
оболочки. Значит, мне нужно подсчитать количество процессов пйпцеПу.
Есть команда их (коп! соип1), умеющая подсчитывать число строк, слов
или байтов в файле. Есть команда ИгеР< умеющая выбирать из файла стро-
ки, содержащие указанный фрагмент текста. Соединяю их конвейером:
$ рз -е дгер пйпдеССу | ыс -1
3.3.2. Сигналы
Механизм сигналов — это средство, позволяющее сообщать процессам
о некоторьЕх событиях в системе, а процессу-получателю — должным
образом на эти сообщения реагировать. Послать сигнал может сам про-
цесс (например, при попытке деления на ноль), ядро (при сбое оборудо-
вания), пользователь или другой процесс (требуя прервать выполнение
задачи).
Всего в Етих 63 сигнала, обозначаемых своими номерами или символиче-
скими именами. Имена всех сигналов начинаются с 816, и эту приставку
часто опускают: так, сигнал, требующий прекратить выполнение процесса,
называется БЮКПХ, или КПХ, или сигнал 9.
Получив сигнал, процесс может: игнорировать его; вызвать для обработки
установленную по умолчанию функцию; вызвать собственный обработчик
(перехватить сигнал). Некоторые сигналы (например, КИХ) перехватить
или игнорировать невозможно.
Пользователь может послать сигнал процессу с идентификатором РЮ
командой
$ кП1 {-в <сигнап>] <Р1П>
где <сигнал> — это номер или символическое имя.
Несколько чаете встречающихся сигналов перечислены в таблице 3.1.
Полный список можно получить по команде к!11 -1 (/ЬД).
Сигналы Стих • Таблица 3.1
Не Имя Назначение Реакция процесса-получателя
НОР Напдир — отбой Демоны перечитывают свои конфигурационные файлы
2 |МТ 1п(ег»чр1 Прекратить выполнение (перехватывается)
3 001Т Сильнее, чем |МТ то же
4 111. Шеда! тзРисбоп. Программная ошибка Обработать ошибку. По умолчанию — прекратить выполнение
8 РРЕ НоаЧпд ро)п1 ехсерроп. Вычислительная ошибка (Деление на ноль) Обработать ошибку. По умолчанию — прекратить выполнение
9 К1ЦЦ Убить процесс Немедленно прекратить выполнение. Не перехватывается
11 БЕСУ бвдтвпййоп уйЛайоп. Попытка доступа к чужой области памяти Обработать ошибку. По умолчанию — прекратить выполнение
13 Р1РЕ Нет процесса, читающего из конвейера Обработать ошибку
15 ТЕЯМ Тегпчпайоп. Завершить процесс Корректно завершить выполнение. Па обхватывается
17 СНЮ Завершился дочерний процесс Принять возвращенное им значение
Некоторые сигналы посылаются по нажатии комбинации клавиш. Так,
Си1+С посылает сигнал ШТ, а С1г!+\ (обратный слэш) — сигнал О1ЛТ.
Получает эти сигналы тот процесс, который сейчас занимает консоль —
например, ожидает вашего ввода.
Команда кШ носит такое убийственное название потому, что чаще всего
используется для принудительного завершения процессов, вышедших
из-под контроля, забирающих много ресурсов или просто повисших. По
умолчанию она посылает сигнал ТЕКМ. Он отличается от сигнала КИХ
тем, что приказывает процессу завершиться аккуратно, закрыв открытые
им файлы, удалив временные и т.п, Сигнал же КПХ действует на процесс
как выстрел в голову.
Понятно, что для того, чтобы прервать выполнение процесса, нужно быть
его хозяином или иметь привилегии суперпользователя.
3.4. Командная оболочка. ВазЬ
Важнейшим из пользовательских процессов является командная обо-
лочка (она же командный интерпретатор, или просто зйеП). Именно
она обеспечивает взаимодействие пользователя с системой в текстовом
режиме, позволяя вводить команды. Именно она запускается, когда вы
регистрируетесь на текстовой консоли, и предоставляет вам интерфейс
командной строки.
Не нужно, увлекшись удобствами графического интерфейса, недооце-
нивать командную строку. Во-первых, многие административные задачи
могут быть выполнены только оттуда; во-вторых, командная строка — са-
мое удобное средство автоматизации рутинных процедур.
Командой в Етих считается все, что может быть исполнено: испол-
няемые файлы, встроенные команды оболочки, псевдонимы команд,
пользовательские функции, файлы Сценариев (скрипты) — заранее под-
готовленные последовательности команд в текстовом виде. До сих пор,
приводя примеры команд, я не различал их по происхождению, и дальше
не собираюсь делать этого, кроме особых случаев.
Оболочка принимает вводимые пользователем команды, обрабатывает,
если нужно, их аргументы, отправляет команды на выполнение, прини-
мает возвращаемые ими значения и выполняет определенные действия
в зависимости от этих значений. Кроме того, в оболочку встроен язык
программирования (командный язык), позволяющий писать сложные
разветвленные командные сценарии. Именно командный язык отличает
разные оболочки друг от друга, и именно из него исходят пользователи,
выбирая любимую и нелюбимую оболочки.
Для Гтих разработано много командных интерпретаторов. Вот несколько
из них;
..... Войте хИеН, оболочка Борна, стандарт для многих ПМХ-по-
добных систем;
ЬавЬ ... Войте Л$ат .чкеН. «еще одна оболочка Борна»;
сзЬ...С $Ие11, оболочка Си: синтаксис ее командного языка похож на
синтаксис языка С;
1с$Ь.... Т(пу С зкеН, минимальная оболочка Си;
р<1к$Ь .. риЬИс &>так1 Кот хкеИ, общедоступная оболочка Корна;
кавЬ.... ^апе/-а1опе зке11, автономная оболочка, может быть использо-
вана в случае, когда программные библиотеки недоступны.
Список всех установленных в системе программ-оболочек находится в
файле /еЬс/зЪе11з. У меня он выглядит так:
/Ып/зЬ
/Ып/ЬавЪ
/вЫп/по1бд1п # это "оболочка" для тех,
# кому запрещен вход в систему
/Ып/авЬ
/Ып/ЬвЬ
/Ып/кзИ
/изг/Ып/квН
/изг/Ып/рйкзЪ
/Ып/СсзЬ
/Ып/Сзк
Начальная оболочка для каждого пользователя, запускаемая для него при
регистрации в системе, указывается в файле /есс/разэид:
$ дгер йен /ебс/развий # выбрать из файла строки,
# содержащие подстроку <3еп
<3еп:х: 501 г 501 :Вепгн: /Ьоте/деп: /Ып/ЪазЬ
В дальнейшем вы можете сменить текущую оболочку на любую из уста-
новленных (точнее, войти в подоболочку). Чтобы выйти из нее и вер-
нуться в родительскую оболочку, введите команду ехзЛ. В начальной
оболочке эта команда завершает сеанс работы.
В любой оболочке можно запускать командные сценарии, состоящие
из команд другой оболочки: первая строка каждого сценария содержит
указание на то, в какой оболочке его следует выполнять, и текущая обо-
лочка запускает для него указанную как дочерний процесс.
По умолчанию новому пользователю назначается оболочка ЬахЬ.. Это
прекрасная оболочка, включающая много усовершенствований и лучших
свойств других оболочек, и менять ее я не рекомендую. В дальнейшем,
говоря «оболочка», я буду иметь в виду именно ЪакЬ.
3.4.1. Встроенные команды
Список встроенных команд оболочки Ьа$Ь можно получить по команде
Ье1р или найти на тап*странице в секции ЗНЕСЬ В1ЛЕПН СОММАЖЭ8.
Напоминаю, что поиск в выводе команды тап выполняется командой
/<образецхВвод>, а поиск следующего вхождения образца — по на-
жатии клавиши <п>.
Справку по команде, имя которой вы знаете, можно получить командой
Ъе1р <имя>.
Вот несколько полезных встроенных команд:
♦ аИав <псевдоним> «длинная команда с аргументами — на-
значение псевдонима. Без аргументов выводит список всех имеющихся
псевдонимов. Обратите внимание, что у пользователя го<Я команда
гт сделана псевдонимом для «г:- -1», чтобы он не забыл воспользо-
ваться ключом -1 (см.п.2.1.4.3). Вы тоже можете назначить псевдоним
для опасной команды пак, создав сценарий, который сначала будет
спрашивать «а вы уверены?», и только при положительном ответе
запускать пхк на выполнение. Дайте этому сценарию имя тк, а вну-
три него ссылайтесь на настоящую команду Нак по ее полному пути.
Удалить псевдоним из списка можно командой ипаИаз.
• есЪо [аргументы] — вывод аргументов на экран. Полезно, если
нужно выполнить подстановку (п.3.4.4) и посмотреть, что получится.
• епайе < имя„команды > — заставляет оболочку вместо встроенной
команды выполнить исполняемый файл с таким же именем. Полезно,
если у вас есть собственный сценарий по имени, например, есйо.
• еуа! [ аргументы] — конструирование команды на лету, из указан-
ных аргументов, и отправка ее на выполнение.
♦ 1еЕ <переменная>=<арифметическое выражение> — вычисле-
ние выражений. Так, команда уаг=1+2 присвоит переменной уаг
(см.п.3.4.3) значение «1 +2», а команда 1е1 уаг=1 +2 — значение «3».
♦ зоигсе < файл > — прочитать и выполнить команды, содержащиеся
в файле. Применяется для определения пользовательских переменных
и функций (п.3.4.3).
Другие встроенные команды служат инструкциями командного языка
Ьакй.
3.4.2. История команд
Оболочка предлагает вам много возможностей для облегчения ввода ко-
манд и редактирования командной строки. Помимо функции автозапол-
нения, с которой вы познакомились в п.1.1.4,7, ЬазЬ содержит механизм
командной истории. Суть его в том, что вводимые вами команды (по
умолчанию 1000) запоминаются и доступны для повторного вызова —
без изменений или с ними.
Команда Ывбогу без аргументов выводит всю историю, нумеруя при
этом команды в порядке их ввода.
Если вас интересуют только последние несколько команд:
$ Ызбогу 23 # показать последние 23 команды
Если вас интересуют все команды, имеющие отношение к монтированию
каталога рцЫ1с:
$ Ыз1;оху | дгер тоипб | дгер риЬИс
# еще один пример конвейера
Номера команд выводятся для того, чтобы вы могли снова ввести эту
команду, набрав
$ ! <номер>
или
$ И # запускает последнюю из введенных команд
ИЛИ
$ 1<первые_буквы> 4 запускает последнюю из команд,
# начинающихся с этих букв.
Стрелки «вверх» и «вниз» перемещают по командной истории, не от-
правляя команду на выполнение, а вводя ее в командную строку для
редактирования.
Последнюю команду может для вас отредактировать сама оболочка. Для
этого вместо команды введите:
$ лчто_заменитьл'чем_заменить
Например, вы запросили справку по команде оболочке Ьа$Ъ: щап ЪазЪ.
Если сразу после этого вы хотите посмотреть справку по оболочке свк,
можете вместо там себ набрать
5 лЬалс.
Помните, что замене подлежит первое вхождение подстроки «что_эа-
менить».
Если вы хотите не изменить, а дополнить последнюю команду (например,
пропустить ее вывод через фильтр тоге), введите
$ И I тоге.
3.4.3. Переменные
Описание и использование переменных
Как любой язык программирования, командный язык ЬазЬ поддер-
живает переменные. Тип их — строковый. Оператор присваивания
выглядит так:
5 <имя_переменной>~-<значение>
Имя должно начинаться с буквы и может состоять из латинских букв,
цифр, знака подчеркивания. Если значение переменной содержит спе-
циальные символы, их нужно экранировать кавычками или обратным
слэшем (см. п. 2.1,1).
Операция подстановки значения переменной обозначается символом $
(не путайте с приглашением Ьазй). Вывести значение переменной можно
командой есЬо:
$ сир--/Ногле/бвп/МуПоипХоайз/раскадез
$ еско сий # выводит имя переменной
сий
$ есЪо $сий # выводит значение переменной
/Ъогпе/<Зеп/МуПоип1оа<Зз/раскадев
Установленные таким образом переменные доступны только встроенным
командам ЬазН. Чтобы они стали доступны дочерним процессам (про-
граммам и командным сценариям, запускаемым из-под ЬаяН), их нужно
поместить в окружение ЬазЬ. Делается это командой ехроН:
$ ехрогЬ НЕЬЬО=г"Не11о Егош епухгошпепг:! * # пробел нужно
экранировать
Чтобы почувствовать разницу, создайте простейший командный сцена-
рий, выводящий значения двух переменных. Для записи сценария можно
создать пустой файл и открыть его в каком-нибудь А8СП-редакторе, а
можно вспомнить п.2.1.4 и воспользоваться командой сас:
$ саЕ: > шувсгХ.рб
еско Ему уапаЫе: $НЕЬЪО
есЬо Ьоса! УагйаЫе: # помните о разнице в регистре?
# Это другая переменная.
"О
$
Комбинация клавиш С1Н+-1) завершает ввод и закрывает файл, и вы снова
видите приглашение оболочки.
Получившийся файл сценария нужно сделать исполняемым (п.2.1.4):
$ сИтой а+х тукстХрс
Теперь осталось определить переменную ЬеПо и запустить сценарий;
$ Ье11о="Не11о Гготп 1оса1*
§ есЪо $Ие11о
Не11о ^гот 1оса1
$ ./тувсгхрс
Епу уагтаЫе: Не11о Ггот еггутгоптепТ ’
ЬосаХ Vа.^^аЫе:
$
Переменные окружения
Когда оболочка начинает работу, она устанавливает для себя несколько
переменных окружения. Имена их стандартны. Программы и сценарии
могут запросить их значения вместо того, чтобы пытаться выяснить нуж-
ную им информацию самостоятельно.
Несколько таких переменных перечислены в таблице 3.2.
Переменные окружения ЬавЬ Таблица 3.2
Имя Назначение
ВА5Н_УЕР51ОК Версия оболочки
С5ЕР Имя, под которым вы зарегистрировались
да. еию Реальный и эффективный озегЮ
НОМЕ Путь к вашему домашнему каталогу
НО5ТМАМЕ Имя вашего компьютера
НО8ТТУРЕ Тип процессора 0386 или другой)
О8ТГРЕ Операционная система (ипох>дпи)
Н15ТАЩ Н13Т517Е Расположение и размер файла истории команд
1АИС Язык текущего сеанса
ОЫЕ8, С0ШМН5 Число строк и столбцов на экране текстовой консоли
Р51. Р32. Р53. Р34 Переменные, определяющие вид приглашения оболочки
РАТН Порядок просмотра каталогов а поисках исполняемого файла с заданным вами именем, когда полный путь к нему не указан
Чтобы просмотреть значения всех переменных текущего сеанса, как
определенных вами, так и переменных окружения, введите команду яе4.
Обратите внимание на переменную РАТН: среди каталогов, в которых
ЬаьЬ ищет исполняемый файл, нет текущего. Поэтому в предыдущем
примере, если бы вы попытались исполнить сценарий командой туксгГрС,
оболочка ответила бы «Соттапс! по! Гоипб». Нужно было указать путь к
исполняемому файлу, и мы указали его относительным способом, считая
от текущего каталога: . /тузсгтрЬ.
Переменная Р81 у меня выглядит так: [\и@\Ь \й] \$. Это значит, что
приглашение оболочки у меня формируется из регистрационного имени
(ияетате), имени машины (1ю&пате), текущего каталога (нюгк1п§ еНг) и
символа $. Я могу и изменить его:
[йепйбпвИаЬя -1$ рвэауе=$Р81
[бепййИвПаЬз Р51=*\К>’
# сохраняю старое значение
# новое приглашение состоит
из имени текущего каталога
и символа >
сд Му*
МуРоип1оабв>
МуПомпГоадн >
[ЛепйаЪвИаЬе
Р81=$рзвдуе
МуОоипХоайв]$
# поиграли, и хватит
Удалить переменную можно командой инке! <имя>.
Быстрая смена каталога
Переменная СИРАТН задает список каталогов, в которых будет проис-
ходить поиск нужного подкаталога при смене каталога (использовании
команды ей). Проще всего пояснить, КИК работает СГЭРАТН, на примере.
Пусть в моем каталоге /1юте/йеп1й/Ъоокз/11пих-яегуег есть подка-
талоги сИарсег! ... с пар с ег2 0. Если мне нужно перейти в подкаталог
сИарСег2, то я могу сэкономить на наборе имени его родительского
каталога, внеся это имя в переменную С1ЭРАГН:
5 ехрогС СОРАТН=: . ;/Ьоше/йепХя/Ьоокв/Ипих-зегуег
Теперь по команде ей сг-прСегЗ я попаду в каталог /Иоте/йеп!з/
Ьоокз/Мпих-аегиег/сИаркегЭ; из любого места файловой системы,
если подкаталога сНарЬегЗ нет в текущем каталоге.
Настройка командной строки. Утилита Трит
Наверное, многим хочется, чтобы их компьютер не был похож на компью-
тер коллеги за соседним столом. Кто-то меняет темы, кто-то — обои. Мы
попробуем изменить командную строку текстовой консоли. Рассмотрим
сценарий, выводящий текущий каталог в правом верхнем углу — обычно
этот угол при выводе текста остается свободным. Для чего? А просто так —
чтобы было не как у всех.
Для манипуляции с курсором и цветом букв и фона используется утилита
1ри1. В п.2.1.4 вы узнали, как Применить ее для восстановления «сбитой»
консоли, а сейчас посмотрите на то, что она умеет еще. А потом про-
читайте тап-страиицу.
Листинг 3.1. Демонстрация возможностей утилиты 1рШ
#!/Ьхп/ЬёщЬ
бипсббоп рготрг._со1тапапй {
# сохраняем текущую позицию курсора
брЦб ЗС
# вычисляем длину, необходимую для вывода текущего каталога
# текущий каталог можно узнать с помощью команды рий
1еб Ьаскиа&Ь=$ (Ирис со1й)~$(есИо $ (ры<3) | ыс -пО-2
# позиционируем курсор У=0, Х^длина
бриб сир 0 ${Ьаскыазк}
# установка цвета букв, начертание - жирное
бриб зебаб 4 ; брцб Ьо1б
# выводим полный путь в квадратных скобках
есНо -п *[*
# устанавливаем цвет
бриб вебаб 6
(г отображаем путь
есИо -п п$(рий)"
# устанавливаем цвет для закрывающей скобки"
бриб зебаб 4 ; бриб Ьо1б
# отображаем ]
есЬо -п “]"
# возвращаем курсор в исходную позицию
Гриб гс
}
РКОМРТ_СОММА1ГО~рг отрб„соттапй
СЕЕЕК="\[$(бриб зебаб 2 ; бриб Ьо1б)\]“
гл?Н1ТЕ="\[$ (бриб вебаб 7 ; бриб Ьо1а)'\]я
ЫО_СОЕОПк="\[$(бриб здгО)\]"
сазе $ТЕКМ 1П
хбепп* I г х’Л*)
Т1ТЬЕВАВ=’\[\033]0;\и@\И \007\] '
I г.
*)
Т1ТЪЕВАК="Я
езас
Р51=*$(ТТТЬЕВАВ)\
$СКЕЕК\и@\П \
$НН1ТЕ\$$№_СОЬООК "
РЕ2=*> '
Р54='+ '
Команды утилиты !ри!.‘
!ри! ыйаГ [1-7] .........установка одета символов с использованием А№81
Е8С- последовательности;
1рв1 зе!аЬ [1-7] ........установка цвета фона;
!ри! тег ......... обратить одета фона и переднего плана;
фи! Ьок! ..........установка жирного начертания;
1ри1 Шт ............отключение жирного начертания;
(ри! яти! .........установка подчеркнутого начертания;
!ри! гши! .........отключение подчеркнутого начертания;
3.4.4. Подстановка переменных и команд
Переменные можно использовать как имена, части имен или аргументы
команд. Перед выполнением команды оболочка заменит имена пере-
менных их значениями. Например, после того, как мы присвоили пере-
менной суд! значение пути к каталогу, можно перейти в этот каталог по
команде
$ ей $сиб
Вывести на экран файл ВЕДОМЕ из этого каталога можно, введя ко-
манду
$ шоте ${с^а)/ЙЕАПМЕ
Брать имя переменной в скобки необязательно, но удобно, если нужно
отделить имя переменной от предшествующих ему или следующих за
ним символов.
Мощным инструментом оболочки Ьахк является подстановка команд,
то есть замена имени команды на результат ее выполнения. Так, считая
/Иоте/йеп/МуОотяп1.оаав/раскаде8 текущим каталогом, мы могли бы
присвоить переменной сто! то же самое значение проще:
$ сый-'рий' # напоминаю, Что команда ркй возвращает
# путь к текущему каталогу
Можно подставлять значения не только определенных вами переменных,
но и переменных окружения. Так, чтобы поэкранно вывести список всех
процессов, запущенных от вашего имени, введите:
$ ре -еГ. I дгер $и8Ей [ 1екз
3.4.5. Шаблоны имен файлов
Этот механизм позволяет не перечислять похоже выглядящие имена
файлов и каталогов, а указать на целую группу имен, задав краткий об-
разец. Перед отправкой команды на выполнение оболочка раскрывает
шаблон, то есть заменяет образец всеми именами, подходящими под
этот образец, и выполняет команду для каждого файла или каталога из
этой группы. Шаблоны указываются с помощью специальных символов,
перечисленных в таблице 3.3. Символы шаблона можно комбинировать
в одной команде.
Символы шаблонов Таблица 3.3
Символ Значение Пример
* Проиэаодьная строка символов, в том числе пустая -/•.рпд ~~ все файлы в домашнем каталоге с расширением ряд; Шдуа’ — файлы Шаиа, СЙауаОЗ и Шауа.оШ
? Любой одиночный символ <Э1а«а?? — файлы СИауаОЗ и СЛауаХг, но не С1ауа и не 61ауа.о1с1
|т,М,х] Любой символ из перечисленных в скобках Шауа0[3,8] — файлы С!аУаОЗ и С1а*а08; Й1ауа?|3,8] — файлы С1ауа03, ЭауаОВ. С1ауа13, С1ауа18, С1ауа23
[а-пА-М] Любой символ из указанных интервалов С1ауа0[2-4,9] — <31ача02. СИауаОЗ, С!ауа04. О|а«а09
['а.п.х,у] Любой символ, не указанный в скобках й!ача('Ор — все главы, начиная с 11
Символы шаблона можно использовать и как обычные символы в именах
файлов. Тогда их нужно экранировать, чтобы оболочка не приступила
к их раскрытию:
5 соисИ \*
$ тш (31аУаО\[3\,8\]
# создаст файл с именем Только не
# удаляйте его потом командой гт * 1
# удалит файл с именем С1ауа0[3,8],
# а не С1аУаОЗ и С1ауа08.
3.4.6. Потоки ввода-вывода
Как я уже сказал, каждому процессу сопоставлена таблица открытых
им файлов. Три первых позиции в этой таблице заняты всегда: каждый
процесс открывает потоки (помните, что в ЦЫ1Х файл — это и есть по-
ток данных?) для ввода и вывода данных, а также вывода сообщений об
ошибках и другой диагностической информации. Эти потоки:
♦ 0 — стандартный ввод (зйНп),
♦ ] — стандартный вывод (аЫоиС),
♦ 2 — стандартный поток сообщений об ошибках («Мегт).
Ссылаться на эти потоки можно по их файловым дескрипторам. 0,1 и 2 —
это и есть такие дескрипторы.
По умолчанию потоки ввода-вывода связываются с консолью, с которой
запущен процесс: стандартный ввод—с клавиатурой, другие два потока—
с экраном (рис. 35, потоки сшб1).
Все потоки можно перенаправить в другой файл. Это может быть файл
на диске, файл устройства (например, принтер или /йем/пиИ.) или
стандартный поток другого процесса.
Для перенаправления стандартного вывода команды используется символ
> («больше»). Если местом назначения служит файл, то можно его не
перезаписывать, а присоединить (арреп(Г) выводимые данные в его конец.
Для такого перенаправления применяется символ >>.
Стандартный ввод перенаправляется символом < («меньше»).
Для перенаправления стандартного потока ошибок используется кон-
струкция 2>. Чтобы присоединить вМегг к ^П1ои1 и перенаправить их
вместе, пользуйтесь переадресацией 2>&1.
Для направления стандартного вывода одной команды на стандартный
ввод другой применяется символ | — уже знакомый вам конвейер.
Ситуация, изображенная на рис. 3.5, могла бы сложиться после выпол-
нения следующих команд:
стй2 < Н1е1.СхЬ | сггЛЗ 2>&1 > ЕИе2.гхТ
ст<54 2> /<ЗеV/пц11 | Сее НХеЗ.СхС Н1е4. СхС И1е5.СхЬ
Команда-фильтр Гее копирует данные со своего стандартного ввода в
стандартный вывод, дублируя их при этом в указанные ей файлы.
Рис. 3.5. Перенаправление потоков ввода-вывода
3.4.7. Группировка команд
Кроме конвейеров, команды можно соединять в списки. Простейший вид
списка — несколько команд^ разделенных точкой с запятой:
$ 1рг туШеЛхС ; 1рц
Команды в таком списке выполняются последовательно: сначала будет
выполнена команда постановки задания в очередь печати, а потом про-
верено состояние принтера. Оболочка ждет завершения каждой команды,
чтобы отправить на выполнение следующую (синхронный режим).
В списки можно группировать не только одиночные команды, но и кон-
вейеры:
3 рз -еЕ I Ъеай ™п 1; рз -е^ [ дгер ИЬСрд
ИГО Р1П РРХО С ЗТ1МЕ ТТТ ТТМЕ СИЛ
ГООС 13565 1 0 13:11 ? 00:00:00 /ивг/1оса1/эЫп/ЬСЬрД
[юЪойу 13566 13565 0 13:11 ? 00:00:00 /иэг/ 1оса1 /аЫп/ЬОЕрй
поЬобу 13567 13565 0 13:11 ? 00:00:00 / ивг/1оса1/йЫп/ЬЬСрс1
поЬойу 13642 13565 0 13:16 ? 00:00:00 /изг/1оса1/йЫп/ЪеЬрд
Первый конвейер вырезает из списка процессов заголовок, а второй —
информацию о демоне ЬНрс!.
Если требуется запустить команду на заднем плане и не ждать ее вы-
полнения (асинхронный режим), то нужно завершить ее управляющим
оператором &:
$ ди —Иитап-геадаЫе --СоСа1 /Ноте > дгзкизаде.СхС &
Команда <1и сообщает, сколько места на диске занято файлами в указан-
ном каталоге. Обратите внимание на ключи: их имена предваряются не
одним минусом, а двумя. Большинство команд поддерживает как короткие
однобуквенные ключи, так и длинные — с осмысленными, легко запоми-
наемыми именами. Напоминаю, что список и значения ключей команды
спи! можно получить, выполнив ее с ключом -11е1р или -ика^е.
Конвейеры (или одиночные команды) в списке можно соединять управ-
ляющими операторами && и 11, получая «список И» или «список ИЛИ»
соответственно:
сж11 && стд2
сгпдЗ I I стд4
Вторая команда в «списке И» будет выполнена только в случае успешного
завершения первой. Типичный пример — создание каталога и переход
в него:
$ тк<31г туд!г && ей тудгг
Вторая команда в «списке ИЛИ» будет выполнена только в случае не-
успешного завершения первой (возврата ею ненулевого значения):
$ ту_сопиагк1 | | есЬо "Команда Ш-Срттапй не найдена" | таН беа
Вторая команда (конвейер) в этом примере формирует и посыпает письмо
с отчетом о неуспехе пользователю йен.
Чтобы перенаправить в файл вывод всех команд из списка, нужно взять
весь список в круглые скобки:
$ ( Ласе; Сгее; адЬю; ) > 1одГ11е
Список, взятый в круглые скобки, выполняется в дочерней оболочке,
имеющей собственные локальные переменные и текущий каталог:
$ рий; ( ей /стар рий ) ; рУйЗ;
/йоте/йен
/Стр
/йоте/йеп
$
Если нужно часто выполнять одну и ту же последовательность команд,
можно оформить ее как функцию:
$ 1:ипсС1оп тогп1пд_герогС {
> йаГе;
> Егее;
> И;
> )
$ тогп1пд„герогС I таП гооС
Имена и область видимости функций подчиняются тем же правилам,
что и для переменных. Нельзя определять функцию и переменную с
одинаковыми именами.
Определенные вами переменные и функции действительны только для
текущего сеанса работы в оболочке Ьа$Н. Чтобы воспользоваться ими в
следующем сеансе, запишите их в текстовый файл, а когда они понадо-
бятся, загрузите этот файл в память командного интерпретатора встро-
енной командой зоигсе:
$ саС > Гоо
тууаГ”"Моя переменная"
СипсСЛоп туЬтп {
есНо $тул/аг
)
$ зоигсе Гоо
5 ту^ип
Мая переменная
$
Команда ноигсе выполняет инструкции, содержащиеся в файле, в теку-
щей оболочке в отличие от исполнения файла, содержащего сценарий:
тот выполняется в дочерней оболочке, и определенные в ней переменные
и функции для родительской оболочки невидимы. Чтобы заметить раз-
ницу, удалите переменную тутаг и функцию ту гип из памяти оболочки
командой ипвеС, сделайте файл ^оо исполняемым командой сЬтоб
(п.3.4.3) и исполните его. Убедитесь, что после его выполнения пере-
менная шучаг и функция ту^ип остались не определены.
3.4.8. Инициализационные файлы ЬазЬ
Начальные значения переменных окружения становятся известны ко-
мандному интерпретатору ЬавЬ из инициализационных файлов, которые
он прочитывает сразу после своего запуска. Эти файлы называются
. Ьа8Ъ_рго€11е и . ЬазИгс (в порядке чтения оболочкой) и берутся из
домашнего каталога запустившего оболочку пользователя.
Команды, присутствующие в этих файлах по умолчанию, только прочи-
тывают общесистемный файл настроек /есс/ЬавНгс. Вы можете доба-
вить к ним свои личные настройки, определив нужные вам переменные,
функции и псевдонимы.
При завершении сеанса работы с оболочкой выполняются команды в
файле . ЬавИ_1одоцс. Туда вы тоже можете добавить свои команды:
например, зафиксировать время окончания своего сеанса в файле или в
письме другому пользователю.
Команду установки переменной СОРАТН. рассмотренной в п.3.4.3, имеет
смысл добавить в .ЬазЪ_д>го€11е, чтобы не пришлось вводить ее вруч-
ную в начале каждого сеанса работы в ЬаяЬ.
Глава
РАБОЧЕЕ МЕСТО
ПОЛЬЗОВАТЕЛЯ
ГРАФИЧЕСКАЯ СИСТЕМАХ\Л/1 ЫОО\Л/
11-
ОКОННАЯ СРЕДА КОЕ
и
о
ОКОННАЯ СРЕДА О.НОМЕ
ОФИСНЫЕ ПАКЕТЫ
ИЗДАТЕЛЬСКИЕ СИСТЕМЫ
ГРАФИКА в цмих
ПОЛЕЗНЫЕ ТРЮКИ
иыих ПОЛНОЕ руководство
Если вы собираетесь только изучать, настраивать и администрировать
свою ОС Ыпих, то вашим рабочим местом станет консоль, а средой оби-
тания — командная строка. Для нормальных же людей компьютер — не
хобби, а инструмент для решения определенного круга задач. Задачи
эти решаются не средствами операционной системы, а прикладными
программами, и большинство людей привыкло решать их с помощью
приложений, работающих в графическом режиме под управлением ОС
семейства ЧМпбоуге. Среди таких приложений:
♦ офисный набор: текстовый процессор, редактор электронных таблиц,
система управления базами данных;
♦ средства просмотра и редактирования графической информации;
• средства общения с коллегами (электронная почта, интернет-пейд-
жер);
♦ средства получения информации из Интернета: веб-браузер, йр- кли-
ент;
♦ программы для воспроизведения аудио- и видеозаписей;
♦ узкопрофессиональные программные пакеты: математические, ин-
женерные, бухгалтерские, разработчика программного обеспечения
и т.п.
Для подавляющего большинства таких ХУтбош-приложений существуют
достойные (и, что немаловажно, бесплатные) 1лпих-аиалоги. совокупность
которых и создает удобную среду рабочего места.
4.1. Графическая система X УЛАпбому
Работа в графическом режиме под Опих возможна благодаря системе,
именуемой X и'пкклу (или просто Иксы; только не называйте ее X
Штйохта), разработанной в Массачусетском технологическом институте
(М1Т) и ставшей стандартом для всех Ъ'Х1Х-иодобных систем. Сами по
себе Иксы — это не графический интерфейс как таковой, а лишь набор
спецификаций, которым этот самый графический интерфейс должен
соответствовать. В настоящее время действует версия 11 выпуск 6 стан-
дарта на графическую подсистему для ИЬПХ-систем, которая кратко
обозначается как Х11Н.6.
Группа программистов, возглавляемая Дэвидом Вексельблатом (Оас!с1
ШехеййаГ) создала свободно распространяемую реализацию X ЗУщбсж
для процессоров 180386-Реп бит I V и совместимых с ними. Эта версия
получила название ХРгее86, поскольку могла выполняться в операцион-
ных системах, предназначенных для процессоров, использующих систему
команд х86 — Еших, ЕгееВЗО и других. Однако с версии 4.4 команда
разработчиков ХРгееВб перешла на новую лицензию, которую обществен-
ность сочла несовместимой со Стандартной Общественной лицензией и
поэтому недостойной включения в некоммерческую ОС.
Блюдя чистоту идеи открытого КОДа, другая команда запустила проект
Х.Ог§ (ЪГ Ьр:/ /улуи. х. огд), представляющий собой развитие ХЕгеейб от
версии 4.3, еще имевшей «правильную» лицензию, В результате одни дис-
трибутивы (например, Ребога Соге) содержат реализацию стандарта XI1
от Х.ог$, а другие (например, предыдущие ОС Кеб Наг) — от ХРгее86.
ог§. Различия коснулись имен и расположения некоторых файлов.
Имена файлов а разных реализациях XI1
Таблица 4.1
ХРгееЗб.огд Х.отд
Исполняемые файлы X Бегчег ХЕгвеВб Хогд
Файл настроек X Зетуег /ей/Х11/ХР86Сопйд /а1с/Х1 ЦхсидооМ
Файл журнала X Зегуег /уат Дод/Х?тае86 ,$С13Р1АУ1од /уаг/1од/ХоГд.ЗО!ЗРСАХ1од
Сама по себе система X Шйнклу не предоставляет никакого пользова-
тельского интерфейса, Она только предоставляет другим программам
средства для работы е видеосистемой компьютера, то есть видеокартой
и монитором, и устройствами ввода: клавиатурой и мышью.
Организована она по модели клиент-сервер, хотя эти термины понима-
ются не совсем обычно. Обычно программа-клиент работает у вас дома,
а сервер — в Калифорнии. Х-сервер же — это аппаратно-зависимая
система ввода-вывода, работающая там, где находятся устройства ввода-
вывода, то есть на вашем компьютере. А Х-клиент, выводящий данные
в видеосистему, может быть запушен и на удаленной машине.
Один из Х-клиентов — это оконный менеджер (или диспетчер окон). Он
управляет размещением окон на экране, определяет их вид и характер
управляющих элементов. То есть именно он и представляет собой гра-
фический интерфейс пользователя (О1Л) в собственном смысле. Таким
образом, пользователь ОС Стих, в отличие от пользователя ХУшбоуга,
не привязан к одному графическому интерфейсу: таковых, определя-
емых оконным менеджером, теоретически может быть невообразимое
множество.
От оконных менеджеров отличаются так называемые интегрированные гра-
фические среды, или просто оконные среды. Их отличие в том, что наряду
с функциями управления окнами они предоставляют доступ к некоторым
наборам утилит и приложений, написанных специально для конкретной
среды, более или менее тесно в нее встроенных и легко обменивающихся
данными. Со многими популярными диспетчерами окон и оконными сре-
дами можно познакомиться по адресу нььр: / /хи1пп1ап . огд.
Почти в любой дистрибутив включены хотя бы две интегрированные
графические среды: КИЕ и СЗХОМЕ Я рекомендую использовать среду
КОЕ — это очень мощная и одновременно простая в освоений и ис-
пользовании оконная среда.
Не зря ее чаще, чем 6ХОМЕ, назначают средой по умолчанию. По внеш-
нему виду и функциональности вчерашним пользователям Уппсклся она
наиболее симпатична.
Обычно система X \У1пс1оч- запускается автоматически при загрузке си-
стемы. Вы увидите графический менеджер регистрации (в зависимости от
настроек вашей системы он может выглядеть по-разному), приглашающий
вас ввести имя пользователя и пароль. Менеджер регистрации позволяет
также выбрать сеанс, то есть оконную среду (КОЕ, ОХОМ Е или другую),
которую вы будете использовать. Одна из установленных оконных сред
запускается по умолчанию.
Из оконной среды вы можете переключиться на текстовую виртуальную
консоль, нджад комбинацию клавиш ОгНА11+Р<й>, где п — число от
1 до Количества запущенных виртуальных консолей (по умолчанию их 6,
но несколько можно отключить. Как это сделать, вы узнаете в п.9.1.2).
Чтобы вернуться на графическую консоль, нажмите А11+Р7.
4.2. Оконная среда КОЕ
По своей простоте и интуитивности среда КIЗЕ (К Иеккюр Епуиоптепр
Петр ; / / ним. ка© , огд) подобна графическим интерфейсам МасО$ или
\У1п<1отлъ. КИЕ предоставляет богатые возможности взаимодействия
программ, обладает встроенным механизмом бга§-апсМгор, полностью
реализует вид и ощущение (1оок-апсИее1) рабочего стола.
4.2.1. Рабочий стол КОЕ
Рабочий стол КПЕ состоит из трех частей:
1. самого рабочего стола, на котором могут размещаться значки файлов,
каталогов и устройств;
2. управляющей панели, которая используется для запуска программ;
3. панели задач, которая предназначена для переключения между ра-
ботающими программами.
Привычный пользователь \М1Пс!о\у5 сразу же ищет кнопку «Пуск». Есть
в КI) I такая кнопка. Она называется кнопкой «К» и находится в начале
_________.
йеяноп ЕЛ! №•» ВоЫЙПЯЛ» ЗЯЙй9$ Нф
,в5«
•&вйп Црайи&к Вид Формат Садою Окз*а Справка
Рис. 4.1. Рабочий стол КРЕ
Гит ев
управляющей панели (по умолчанию — в левом нижнем углу). Под ней,
как и в ХУтскиук, скрывается многоуровневое иерархическое меню. В ва-
шем дистрибутиве оно, как и встроенная гипертекстовая справка, может
быть даже русифицировано.
Для быстрого вызова меню «К» можно использовать комбинацию клавши
АИ4-Г1.
4.2.2. Запуск программ и переключение между ними
В общем случае запустить программу или приложение на выполнение
можно несколькими способами:
* Щелкнуть мышкой по значку программы на панели (если таковой
имеется).
* Щелкнуть мышкой по соответствующему значку рабочего стола (если
такой есть).
• Выбрать программу из меню «К».
♦ Использовать файловый менеджер, например, Коп^цегог.
• Выбрать в меню «К» команду «Выполнить программу» и ввести имя
запускаемой программы в строку ввода появившегося диалога. Быстро
вызвать этот диалог можно комбинацией клавиш А11+Р2.
♦ Запустить программу с виртуального терминала.
Виртуальный терминал — это программа (КГегт или Копчо1е), в окне
которой вы можете работать в режиме командной строки, как на обычной
виртуальной консоли.
Примечание^
Для знающих английский язык: названия приложений вроде Копциегог, КопаЫе,
КопГасТ — это не опечатки, а знак того, что приложения разрабатывались для
Оконной Среды К. Название «К» не расшифровывается никак. Впрочем, есть
версия, что это название было выбрано в пику СОЩСоттоп ОевЙор ЕгмгоптегД),
коммерческой оконной среде, разработанной для коммерческой ЦМХ.
Переключаться между запущенными приложениями можно комбинаци-
ей клавиш АИ+ТаЬ. Вызвать контекстное меню любого объекта можно
правой ккойкой мыши. В общем, все как в ХУшбохуч... и еще несколько
виртуальных рабочих столов. Они обозначены кнопками с цифрами на
панели задач. Окна приложений открываются на текущий рабочий стол,
и, когда вы наведете там достаточный беспорядок, вы сможете переклю-
читься на чистый стол щелчком по такой кнопке или комбинацией клавиш
СЖ+ТаЬ. Обратите внимание, что комбинация АК+ТаЬ переключает
т олько между приложениями текущего стола.
4.2.3, Файловый менеджер Коприегог
Основные возможности
Среда КПЕ обладает собственными файловым менеджером и веб-бра-
узером. Обе эти функции выполняет программа Копциегог. Менеджер
Копдиегог может работать не только с локальными файлами, а и с
файлами, расположенными на других компьютерах вашей сети или на
серверах ЕТР.
Как и любой другой файловый менеджер, Копцнегог умеет:
♦ Копировать, перемещать, переименовывать и удалять файлы и ката-
логи;
• Просматривать файлы различных форматов;
• Создавать ссылки на файлы;
♦ Изменять свойства файла.
Команды меню и инструментальные кнопки представляют собой объеди-
нение команд, знакомых вам по Проводнику ^Ушбомга и по привычному
веб-браузеру. Кнопка «Домой» в режиме файлового менеджера выполняет
переход в домашний каталог. Часть рабочей области можно отвести под
виртуальный терминал (меню Окно | Эмуляция терминала).
Можно переключить Копцнегог и в режим Соттапбег. Все
режимы на самом деле задаются настроечными файлами в каталоге
. кае/еИаге/аррз/копдцеТог/ргоЕНеэ (помните, что «—» — это
ваш домашний каталог).
Программа, пользующаяся этими настройками, называется кГтсИеп*.
Копциегог — не только файловый менеджер
При работе с ЕТР-сервером удобно видеть сразу два каталога — локаль-
ный и удаленный. Если вы используете Копцнегог для работы с РТР, вы
можете разделить окно «Завоевателя» на две части. Для этого нажмите
С1г! + 8Й1Й + Е. Перед этим весьма желательно развернуть окно на весь
экран. Выберите одну из частей (какую вам удобнее) и в строке Адреса
(Еосайоп) введите адрес вашего ЕТР-сервера: Еср: // Сер. яегуег. то.
«Завоеватель» попросит вас ввести имя пользователя и пароль, а после
этого вы сможете удобно работать с ЕТР-сервером.
Если в строке Адреса ввести $тЬ;/, вы увидите рабочие группы и доме-
ны Ш1гк1о1№, если таковые есть в вашей сети. Для работы этой функции
должен быть установлен и запущен пакет 5атЬа (подробнее см. п.6.3).
А теперь попробуйте ввести в строке адреса г1ап»/ . Думаю, вы найдете
в своей сети много интересного.
Вставьте АисНо СО в ваш привод СИ-КОМ. Запустите Копциегог и введи-
те аиахосй: / . Вы увидите список дорожек вашего АисНо СО, которые
будут представлены в виде отдельных XV АУ-файлов. В зависимости от
установленных плагинов вы можете преобразовать дорожки в форматы
МРЗ или ОСЮ или же просто сохранить на диске как XVАУ-файлы.
4.2.4. Центр управления КИЕ
Центр управления играет ту же роль, что панель управления ХУтдо^ъ,
с той лишь разницей, что Панель управления настраивает всю систему
в целом, а Центр управления — только КГ>Е. Зато в пределах К1>Е на-
стройке поддается практически все. В разных дистрибутивах и разных
версиях КОЕ может отличаться не только организация и состав разделов
Центра управления, но и способ его вызова. Так, в КОЕ версии 3.2 он
называется Настройка своего рабочего стола и вызывается через К |
Система, а в КОЕ 3.3 он вернулся в меню К. Следующая таблица (табл.
4.2) пригодна для КОЕ 3.2. Последней вышла версия КОЕ 3.4. Ее осо-
бенности мы рассмотрим в отдельном разделе (см. п.4.2.7).
Разделы Центра управления Таблица 4,2
Раздел Описание
СаокМРее! В этом разделе находятся настройки виртуальных рабочих столов, декорации окон, панелей {в том числе и панели задач}, пиктограмм, стиля и оформления окон, фона рабочего стола и хранителя экрана
Безопасность Параметры шифрования, в том числе поддерживаемые алгоритмы шифрования
Звук Параметры сервера звука аН(з и системных звуков
Информация Сведения о системе. Этот раздел — своеобразный аналог программы Йуз!п1о из пакета Ыогтоп ЦВИТез
Периферия Настройки периферийных устройств: цифровой камеры, клавиатуры и мыши
Компоненты Опции различных компонентов и служб КСЕ
Просмотр У/вЬ Параметры браузеров Копроегог и МеТзсаре
Сеть Настройки для работы с сетью. В этом раздела можно указать, как е сетью будете работать вы. Настраивать же собственно сеть может только админи- стратор
Система Общесистемные параметры, например, параметры менеджера регистраций. Изменить их вправе только суперпользователь (администратор}
Специальные возможности В этом разделе вы сможете определить привязки клавиш, раскладки клавиатуры, выбрать страну и язык
Управление питанием Загляните в этот раздел, если вы используете ноутбук
В разделе Специальные возможности —> Страна и язык обязательно устано-
вите свою страну (Россия или Украина), выберите язык и установите коди-
ровку (ко18-г или ко18-и). Все эти параметры необходимы для правильного
отображения русскоязычных символов в окнах приложений КОЕ.
4.2.5. Работа со съемными носителями в КОЕ
Чтобы ОС Еших получила доступ к данным на вашей дискете, компакт-
диске или Па^Ннакопителе, файловая система съемного носителя должна
быть включена в общее дерево каталогов как одна из его ветвей. Этот
процесс называется монтированием. Логически он представляет собой
сопоставление корневому каталогу подключаемой файловой системы
какого-то из уже существующих каталогов. Этот каталог называется точ-
кой монтирования. После того, как к каталогу примонтирована другая
файловая система, все бывшие в нем файлы временно — до размонти-
рования ~~ становятся недоступны, а вместо них видны файлы съемного
носителя. Отсюда следует, что в качестве точки монтирования лучше
выбирать пустой каталог.
Оконная среда КОЕ до версии 3.3 не выполняла монтирование автома-
тически, и вы должны знать, как сделать это вручную.
Обычно команда точпь применяется в формате:
тоипс. -С <тип_ФС> «устройства* <точка_монтирования>
Устройство — это имя файла этого устройства. Большинство современ-
ных СО-К.ОМ- приводов подключаются к ГОЕ контроллеру, поэтому
для ссылки на компакт-диск используется имя ГОЕ-устройства ~ чаще
всего 'ск".' 'ссс-. Инсталлятор обычно распознает СО-КОМ и создает
символическую ссылку / б ет / сбг от- > /'/ ЬДс.
Типы файловой системы на съемных носителях чаще всего такие:
Таблица 4,3
Название Система
®х!2 Основная файловая система Моих
ех13 Журналируемая надстройка, полностью совместимая с ех12
Файловая система \Мгк)оукв; ЕАТ. УРАТ, РАТ32
1509660 Файловые системы для компакт-дисков
Как правило, монтировать постоянные носители информации (раз-
делы жесткого диска) имеет право только администратор. Съемные
же носители разрешается монтировать обыкновенным пользователям.
Специально для них у команды тонн с. есть сокращенная форма, при
которой достаточно указать либо устройство, либо точку монтирования.
Недостающую информацию программа монтирования получает из файла
/еЬс7
Так, для подключения ПазН-накопителя я:
1. включаю его в С8В-порт;
2. перехожу в текстовую консоль или открываю окно виртуального
терминала;
3. тоипС /теЛа/ивЬсНзк # или тоипЬ. /йеV/зйа1.
Перед извлечением съемный носитель необходимо размонтировать
командой
шпоипЬ [устройство [ точка_монтирования].
Не сделав этого, вы рискуете потерять все данные на нем. Размонтировать
устройство можно только тогда, когда к данным на нем не обращается
ни одна программа (нет открытых файлов, ни один каталог не является
текущим ни для одной программы). Узнать, какие процессы обращаются
к файловой системе, можно с помощью утилиты Гивег.
При работе с компакт-дисками обычно не возникает сбоев, потому что
лоток привода СО-К.ОМ контролируется системой. Вы просто не сможете
извлечь компакт-диск до тех пор, пока устройство не будет размонтиро-
вано. А вот при работе с дискетами и ПазЬ-накопителями проконтроли-
ровать вас некому. Помните, что, пока вы не размонтировали дискету,
физическая запись на нее не будет произведена. Это значит, что, если вы
сохранили свой документ на дискету и вытащили ее из дисковода, файла
документа на ней не будет, несмотря на то, что вы вышли из текстового
редактора. Вы забыли размонтировать файловую систему!
4.2.6. Добавление собственных команд
в контекстное меню КОЕ
Запустите Копцпегог и щелкните правой кнопкой мыши на каком-нибудь
файле. Вам чего-то не хватает? Хочется добавить какую-то команду? Или
есть команда, которую вы выполняете очень часто? КОЕ позволяет соз-
давать собственные команды меню, чем мы и займемся в этом пункте.
Давайте создадим дополнительную команду, которая делает файл ис-
полняемым. Это действие очень полезно, если вы часто пишете сценарии
ЬавЬ (глава 8). Ведь сценарии Ьавй — это обычные файлы, созданные
в текстовом редакторе. Чтобы сценарий запускался, нужно с помощью
команды сблюй +х имя„файла сделать его исполняемым—но команду
вводить лень, хочется все сделать мышкой...
В любимом текстовом редакторе создайте файл следующего содержания:
Листинг 4.1. Файл гпакеехеЩвзкЕор
[ПезкЬор ЕпСгу]
5е1^1сеТурев=а11/а11{.11ез
5е.гУ1сеТуре=арр11саЫоп/х~5Ие118ст1рС
АсС1оп5=МакеЕхе
[БезкСор АсСхоп МакеЕхе]
Мате=Маке ехеснЬаЫе
Мате[гп]=Сделать файл исполняемым
Ехес=сИто<3 +х %-Г
1соп=кЬ“т
Рассмотрим первую секцию. Первая директива задает тип файлов, для
которых можно выполнить указанное действие. В данном случае действие
доступно для всех файлов (аШйез). Если вам нужно выполнить какое-то
действие для каталога, то значением директивы ЗетсеТуреь должно
быть |пос1е/скгес1огу.
Вообще в качестве значения этой директивы можно указать любой М1МЕ-
тип, например:
5е^1сетуре5=аи41о/х~трЗ
Если действие должно быть выполнено для всех типов файлов, кроме не-
которых, используйте директиву ЕкЫнйеЙегткеТуреа. Например, действие
архивирования не имеет смысла производить над архивами:
ЗегутсеТурев^аИ/аИГИез
Ехс1ис1е2егу1сеТуре5™арр11саС1оп/х~21р, кс1едеу!се/*
Директива АсЫопв определяет действия, описанные в файле, В данном
случае описано только одно действие МакеЕхе, которое определено в
секции [Оезктор Асбоп МакеЕхе]. Директива ЬЕате — это надпись, ко-
торую вы увидите в контекстном меню КОЕ. Желательно писать ее на
английском языке. Директива \ате[ги] — это надпись, которую увидит
пользователь локализованного КОЕ.
Директива Ехес — это команда, которая будет выполнена. %Г — параметр,
определяющий имя файла; то есть имя файла, на котором вы щелкнули
правой кнопкой, будет подставлено вместо %Г.
Созданный файл сохраните под именем таке_ехе. йезксор.
Как видите, в этом нет ничего сложного. Осталось только сохранить файл
в нужном каталоге— /пег/зЬаге/аррз/копдш=гог/зегу1сетепин.
Глава 4. Рабочее место пользователя
Для записи в этот каталог нужны права суперпользователя- Если же
администратор системы не вы. то скопируйте файл в каталог ~/ . кс1е/
кпёге/аррн/коодиегог/зегмтсететшв, и новая команда будет до-
ступна только вам.
4.2.7. Новое в КОЕ 3.4
В состав дистрибутива Ребога Соге 4 вошла новая версия КИЕ 3.4, в
которой, как сообщают (ими. к<1е . отд), исправлено более 65(К>ошибок,
учтено более 1700 пожеланий, включено 80000 пополнений от различных
разработчиков. Среди главшях новшеств:
♦ Полностью обновлена система корзины.
♦ Новая версия КРОЕ с возможностью выбора, копирования и вставки
текста и изображений из РОЕ, а также с другими улучшениями.
♦ Добавлен синтезатор речи с возможностью интеграции в браузер
Колдиегог, текстовый редактор Ка!е, РОр-просмотрщик КРОЕ.
♦ Приложение Коп1ас1 поддерживает больше серверов совместной
работы (§тоир\саге).
к Упримммие елужвин»
Моду я
• СпуЧ.йы, эагружвймыб при л*луск&'
иив» -ч
| л-у ж-Йлиг? - бры гп'1ВЯ1ЛЬ|виЯВ
|1н<н1йц г: 11у-*-5лиц •
Маэапущвкл. М
Ш галущО(« 1
» $$
Я новин*» тк в ?/'.
н» аипушлЯз* #з|
$ ^МОДЛ$ дян№» К8Б1.
5 Модули д он а ХШВ||«К
км;1а
Дамян КГЗб.Жо!
диншКСе
наЗ 1юцадо эз иву ЖЙ1ИМ: ОтЗ 20 >
У»щ мгниий иэ#&*й«чвы с адвр* «хвтшог» дасм ;
Гр-ВЛ-Р* ГРАНМ оф ЖМ№№ИП Я ПДвр* И№ПГ а Я«С*ПИ»ЙМ Д№*Тв 5
УПй^ЛВкЖ&сМйчниы# жхгагАляме КОЁО 1
.Дсаим...
Заттуе. _
Модул... Яб залуида+з ^,-й
гСьЛуШ:-&>..авГру «авив^л Ефы мип/ыл^ю^-т^.
?СиуЖв»:
1 ЩамЦН ПечнГ* КСЁ
। кж й кмяыи
::^ЙЙЙ-'.:^!вй- ЗДЯЙКЦ* '
йй®
Рис. 4.2. Центр управления КОЕ 3.4
брэяня'нщгп и гсйкрилял^аллкнпстк
•*' 'М ®ид н тпш№
7е"!® МК^1Н*Ш:КЙ1
^Дигюнт’а ЕП?
1 &гКтзЗДв<№тЬ««11 КЕЕ
; -^г Йс-^|?жаин*||'Д
ЧЭ- ЗНрДйрКОИПЕИВНЭвй
Менад ксеа»св8
файР-ое
'•'^ ЛрйййриД (ффи рЭДО*
Рис; урйгУ КОЕ__________________
' Фа№ов»й ийийд «ед
• *‘Ф -Пис*с*мрнз$.
йяйемлй стел
Рж’йй|й-Лвпый « Ы1й,*|*я-ы1чр13 пдавс*.я0С1а
СйП: Я КкИЙрИ^Г
Й«'1ЧМИ« грирсааяив
:*'Дл Управя8<№й пв тв ни см
• И
в
г в
: в
ца
• Улучшен механизм обнаружения подключенных устройств через
ПАЕ. Теперь КИЕ монтирует съемные носители автоматически, но
не спешите радоваться: кириллицу в именах файлов на ОЗВ-диске
она автоматически не распознает, так что п.2.3 вам еще пригодится.
• Почтовый клиент КМ;п1 теперь может использовать К\УаНе1 (бумаж-
ник КОЕ) для хранения паролей, а доступ к самому бумажнику можно
сделать беспарольным.
♦ Появилась возможность использования файлов в формате 8УС
(5са1аЫе Уесюг Огцрких) в качестве обоев для рабочего стола.
4.3. Оконная среда ОЫОМЕ
4.3.1. Общее описание и методика работы
Что за зверь эта (ЖОМЕ
Среда (ЖОМЕ ((ЖЕ! Ке1чгогк ОЬ)есг Мобе! ЕпуйоптегП — Сетевая
Объектная Среда СЖ11) — один из основных конкурентов среде КОЕ.
Среда (ЖОМЕ (ииад.дпоте.ргд).является частью проекта (ЖЕ (жи.
дпи ,огд), начатого в 1984 году и ставящего своей целью создание полно-
ценной 1Ж1Х-подобной системы, целиком состоящей из свободно рас-
пространяемого кода.
(ЖОМЕ — дружественная рабочая среда, значительно облегчающая
использование компьютера. Среда (ЖОМЕ включает в себя рабочий
стол, панель для запуска программ и показа информации о состоянии
системы, а также набор всевозможных приложений, которые тесно вза-
имодействуют друг с другом. (ЖОМЕ, как и КИЕ, является полностью
открытой разработкой: каждый может выкачать исходные тексты среды
и использовать их. Благодаря этому в процессе разработки (ЖОМЕ уча-
ствовали и участвуют сотни программистов со всего мира.
В среде (ЖОМЕ настраивается практически все: один раз настроив сеанс
по своему вкусу, вам больше не нужно будет повторять его настройку,
потому что менеджер сеансов позаботится о сохранении настроек. Как
и в КОЕ. в (ЖОМЕ поддерживается метод бга§-апб-бгор.
На данный момент в составе большинства дистрибутивов Етих постав-
ляется версия (ЖОМЕ 2.6, но она уже считается устаревшей, поскольку
относительно, недавно вышла версия (ЖОМЕ 2.10. Справедливости
ради нужно отметить, что некоторые дистрибутивы (например, Еебога
Соте 3) содержат версию (ЖОМЕ 2.8, которая не сильно отличается от
версии 2.10.
Основные элементы среды это рабочий стол, панель О(МОМЕ и панель
задач. На панели (ЗЕЮМЕ (узкая полоска вверху экрана) расположены
кнопки главного меню Приложения (выбор приложения) и Команды (раз-
личные команды, например, Выполнить или Завершить сеанс), а также
апплеты. Все остальное пространство называется рабочим столом (см.
рис. 4.3). Нижняя полоска внизу экрана — это панель задач. Ее можно
временно убрать с экрана, щелкнув по стрелке в углу. Апплеты — не-
большие программы, которые работают внутри панели и запускаются
щелчком мыши по значку на панели. Сразу после установки вы можете
увидеть там, например, календарь.
Один из базовых принципов ОКОМЕ 2 состоит в том, чтобы упрощать
все, что только можно; элементов управления под рукой у пользователя
должно быть как можно меньше. Девизом О1МОМЕ 2 стала фраза «цТО
хуогкч» — «работает, и все», без дополнительных настроек.
Так, монтирование съемных носителей выполняется автоматически;
вставьте компакт-диск или ПакЬ-накопитель, и на рабочем столе сразу же
появится соответствующий значок. Размонтируйте носитель командой
Отсоединить (Е]ес!) из контекстного меню этого значка. Следует отметить
* Приложений КоиендЫ
Браузер ф«йпо»: ..тк:
Файл-: Йраята В.ца®;. ВЭДВДй аялжии» Сорита
<4
Назад
О роеде Гном • йеАМЦй - ПоогааМ!
Добро пожг
Среде Гнои тале
аяксеченную яле
Дерево
Взорх
3 Ь4!щу 79 байт р4й11И1 Ропат
Я Й.6 КВ рЫр йвй <й>сиг
4 (ДТнм: Эббаит ЙЙ1 (еййки#
*
Фейа Йрмта Днд Тери
1>
О
Е>
в дгчугпр-у^
Е>-
О .дпопн‘2
© .д^тодтег-0,8
,Ж: ' :
= с
Версии; 2.8.0 ' > сеа ХИпкт.
Дистрибьютор:
Дата сборки: 12 г.
3 элементе, сйобддно: йв.4 ГЕ
Рис. 4.3. Рабочий стол вЫОМЕ
также, что СгЛОМЕ распознает тип съемного носителя и а зависимости
от типа запускает то или иное приложение. Например, когда вы вставите
ОУП-диск, будет запушен ОУО-проигрыватель.
Файловый менеджер ИаийШз
Начиная с версии 1.4, в пакет СгГЮМЕ входит файловый менеджер
^Ш11ик, в дальнейших версиях ставший файловым менеджером по умолча-
нию. Это разработка компании Еахе1т собравшей у себя ветеранов Арр1е —
создателей интерфейса МасшГоаЬ, до сих пор никем не превзойденного по
простоте и удобству. В нем нет ничего лишнего: ни панели инструментов,
ни адресной строки — только окно с файлами и каталогами.
Каждый каталог открывается в новом окне, а размер, положение окна
и представление файлов (значками или списком) привязаны к этому
каталогу: в следующем сеансе окно этого каталога откроется в том же
месте рабочего стола. Такой интерфейс называется пространственно
ориентированным. Идея состоит в том, что на настоящем рабочем столе
бумажные папки не замещают друг друга, а всегда лежат там, куда вы
их последний раз переложили. Считается, что так новичку легче приме-
рно. 4.4. Файловый менеджер МаиИ/иа
нить навыки, приобретенные в реальном мире. Если же вы не новичок
и привыкли к нормальному интерфейсу браузера, то пользуйтесь правой
кнопкой мыши или смените настройки через кон физу рационный файл в
~ , дсоп^/аррй/паиЬНий/рге^ёГ'епсек.
Кнопка «Назад», привычная по Проводнику 'Лчпскз’лъ, выглядит как
галочка в левом углу строки состояния. В диалоге открытия файла от-
сутствует строка ввода имени, но ее можно вызвать комбинацией клавиш
СЧг1+Е.
В МаиШш> встроена возможность записи компакт-дисков: программа
паиШич-сй-Ьигпег
С версии 2.6 основным веб-браузером стал Ерзрйапу (мер: /.
дпоте . огд/ртозессз../ерТрЕацу), облегченная версия браузера
бакоп на движке МохШа. Роль почтового клиента исполняет органайзер
ЕуоЫзоп.
Настроить среду О КОМЕ можно как из меню Приложения Параме-
тры (АррЙсаЙоик -ч ПеаМор РгеГегепсея), так и из командной строки.
Графический конфигуратор называется §сопС-ебйог.
Расширенная система управления М1МЕ-типами
Следующая особенность ОМОМЕ 2.8-2.10 — расширенная система управ-
ления МГМЕ-типами. Если вы пытаетесь открыть не зарегистрированный
в системе МТМЕ-тип (например, файл с расширением .бос, а система не
знает, какое приложение обрабатывает файлы с таким расширением), то
будет отображено окошко, в котором можно будет связать данный тип с
конкретным приложением для его обработки.
- 9
&|’1:Р<аУГЬ в 1тй$щграмма
Рис. 4.5. Аналог команды «Открыть с помощью»
Если для данного типа установлено несколько программ (например, для
НТМЕ-файлов установлено несколько браузеров), то, щелкнув по файлу
правой кнопкой мыши, вы сможете выбрать предпочитаемое приложение —
прямо как команда «Открыть с помощью» в Уипбоу-ъ. Такая организация
интерфейса упрощает работу с Еших начинающим пользователям.
Поддержка службы ОИ5-ВазеО Зепйсе О1есовегу
Теперь О1МОМЕ поддерживает службу О^Б-Важс! Йетсе Бюсоуегу, кото-
рая позволяет организовать привычное для пользователей У/тбом/х сетевое
окружение — вам не нужно ни ломать голову над настройкой 8ашЬа, ни
настраивать посторонние программы для просмотра У/шбом/к-сети.
Рис. 4.6. Самое обычное сетевое окружение
Особенности последних версий
Думаю, не нужно говорить о том, что сам интерфейс последней версии
ОМОМЕ стал намного приятнее и появилось много разнообразных тем
рабочего стола (меню Приложения Параметры -> Тема):
Центр управления СгЬЮМЕ тоже стал намного приятнее. Чего только
стоит апплет управления раскладками клавиатуры (Приложения -> Па-
раметры Клавиатура)! До его появления некоторые пользователи и не
знали, что такое раскладка Буогак (или любая другая) — теперь можно
не просто выбрать раскладку, но и «посмотреть» на нее.
Как на панель ОМОМЕ, так и на панель задач можно добавить еще не-
сколько полезных апплетов, щелкнув по панели правой кнопкой мыши.
Лично мне очень понравился апплет Монитор сети, наблюдающий за
состоянием сетевого соединения и показывающий, кроме всего прочего,
Настроив
В1исситуе
Сснокнэт теми На; [.т:»
С1Иег
$|тр1е. 5!по«Ь апй аевтЬевсаЯу йекяпд
Й»Й;
Высоко контрастная
Текст и значки чёрные на белом
Большой каньон
Пыльный красноватый вид
.. ГЦдробнерр таие.
9 Счй^янЙтЬ тему;
Цсссгаижить
Эта таиа не педразуиееает определенного шрифта или фона.
©Слравка
X Закрыть
Рис. 4.7. Выбор темы рабочего стола
ркк« ?IаДь и клаеиттупь'
₽ам гг&дхи {я^в*« ры рвс*л«№и||П»р^ы> 1ря&!1гв!
Доступа*» досладо,-
I Ай? пиЛкс» ?США}
:-. Рубек»
> Д&ТЕЖИЙ
* ДВФВК
Подвал* я6р«эд
Нседаиксхм* Я-
Иоде**» ».
Пошясял^ эддеким*! кд»{жчкхыи|.|т1|'
гшХзЛ,^^
!**«.
МДяифв*1*.^
______________________________________________________________________________:
4Мр&№Й»?йс*лЙ& ' .
[♦ ДобасйТ^
??И(4г>т:да !В«г4рг. цбри: ^н^?!-5
11^^!^
Рис. 4.8, Выбор раскладки клавиатуры
еще и силу сигнала, что особенно актуально для беспроводных средств
связи и Ла1-ир соединений. Для более подробной информации о сетевых
соединениях используйте новую утилиту пеС1оо1.
Для пользователей ноутбуков особенно актуален апплет Индикатор со-
стояния батареи, показывающий, на сколько времени еще хватит заряда
аккумулятора.
Рис. 4.9. Сетевой монитор
О1ЧОМЕ 2.10 входит в состав дистрибутива Еебога Соге 4. К ней доба-
вилась новая тема — С1еаг1оок — и панель СтКОМЕ стала организована
логичнее (рис. 4.10).
•®.: Д1ЖШИ «ш»
'^3 Кшймртзр '
I
лфса.ащ! •
.Очистить
Рис. 4.10. Панель ШОМЕ 2.10
4.3.2. Добавление собственных команд
в контекстное меню 6Ы0МЕ
Меню Сценарии в СЕЧОМЕ устроено и действует аналогично меню
Действия в КОЕ, Только если в случае КИЕ файл контекстного меню
имел определенный формат, то в 0>ГОМЕ это — обычный Ьазй-сцена-
рий, Хорошо это или плохо, зависит от того, хорошо ли вы знаете ЬаяЬ.
Хорошее знание языка командного интерпретатора Ьаяй поможет вам
создать очень сложные сценарии, автоматизирующие огромное количе-
ство рутинной работы.
Идея достаточно проста. Вы создаете Ьакй-сценарий и помещаете его в ка-
талог -/ .дпотеЗ/паисИиз-БсгдрЬвЛ В этом каталоге можно создавать
подкаталоги — они будут отображаться как дополнительные меню.
Теперь рассмотрим пример сценария, конвертирующего изображение в
формат О1Е при помощи программы-конвертера соптеН (листинг 4.2).
Файл, по которому пользователь щелкнул правой кнопкой мыши, пере-
дается нашему сценарию как первый аргумент (о передаче аргументов
сценариям говорится в п.8,1).
Листинг 4.2. Файл х2дй
* ’ /Ып/Ьазо
соптегР.ртд" саптегЬ'
Е -др О ] бо
р!сС.аге=$1
гИеСуре=' Ше $р1сЬиге I сир -<3 ' ' -Г 3'
1Т [ $Г11еС.уре “ "гппаде" ]
РЪеп
'есНо ',$р1сСигел' сир -б . -Г 1'
$соп\гегРргд "$р1сРиге" "$пеиШе" .даГ
Е1
вЫГР
Допе
4.3.3. Автоматическая смена обоев
Обои на рабочем столе рано или поздно надоедают, и хочется их сменить.
Делать это вручную — лень: это ж сколько придется щелкать мышкой.
Автоматизируем эту рутинную процедуру, написав сценарий, выбира-
ющий обои из каталога /Ъоте/беп/ИаИрарег® (где у меня хранятся
мои любимые обои) случайным образом. Собственно установку обоев
выполняет утилита 6Е8ОМЕ цсопП<ю1-2.
Листинг 4.3. Файл сРапде„ууа!1рарег
#1 /Ып/ЪазЬ
ехрогС 01К=' /1юте/с1еп/Ыа1,1рареГБ/ '
ехрогС КиМВЕВ=$КАН1Х)М
ехрогС ТОТАЪ=0
Еог Е 1П ’1з $В1К'
до
1еЬ "ТОТА1. += Iм
допе
1еС "МиМВЕН %= ТОТАЬ"
ехрогЬ СШЖЕМТ^О
^ог С 1п '1в $01Н'
до
С $ОЖЯЕЫТ = $ЫЖВЕК ]
СИеп
/ивг/Ып/дсоп^Сор1-2 ”51 зЬгтпд
-з /девкСор/дпо1пе/Ьаскдгоир4/р1сСиге_^11еп.ап1е
Ъгеак
II
1еП "СШЖЕИТ + = 1"
допе
Но это еще не все. Можно сэкономить и на запуске сценария сЪав§е_\уа11рарег,
заставив его запускаться автоматически. Во-первых, вы можете добавить
его в сценарии загрузки системы (п. 9.1.2). Для домашнего компьютера,
который на ночь выключают, это неплохое решение: вы будете каждый
день сидеть за столом с новыми обоями. Во-вторых, вызов сценария
сЬап^е м'аПрарег можно поместить в сценарий запуска СгЪЮМЕ. И в-
третьих, сЬап§е_хуа1!рарег можно вручить диспетчеру расписаний сгоп
(п.9.4) для выполнения по назначенному вами расписанию — хоть каж-
дую минуту.
4.4. Офисные пакеты
Орел ОГНс» и К ОТйсе
В среде Ежих наибольшее распространение получили два офисных па-
кета: К ОГНсс и Ореп ОШсе, оба — свободно распространяемые. В боль-
шинство дистрибутивов включены они оба, так что вы можете выбирать
инструмент, исходя из конкретной задачи.
Пакет Ореп ОГйее обладает гораздо большим количеством возможностей,
чем К ОГбсе, и наиболее приближен по своей функциональности к М8
ОШ се.
К ОГПсе предназначен для среды КОЕ, которую чаще назначают средой
по умолчанию, и чувствует себя в ней намного лучше, чем Ореп ОНтсе.
Например, некоторые комбинации клавиш Ореп ОГйсе не работают из-
за того, что они используются самой средой КОЕ. Разумеется, можно их
переназначить, но тогда использовать КОЕ будет не так удобно.
С другой стороны, К ОГйсе хуже справляется с форматами М8 О ГП се.
При попытке открыть большие документы, например, документ М8 \Уогд
97/2000/ХР размером 1.2 Мб, программа К \Еогс! просто закрылась. Точно
так же себя ведет и программа К Зргеаб — прайс-лист одной фирмы (около
1М) загружался около 30 секунд, а когда индикатор достиг отметки 100%,
окно программы просто закрылось. К РгекепГег кое-как открыл презента-
цию Ром/егРснпТ но... Лучше я не буду говорить о том, что я увидел.
Состав пакета Ореп 0№се Таблица 4.4
Приложение Назначение
ИЛ-Иет Текстовый процессор, предлагающий мощные функции для создания и редактирования документов разных форматов
Са|с Редактор электронных таблиц
Отаи Программа Огаи ориентирована на векторную графику и служит для создания рисунков, эмблем и плакатов
! Торге К5 Программа для создания презентаций
МаЩ Благодаря атому редактору, вы можете вставлять математические формулы а различные документы пакета
I гладе Программа предназначена для сканирований и обработки фотографий
5сЬедц|е Планировщик, который поможет вам организовать свой рабочий день
Ореп Ойюе — это бесплатный вариант пакета 5Тат ОНюе от 5ип М!сгоэу81етз.
Названия программ, входящих в состав обоих пакетов, отличаются только
префиксом, ОО или 50 соответствен но. Например, 50 ^Л/НТет и ОО У/гНег — это
одна и та же программа.
Таблица 4.5
Состав пакета К 0№'се
Приложение Назначение
КШогО Текстовый процессор, аналог программы М3 УУотй
КЗргеаП Редактор электронных таблиц, Обладает несколькими оригинальными функциями, которые вы не найдете ни в ОО 5ргеай31тее1 ни в М3 Ехсе!
КСПап Приложение для построения диаграмм
К Й1цмив1вг, Колю иг Редактор векторной графики
К Ргеветег Программа для создания презентаций
К Рогтии1а Редактор математических формул
При помощи К \Уогс1 можно сйофщЫЙ^кстов1э№фДй®в^ермате Р1ЭГ.
Выполните команду Файл -у Печать и вместо принтера выберите опцию
Печать в файл РВЕ.
К 8ргеа4 не поддерживает1 формат М8 Ехсе1, но совместима с форматом
ОМОтепс — редактора электронных таблиц, входящего в состав боль-
шинства Кеб НаЕподобных дистрибутивов; а уж из ОМ Пшене можно
экспортировать таблицу в М8 Ехсе1. Если в вашем дистрибутиве этого
пакета нет, то скачать его можно с Ис ср: / /шад.дпоте. огд/ргсдес -
Сэ/дпите.г1с.
Возможностей К РгезепГег хватит даже для самой сложной презентации.
Программа К РгевеЩег, как и все программы К ОГПсе, довольно быстро
работает, что немаловажно, если вам нужно показывать презентацию
на стареньком 486-ом ноутбуке, К тому же, если у вас установлена КОЕ,
скорее всего, будет установлен и К ОГПсе, чего нельзя сказать об Орел
ОГПсе.
Уменьшение времени запуска Ореп ОШсе
Наверное, вы заметили, что любое приложение из пакета Ореп ОЙ!се
запускается, мягко говоря, медленно. Чтобы ускорить этот процесс, нуж-
но установить утилиту быстрого запуска Ореп ОГПсе. Помните, что-то
подобное было в МшпжоГг ОГбсе, только в случае с Ореп ОГПсе данная
утилита действительно работает.
Утилита называется Ореп ОГПсе Ошск $1аг1ег. Пакет, содержащий эту
утилиту, называется оо<]8 или о<м|8-кбе — в зависимости от дистрибутива.
В случае, если вы используете ОМОМЕ, вам нужен пакет оодзТйгс-
дпотв. В большинстве дистрибутивов эти пакеты имеются. Все, что вам
нужно сделать, — установить нужный пакет и наслаждаться быстрым
запуском Ореп ОШсе.
Новое в Ореп ОГПсе 2.0
В состав дистрибутива Г'еПога Соге 4 входит пакет Ореп ОГПсе версии 2.0.
По сравнению с версией 1.1 в нем улучшена совместимость с форматами
документов М8 ОГПсе. Текстовый редактор ОО УТнег теперь поддер-
живает вложенные таблицы, вертикальную ориентацию текста в ячейке,
появилась возможность импорта документов в формате ХУогбРегГесП ОО
Са1с теперь разрешает таблицы того же размера, что и М8 ЕхсеП то есть
65536 строк, поддерживает диагональные линии в ячейках и колонтитулы
в стиле М8 Ехсе1; добавилась также возможность импорта таблиц Ьош»
1-2-3 до версии 9.7. Появилась возможность открывать защищенные
паролем документы М8 ХУогс! и М8 Ехсе! (если пользователь, конечно,
знает пароль).
| йг|$ Ежи*
^йв. уы >1р ^4- Л, .
;В»^н 2-' ®"ж":
1 ОмеИрйоп
@ Сжйа Т а$е 1л СШдп V»».,
Ове У№ал1 (о СюйеТаЫа..
|80 Спмйв У1ст«.„
Запрос
9 СОСЛейси
Ооемтвл!
НГИ!-
Дилу11~1;**У ••'
’'ТИ^ку^ '
Яефогга
Рис. 4.11. СУБД 00 Ва$е
На панель рисования ОО Эгахч добавлены новые группы готовых
объектов: основные формы, стрелки, элементы блок-схем, звездочки.
Полностью переписан движок презентаций, что позволяет 00 [птргезз
показывать почти все анимационные эффекты М8 РоиегРопй.
В составе пакета появилось новое приложение — ОО Ваке. Как нетрудно
догадаться по названию, это СУБД, позволяющая создавать и управлять
таблицами, запросами, формами и отчетами. Мастер таблиц предлагает
множество заготовок таблиц делового и личного (например, фитнесс-
дневник) назначения. 00 Ваке понимает базы данных бВа$е, М8 Асеев»,
О О ВС, 1ЭВС, Му80Ь, импортирует электронные таблицы и текстовые
<|1айлы, может использовать ЁЭАР сервер как источник данных.
4.5. Издательские системы
Язык разметки ТеХ
ТеХ (произносится «тех») — это система подготовки документов, содер-
жащих большое количество формул и таблиц. Она была разработана в
конце 70-х гг. американским математиком Дональдом Кнутом, автором
знаменитой книги «Искусство программирования». Система ТеХ была
портирована на платформу 1)ш‘х программистами Говардом Трики (Но-
\маг<1 Тпскеу) и Павлом Куртисом (Рауе! Сши.^).
Размер документа, содержащего много формул, в формате ТеХ раз в
десять меньше, чем в формате М8 У/огб. К тому же документ ТеХ не
зависит от платформы. Это объясняется тем, что в системе ТеХ вид и
расположение всех объектов документа описываются текстовыми ди-
рективами подобно тому, как это делается в формате НТМ!.. Только
директивы ТеХ начинаются с обратной косой черты.
Текст документа ТеХ набирается в любом АБСИ-редакторе. Затем ис-
ходный текст (файл с расширением Лех) компилируется в файл Г) VI
(Реуёсе 1п<1ерепс1еп1), который не зависит от платформы и устройства. Этот
файл уже можно просматривать, печатать и отправлять в издательство.
Для его просмотра и печати предназначена программа хсМ из пакета
г_еГех-'Хс]у1 .
Например, так выглядит фрагмент страницы с набранной формулой в
А8СП-редакторе:
\ Хауоик ЕпптегаСе
Математических:
\Ьед1п_1пнеС Рогти1а $\в1п\йгас{\а1рйа}{2}$
А на следующем рисунке показан фрагмент той же страницы, подготов-
ленной к печати.
Пример работы с ЬуХ
Встлнкл формул
I. Химических: 6СОа+ бГфО = С() + 1Ю$
2. Матгмати'«-ких: 8Ш
я*яйад^™авяяи
1Ё^г«М<Е
м*
аил
Рис. 4.12. Фрагмент документа ТеХ
В настоящее время оригинальная система ТеХ почти не используется, а
применяются ее модификации, например, система ЬаТеХ, представляю-
щая собой пакет макрокоманд, упрощающий работу с ТеХ.
ТеТеХ — система подготовки документов для СМХ-подобных ОС. В
состав дистрибутива Ребога Соге 3 входит пакет 1е1ех-кпех версии 2.0.2.
Более ранние версии ТеТеХ (до версии 0.9) не умели конвертировать ТеХ-
документы в формат РО Г. Начиная с версии 0.9, в состав ТеТеХ входит
утилита рбПех, которая предназначена для прямого конвертирования
1ех-файла в формат РЭЕ.
Коллекцию ссылок на справочные материалы по языку ТеХ можно найти
по адресу ЪСГр://ими.Гех.ип1уаг.ас.ги/дос.Ъст.
Текстовый процессор ЬуХ
Работа над любым документом распадается на две части: разработку со-
держания документа и представление его в удобном для читателя виде.
Принцип ХУХЫХУ'УО («видишь то, что получишь на печати») облегчает
только вторую часть работы, и обычный автор, не будучи одновременно
дизайнером, не умеет и не хочет использовать все возможности какого-
нибудь М8 ’Л'огс! для грамотного оформления своей статьи. Автор пред-
почел бы описать структуру своего документа так, чтобы легко было
применить к нему стиль, разработанный профессиональным дизайнером,
и сосредоточиться на своей работе, а не на подробностях оформления.
Этот принцип называется \УУ8Г\УУМ (И'йа/ Уон Бее Л И'Ла/ Уои Мест..
«видишь то, что подразумеваешь»), и реализован в текстовом процессоре
ЕуХ (Мер: //ими . 1ух.огд). ЕуХ — это визуальный редактор ТеХ,
отображающий документ не в точности так, как он будет выглядеть на
бумаге, но достаточно похоже, и вместе с тем не затемняющий его струк-
туры. На рисунке 4.13 показано продолжение работы над документом
ехатр1е: вставка сноски.
ЕуХ не создает ПУТ-файлы в домашнем каталоге пользователя. Найти их
можно во временном каталоге. Обычно это /етр/1ух_стрс11г???????,
где ?????? — это произвольная последовательность букв и цифр. Если
вы запускали просмотр ЭУ1 несколько раз, у вас будет несколько таких
каталогов. Поищите ЭУ1-фаЙлы в этих каталогах — вы обязательно най-
дете нужный вам файл. Для автоматизации поиска этих файлов откройте
окно виртуального терминала и введите команду:
Г1пй /Тт.р/1ух_Ьтр<11г* -пате *.с1у1
(.,* - ....и,)-;.. .л..,,,,,л - :)<;
ЕЫ ЬК 1'ЯЯ’ ЦуиЯ Ще* Яачдд1е гми-пий!; Неф
~'^пОап)
Пример работы с ЕуХ I
Встаю»* формул Ц
1. Химических: 6СО + 6Н ; О * С ( Н м О ( * 60 , Ц
Здесь описан прочесе ^тосвятеза глюкозы _ И
X. Матамггмчесхкс =
Рис. 4.13. Вставка сноски
Издательская система ЗспЬиз
ТеХ/ЬаТеХ — удачная система для верстки научных работ, ио в мире М-
псклте есть много издательских систем, куда лучше приспособленных для
создания макетов: Соге! УсШига®, Оиагк Х)ргш®, Ас1оЬе Раретакег®,
ГЮсмад®... Что же делать пользователю 1аних? Не устанавливать же
\У1ш1оч,'ъ из-за РауеМакег.
Положение сторонников свободною программного обеспечения изме-
нилось в 2003 г., когда вышел финальный релиз пакета компьютерной
верстки ЗспЬив 1.0 (Петр: /. огд.ик, автор ядра про-
граммы — Франц Шмид).
$спЬш — полноценная издательская система, в которой реализованы
все необходимые для предпечатноЙ подготовки документов функции, в
том числе цветоделение по каналам СМУК, система управления цветом,
поддержка Пшсобе для вывода на нетрадиционных языках, экспорт ре-
зультатов в форматы РВГ и Ро»1$спр1. В качестве внутреннего формата
хранения данных программа использует язык описания ХМ!., что об-
легчает экспорт данных в другие пакеты.
Программа ЗспЬш поддерживает тдеЙ распространенные графические
форматы, как ЕпсаркШаГеб РокгЙспр! (ЕР8), Л’ЕС, 'ПЕР, РоПаЫе Мерургк
ОгарЬшз (Е’ХО). Хр1хМар (хрш). Начиная с версии 1.0, 8спЬи$ поддер-
живает русский язык.
ЗспЬиз был включен в состав следующих дистрибутивов:
• ЭеЫап (нестабильный релиз)
♦ Сегйоо 1лпнх
♦ Мапбгаке 8.2
• 1лпбо\с5
• Ьусопк
• Нпк 0.4
Если вы используете одни из этих дистрибутивов, то, возможно, 8спЪи$
уже установлен у вас. А если нет, то пакет есгГЬиа версии 1.2 можно
скачать из репозитария З&урЬик пё: адресу Пр ; /7 Гг.р. а.1.с 11 пих .
ги/риЬ/Й1 ад: гГЪададсшБ /АЬТЫгшх/ 51 зурЪиз/5ЙРМ5 . с1 акв 1с /
вег1Ьий-1,3.;-а!С1.1,зге.грт.
Перед его установкой убедитесь, что у вас уже установлены:
♦ библиотека ОеЗ.З;
♦ библиотека НЬрп§ версии 1.2.x;
♦ дпоадзсгГрг. — интерпретатор языков РойЗспр! и РОЕ — версии
7.x;
♦ шрифты РовгХспрГ Шрифты ТТР поддерживаются КспЬия начиная с
версии 0.4.7,
• среда КГМ:: для работы самой ЗсНЬм она не нужна, но понадобится,
если вы хотите использовать метод с1г.щ-аш!-<1гор.
Дополнительно можно установить 1дП1е СМ8 — систему управления
цветом и цветоделения с поддержкой ТСОпрофилей, а взять ее можно
с ъеер: //даш. не Шесте .со®, В меню ЕтШ появится команда СЫог
Мапаретеп! $у<йеп1.
4.6. Графика в Ыпих
Несколько графических программ входят в состав большинства современ-
ных дистрибутивов. Далее я кратко опишу их и дам им оценку.
4.6.1. Графические редакторы
Редактор растровой графики С1МР — обрабатываем фото
ТЬе 01МР (Пе СгЫУ 1та$е Матри1айоп Рго^гат) — свободно распро-
страняемый редактор растровой графики, по своим функциям ставший
достойной заменой программе РйоЮзйор. Вот некоторые возможности
О1МР (далеко не все!):
♦ поддерживает практически все форматы растровой графики: СИР,
1РЕО, РМС, ТПРЕ ВМР, АУ1, МРЕС, Р8, РСХ, ХРМ, ТСА и другие;
* содержит множество инструментов для обработки изображений;
♦ поддерживает работу со слоями;
* полный Альфа-канал;
♦ может использоваться, для создания анимации — ОД, АVI;
* содержит средства для разложения видео в форматах МРЕСИ, ХАММ
на кадры;
♦ поддерживает сценарии и расширения, благодаря которым можно
добавить в программу новые функции. Поддерживаются сценарии
БспрЕРи, РегИ-и, РуИюп-Ри:
* обладает улучшенным управлением памятью: в результате размер
изображения ограничен только объемом жесткого диска;
♦ операций Отмена (Ппбо) и Повтор (Нейо) ограничены только дис-
ковым пространством;
♦ имеет многочисленные инструменты выделения областей: выделение
прямоугольной, произвольной, эллиптической и других областей;
♦ снабжен огромным набором графических фильтров, расширяемым с
помощью плагинов.
Программа Тйе О1МР доступна по адресу мер . д!гар .огд.
Оценка: отлично.
КРа!п4
Программа КРапП, входящая в состав КОЕ, представляет собой полную
противоположность программе ТЬе О1МР . КРат< обладает небольшим
числом функций и инструментов, в ней нет системы плагинов, а о кана-
лах и слоях эта программа вообще ничего не знает. Даже для создания
самых простых изображений приятнее и удобнее использовать про-
грамму О1МР. КРанн поддерживает форматы ВМР, ЕР8 (встраиваемый
Ро8(8спр1), 'ПЕР. СИЕ, 1РЕО, РХО,1СО, РС.Х, ХРМ.
Оценка: удовлетворительно.
К1сопЕйй — редактор иконок
Программа КI со п Ес! и — редактор пиктограмм КОЕ, Используется для
создания пиктограмм для среды КОЕ. Довольно простой редактор, по-
зволяющий быстро создать пиктограмму для вашей программы.
Оценка: хорошо.
4.6.2. Программы — просмотрщики изображений
Следующая группа программ — это программы просмотра изображений:
ООУ1еиг, КУ!е\г. Кшск5Ьо\у, Ппа^еМадшк, Е1ес1пс Еуез (ее). Я предпо-
читаю программу ООУгем.' — она больше напоминает мне популярную
программу АСТ)§ее.
ООШеш
ОС)У1еч можно использовать вместе с программами ТЬе О1МР, Е!есГпс
Еуек и ХРат!. Для редактирования загруженного изображения в програм-
ме ТЬе 0-1МР нажмите ОН + 1, в Е1ес1г1с Еуе$ — С1г1 + 2,в ХРат! —
С(г1 + 3. Разумеется, указанные программы должны быть установлены. Вы
хотите использовать другой редактор? Нажмите кнопку Конфигурация
на панели инструментов программы, в открывшемся окне перейдите на
закладку Редакторы и пропишите свой редактор (нужно указать название
редактора и командную строку).
Программа может создавать коллекции рисунков, находить похожие
файлы (по имени, размеру и другим параметрам).
Программа поддерживает форматы файлов: 1РЕО, Т1ГЕ, ОХЕ, РГ4О,
ХРМ, ВМР, РСХ, РОМ, РРМ. Могу порекомендовать для использования
в качестве основного прбсмотрщика.
Оценка: отлично.
Е)ес1пс Еуев
Следующая программа — Е1есгпс Еуеа. Эта программа а некоторых
дистрибутивах не устанавливается по умолчанию или вообще отсутству-
ет. Для ее установки нужно установить пакет «ее». Взять его можно с
пЬ Ср : / / ГСр . уп . ца/риЪ/ип1х/гед.ИаС-7 .2/ВейНаЬ/ КРМ5 /
ее-0.3-12-5.1386.грпь
Е!ес1пс Еуек — не только просмотрщик: с его помощью можно редакти-
ровать изображения, сохранять файлы в других форматах.
Для перехода в режим редактирования щелкните правой кнопкой мыши
на изображении и выберите команду Просмотр Показать/убрзть па-
нель редактирования.
Используя панель редактирования, очень легко отредактировать цвето-
вую гамму рисунка, изменить размер, повернуть изображение, сделать
скриншот экрана или выбранного окна. Для «фотографирования» экрана
нажмите кнопку Снять содержимое экрана целиком и сейчас. Вы также
можете выбрать окно для снятия — нажмите кнопку Выбрать окно для
снятия.
Интерфейс программы немного необычен, но со временем к нему можно
привыкнуть. Как и в программе Тйе 61МР, любое действие здесь про-
изводится через контекстное меню, то есть нужно активно использовать
правую кнопку мыши.
Программа поддерживает форматы: .1Р1-О. СИР, РМ( >, Т1РЕ, Р8, ВМР и
другие.
Оценка: отлична.
КЫскЗЬож
Программа быстрого просмотра КшскЗкоху соединяет в себе функции
файлового браузера с программой просмотра. Программа относится к
среде КДЖ, чем и объясняется первая буква в ее названии.
При щелчке по имени файла этот файл будет загружен в новое окно
программы. Файлы можно открывать и в том же окне, и в новом. При
желании можно установить полноэкранный режим просмотра. Программа
в состоянии организовать даже слайд-шоу. Поддерживаются все графи-
ческие форматы, известные КОЕ (*.)ре§, *.хрт, *.ррт, *.р§т,
*.рЬт, *.рпт, *.рп§, *.Ьтр, *.р§б, *.е1ш, *Л1ГГ, *.хсГ).
В программу встроены функции предварительного просмотра и печати.
КшскЗЫж обладает всеми необходимыми для просмотрщика функци-
ями — ни больше, ни меньше. Конечно, в отличие от <ЭОУ1е\у, она не
умеет составлять списки коллекций, но я сомневаюсь, что вам когда-
нибудь понадобится эта функция.
Существенным достоинством программы является то, что для просмотра
каталогов используется Копднегог, поэтому вам доступны все операций
над файлами, которые вы можете использовать в файловом менеджере.
Можно настроить комбинации клавиш управления просмотром.
Оценка: отлично.
КЖён№
Программа КУ1ехе является достойной альтернативой программе
Кшск8йо\т. К Улем це умеет показывать слайд-шоу в автоматическом ре-
жиме, зато она в состоянии повернуть изображение на заданный угол, от-
разить и сохранить результат, а также работать в полноэкранном режиме.
Для перехода в этот режим нажмите комбинацию клавиш С(т1 + 8ЫП + р.
Кроме того, КЛчесс умеет еще и сканировать изображения.
Оценка: отлично.
Коока
Следующая группа программ предназначена для сканирования изобра-
жений: это Коока и Х8апе. Первая программа, как указывается в доку-
ментации КОЕ. предназначена ддазШйкрбвания и распознавания текста.
Коротко о ней можно сказать так: до ЙпеКеабег ей еще очень далеко.
Опенка: удовлетворительно.
ХЗапе
Для сканирования изображений я предпочитаю использовать программу
Х8апе (Ьй Ьр: / /имя. хзапе. огйКЙ|>а®да, она работает не очень ста-
бильно. но результаты сканирования лучше, чем у программы Коока.
Оценка: удовлетворительно.
4.6.3. Как сделать снимок экрана
К5пар5йо1
Эта программа предназначена для захвата экрана или отдельного окна
и сохранения результата в Р\'О файл. Скриншоты для этой книги я де-
лал именно с помощью К8пар5Но1. Вообще не представляю, как бы я
обошелся без этой программы. Можно, конечно, использовать Е1ес1пс
Еуез, но запускать редактор изображений для того, чтобы сделать лару
скриншотов, не очень рационально.
Можно воспользоваться комбинациями клавиш КИЕ — СГг1 + Рппг и
Ак + РгтГ Первая делает снимок всего экрана, а вторая—только актив-
ного окна. Но куда потом вставить этот снимок? В КРайн? Попробуйте.
В нормальный редактор, например, Тйе О1МР, копию экрана вставить
невозможно, а использовать КРашГ очень неудобно.
К8пар8йо1 позволяет установить задержку, за время которой можно
подготовить экран к съемке: открыть нужные окна, меню приложения
или меню КОЕ. Через установленное время программа сфотографирует
весь экран или текущее окно, оповестит об этом звуковым сигналом и
предложит сохранить снимок.
1тадеМад!ск
Пакет 1та§еМа§1ск обычно используется для просмотра изображений
и преобразования их в другой формат. Честно говоря, мне не понра-
вился интерфейс и набор функций этого просмотрщика. Но в пакете
1та§еМа§1ск есть полезная утилита 1трог1, позволяющая легко и быстро
сделать снимок экрана. Может быть, среда КОЕ у вас вообще не уста-
новлена, поэтому программой кхпарзЫн воспользоваться нельзя? Тогда
введите (в Х-терминале иди окне запуска приложений вашей оконной
среды) команду:
$ з1еер 5; 1трогГ -итпйои гоаГ эсге.еп.рпд
Команда *1еер генерирует необходимую задержку в секундах. Думаю, 5
секунд хватит, чтобы вы смогли привести экран в нужный вид: вывести на
передний план нужное окно, выбрать нужный пункт меню и т.п. Через 5
секунд будет выполнена команда 1трог1 Она сделает снимок корневого
окна, то есть всего экрана, и запишет его в файл всгееп.рпд. Формат
Р\О для снимков экрана оптимален. Если вам нужен другой формат,
например, 1Р0, просто измените расширение выходного файла:
$ зьеер 5; ГтрогС -ь?1п<3ои гооС зсгееп.зрд
А как сделать снимок конкретного окна? Первый способ — указать
координаты или геометрию окна, предварительно узнав их по команде
хмзшпГо:
$ з1еер 5; ггпрогС -сгор 400x300 всгеепХ.рпд
5 я!еер 5; ьптрогГ -деотосгу геометрия всгееп2.рпд
После запуска программы хтптГо указатель мыши изменит свой вид со
стрелки на крестик. Щелкните по окну, и программа предоставит о нем
подробную информацию.
И второй способ:
$ ШрогС и1пдои.рпд
Команда $1еер не нужна, поскольку программа 1трог1 предоставит вам
возможность выбрать нужное окно — указатель мыши тоже изменится
на крестик. Щелкните на нужном окне, и буквально через полсекунды в
файл итпйом.рпд будет записан образ выбранного окна.
Программа 1трог1 довольно гибкая, рекомендую прочитать тап этой
программы — вы найдете там много интересного.
А что если вам нужно сделать снимок текстовой программы, а не гра-
фического окна? Проще всего запустить эту программу в X-терминале,
сделать снимок окна Х-терминалд и отрезать обрамление окна с помо-
щью 61МР.
4.7. Полезные трюки
просмотр в Консоли документов М5 №огр и РОЕ
Для просмотра и редактирования Документов М8 ХУогс! с успехом ис-
пользуется Ореп ОШсе ХУгпег, но иногда нам нужно быстро просмотреть
документ (например, вспомнить номер телефона, указанный в конце до-
кумента), и запускать тяжеловесный ОО ^гйег не хочется.
Для просмотра документов М8 \Уогб нам понадобятся две утилиты —
ит^Уаге и \*3т. Первая — это конвертер документов \У'с>гб в формат
НТМЬ (ъл/иаге. воигсетогдежнек), а вторая — универсальный бра-
узер, которым мы будем просматривать полученный НТМЬ-файл. Обе
утилиты входят в состав современных дистрибутивов, правда, могут не
устанавливаться по умолчанию.
Итак, для просмотра документа аосшпепс . йос введите команду (кон-
вейер):
$ -х /ияг/11ЬЛ<^ЛМЙлй.хт1 сЗосигпепГ. .<3ос ? иЗга -Т Иехг./ИГлй
Если вы собираетесь пользоваться этой длиннющей командой часто,
оформите ее как Ьаьй-сценарий У1еы3ос, не забыв сделать файл
исполняемым. Поместите сценарий в каталог /изг / 1оса1 /Ыг, чтобы
он был доступен всем пользователям системы.
# 1 /'Ып/Ьазй.
мЛ’аге -х /изг/ИЬ/^/иуНтХ-.хий $1. 2>/йеу/пи11 [ иЗт -Т СехС/бЫп!
Обратите внимание на перенаправление «2>/с1еу/пи11». Таким образом
мы подавляем сообщения об ошибках, чтобы они не путались с выводом
конвертера.
Теперь для просмотра документа с1осшпеп1.йос можете воспользоваться
командой:
$ У1.екс1ос йосшпепЬ . <3ос
Такой же сценарий можно написать и для просмотра РОГ-документов.
Конвертером в этом случае будет утилита рс1ПоЫт1 (гнлр: //раЕСоИСт1.
-всигсеРогде. пес). Дйя просмотра созданного программой НТМЬ-кода
мы будем применять текстовый браузер еНпк.5.
Итак, для просмотра файла ЕНе.рбЕ будем Используем команду:
$ рйЕЕоНЬт! -д -поЕгатее -еЬаоиС ЕНе.рбЕ еНпкз
Опять создадим сценарий /изг/1оса1/Ып/у1емраЕ, автоматизирую-
щий работу:
#! /Ып/ЬаеЪ
рдЕсоМт! -д $1 -/Сетр.^Ет!
еНпкз -/Сетр.НЕпй.
А вот в дистрибутиве Гебота Соге 4 таких фокусов проделывать не нужно:
в него включен Етшсе — быстрый просмотрщик документов в формате
РЭР и РойГЗспрЕ
Глава 5
ЗВУК И ВИДЕО
в ишвх
ПОЧЕМУ ВОСПРОИЗВЕДЕНИЕ АУДИО
В 11ШХ ЛУЧШЕ, ЧЕМ ВШЮОУУВ
---ПРОСЛУШИВАНИЕ МУЗЫКИ
Ф---«ОГРАБЛЕНИЕ» А1Ю10-С0
ПРОГРАММЫ
ДЛЯ ПРОСМОТРА ВИДЕО
ВОСПРОИЗВЕДЕНИЕ
НЕПОДДЕРЖИВАЕМЫХ ФОРМАТОВ
иших ПОЛНОЕ РУКОВОДСТВО
5.1. Почему воспроизведение аудио
в Ыпих лучше, чем в Ш1пдоу?8
Самыми распространенными аудйоподсистемами для 1лпих являются 088
(Ореп 8оппй 8уз1ет) и Л18Л (Абхапсес! Гапих 8ошн1 АгсЬйесШге). Обе
системы поддерживают большое количество 18А- и РСЬзнуковых карт,
поэтому, скорее всего, вам не придется разыскивать в Интернете драйвер
для своей звуковой карты. В последнее время чаще используется система
А1.8Л, которая полностью совместима с системой 088, но содержит много
дополнительных функций.
Сейчас ТлпнХ, если не идеально, то, во всяком случае, подходит для
работы со звуком. Когда Линусу Торвальдсу прислали первые патчи,
оптимизирующие Ыпнх для работы с аудиоинформацией (так называемые
к™ Шепсу-патчи), он не одобрил эту идею. В результате — отставание
от ХУтскнУК по работе со звуком как минимум на три года. В 1995 году
насчитывалось 30-35 (сейчас насчитывается около 800) приложений для
Гчпих, способных работать со звуком. РабоТать-то они работали, но до-
вольно криво. Сейчас объясню, почему.
Для работы со звуком в реальном времени нужно минимизировать за-
держки (англ. Шепсу — время ожидания). Ьагепсу в 100 мс вы уж точно
услышите невооруженным ухом, задержку в 10 мс можно услышать в
виде небольшого шума на фоне — тумана, Идеальное время задержки —
3 мс для аудио (АУЛУ) и 1 мс для МИЛ. Кстати, проблема Шепсу — это
проблема не только 1Тппх. а всех операционных систем, не являющихся
системами реального времени (К.ТО8 — Кеа! Типе ОрегаПоп Зу^Геш)—-
ХУщбош, МасО8. До появления системы А1.5А время задержки при
работе с аудиоинформацией в Длпих (испшьзовалась система О88/Т’гее)
составляло около 150 мс. Система А1.8А снизила время задержки до
6 мс — результат лучше» чем у ЗУгойохуз 2000.
В настоящее время задержки (последняя версия АЕ8А) составляет 4.3 мс.
Это довольно неплохо, что позволило 1_лпих вырваться на второе место
по обработке аудиоинформации среди ке-НТ операционных систем. На
первом месте — МаеО$ X (СогеАисНо АР1), на третьем — ХУтбоугз 2000
(А8Ю) и Мас 08 9.
В пользу ОС 11ПИ.Х говорит также ее надежность и стабильность при ра-
боте с любыми данными. Даже если взять непрофессиональную работу
с мультимедиа-данными — прослушивание МРЗ: в Гл'пих у меня еще ни
разу не заикался Хтшя, что бы я ни делал. В АтпОоит; же при открытии
больших документов в том же ’А'огб наблюдаются искажения при про-
игрывании музыки с помощью ХУтАтр.
5.2. Прослушивание музыки
трд123
Это самая простая утилита, позволяющая слушать музыку в консоль-
ном режиме. Скачать ее можно с домашней страницы разработчика
Шчи.трд123.де.
В графическом режиме запускайте ее через виртуальный терминал:
$ трд!23 ^Ие.трЗ
Программа позволяет прослушивать музыку, записанную в форматах
МРЕО 1.0/2.0 (уровни 1, 2 или 3). С помощью шр^123 вы можете как
проигрывать отдельные песни, так и создавать списки песен:
$ трд123 ЕНе-ИвЬ. гхС
В файле П1е-Ияс. ехс перечислите имена файлов (по одному в каждой
строке), которые вы хотите прослушать. Можно указывать файлы, рас-
положенные как на локальной машине, так и на удаленной, например:
/Иоте/деп/гкрЗ /ЬтасКО! .тр.З
:!/С Ср.ййгуйг.ги/риЪ/зопд.трЗ
ЬГГр: //иии. вегчег. ги/а.ид1о/Ьгаск8 .трЗ
Еще одна полезная консольная программа — ср!ау (ЪСЬр; / / мин .ре.
Ии Г . {1. /~Г1и/ср1ау). Это оболочка для различных аудиоплейеров, по-
зволяющая удобно создавать списки песен для проигрывания. Вы пере-
ходи те в нужный вам каталог, выбираете песню, нажимаете Ешег, и ср!ау
запускает т]щ123 для проигрывания выбранного файла. Использовать
эту программу намного удобнее, чем тр^123. поскольку вам не нужно
вручную создавать списки песен, к тому же ср!ау отображает индикатор
проигрывания и время, прошедшее с начала проигрывания. Для выхода
из программы нажмите клавишу <О>
Хттз
Наверное, самым знаменитым проигрывателем МРЕС-файлов является
Хтпи — полный аналог популярной программы ХУтАтр (Ъстр •- / / и™.
хттв. огд). К сожалению, в дистрибутивах, основанных на Кед На1 начиная
с версии 8-0, из него исключена возможность проигрывания МРЗ. Програм-
мы с открытым исходным кодом оказались законодательно несовместимы
с этим коммерческим форматом, и компания На( переработала все
мультимедийные приложения, удалив из них весь код, связанный с МРЗ.
Пользователям таких дистрибутивов можно посоветовать скачать раннюю
(1.2.7) версию пакета хття с ЕСр://Ег.р. випеЬ . зе/риЬ/ти1Ь1теа.1а/
хитз/1.2.x и дополнить ее из ЪССр://тсп1сс.ЬаЬ.ги/НРМ5/
:т1рд12 3~хпШ13-1.2.7-13.р.1386. грт .
Другие программы
Для проигрывания МПЛ-файлов в состав Ыпих (не во всех дистрибу-
тивах) входят сразу две программы: КМШ и А\УЕ32 (полное название
ТкАХУЕХДсН). Первая программа входит в состав КОЕ (пакет кДеаиТЫ -
те<На), поэтому, если среда КОЕ у вас установлена, она всегда будет вам
доступна. Кроме МЮЕфайлов, КММ позволяет проигрывать и караоке
(КАП-файлы).
Также две программы предназначены для регулирования громкости —
Аштпх и КМ1х. Обе программы позволяют установить уровень громкости
для всех аудиоустройств, установленных в системе.
В состав КОЕ входит аудиосервер аК1$ (демон аг1*><1: в среде ОЖ)МЕ
ту же роль играет еЗоипй, е.м1). Как написано в документации по КОЕ,
«звуковой сервер позволяет вам слышать системные звуки и при этом
одновременно проигрывать трЗ-файл или играть в игру с фоновой му-
зыкой. С ее помощью системные звуки обогащаются различными эффек-
тами, а программисты имеют возможность легко включать в программы
поддержку звука».
Но не все так красиво, как кажется на первый взгляд. Если вы запустите
сервер аЖк, у вас не будет работать ни одна программа-проигрыватель,
которая его не поддерживает. Любая программа, которая попытается
обратиться к звуковой плате в обход аК1з, получит сообщение, что
устройство занято другой программой. Не поддерживают аКп, уже рас-
смотренные проигрыватели тр^123 и Хттк
Примечание^
В программу Хттз можно включить поддержку сервера аА1в, добавив модуль аЯШ
□тег 0.4 {НЬаНвоиГ.зо). Этот модуль не устанавливается по умолчанию в некоторых
дистрибутивах.
Поддерживает звуковой сервер МР-проигрыватель ХоА1ип, входяший
в состав КОЕ. Поэтому вам придется решить, какой проигрыватель
использовать. Если вы хотите использовать Хгпта, тогда вы не будете
слышать системные звуки, или же вы будете использовать ИоАШп, но
будете слышать звуки КПЕ. Лично я предпочитаю первое: дело в том, что
любая программа, поддерживающая аКЛ$, «съедает» больше системных
ресурсов, чем Хпнпк.
Рассмотрим пару полезных трюков, которые можно проделать с помощью
ХоА1пп. Допустим, вы хотите слышать одну музыку, то есть вам нужно
убрать голос исполнителя. Выполните команду меню Параметры Эф-
фекты и установите эффект Уоюекетоуа!.
Конечно, голос удаляется не всегда: иногда он все еще слышен, хотя и
слабо. В этом случае нужно применить эффект Уо!сеКетота1 несколько
раз (два и более).
Вам также доступны эффекты реверберации, расширения стереобазы
(Ех1га$1егео), питч (замедление и ускорение воспроизведения).
При запуске любой программы, использующей аК15, будет запущен сервер
аКгз, если он не был до этого запущен. Сервер аКЬ можно запускать и при
загрузке К ЛЕ. Для этого запустите Центр управления КЛЕ и перейдите
в раздел Звук -> Звуковой сервер. В этом разделе вы можете установить
различные параметры звукового сервера — от метода ввода/вывода звука
до частоты дискретизации. В качестве метода ввода/вывода звука вы мо-
жете выбрать один из методов: Ореп 8оипб 8уйет, АбУапсей Ен их Боинг!
АгсЬйесШге, Тйгеабеб (многопотоковая) 088 или Автоопределение.
Вам уже надоело слушать МРЗ-файлы и теперь хочется прослушать ком-
пакт-диск? Проигрывать компакт-диски можно или с помощью специаль-
ной программы КаСЦ (входящей й пакет ЫепшШтесйа), или используя
какой-либо другой проигрыватель, который поддерживает компакт-диски
(например, тот же Хшша).
Вы можете редактировать названия песен с помощью редактора базы
данных СП (Г'гееЛВ). По окончании редактирования вы можете сохра-
нить названия песец локально или же на сервер РгееПВ, чтобы другие
пользователи не заполняли названия альбома и дорожек вручную. Впо-
следствии вы сами можете получить эти данные от сервера ЕгееЕ’В.
Однако эту возможность вы вряд ли будете использовать, разве что сами
организуете свой сервер РгееЛВ и будете использовать его вместе со
своими знакомыми.
5.2.1. Сравнение Хттз и МоАТип
Сегодня самыми популярными проигрывателями для Ьйщх являются
программы Хшшк и МоАйт. Первая программа поставляется с большин-
ством дистрибутивов, а вторая входит д состав КОЕ. Как вы используете
программу Хтт.<’ Скорее всего, просто для прослушивания музыки, а
она много чего умеет. В этом параграфе мы поговорим о Нестандартных
возможностях программы Хттз — плагинах, скинах. Параллельно будем
сравнивать возможности Хтшв с возможностями программы ХоАГип
Полное название проигрывателя Хштх — X МиШте&а Зуагет. Про-
грамма Хшпг', использует интерфейс УнпАМР и поддерживает скины
программы УйпАМР. Хтшя может воспроизводить звук, записанный в
форматах МРЗ, \УАУЕ, МОП, 83М и других. Версия 1.2.7 поддерживает
плагины три!, опГрШ, ^епега! и УЙиаП/аНоп.
Окно программы Хпнпч состоит из трех частей: главное окно, эквалайзер
и редактор песен. На рис. 5.1 изображена программа Хттз в «полной
комплектации».
2. - Грязъ. 4:44
./ 3 ~ К 3$
: 4, - |
: $, - Зйкл? $
& - €••<!» а-
7. Мм*)» 51»
.• &. - ОпйШЛМ 5:3?
§ ~ Пы гк& У^2.
“ Сьтры 42»
11. Кило - гижвда , 3
:: 12 Кино ••• шгтъ, а денег и«1 4Ш
"13. Кнво ~ канешь Ш ашаг* 31Ж
•«•I * Ж 1
Рис. 5Л. Проигрыватель Хттв
Как я уже отмечал, программа поддерживает форматы МРЕО 1/2/3,
1ЛАУЕ, МОЕ), 83М. а также формат АиФоСЕ). Таким обилием форматов
не может похвастаться программа 1ЧоА1шт Честно говоря, меня не ин-
тересуют форматы МОП, 83.М. СШ (ГО 8оГ1л\аге). мне нужна поддержка
только форматов МР1/2/3, ХУАУЕ и АшйоСО.
Программе \оА1ип очень не хватает поддержки АисйоСЕ). Конечно,
можно запустить проигрыватель АибюСО К$СИ, но зачем — ведь есть
Хиппа, Если вы хотите узнать, какие еще форматы поддерживает ваш
Хпния, откройте окно опций (нажмите С1г1 + Р), На странице Звуковые
модули Ввода/Вывода представлены все модули, отвечающие за поддерж-
ку тех или иных форматов.
В этом же окне вы можете выбрать модуль вывода: драйвер 088, модуль
вывода звука еЗоипб или модуль записи на диск. Для нормального вос-
произведения нужно использовать драйвер 088. Нажав кнопку Настрой-
ка, вы можете настроить выбранный драйвер. Если у вас установлена
звуковая карта Зоцпб В1а$1ег 16, УШКА или А\УЕ32/64, в настройках
драйвера 088 вы можете установить трехмерное стереорасширение (ЗГ>
81егео ЕпйапсетеЩ).
Теперь немного поговорим о модуле записи на диск. Если установить этот
модуль в качестве основного модуля вывода, музыка не будет воспроиз-
водиться с помощью драйвера 088, а будет записываться на диск в виде
\УАУЕ-файла. А это значит, что любой формат, который поддерживается
модулями ввода программы Хтта, Вы можете конвертировать в \УАУЕ.
Скорее всего, МРЗ конвертировать в \К'АУЕ вам не придется: это про-
сто неразумно. А вот «сграбить» пару компактов, не выходя из любимой
программы — это можно. Откройте компакт-диск (для этого нажмите
8ЫЙ + Ь, чтобы загрузить каталог, и выберите каталог /тпс/сбгот) и
включите модуль записи на диск. Теперь нажмите кнопку Р1ау. Процесс
записи можно остановить в любой момент. Все! Все дорожки будут за-
писаны на диск (в ваш домашний каталог) в виде 5МАУЕ-файлов. Имена
файлов будут типа ТгаскЫ.шм»
Естественно, во время записи музыки вы не услышите, потому что модуль
088 не используется. Стоит заметить, что Хини» «грабит» компакты значи-
тельно быстрее, чем программа Спр (по крайней мере у меня). Потом эти
файлы можно будет преобразовать в МРЗ с помощью любого конвертера,
например, 1ате или13епс1. Преобразовать ХУАУЕ в МРЗ можно так:
$ 1ате -Ь 128 зл.рцЬ.№ОГ оССриЕ.П’.рЗ
Опция -Ь устанавливает скорость потока (Ъйпйе) 128 Кбит/с. Более под-
робно о преобразовании У/АУЕ в МРЗ вы можете прочитать на страницах
помощи программы 1аще, выполнив следующую команду:
5 тап 1ате
Программа МоАйш также обладает модулем записи на диск. Его можно
выбрать в окне Эффекты. Должен заметить, что в программе ХоАГцп
этот модуль не работает. Впрочем, он и не нужен —все равно программа
ХоАШп не поддерживает АибюСО.
На странице Эффекты -> Общие модули вы можете выбрать нужный вам
эффект иди дополнительный модуль. Например, модуль Смена песни по-
зволяет установить команду, которая будет выполнена после воспроизве-
дения песни, и команду, которая будет выполнена после воспроизведения
всех песен. Первая команда может вкл ючать параметр %», который будет
заменен названием только что воспроизведенной песни. Эту возможность
можно использовать для автоматического конвертирования ХУАУЕ в МРЗ.
Вы будете слушать музыку, а Хшшз будет конвертировать ее в формат
МРЗ.
При воспроизведении музыки вы можете использовать один из эффек-
тов:
♦ ЕАВ8РА (по умолчанию)
♦ 8ОХ
♦ Модуль удаления голоса
♦ Улучшенное стерео (расширение стереобазы)
♦ Эхо.
Включив модуль удаления голоса, вы будете слышать только одну музыку.
Конечно, качество работы этого модуля очень сильно зависит от качества
записи вашего МРЗ. Этот модуль намного лучше работает с АисйоСТ) —
голос полностью удаляется.
Аналогичные эффекты поддерживает и программа \оА1ип. К тому же
в программе .\оА1ип имеется возможность применить один и тот же
эффект несколько раз.
Теперь рассмотрим модули визуализации. Лично мне больше всех нра-
вится модуль С-Гогсе. Кроме обыкновенной визуализации, он обладает
множеством дополнительных функций, например, функцией измерения
скорости кадров (Гр»). Нажмите <?> в окне модуля, и вы увидите список
функций модуля.
Модули визуализации поддерживаются и программой ХоА1ип, но поче-
му-то они очень нестабильны, и их использование может вызвать сбой
\оА1ип.
Нам осталась рассмотреть только скины. Нажмите АН + 8, чтобы от-
крыть окно просмотршика «шкур» — так официально называется окно
выбора скина. У вас нет «шкур»? Где их взять? На официальном сайте
Ыср5 //хттз . огд илина Нььр: //ими. БкАпЬаве. отд. Подойдут также
ваши «шкуры» от УЛпАтр'а. Тлр-фгшлы скинов нужно скопировать в
каталог /изг/вкаге/хпнйз/Зкгпв. После этого установленные «шкуры»
будут доступны всем пользователям системы. Если вы хотите, чтобы с
трудом добытая «шкура» была доступна только вам или же если у вас
нет прав на запись в каталог /лнг/нкаг®, установите «шкуру» в каталог
--/ .хтгпз/Зктпз.
Как видите, программа ХоАШп уступает программе Хтть практически
по всем параметрам. Кроме того, ХоАГип. работая через звуковой сервер
аЮе, требует больше памяти, чем Хипп», воспроизводящий звук непо-
средственно через /аеч/азр.
Чтобы запустить Хття сразу после окончания работы с ХоАШгт оста-
новите демон аудиосервера агГвФ, иначе вы подучите сообщение, что
звуковая плата занята другим приложением — а именно этим демоном.
5.3. «Ограбление» Аибю-СО
Вот мы и подошли к самому интересному моменту в этой главе. Допустим,
вы одолжили у кого-то новый компакт-диск и захотели сохранить его со-
держимое в формате МРЗ на своем жестком диске. Под ХУшботе написано
множество программ, позволяющих «грабить» музыку с компакт-дисков,
самые известные —АшЙоОгаЬЬег, ЕАС и СПЕХ. Но не устанавливать же
\У1пбо1№ только для того, чтобы «сграбить» пару компактов? Есть про-
грамма-аудиограббер и для Ьших. Это консольная программа сбрагашна
(Негр: //им’и.хтрЪ. огд/рагапо!а) и графическая оболочка для нее Опр
(пстр: / /тлто.позЬаЫс . огд/дгхр), работающая в среде ОХОМЕ.
Запустите программу Опр, затем нажмите кнопку «Е)есЬ>, вставьте ком-
пакт-диск и снова нажмите кнопку «Е|есб>.
Вы видите, что вместо названия песен отображаются только надписи
Тгаск! ..ТгаскК Вряд ли нас устраивают такие названия, поэтому нажми-
те кнопку Тоц^1е ВКс Ебйог, Окно программы Спр расширится, и вы
увидите редактор названий песен. После того, как вы введете названия
песен, нажмите кнопку $ате <ЗКс 1пГо.
Перед началом «ограбления» компакт-диска перейдите на вкладку СопГщ
программы Спр. Нас интересуют опции на вкладках СП, Юр, МРЗ, ЮЗ.
На вкладке СВ можно указать имя и параметры СП-привода. По умолча-
нию используется устройство /йеу/ейгот. Вы же можете указать другое
устройство СП-КОМ. например Меу/наа (если СПК ОМ подключен как
51ауе ко второму контроллеру).
Теперь откройте вкладку Юр Ор*юп$ и отключите надоедающий режим
АиГо-е)ес1 аПег пр. В этом режиме после того, как Опр скопировал на
винчестер содержимое аудиодорожек, компакт-диск автоматически из-
влекается из привода. На вкладке МРЗ —> Орлове вы можете установить
скорость потока МРЗ (по умолчанию используется 128 Кбит/с). Здесь же
можно установить количество процессоров, которые будут использованы
для сжатия музыки (параметр \игпЬег оГ СРШ (о иве).
Как работает аудиограббер? Сначала он читает дорожку компакт-дис-
ка и записывает ее в ХУАУ-файл, Затем он запускает МРЗ-компрессор
и сжимает ХХАУ-файл. После сжатия исходный ХУАУ-файл удаляется.
Вы можете отключить параметр ОекЧе л?ау айег епсойлпд, чтобы ХХ’АУ
файл не удалялся после сжатия, но помните, что ХУДУ-файлы занимают
очень много дискового пространства. Например, обыкновенный аудио
компакт-диск в формате АУАУ будет занимать около 650 МБ на жестком
лиске, а этот же компакт-диск в формате МРЗ — всего около 65Мб (при
битрейте 128 Кбит/с).
Битрейт (Ы1та1е) — количество информации, описывающей одну секунду звука,
ч ; Ж Опыт показывает, что битрейт 128 Кбит/с для большинства людей достаточен, чтобы
считать звучание идеальным. Значение 128 Кбит/с является пороговым значением,
выше которого качество не так существенно увеличивается при увеличении
битрейта, чем до него. Но тем не менее чем битрейт больше, тем лучше. Сейчас
стараются использовать битрейт 160-192 Кбит/с.
Теперь мы готовы приступить к непосредственному преобразованию
аудиодорожек в МРЗ-файлы. Выберите нужные вам дорожки с помощью
правой кнопки мыши и перейдите на вкладку К1р. Вам доступны два
режима: Шр+Епсойе и просто Шр, В первом случае программа Опр
создаст ХУАУ-файлы и преобразует их в формат МРЗ. Во втором случае
преобразование в формат МРЗ произведено не будет. Нажмите кнопку
Кф+Епсоде. Если вы не выбрали ни одной дорожки, Спр спросит вас,
хотите ли вы записать сразу весь компакт-диск.
Программа Сгф работает очень быстро, поскольку используются сразу
два потока — один для чтения дорожек СО и записи их в XVАУ-файл, а
другой — для преобразования ХУАУ-файла в формат МРЗ. Например, вы
выбрали две дорожки. Сначала Опр прочитает первую и сохранит ее на
диск в формате ХХАУ. Затем, пока будет читаться вторая дорожка, (Згф
параллельно будет сжимать первый ХУАУ-файл. Качество сжатия тоже
вполне приемлемое: песня продолжительностью 3 минуты 30 секунд за-
няла 3.36 Мб в формате МРЗ (при битрейте 128 Кбит/с).
5.4. Программы для просмотра видео
Обзор программ
Как вы знаете, видео может быть записано в форматах АУ1. УСП. ПУП,
МРЕО-1, МРЕС-2, МРЕС-4. Больше всего нас (во всяком случае меня)
интересует самый распространенный формат —: последний. Своей по-
пулярности формат МРЕ64 добился благодаря тому, что он не требует
никакой дополнительной аппаратуры, как, например, ПУП. В зависимо-
сти от дистрибутива у вас могут быть установлены разные программы для
просмотра видео. Самые распространенные: ХМотте (Мер: / /Него!паз.
воигсеГогде. пеС/хпюУ1е-1.8 . Саг. дг), С(У и Хше.
Программа ХМоузе поддерживает видео, записанное в форматах МРЕО-
1/2, ПУП и Ошск'Пте. Программа С1у — поддерживает АУЬ МРЕО-1/2,
УСП. Как видите, эти программы не поддерживают нужный нам формат.
Если вам нужен МРЕ6-4, то вам прямая дорога к Хше
В состав КИЕ входит простенький видео проигрыватель аКНоп. Возмож-
ности его довольно скудны: он поддерживает только МРЕ61, ОшекТйпе,
АУ1 и анимированный СТР. К тому же МРЕС полностью не поддержи-
вается — воспроизведение без звука. Почему так слабо? Да потому, что
аКНоп — это всего лишь оболочка для старого проигрывателя хагпт
Единственная функция, которая понравилась мне в аКНоп, — это захват
экрана. Для захвата текущего кадра нажмите клавишу <С>. По умолча-
нию используется формат РЬ:О, но в параметрах программы вы можете
установить любой другой формат.
Программа Х1пе
Программа Хше (НС Ср: / /х!пеИд. бе) — свободно распространяемый
видеопроигрыватель для ПШХ-систем. Поддерживает форматы УСП.
ПУП, МРЕС-1/2 и дополнительна МРЕС-4, а также другие форматы.
Это значит, что программу можно расширить, добавив в нее поддержку
нужных форматов. Однако в некоторых дистрибутивах поддержка МРЕС-
4 добавлена, а в некоторых нет. Например, в дистрибутиве ДЕТ 4ипюг
1.1 я не смог просмотреть фильм в формате МРЕС-4 с помощью Хше.
Пришлось обновить систему. Во второй версии дистрибутива АЕТ 1шног
с поддержкой МРЕО-4 все было нормально.
Кроме пакета самого проигрывателя х1пе-и1, необходимо скачать и
библиотеку х1пе-11Ъ с тем же номером версии, а если смотрите видео-
ОУП, то установите дополнительно и хтпе-уейх — плагин, обеспечи-
вающий удобство управления. Пакеты ЯРМ версии 0,99.3 можно взять с
НС Ср: / /реорТе. Ппих-опИпе. ги/хрбеУ/Ыоойу/гртн .
Рис. 5.2. Проигрыватель Х1пе
Когда программа будет установлена, введите команду хше-сИеск для про-
верки конфигурации вашей системы; программа определит используемый
вами сервер звука, видеодрайвер и другие параметры.
Программа Хше по умолчанию использует видеодрайвер ХЗйт и ауди-
одрайвер ака09, но можно их сменить, указав новые драйвера как ар-
гументы опций -V и -А соответственно. Проигрыватель поддерживает
аудиосистемы 088. АЕ8А. аКГ5. Е8Й, 1г!х и 8ип АшЕо и видеодрайверы
ХУ1с1ео, Х811Ш, ОрепОЕ, 8ЭЕ, А8СП Ап НЬгагу, 8упсй> и ЕгатеЬиПег.
Если вы установили какой-нибудь драйвер (аудио или видео), а хше
перестал запускаться, запустите хше с параметрами -А пи11 и -V пиП или
заново введите команду хте-сЬеск.
Список опций команды хше можно посмотреть, как обычно, введя
х!пе --Ее1р.
Остановлюсь только на опции -п, разрешающей управлять проигрыва-
телем по сети.
Для управления по сети создайте файл -/ .хтпе/раввжЗ и добавьте в
него строку АЕЕ:АЕ1.О\У. Затем добавьте строку
хЗпесЫ 6789/Сср # управление через порт 6789
в файл /есс/зегухсез. Запустите хше с параметром -п, а на том ком-
пьютере, с которого собираетесь управлять, выполните команду ге!пеЬ
<имя_узла> 6789. Теперь можно управлять проигрывателем по сети.
Введите команду Пе1р для получения краткой помощи по командам для
сетевого управления.
Просмотр ОУП
Для просмотра ОУО в Ыпих используется проигрыватель То1ет (меню
К Мультимедиа Видео Проигрыватель То1ет. если вы работаете
в среде КОЕ, или Приложения -> Звук и видео -> Видеопроигрыватель
ТоСеш, если в С1ЧОМЕ).
Для открытия ОVI)-диска выберите в меню команду Фильм -> ПУЛ.
Сначала То(ет отобразит меню ОУП-диска (файл УПЭЕОГН.УСЗВ), в ко-
тором вы сможете выбрать звуковой поток (язык фильма), титры и др.
Смотрим телепередачи под Ыпих
Чтобы смотреть телевизор без отрыва от любимого компьютера, придет-
ся купить ТУ-тюнер. Я рекомендую приобретать тюнеры производства
компании АсегМесКа. Не пожалейте денег на тюнер этой компании. А
внешние ШВ-тюнеры, наоборот, не покупайте: для них еще не создано
стабильных драйверов под ОС Ыпих. К тому же пропускная способность
глины 158В 1.1 недостаточна для качественного просмотра телепередач.
Следующий момент, который важно учесть при выборе ТУ-тюнера, это
поддерживаемые им стандарты. Телевещание в странах СНГ произво-
дится в системе БЕСАМ, а звук передается в системе О/К. Поэтому при
покупке тюнера, убедитесь, что он поддерживает оба эти стандарта. Если
ваш тюнер поддерживает только РА!., изображение будет черво-белым,
а если отсутствует поддержка О/К, то... Я умолчу об этом (не хочется
вспоминать издаваемый шум).
Наконец, некоторые тюнеры могут не поддерживаться вашим ядром.
Чтобы получить список поддерживаемых плат,
1. установите из вашего дистрибутива пакет кегпеЬзоигсе, содержащий
исходные тексты ядра и модулей;
2. загляните в появившийся каталог /из.г/згс/11пих-2 .хх.хх/
Постпепкае1оп/у1а.ео411пих/ЬССу, где 2.хх.хх — версия ядра;
3. читайте КЕАОМЕ и САНГИ. 18Т (в некоторых версиях ядра он на-
зывается САКН8).
После подключения ТУ-тюнер придется настраивать. Здесь вам поможет
ЬПу пйш-НО\УТО на русском языке по адресу
ЫХр: //11пих.уагоз1аУ1. ги/<Зосз/ИомСо/т1п.1/ВТТУ“М1п1-НОИТО-0.3
Облегчить вам работу по настройке тюнера сможет конфигурационная
утилита с графическим интерфейсом ССЬПт (не ср; / / ггезЪтеаС . пес /
р г о } е з / д с Ы: С у).
Наконец, ТУ-тюнер подключен и настроен, и пора смотреть передачи.
Лучше всего использовать программы, поддерживающие библиотеку
НЬХам. Во многие дистрибутивы включен Ха^ТУ (домашняя страница
неср; //1Аних.ЬуСевех.огд/хамСу) — набор программ для управ-
ления видеоустройством у1аео411гшх, захвата видеопотока в файл в
различных форматах или вывода его на экран. Настройки главной про-
граммы ха\?Гу, собственно просмотрщика ТУ, хранятся в файле . хакГа/.
Создайте вручную файл примерно такого содержания:
[д1оЬа1}
{иПзсгееп = 800 х 600
СгедСаЬ = еигоре-еазГ
р1Х512е = 128 х 96
р1хсо!з = 1
Зред-диаНсу = 75
[ЗеГаиЛСв]
ПОПП = 5 ЕСАМ
сарСиге ~ ОVе^
зоигсе = Те1еч1в1оп
Если вы чувствуете, что ваш старенький компьютер не «вытянет» полно-
экранного режима 800x600, установите разрешение экрана 640x480. В
зависимости от поворотливости вашего компьютера установите уровень
ЛРЕС-компрессии. Чем выше качество, тем больше нагрузка на систему.
Обычно для максимального качества хватает значения ^рее-диаШу = 90.
Но самым оптимальным значением будет все-таки 75.
Затем указываем программе, что мы будем принимать передачи в формате
8ЕСАМ, Частотная таблица каналов — еигоре-еазГ Если вы живете в
западной Европе, укажите еигоре-чтзГ
Другие программы просмотра телепередач, которые вам могут приго-
диться:
♦ В Ите — программа, имитирующая телевизор на компьютере, выводя
изображение на экран с частотой 50/60 Гц, снимая тем самым про-
блему с чересстрочным изображением;
♦ Споше ГУ — простая программа для просмотра телепередач в оконной
среде О\ОМЕ, перестала развиваться в 2001 году;
♦ КнзпТУ — интегрирована в среду КОЕ;
• ЬЧт^гаЬ — мощная программа, позволяющая записывать телепере-
дачи на диск.
5.5. Воспроизведение
неподдерживаемых форматов
Во многих дистрибутивах Ьгшх мы не можем воспроизвести, казалось бы,
привычные форматы — ОЕХ, Ч'шсклл'з МесПа (ХУМУ), ОшскТппе, ОУГЭ
и в некоторых случаях даже МРЗ. Причина всему этому — всевозможные
лицензионные соглашения, нарушения которых не допускается. Но выход
из ситуации есть: распространять тот или иной кодек в составе дистри-
бутива запрещено, но никто не мешает вам загрузить его и использовать
в свое удовольствие.
В большинстве случаев кодеки выполнены в виде динамических библи-
отек ХУтдо'Л'5 (611-файлов). Чтобы их использовать в Гдпих, вам понадо-
бится шр!ауег — это кроссплатформенное приложение, позволяющее
воспроизводить различные форматы мультимедиа. Найти программу
тр!ауег в Интернете не проблема. А вот кодеки найти намного сложнее.
Я рекомендую загрузить пакет еввепЫа!, который доступен по адресу:
Ъгср: / /дата. тр1ауегЬд. Ии/Иотераде/сНоад.. ЬСт1.
Установим этот пакет:
$ Гаг ез8епс1а1--2005 021б./аг .Ьг2
$ ср еввепЫа! "20050216/* /изг/11Ь/и1п32/
Чтобы кодеки стали доступны, вам нужно перезапустить тр!ауег.
С воспроизведением ПУН ситуация тоже неоднозначна. Некоторые дис-
трибутивы, особенно новые (но не все), воспроизводят ПУЛ без проблем.
А проигрыватели других дистрибутивов вообще отказываются работать с
ОУП. Дело в том, что в состав проигрывателей не включена поддержка
НУН. Для ее включения нужно перекомпилировать проигрыватели из
исходных кодов. Прочитать обо всем этом можно по адресу
МЬр: //ида.деп1и5МеЬ.сот/ШР/Н0НГО/ИШ1_е1пд1е/ШВ-Р1ауЪаск-ндаТ0.
И еще: если у вас не воспроизводятся ПУП, то, возможно, с вашим дис-
трибутивом все нормально, просто у вас слишком слабый компьютер.
Для воспроизведения ПУЛ нужен компьютер не слабее РепНшп П1 500
Мйг и 256 Мб оперативной памяти. Также убедитесь, что включен НМА
(прямой доступ к памяти) для вашего ПУП-привода.
Глава 6 СЕТЬ И ИНТЕРНЕТ
ОСНОВНЫЕ СЕТЕВЫЕ ПОНЯТИЯ
о
ПОДКЛЮЧЕНИЕ К ЛОКАЛЬНОЙ СЕТИ
ПОДКЛЮЧЕНИЕ К\Л/1№ОМ8-СЕТИ
---ПОДКЛЮЧЕНИЕ К ИНТЕРНЕТУ
ПОЛНОЕ РУКОВОДСТВО
6.1. Основные сетевые понятия
6.1.1. Протокол и интерфейс
В основе сети Интернет лежит протокол ТСР/1Р, поэтому знакомство с
понятием протокола необходимо любому пользователю.
Протокол — это совокупность правил, определяющая взаимодействие
абонентов вычислительной системы (в нашем случае — сети) и описы-
вающая способ выполнения определенного класса функций. Еще один
термин, который мы будем часто употреблять, интерфейс. Интерфейс —
это средства и правила взаимодействия компонент системы между собой.
Чтобы лучше понять значения этих терминов, обратите внимание на рис.
6.1. На этом рисунке изображены две системы (компьютера) — А и В.
Рис. 6.1. Протоколы и интерфейсы
Таким образом, средства, которые обеспечивают взаимодействие моду-
лей разных уровней в рамках одной системы, называются интерфейсом,
а средства, обеспечивающие взаимодействие компонент одного уровня
разных систем, — протоколом.
Прежде чем перейти к протоколу ТСР/1Р, рассмотрим семиуровневую мо-
дель взаимодействия открытых систем (сокращенное название — модель
081), разработанную в начале 80-х годов международной организацией
по стандартизации 180.
Средства взаимодействия (см. рис. 6.2) в модели 081 делятся на семь
уровней:
1. Физический.
2. Канальный.
3. Сетевой.
4. Транспортный.
5. Сеансовый.
6. Представительный.
7. Прикладной.
Компьютер 1
Процесс 1
служебная
информация
сообщения
Протокол
Компьютер 2
Процесс 2
Г|[
___Интерфейс
7б|»-—------
прикладной
6
Представительный
765
7654]»
авт]
5
45671
Транспортный
Сеансовый
7В54з]»
-И 34567I
Сетевой
[ 765432 }»
»| 2345671
Канальный
| 7654321}»
♦] ' 1234567*]
Физический
Передача по сети
Рис. 6.2. Модель 031
Благодаря этому задача сетевого взаимодействия разбивается на несколь-
ко более мелких задач. Это позволяет при разработке новых способов и
инструментов сетевого взаимодействия не создавать их с нуля, а исполь-
зовать уже готовые решения. Непосредственно друг с другом взаимо-
действуют только физические уровни. Все остальные уровни напрямую
взаимодействуют только с выше- и нижележащими уровнями: пользуются
услугами нижележащего и предоставляют услуги вышележащему. Друг с
другом такие уровни контактируют косвенным образом, через посредство
нижележащих уровней.
Примечание
3 некоторых случаях сетевого взаимодействия физический уровень как таковой
отсутствует, при этом его функции выполняет самый низкий из присутствующих
уровень.
Из рис. 6,2 видно, что по мере прохождения сообщения через уровни
модели 081 к пересылаемым данным добавляется служебная информа-
ция, свидетельствующая о прохождении данных через определенный
уровень.
Рассмотрим взаимодействие двух компьютеров более подробно на при-
мере файловой службы. Допустим, нам (компьютер 1) нужно записать
какую-нибудь информацию в файл на удаленном компьютере 2. Обычное
сообщение состоит из заголовка и поля данных. В заголовке содержится
различная служебная информация: например, адреса нашего компьютера
и компьютера-получателя, имя и расположение файла. В поле данных в
нашем случае находится содержимое файла.
Приложение (процесс 1) формирует стандартное сообщение, которое
передается прикладному уровню. Точнее, процесс 1 работает на при-
кладном уровне.
После формирования сообщения прикладной уровень передает его пред-
ставительному уровню. На этом уровне в заголовок добавляются указания
для представительного уровня компьютера-адресата. Потом сообщение
передается сеансовому уровню, который добавляет свою информацию и т.д.
Процесс вложения одного протокола в другой называется инкапсуляцией.
Когда сообщение поступает на компьютер-адресат, оно принимается
физическим уровнем и передается вверх с уровня на уровень. Каждый
уровень анализирует содержимое заголовка своего уровня, выполняет
содержащиеся в нем указания, затем удаляет относящуюся к себе инфор-
мацию из заголовка и передает сообщение далее вышележащему уровню.
Этот процесс называется декапсуляцией. Далее мы рассмотрим каждый
из уровней взаимодействия отдельно.
6.1.2. Уровни взаимодействия 081
Физический уровень (РЬуз^са! 1_ауег)
Физический уровень передает биты по физическим каналам связи, на-
пример, коаксиальному кабелю или витой паре. На этом уровне опреде-
ляются характеристики электрических сигналов, которые передают дис-
кретную информацию, например: тип кодирования, скорость передачи
сигналов. К этому уровню также относятся характеристики физических
сред передачи данных: полоса пропускания, волновое сопротивление,
помехозащищенность.
Функции физического уровня реализуются сетевым адаптером или по-
следовательным портом. Примером протокола физического уровня может
послужить спецификация ЮОВаяе-ТХ (технология ЫЬегпеГ).
Канальный уровень (ОаТа Нпк кауег)
Канальный уровень отвечает за передачу данных между узлами в рамках
одной локальной сети. Узлом будем считать любое устройство, подклю-
ченное к сети.
Этот уровень выполняет адресацию по физическим адресам (МАС-
адресам), «вшитым» в сетевые адаптеры предприятием-изготовителем.
Каждый сетевой адаптер имеет свой уникальный МАС-адрес.
Канальный уровень переводит поступившую с верхнего уровня инфор-
мацию в биты, которые потом будут переданы физическим уровнем по
сети. Он разбивает пересылаемую информацию на фрагменты данных —
кадры ([гатех).
На этом уровне открытые системы обмениваются именно кадрами. Про-
цесс пересылки выглядит примерно так: канальный уровень отправляет
кадр физическому уровню, который отправляет кадр в сеть. Этот кадр
получает каждый узел сети и проверяет, соответствует ли адрес пункта
назначения адресу данного узла. Если адреса совпадают, канальный уро-
вень принимает кадр и передает наверх вышележащим уровням. Если же
адреса не совпадают, то он просто игнорирует кадр.
В используемых в локальных сетях протоколах канального уровня зало-
жена определенная топология, то есть способ организации и адресации
физических связей. Канальный уровень обеспечивает доставку данных
между узлами в сети с определенной топологией, а именно той, для ко-
торой он разработан. Основные топологии показаны на рисунке 6.3.
Общая шина
Кольцо
Звезда
Рис. 6.3. Основные топологии локальных компьютерных сетей
Сетевой уровень (ЫеПуогк Цауег)
Канальный уровень обеспечивает связь только между компьютерами, со-
единенными индивидуальной линией связи, то есть в рамках локальной
сети. Межсетевое взаимодействие обеспечивает сетевой уровень.
Локальные сети соединяются специальными устройствами — марш-
рутизаторами. Маршрутизатор собирает информацию о топологии
межсетевых соединений и на основании этой информации пересылает
сообщения сетевого уровня в сеть назначения. Сообщения на сетевом
уровне называются пакетами. Чтобы передать пакет от компьютера-от-
правителя компьютеру-адресату, который находится в другой локальной
сети, нужно совершить некоторое количество транзитных передач между
сетями. Иногда их еще называют хопами (от англ. Вор — прыжок). При
этом каждый раз выбирается подходящий маршрут.
На сетевом уровне работают несколько видов протоколов: сетевые про-
токолы, которые обеспечивают передвижение пакетов по сета; протоколы
маршрутизации К1Р и О5РЕ; протоколы разрешения адреса АКР (ЛтШге.ы
Ке$о1иИоп РгоЮсЫ) .
Классические примеры протоколов сетевого уровня: 1₽ (стек ТСР/1Р),
1РХ (стек МоуеИ).
Транспортный уровень (ТгапврогТ 1_ауег)
На пути от отправителя к получателю пакеты могут быть искажены или
утеряны. Некоторые приложения самостоятельно выполняют обработку
ошибок при передаче данных, но большинство все же предпочитают
иметь дело с надежным соединением, которое как раз и призван обе-
спечить транспортный уровень. Этот уровень обеспечивает требуемую
приложению или верхнему уровню (сеансовому или прикладному) на-
дежность доставки пакетов. На транспортном уровне определены пять
классов сервиса:
1. Срочность.
2. Восстановление прерванной связи.
3. Наличие средств мультиплексирования нескольких соединений.
4. Обнаружение ошибок.
5. Исправление ошибок.
Обычно уровни модели 081, начиная с транспортного уровня и выше,
реализуются на программном уровне соответствующими компонентами
операционных систем.
Примеры протоколов транспортного уровня: ТСР и 1ЮР (стек ТСР/1Р),
8РХ (стек ХоуеП).
Сеансовый уровень (8е8$1оп Ьауег)
Сеансовый уровень устанавливает и разрывает соединения между ком-
пьютерами. управляет диалогом между ними, а также предоставляет
средства синхронизации. Средства синхронизации позволяют вставлять
определенную контрольную информацию в длинные передачи (точки),
чтобы в случае обрыва связи можно было вернуться назад (к последней
точке) и продолжить передачу.
Сеанс — это логическое соединение между компьютерами. Каждый сеанс
имеет три фазы:
1. Установление соединения. Здесь узлы «договариваются» между собой
о протоколах и параметрах связи.
2. Передача информации.
3. Разрыв связи.
Не нужно путать сеанс сетевого уровня с сеансом связи. Пользователь
может установить соединение с Интернетом, но не устанавливать ни с кем
логического соединения, то есть не принимать и не передавать данные.
Представительный уровень (Рге$епШ!оп 1_ауег)
Представительный уровень изменяет форму передаваемой информации,
но не изменяет ее содержания. Например, средствами этого уровня мо-
жет быть выполнено преобразование информации из одной кодировки
в другую, шифрование и дешифрование данных.
Пример протокола представительного уровня: 88Ь (Зесиге 8оске( Еауег),
обеспечивающий секретный обмен данными.
Прикладной уровень (АррИсаНоп Сауег)
Это набор разнообразных протоколов, с помощью которых пользовате-
ли сети получают доступ к совместно используемым ресурсам. Единица
данных называется сообщением.
Примеры протоколов: НТТР, ГТР, ТЕТР, 8МТР, РОР, 8МВ, ХЕ8.
Интернет и модель 051
При взаимодействии открытой системы и Интернета модель 081 упрощает-
ся, так как некоторые протоколы Интернета включают в себя функции не-
скольких уровней. Если к сети Интернет подключается один пользователь,
а не вся сеть, то автоматически исчезают канальный и физический уровни,
потому что нет сетевых адаптеров, а значит, нет и физических адресов. В
данном случае конечным протоколом будет протокол тина «точка-точка»,
например, РРР. В этот протокол будут вложены все остальные.
Основные протоколы
Среди сетевых протоколов выделяются следующие основные:
♦ ТСР/1Р (Тгапяпшпоп СоШго1 Рго(осо! / ]п1егне( Рго!осо1) — святыня
всех святынь. Это базовый транспортный сетевой протокол. На этом
протоколе основана вся сеть Интернет.
♦ К1Р (РоиИп§ 1п/онпа(юп Ршосо!) используется для маршрутизации
пакетов в компьютерных сетях.
♦ 1СМР (1п1егпе1 СоШго1 Межане Ргоюсо1) — протокол межсетевых
управляющих сообщений. Он применяется для проверки доступности
узла, установления соединения и т.п.
♦ РТР (РИе Тгапх/ег Рго(осо1) — протокол передачи файлов. Служит для
обмена файлами между системами. Например, вам нужно передать
файл на сервер или, наоборот, скачать файл с сервера. Для этого вам
нужно подключиться к файловому серверу (он же ЕТР-сервер) и вы-
полнить необходимую вам операцию. Подключение осуществляется
с помощью ЕГР-клиента. Простейший ЕТР-клиент входит в состав
практически любой операционной системы. Обычно для запуска
РТР-клиента нужно ввести команду йр.
♦ НТТР (Нурег Тех1 Тгап$/ег РгоЮсо1) — протокол обмена гипертексто-
вой информацией, то есть документами НТМЕ. Протокол НТТР ис-
пользуется веб-серверами. НТТР-клиенты называются браузерами.
♦ РОР {Рох! О$ке Рго!осо1) — протокол почтового отделения. Этот
протокол используется для получения электронной почты с почтовых
серверов. А для передачи почтовых сообщений на сервер служит про-
токол 8МТР (81тр1е МаН Ттпх/'ег РгоЮс<>1}.
♦ 81ЛР (8епа1 Рте 1шете1 РгоЮсоГ) ~ протокол подключения к сети
Интернет по последовательной линии. Используется для установления
связи с удаленными узлами через низкоскоростные последовательные
интерфейсы. В настоящее время вытеснен протоколом РРР и практи-
чески не используется.
• РРР (Ро1п1-1о-Ро1п1 Рго1асо1) обеспечивает управление конфигураци-
ей, обнаружение ошибок и повышенную безопасность при передаче
данных на более высоком уровне, чем протокол 81ЛР.
6.1.3. Протокол ТСР/1Р и 1Р-адресация
Любому компьютеру в 1Р-сеги (ТСРДР-сети) назначен уникальный адрес,
который называется 1Р-адресом. 1Р-адрес — это 32-разрядное двоичное
число, которое принято записывать в виде четырех десятичных чисел,
разделенных точками, например, 111,111.213.232 или 127.0.0.1.
Уникальность 1Р-адреса достигается достаточно просто: 1Р-адреса казна'
чаются централизованно Сетевым Информационным Центром ( М1С, Ме-
Пуогк 1пГогта11оп СеШег). Если ваша локальная (или даже региональная)
сеть не соединена с Интернет, то внутри сети вы можете использовать
любые П’ддреса без согласования с МС. Если же ваша сеть подключе-
на к Интернету, протокол ТСРДР обеспечивает работу вашей сетевой
программы с любым компьютером в мире, как будто тот находится в
локальной сети.
Любая сеть, в том числе локальная, может быть разделена на подсети. О
причинах и целях такого разбиения вы можете прочитать в руководстве
1Р 8и1гпеп\'<1гк1пс-НОиТО. которое вы найдете на сайте йсср: //аш.
па гой. г и или на ЬЬТр://иииг.йИзИаЬз.сот.иа. Подсети связывает
маршрутизатор, в роли которого может выступать любой компьютер с
двумя или более сетевыми интерфейсами, например, двумя сетевыми
платами.
Каждая сеть (подсеть) также имеет свой уникальный адрес. Под сетью
можно понимать «пачку» 1Р-адресов, идущих подряд, то есть 192.168.1.0 —
192.168.1.255. Самый младший и самый старший адреса резервируются.
Младший (192.168,1.0) служит адресом сети и используется, когда нужно
указать всю сеть (подсеть), например, при задании маршрутизации для
нее. Старший служит широковещательным (ЬгоаЛсаМ) адресом: в этот
адрес направляются сообщения, которые нужно передать сразу всем ком-
пьютерам сети. Широковещательные запросы очень часто используются,
например, для построения А1<Р-таблии.
Для каждой сети (подсети) определена ее маска. Фактически, маска — это
размер сети, то есть число адресов в сети. Маску принята записывать в
десятично-побайтном виде:
* 255.255.255.0 — маска на 256 адресов (0 — 255)
• 255.255.255.192 — маска на 64 адреса (192 — 255)
• 255.255.0.0 — маска на 65536 адресов (256*256)
1Р-сети делятся по размеру на классы, каждому из которых соответствует
свой диапазон адресов. Запишите первое число адреса в виде восьмиз-
начного двоичного числа, и количество идущих подряд единиц укажет на
класс сети. В таблице 6.1 приведены характеристики классов сетей.
Классы 1Р- сетей Таблица б-1
Класс Первые биты Диапазон адресов Количество узлов Маска
А 0 1.0 0.0 — 126.0.0.0 16777216 (2м) 255.0.0.0
В 16 126.0.0.0 - 191.255.0,0 65536(216) 255.255,0.6
С 110 192,0.1.0 - 223.255,255 0 256(2=) 255.255.255.0
0 1110 224.0.0.0 - 239 255.255.255 Ми!0са5{
Е 11110 240.0.0.0 - 247.255.255.255 Зарезервирован
Адреса узлов (компьютеров) в сети класса А выглядят как 125.*.*.*, класса
В — как 136.12.*.*, класса С — как 195.136.12.*.
Если адрес начинается с последовательности 1110, то сеть является сетью
класса О. а сам адрес является особым — групповым (пш/ИсаМ). Если в
пакете указан адрес сеги класса В, то этот пакет должны получить все
хосты, которым присвоен данный адрес.
Адреса класса Е зарезервированы для будущего применения.
За некоторыми адресами закреплены особые значения, приведенные в
таблице 6.2.
Специальные 1Р~ адреса • Таблица 6.2
Адрес Назначение
00.0.0 Адрес узла, сгенерировавшего этот пакет
255.255.255.255 Широковещательный адрес (ограниченное широковещание). Пакет с таким адресом будет рассылаться всем узлам, которые аходатсй в той же сети, что и источник пакета
127.0.0.1 ЩорЬасК — адрес локального компьютера. Используется для тестирования сетевых программ и взаимодействия сетевых процессов. При попытке отправить пакет по этому адресу данные не передаются по сети, а Возвращаются протоколам верхних уровней как только что принятые. Любой адрес подсети 127,0,0,0 относится к локальному компьютеру
10 0,0,0 Изолированная сеть класса А, которая использует протокол 1Р. Но не подключена к Интернету. Маска сети 255.0.0.0
172.16.0.0 - 172.31.0.0 16 изолированных (Р-датяр класса В. Маска каждой сети 255.255.0,0
1.92.168.0.0-192.168.255.0 256 сетей класса С, маска каждой сети 255.255,255.0
6.1.4. 0Н8 — система доменных имен
Человеку обычно легче запомнить символьное имя (зум^.сШзПаЪя.сот.иа),
чем последовательность чисел (217.20.163.34). Компьютеру же, наоборот,
проще обрабатывать числа, а не символьную информацию. Для преоб-
разования 1Р-адреса в символьное имя и обратно используется служба
доменных имен — ОН8 (ротшп Кате Яумет).
Домены объединены в иерархическую структуру. Корневой домен управ-
ляется центром ГгПегМС. который назначает домены верхнего (первого)
уровня для каждой страны и регистрирует национальных координа-
торов. Национальные координаторы (в России это — КИ-СЕЙТЕК,
ксср: //ыии.пхс ,ги) повторяют эту процедуру в своем домене и так
далее, в результате типичное доменное имя подразделения компании
выглядит как на рисунке 6.4.
Рис. 6.4. Иерархическая структура системы доменных имен
можно назвать гигантской распределенной базой данных. Ее под-
держивают серверы имен (пате чепег, ГЖ^-сераер), которые снабжают
всех информацией о данном домене или нескольких доменах сразу. Для
каждой зоны (группы узлов, приписанных к этому домену, но не к его
поддоменам) есть по крайней мере два сервера имен, которые содержат
всю информацию относительно хостов (узлов) в этой зоне.
Что происходит, когда пользователь вводит в окне браузера адрес
йерагХтеп1.Пш1ал5р,ги? Запрос на разрешение (преобразование) имени
в 1Р-адрес сначала отправляется серверу имен, принадлежащему про-
вайдеру пользователя. Если этот сервер знает такое имя, он возвращает
1Р-адрес, и браузер устанавливает соединение с нужным компьютером.
Если же нет, то сервер имен провайдера обращается к корневому серверу,
обслуживающему домен наивысшего уровня, тот перенаправляет запрос
□\5> еерверу домена гн, тот обращается к 1)\8-серверу домена 1зр, тот —
к 1).\5>-серверу домена бгта, а этот последний возвращает 1Р-адрес за-
регистрированного в нем хоста бераПшепГ. Если эта цепочка запросов
оборвется на каком-либо звене, то пользователю будет сообщено о не-
возможности разрешения имени компьютера в 1Р-адрес.
6.1.5. Порты
На одном компьютере могут одновременно работать несколько приложений,
обменивающихся данными через сеть. Если в качестве адресата сообщения
указывать только 1Р-адрес получателя, то приложения не смогут разобрать-
ся, которому из них предназначены присланные данные. Для решения этой
проблемы используется механизм портов. Номер порта — это просто номер
программы, которая будет обрабатывать переданные данные.
Этот номер может быть любым, но за наиболее популярными службами
закреплены стандартные номера, чтобы клиенты были твердо уверены,
что обращаются к нужному серверу. Так, стандартный номер порта
электронной почты 25, пересылки файлов — 21, веб-сервера — 80, служ-
бы 1е!пе1 — 23, сервера имен — 53 . Стандартные номера выбираются
из промежутка от 0 до 1023. Числа начиная с 1024 и до 65 535 можно
использовать для своих собственных номеров портов,
6.1.6. Динамическое выделение адреса
Как я уже сказал, 1Р-адрес любого устройства, подключенного к Интерне-
ту, должен быть уникальным. Это означает, что статически назначенный
вам адрес не сможет использовать никто другой, даже тогда, когда вы от-
ключитесь от сети. Избавиться от такого расточительного расходования
адресов помогает механизм ОНСР (Оупапис Ноз1 Соп/црлгайоп РгоЮсоГ),
позволяющий множеству временно подключающихся к сети клиентов
совместно использовать один и тот же небольшой набор адресов.
Если в сети присутствует ЭНСР-сервер, то клиент, подключаясь к сети,
может получить у него временный 1Р-адрес, по которому и будет доступен
всем пользователям Интернет на протяжении всего сеанса подключения.
По завершении сеанса адрес освобождается и может быть выделен кому-
то другому.
6.2. Подключение к локальной сети
Если среди вашего оборудования есть сетевая плата, то она будет обна-
ружена при установке системы. Если же вы установили сетевую плату
после установки системы, то запустите средство поиска нового обору-
дования. Обычно для этого применяется утилита кибги (в дистрибутиве
□них Мапйгдке 10 есть своя — Ьагббгаке). Запускать ее нужно от имени
суперпользователя.
Кибги самостоятельно определит новое устройство и установит его: про-
пишет устройство в файл установленного оборудования (имя его зависит
от дистрибутива: попробуйте /еЕс/нюДиЕев . сопЕ, /еЕс/тойргоЪе.
сопё, /еСс/еувсоп^дд/ЕисопЕ) И добавит его модуль (драйвер) в со-
став ядра.
Нужно напомнить, что еГЬО — это первая сетевая плата, еЫ11 — вто-
рая и т.д. Скорее всего, у вас есть всего одна — еСИО. Ее мы и будем
настраивать.
В большинство современных дистрибутивов включены графические про-
граммы-конфигураторы, позволяющие настроить всю систему. Первые
конфигураторы были не очень удобными, и многие администраторы
предпочитали редактировать конфигурационные файлы вручную, тем
более что ни один конфигуратор не позволял настроить ту или иную часть
системы полностью, а выполнял лишь базовую настройку.
Сейчас же все в корне изменилось: конфигураторы 1лпих стали такими ми
же удобными, как и апплеты Панели управления ЧУшйоуга. Тем не менее,
мы рассмотрим не только настройку с помощью конфигураторов, но те
самые команды, с помощью которых администраторы настраивали сеть
лет десять назад. В этой книге будем ориентироваться на современные
дистрибутивы Глвих Мапбгаке и Кеб На1 Ыпих (Еебога Соге) — совсем
старые их версии рассматривать нет смысла — я не встречал ни одного
сервера, на котором был бы установлен Яеб На! версии ниже 7.x.
6.2.1. Настройка сети в Моих Мапе!гаке
Начнем с моего любимого дистрибутива — Еших Мапбгаке. Запустите
конфигуратор бгаксопГ, в нем выберите апплет «Сеть и Интернет», далее
«Новое соединение», а в появившемся окне — «Соединение по локальной
сети».
Если у вас в сети есть СНСР-сервер, рекомендую выбрать автоматическую
настройку. Если же такого сервера нет или у вас другие планы относи-
тельно этого компьютера, выбираем ручную настройку.
Кроме ТР-адреса сетевого интерфейса и маски сети обязательно укажи-
те опцию «Запускать при запуске», в противном случае вам придется
поднимать интерфейс е1й0 каждый раз при запуске/перезапуске Еших.
Опция ЗЧеКтогк Но1р1и$ц>1ад в официальной документации не описана,
но, насколько я понял, она используется для определения физического
подключения к сети. В режиме МеГиогк Но1ркщр1п^, если ваш компьютер
не подключен физически (с помощью кабеля) к хабу или другому компью-
теру, то при попытке обращения к интерфейсу вы получите сообщение
«Сеть недоступна». Поэтому, если физической сети у вас нет, а сеть как
таковая вам нужна, например, для тестирования сетевых приложений,
рекомендуется этот режим не включать.
Добро пожаловать аЦемтр управления Мапйгаквйпйх
обору довамл
БвЭ№й "ОСТ*
Упресдеэгге гздхггннм
Рис. 6.5. Конфигуратор ОгакСопГ
’ЖТОдаД:
Новоа соединение
Ностро эдикте в сетвк» усТрсЛгкзаНй [ДрйЙЯйр ^«•’гПйте ।
ГЬсмедяуиста, Иведоте постройку № дм* $той т&ими
Кйждшй луны дал»вп быт* вмдои »л* имдрвс- а внаамплн
д^л+ичк»* чижа, дай»»*™* тянглвн{наи₽и»и»р% < ?-5 <
. ЗДкка 5ВЗД|^Й 2*^0
р Ислашювт» и ота*сй сзри (полота дяи яоупЗу«л»)
р ШЫМНсЙр^Ц!
: {У-ЯЙ1^ё1' о
!®1И1И::.-.:В|»«И1И. .Щ’ри»-
Рис. 6.6. Указание параметров сетевого интерфейса при ручной настройке
После этого вам нужно указать общие сетевые параметры: имя компью-
тера, 1Р-адреса серверов ПИК, а также 1Р-адрес шлюза (компьютера,
через который ваша локальная сеть соединяется с Интернетом), если
такой есть в вашей сети.
Следующий вопрос конфигуратора — адрес узла ХегосопГ — это поле
можете с чистой совестью оставить пустым и нажать Далее.
Настройка сети уже почти завершена — осталось только перезапустить
сеть.
Если вы изменяли имя узла (а при первой настройке так оно и бывает),
рекомендуется сразу же перезапустить систему X УУтбоч/: нажмите Сп1
+ АЙ + Васкнрасе и заново войдите в систему.
Для изменения параметров уже созданного соединения используется ап-
плет «Управление соединениями». Он позволяет изменить все параметры,
которые вы ввели с помощью предыдущего апплета, а также просмотреть
информацию об интерфейсах.
Довольно информативным и удобным оказался апплет «Наблюдение за
соединениями» — с его помощью можно просмотреть информацию о
трафике и даже увидеть график загрузки.
6.2.2. Настройка сети в Ыпих Нес) На1
При установке дистрибутива программа установки сама распознает
ваш сетевой адаптер — в моей практике не было случая, чтобы сетевой
адаптер не был опознан (это не касается внешних 1)ЗВ-адаптеров). Вам
нужно указать только параметры сетевого соединения.
Вернемся к настройке сети. Выберите нужный вам адаптер и нажмите
кнопку Изменить.
В появившемся окне введите 1Р-адрес и сетевую маску, Обязательно вы-
ключите режим СопН^вге ият§ ВНСР — мы настраиваем интерфейсы
вручную, а не с помощью БНСР. Также следует включить режим Асбуа1е
Оп ВооС — тогда наш интерфейс будет «поднят» при загрузке системы.
Этот режим нужно включать для всех постоянных соединений, например,
соединения по локальной сети или по выделенной линии. Вернувшись в
окно настройки сети, укажите имя компьютера — СОМР5. А затем на-
жмите кнопку Далее. Все, сеть настроена.
Для изменения параметров сетевого соединения удобнее использовать
графический конфигуратор гесЖаЦсопГщ-псЧпогк.
Глава 6. Сеть и Интернет
Настройка сети
НжтреЛ'аойгк ...... ...........-.. - ...- —
5 Т»г«ыяустрс»аП1<г .
|^тмздир|яат(>^таг^^|^^>|>йепк1 |ул<жии1 | (йанпиагу
• В уда
П:ИмЯ ивмпьюгйра
I Установить <Е*!Ш«ТИр«?
•«.О иатвгатическ* пс ОНОР
.:: (Д^сп^итевь^ый-парам^фы
Д
.Г- Цйр®^'1нуй 0^2' I?
ГЖ5; 1[
{6} рсрыгь:дойму- Г О ™ио
Рис. 6.7- Настройка сети
6.2.3. Настройка сети в Еес!огв Соге
Графический конфигуратор в Ее<1ога Соге называется 1п1егпеС-<1пн(1
(рис. 6.8). Можно запустить его и из меню оконной среды (в ОЬЮМЕ
это Система Мастер подключения к Интернет).
Выберите «Соединение Е1йегпеЬ>, а дальше следуйте инструкциям. После
создания соединения для вас будет запушен конфигуратор яу^ет-сопГщ-
пейгогк, позволяющий указать дополнительные параметры сетевого
интерфейса или изменить только что введенные. В дальнейшем его можно
вызвать из меню оконной среды (в О-ОМЕ это Система -> Управление
устройствами сети).
6.2.4. Проверка работы сетевого интерфейса
Если вы не подняли (активировали) интерфейс в процессе графического
конфигурирования, сделайте это сейчас. Перейдите на текстовую консоль
или откройте окно терминала и выполните команду 1Гир еЫзО (деак-
тивировать интерфейс можно командой 1 гдоип есЬО).
>»
Выбор типа соединения
.' ." - |Взд1»№.<«ме<мвдн<»<и<|а8»та.
С сж^нан^е
:'Х^ЬЭОЛ:Г
со.т^пком
80 Соединений 1^0^
' Медвяное роеди иин^о
и Соединение Тсксп Р&яд
Бэдпрседдноз доадмивмаи!
С&здин&нне х^51
РжОйЙ*й<|) Назад |у > йаа^ад ]
р*'
и К<)
Ё
Рис. 6.8. Настройка сети
4Ь пр^рсжем^я
Команда.
^фМт»>-ОЫГ®%<Э|
Мгкгто
Файл П^офкга» &1ДОИ1:
*?«г₽ййе**& ьтвяйф
^^Й^Ч₽-ГГ’ -Л'ПЬ|1*1и.«^ф^Й»|
: ^садйуц ,^з1*внигв СгК.сяйр^жйгп
ЗДОй- ВЫ Ы&ЖДТ«>Ж?{ЯМГ4
еэдздездде с дйцю* «бРДра
оаниму «ймра|М|^
Привязав
Проф|Спст«1нйа |УбТрОЙй|Псйг
ЦС«ВДО№1|К'{И !
Й ,&МквМр*^?&^:*рвйстдо ^трк лялусАд вомныздярг:'
О Р^р^рТй'Ж^'П<и1о'Д0вй?адви устр5Йй:1йВ:
□ ВкяючиЭД'ЗОйфмгуредкю ГОД до этог&'ирт«дом^д:;
О ЛсижатйЧга-хи поломать адрес [Р ярц лзМщди; У|
Г П ярзмзгры 7СР/1Р ............................ :.......-......
•• Имя ^ЭшМнЬт ^Н8Й^!>111?<ЯЙ1ЙГ>): 1!
• Й] АйТ^агйчх&кй и-йнф^««ци<51^5 гаг яре«^йда₽?й.
У«т анайяи^^атМ^®*!*# *Др^ 1Р>
:' Исп4Хйь»дтЪ сдадцгювдий едавс 1Р:
6да«х‘
! ^2.18& 1.11
МЗ^ХА ПОДЛЯТЙ;
255.2БЙ.2Я5.П
• Адам «иоа^^с.^лкия:
Измени Ть рДО Т »(к..
] [Я ЗД<аншд |
е
Рис. 6.9. Указание параметров сетевого интерфейса при рунной настройке
Для получения сведений об активных интерфейсах выполните команду
1 ГсопГщ. Она покажет примерно следующее:
еСЙО Ыпк'епсарзЕСйегпеС НКаййг 00;02:РО:73:В0:85
1пёЬ аййГ:192.168.1.11 ВсазС:192.168.1.255
Маек;255.255.255.О
V? ВН0АПСА5Т МОТЛТСАЗТ МТП:15О0 МеЬг1с:1
[. • •]
1о Ыпк епсар:Ьоса1 ЬоорЬаск
1пеС а<Мг:127.0.0.1 Мазк:255.0.0.О
□Р БООРВАСК виштш МТО.-16436 МеСг1с:1
I. ..1
Интерфейс 1о, которого вы не настраивали, — это интерфейс обратной
петли. Не отключайте его, он необходим для работы некоторых прило-
жений.
В первых двух строчках утилита ИсопГц; выводит тип (ЕШегпе!) адап-
тера, его физический адрес (МАС-адрес) и присвоенный ему 1Р-адрес.
Дальше — параметры интерфейса, указывающие, что он запущен и ис-
пользуется.
МТЪ (Махипит Тгапз/ег 1/пИ) — максимальный размер единицы переда-
чи данных. Практически все протоколы позволяют использовать в кадре
поля переменной длины, это касается даже заголовка кадра. Максимально
допустимое значение длины поля — это как раз и есть МТЪ'.
Далее следует статистика — сколько пакетов принято/передано, сколь-
ко байтов принято/передано, сколько коллизий было с участием этого
интерфейса.
Теперь проверим, как работает соединение. Эго делают командой р>п^
(пингуют нужный адрес).
# рхпд 192.160.1.11
Эта команда посылает на указанный адрес по протоколу 1СМР маленький
пакет, требующий эхо-ответа, раз за разом, пока не будет остановлена
(например, нажатием комбинации клавиш Си1 +С). Обычно ею пользу-
ются для проверки доступности узлов.
Потом пропингуйте свою машину по имени, которое вы ей дали: р±пд
йкзИаЬа,
Убедившись, что проблем с локальными настройками не возникает, мож-
но пропинговать какую-нибудь удаленную машину из вашей локальной
сети по ее 1Р-адресу.
Теперь попробуйте обратиться к удаленной матине по имени. Помните,
что символьное имя должно быть разрешено в 1Р-адрес? В вашей яе-
большой сети сервера имен, скорее всего, нет. В этом случае для преоб-
разования 1Р-адресов в имена и обратно служит файл /еСс/Ъозсз. Это
обычный текстовый файл, каждая строка которого содержит
<1Р-адрес> <полное„имя_узла> <псевдонимы>
разделенные пробелами. Откройте этот файл в любом текстовом редак-
торе и добавьте туда сведения о машинах своей локальной сети. Символ
# в этом файле понимается как знак комментария.
6.2.5. Настройка сети в старых дистрибутивах
Если вам недоступны графические конфигураторы, то можно настроить
сетевой интерфейс и из командной строки.
Добавьте в файл установленного оборудования (скорее всего, он будет
называться /еЬс/сопЕ.тоДиХев) сведения о своей сетевой плате.
Добавьте в ядро модуль сетевой платы:
# 1пзп1ос1 гЫ8139.о (для НеаХЬек 8139)
4 1пзпю<1 пе2к-рс1.о (для ИЕ2000 РС1)
Назначьте интерфейсу 1Р-адрес:
# ИсопИд еСИО <!₽_ адрес > ЬгоайсазС <ВКОАПСАЗТ_адрес>
пеТтазк <маска>
Указать шлюз для выхода в Интернет можно командой гоШе:
ЙгоиСе аскЗ де^аиХС даГеиау <1Р„адрес_шлюза>
Если в Интернет выходить вы пока не собираетесь, то удалить установлен-
ный маршрут можно командой гонЬе <Хе1 йеЕаиХЬ . Команда гоиСе
без аргументов выводит текущую таблицу маршрутизации пакетов.
Перезапустите сетевую службу, и можно пинговать только что настро-
енный интерфейс.
6.3. Подключение кШтскллге-сети
Вам удалось достучаться (рш§) до всех компьютеров своей локальной
сети, работающих под управлением ОС У7тс1о\ук, но хотелось бы боль-
шего? Например, обмениваться с ними файлами? Если в вашей сети
есть папки, к которым открыт общий сетевой доступ, то это возможно.
Поможет вам пакет ЗашЬа.
Название КатЬа происходит от названия протокола 8МВ (Зегкег Менчаке
В1оск), он же ИеШЮЗ, на котором основана работа АУтботе-сети. Пакет
8атЬа содержит набор приложений, позволяющих 1л пих-машине вклю-
читься в работу такой сети — как в роли клиента, так и в роли сервера.
В роли обычного пользователя вам достаточно уметь подключаться к
^пи!оуга-сети как клиенту. Для этого вам понадобятся пакеты затЬа-сопт-
топ и катЬа-сНепГ, входящие в большинство современных дистрибутивов.
Если их у вас нет, то загляните на ЪЫр-. / /ими. затЪа.огд.
Пусть сетевой доступ к панке открыт на компьютере, имя которого в сети
\\тпс!оу<^ Е8ЕК5. Посмотрим сначала на список всех доступных ресурсов
на этом компьютере:
$ ятЬсИепС -Ь изегБ -V < имя_пользователя >
Имя пользователя — это не ваше регистрационное имя на Ипих-машине,
а имя того пользователя машины ''ЛЧпсктля, кто имеет доступ к ее ресур-
сам. После ввода пароля вы увидите что-то вроде:
Оота1п=ШЗЕй5] 09~ [ШпДоиз 5.1] Зегуег-- [И1пбоиз 200 0 ЫШ
Мападег]
БЬагепаще Туре СоттепС
ЕИагедПосз
ИЖ (С) П1ек
АПМ1И$ Ш.зк келюсе Адттп
РиЬИс Е1зк
и. .1
РиЫк — это та папка, которая вас интересует. Для приема-передачи
файлов предназначена программа зтЬсНепГ. Чтобы ускорить (или авто-
матизировать) ввод пароля, введите ее в таком виде:
$ зтЬсИепЬ //цнег5/риЪИс -□ < имя_пользователя >%< пароль >
Вы увидите приглашение программы:
втЬ: >
и сможете вводить ее команды. Первым делом введите команду Ье1р для
получения списка всех доступных команд. В таблице 6.3 перечислено
несколько самых полезных из них.
Использовать программу яшЬсПеп! не очень удобно. Если вы собира-
етесь обмениваться файлами часто, то лучше использовать программу
ыпЬтоипЕ которая умеет монтировать удаленный общий ресурс как
обычную файловую систему. Ниже приведен пример команды, которая
монтирует папку сиз соте г в компьютера Е18ЕК5, используя имя поль-
зователя деп. Точка монтирования — каталог /тпС/синботегз:
$ зтЬтоипС. //ивег5/сизСотегз -Е беп /тгЛ/сизТотегз -Ц 500 -О 100
Команды программы итЬсНепГ
Таблица 6.3
Команда Описание
1з Выводит список файлов а папке
ей [папка} Выполняет переход в заданный каталог на сервере (учтите, что именно на сервере, а не на клиентском компьютере}. В том случав, если каталог не указан, то етЬс1шп1 просто выдаст имя текущего каталога
деГ [файл] [локальное имя] Получает указанный файл из общего ресурса м сохраняет его на локальном компьютере, Если указано локальное имя, то полученный с сервера файл будет сохранен на клиентском компьютере под этим именем
рш [файл] (удаленное имя] Копирует файл на сервер и сохраняет его там под указанным име- нем. Если это имя не указано, то файл при сохранении переимено- вываться не будет
тде1 [файлы] Получает все указанные файлы с сервера
трШ [файлы] Копирует все указанные файлы на сервер
0е1 [файлы] Удаляет на сервере указанные файлы, если, конечно, пользователь обладает на это правами
I Позволяет временно выйти из втЬйЮпт. чтобы выполнить команду на локальном компьютере. Например, I ф — это просмотр текущего каталога на локальной машине
ехН или диП Завершение сеанса работы программы втЬсНпт
В этом примере владельцем смонтированного каталога объявляется поль-
зователь с идентификатором (1ЛБ) 500 и идентификатором группы 100.
Закончив работу с общей папкой, размонтируйт е ее командой
$ йшЬитоипЬ /тпЬ/сизЪотегз
Если вместо русских имен файлов вы видите непонятные символы, зна-
чит, кодировки кириллицы на вашем компьютере и на ^ЛЧпбо^-машине
различны и вам нужно указать дополнительные опции монтирования:
соаераде=<агд> —для кодовой страницы, применяемой на удаленной
машине (обычно для кириллицы ЭТО Ср866), и 1осЬагаеС = <а1-д> — для
кодовой страницы на стороне 1лпих. Значение юсйагяе! зависит от уста-
новленной докали, и узнать его можно по команде 1оса!е:
$ 1оса1е
ЬАН(3=ги_К1Г.иТГ~8
[ - .]
В моем примере на стороне Ыпих используется Юникод (а могло бы быть,
например, КО18-К), и команда монтирования будет выглядеть так:
$ зтЬтоипС //иеегБ/сиэСошегз /тпЬ/сивСотогя \
>-о иаегпате=деп,разеьгогс1~'' 1234 5", \
>содёрадв=ср8бь,1осЬагвеС=иЕ{8
Параметры, перечисленные после ключа -о, нужно разделять запятыми,
но не пробелами.
Обратный слэш — это конструкция, позволяющая записать одну длинную
команду на нескольких строках. Я использовал ее для наглядности, а вы
пишите в одну строку.
Обратите внимание, что при монтировании внешних файловых систем
значение кодовой страницы пишется как «ср866», а для локальных фай-
ловых систем (раздела ГАТ32 на вашем жестком диске, где установлена
ХУшдои'з) — просто «866».
Запускать программу вшЬшошй имеет право только суперпользователь.
Чтобы обычный пользователь мог ее запустить, следует установить для
нее атрибут 8Е'Ш, однако такое решение является небезопасным. Выхо-
дом из этого положения может послужить запуск программы зшЬтонгП
при загрузке системы. Добавьте в сценарии автозагрузки (советую — в
/есс/гс . 1оса1, см. п.9.1.2) вызов программы атЬтоиШ для монтиро-
вания файловых систем совместного использования, с которыми вы ра-
ботаете чаше всего. После этого обычные пользователи смогут работать
с удаленными ресурсами как с обычной локальной файловой системой.
6.4. Подключение к Интернету
Егсли вы собираетесь входить в Интернет через локальную сеть, то ни-
чего дополнительно настраивать не нужно. Надо только в настройках
есИО указать 1Р-адрес шлюза, через который вы собираетесь выходить,
а остальное — забота администратора локальной сети.
Если же вы планируете выходить в сеть из дома через модем, то следу-
ющий параграф для вас.
6.4.1. Настройка модема
Модем подключается очень просто — вам достаточно вставить плату
модема в корпус компьютера или подключить внешний модем, и система
автоматически определит и установит его. В случае, если у вас старый
дистрибутив, например, Кеб На1 Гзпцх версий б и ниже, то вам самим
придется создать ссылку /аеV/тос^еп1 на устройство /бёУ/СЬуЗп, где п —
это номер последовательного порта. Напомню, что устройство /беу/ЬТуЗО
соответствует порту С0М1 в 008. В принципе, создавать ссылку даже не
обязательно, потому что в любой коммуникационной программе можно
указать устройство, с которым она будет работать. Устройство /йеу/тодет
используется большинством программ по умолчанию.
Для проверки работоспособности модема можно использовать программу
ннпкот. Это обычная терминальная программа. Первый раз ее нужно
запускать от имени суперпользователя с опцией -8 (хе/мр): в этом режиме
программа выводит конфигурационное меню, позволяющее создать (или
отредактировать) настроечный файл /е(;с/т1п1гс .1 (рис. 6.10).
Нужно изменить только устройство, которое будет использоваться в
качестве модема.
Рис. 6. ТО- Программа настройки гптсот
Для тестирования модема обычно используются стандартные АТ-коман-
ды. Инициализировать модем можно командой АТХ, поднять и положить
трубку — АТН1 и АТНО соответственно, а набрать номер — АГОР но мер,
используя импульсную систему набора номера, и ЛПУГномер. используя
тональную систему.
Ссылку можно также создать программой тойет!оо1 в Кеб На!, а в
Ыпих Мапбгаке нужно воспользоваться все тем же конфигуратором
ПгакСопГ.
Будет справедливо отметить, что Ыпцх не работает с программными мо-
демами для А'шскпуя (мча-модемы). А вот модемы, которые подключаются
к шине С8В, в ОС Ыпих использовать можно. Только для этого нужно
включить в ядро поддержку шины 18В и С8В-модемов.
В последнее время некоторые производители программных модемов (на-
пример, Бисеп!) обратили внимание я на 1.лпих-пользователей. Компания
Ьисеш выпустила драйверы под Илпх для своего модема — их вы можете
найти в Интернете.
Также следует учитывать появившиеся относительно недавно внутренние
аппаратные РСЬмодемы. С ними 1лпих работать может, но не со всеми и
«через не хочу». Что можно порекомендовать пользователям, у которых
установлен вдп-модем? Просто купить аппаратный СОМ-модем (не ПКВ!).
Этим вы сэкономите себе и нервы, и время. Внешний аппаратный модем,
пригодный для домашнего использования, стоит от 20 до 40 долларов —
не так уж и много. На сервере же внутренний модем вообще непригоден:
тут нужен внешний и только внешний. Желательно Ху ХЕЕ. Цены на него
начинаются от 100 долларов, но он того стоит, уж поверьте.
Если вами движет только спортивный интерес, мол, ни у кого не рабо-
тает, а я настрою, что ж — дерзайте. Я могу помочь только тем, что дам
ссылочки на сайты, где можно прочитать про настройку уип-модемов:
♦ Ъььр://иии.Ипто<5етз .огд/ — здесь можно найти ссылки на
драйверы для ВДп-модамов;
• ЬЬКр://11пих“Еэготег .пагод.ги/нгИ:ев/хуИе1.пКт— настрой-
ка модема ХуХЕ1. ОММ 56К РС1;
♦ Ис Ср ://№’«. 1ое. 1д.оа/Ие1р/пеи1 / зо1агх5/ипЬ1Ь1е<1/1п<1ех-
106 .ЪЬи11 — НОХУТО по настройке Уип-модемов.
ПримечаимеЛ
О том, как настроить АОЗС-соедмнение и вообще выделенную линию, можно
прочитать в моей книге «Мпих-сервер своими руками». Также в этой книге описано
подключение и настройка сетевой карты.
6.4.2. Подготовка к выходу в Интернет
Рассмотрим, как можно подключить Ыпих к Интернету. Отмечу, что это
подключение имеет больший смысл, нежели подключение ХУшдоуге, так
как Еших намного лучше и, что самое главное, быстрее работает с сете-
выми устройствами. Лично у меня соединение с моим провайдером при
использовании Еших работает где-то в два раза быстрее и не простаивает,
как при работе в У/тботе.
У вас, конечно же, есть модем, выбран и оплачен провайдер, от него
получены логин-имя, пароль и все остальные сведения, которые могут
потребоваться для доступа к его службам. Осталось убедиться в том,
что ваша конфигурация Еших поддерживает протокол РРР, по которо-
му происходит соединение с Интернетом, и настроить его. Проверьте,
установлен ли у вас пакет ррр, и если нет, то доустановите его из вашего
дистрибутива (п. 7.4).
В современных дистрибутивах настроить подключение по протоколу РРР
можно по-разному:
♦ Используя конфигуратор (в Ыпих Мапбгаке это программа ИгакСоп/']
Если операционная система предоставляет средства для удобной
настройки соединения, так почему бы ими не воспользоваться? За-
чем действовать в обход9 Не модифицируем же мы реестр ''Ачпбо’лд
вручную с помощью гедесЫ для создания нового соединения.
• Используя программу кррр. В предыдущих версиях Ыпих Мапбгаке
конфигуратор ЙгакСопГ был менее удобен, поэтому многие пользо-
ватели предпочитали использовать программу кррр. Она очень напо-
минает стандартный М’щкжз-дайлер, в котором интегрированы все
функции по установке и управлению соединениями.
♦ Редактируя конфигурационные файлы вручную (в этой главе этот
способ не рассматривается. Если вы заинтересовались им, рекомендую
прочитать мою книгу «Етнх-сервер своими руками»).
Лучше всего использовать конфигуратор ИгакСопГ. во всяком случае,
при настройке первого соединения. Он автоматически установит все
необходимые пакеты и создаст файл соединения для программы кррр.
Устанавливать же настроенное соединение вы будете с помощью про-
граммы кррр. Создавать следующие модемные соединения уже удобнее
с помощью кррр — не нужно вызывать ВгакСопГ и вводить пароль су-
перпользователя.
ИгакСопГ (точнее, его модуль — 1)гакСоппссГ) — отличная й удобная про-
грамма, но при работе с ней нужно учитывать некоторые нюансы. Теперь
обо всем по порядку. Выполняем команду Лгаксоп^, выбираем апплет
Сеть и Интернет -* Новое соединение Модемное соединение. Можно
сразу запустить апплет Сеть и Интернет — командой бгаксоппесГ.
Сразу после этого программа предложит выбрать один из подключенных
к вашей системе модемов. Затем все как будто просто. Программа по-
очередно будет запрашивать следующую информацию:
• Название соединения, номер телефона, имя пользователя и пароль.
• Назначение 1Р-адреса: автоматическое (с помощью ОН СР) или вруч-
ную. Рекомендуется использовать автоматическое назначение 1Р-адре-
са, поскольку практически все провайдеры настраивают ОНСР-сервер
для назначения 1Р-адресов клиентов.
* Назначение 1Р адреса Осервера: автоматическое или ручное. Вы-
бираем автоматическое и нажимаем Далее.
♦ Назначение 1Р-адреса шлюза: автоматическое.
Следующий вопрос конфигуратора касается запуска соединения при за-
грузке системы. Поскольку это модемное соединение, наверное, стоит от-
казаться от автоматического запуска соединения при загрузке системы.
Последний вопрос конфигуратора — стоит ли подключаться к Интер-
нету прямо сейчас. Я согласился. Несколько минут ИгакСоппес! тщетно
Г' Показать окно Журнала
|._ ' ^а-ЙТроить.
Рис. 6.12. Основные параметры соединения
пытался набрать номер, но так и не набрал его. А причина была в том,
что он использовал тоновый набор номера, а моя АТС — импульсный.
Да, вы правильно меня поняли, от проверки только что созданного со*
единения стоит отказаться.
Дальнейшую настройку соединения будем производить в программе кррр.
потому что «умений и навыков» конфигуратора ОгакСопГ для этого явно
недостаточно.
Программа кррр, входящая в состав КОЕ (пакет кбепе!\хогк), предназна-
чена для того, чтобы совместно с демоном рррЙ (РойИЧо~РопН Рго(осо1
Оаегпоп) устанавливать и поддерживать соединение с провайдером.
Запустите ее в окне терминала или выберите из меню К -> Интернет
Кррр и сразу же нажмите кнопку Настроить.
Имя пользователя: Й11&1аЬк
Пароль: Г—”*
Г Показатьакнржу риала
В&мщ : Настроить... | > Справку "Н |Додключв1гься||
Рис, 6.12. Программа кррр
Интерфейс программы предельно прост. Однако хотелось бы дать не-
сколько рекомендаций по работе с этой программой:
1. Вам нужно изменить имя устройства, которое будет использовано
кррр, то есть имя модема, и указать его скорость. Но не подумайте
только, что если вы установите скорость 56700, то ваш модем на 9600
заработает с большей скоростью. Иногда нужно, наоборот, занизить
скорость, чтобы соединение не обрывалось.
2. На вкладке Устройство укажите устройство, к которому подклю-
чен ваш модем: /йем/ьСуЗО, если это СОМ1, и /йем/ссмЗ!, если
СОМ2.
3. Измените команду набора номера в окне Команды модема. По умол-
чанию используется тональный набор (команда АТОТ)- Для работы
с импульсной системой набора номера используйте команду АТОР.
Задержка перед иямцишчиэтциеЙИсвкЛОО);
| 50
,(лтг"
Строка инициализации 1;
Строка икиинализвцииЗ:
53
70
Задержка после инициализации (еек/юа)?
Скороегв набора й-огЛОО):
Отклик на |ок
Распознавание Яо 0й*опа ;(н*т сигнал» » линии}; ;АТХЗ
Строги мабарА ыоыерй-
Эти л иг на Солпее! (соединение); ,СОМЧЕСТ
Отклик на &иу (занято).;;-
О.т«лж на № Сагё«г (нет Нвсуцей): М3 САЯгаЕЯ
Отклик на Мо Йапе (нетсигнала а линии) •'^О О!АТТО\^
Схракв 'позеомть трубку" 2 ^нк+АТН
Отклик на Наодир{гн>»ки»П1 трубку): ]ок
Ст дока ответа на вжодяа(ий эзпнак;
(АТА
ОТКЛИК Нй А«Пд (ЗйОНОК):;'
:1А№О
Отклик на Ап^и/ег (атмн)! ;1СО1ЧЫЕСТ
Отклик на сигнал ПЕР: Ёкзд ре-страка; Отклик на Ё$саредттрску1 Защитный интервал (сек/ЭО); |01ВГГА1 ЫЫЕ ОЕТССТЕО |ТТ“‘“ )ок
)М010
I Зйух ныкл Аих^громко
^М11Э
ПиМ' гйГТ
Рис. 6.13. Изменение команды набора номера
4. Нужно изменить права доступа к демону /изг/зЫп/рррй, позволя-
ющие обычному пользователю его запускать. В противном случае за-
пускать программу кррр вам придется от имени суперпользователя.
Теперь можно попытаться набрать номер. Для этого нажмите ОК и в
окне КРРР нажмите кнопку Подключиться.
После установки соединения на панели задач КИЕ вы увидите статистику
подключения, а именно, сколько времени вы провели в сети. Открыв окно
с названием соединения, вы увидите скорость подключения и сможете
прервать сеанс связи нажатием кнопки Разъединить.
Рис. 6.14. Панель задач КИЕ с кнопкой работающего соединения
6.4.3. Специальные возможности браузеров
Неужели в этом параграфе будет рассказываться, как работать с браузе-
рами? Тогда его можно вообще пропустить или прочитать по диагонали.
Нет. уважаемый читатель, я и не сомневался, что вы умеете работать с бра-
узерами. Сейчас мы поговорим об особенностях того или иного браузера,
а также о некоторых специальных параметрах популярных браузеров.
Копциегог
Каковы же возможности Котикегог? Я и не сомневался, что он поддер-
живает последние стандарты НТМТ (4.0) и С88. А вот как у него обстоят
дела с 1эуд и 1ауа8спр1? Очень много сайтов написано с использованием
ЛауаЗспр! и Лауа-апплетов.
Я попробовал загрузить документ, содержащий Лауа-скрипт. Визуальные
эффекты отображались так же, как в старом недобром Пнегпег Ехр1огег.
Это меня обрадовало. Но я решил копнуть глубже.
Вас не раздражают всплывающие окна? Этим особенно знаменита Систе-
ма Лидеров. Например, когда вы заходите «а сайт одного из участников
системы, браузер открывает еще несколько окон и загружает в них сайты
других участников. Кроме своих денег, мы еще теряем и часть нервных
клеток — меня ничто так не раздражает, как вываливающиеся окна, а
также приглашения установить Р1а$Н. К счастью, с окнами мы сейчас
справимся. Выполните команду меню Настройка -> Настроить Копднегог.
Перейдите в раздел Лата & ЛатаЙеНрГ (рис. 6.15).
Вы можете вообще отключить ЛауаЗспр!. но я предпочитаю создать «чер-
ный список». Нажмите кнопку Добавить, затем введите имя сайта или
..... <
Рис. 6.15. Нас тройка политики Лама8сг1р1
домена, например, Йгее-р1с8.сот и правило Запретить. Обратите внимание:
вы можете указать как имя узла, так и имя всего домена.
После настройки Зауа8спр1 я решил посмотреть, как же Копциегог
работает с Заха-апплетами. По умолчанию поддержка Заха отключена,
поэтому на вкладке Заха ее нужно включить и указать путь к программе
Заха: /оаг/Ып/эауа или просто ]ауа.
С флешем (Паяй) дела обстоят лучше. Браузер Коодиегог использует
плагин Паяй РЕауег программы №е1ясаре. Поэтому, если в вашей системе
установлен браузер Иеисаре или Мо/лПа. ваш Завоеватель будет ото-
бражать «флешки».
Но что больше всего мне понравилось в этом браузере, так это то, что я
могу изменить строку идентификации агента. Например, я могу «замаски-
роваться» под 1п(егпе1 Ехр!огет 5.5 оп ХУшсклхк 2000. Пусть думают, что
у меня \Ушс1озУ8 стоит. Для чего это нужно? Когда вы посещаете узел, в
протоколах веб-сервера отображается 1Р-адрес и строка идентификации
агента, например, МогШа/5.0 (сотрабЫе; Копдиегог/3; Ыпих).
6а1еоп
Он был «придворным» браузером среды ОКОМЕ до версии 2.6. Начиная
с этой версии вместо Са1еоп устанавливается его облегченная версия
Ер1рИапу, а пакета Оа!еоп может даяке не оказаться в вашем дистрибу-
тиве. Достать его можно из репозитория АЬТ Ыпих 8&урйш> (Иьср : / /
ак . 1^п.иx.К^еV.иа/^^ррл/да.1е0п/деь). Основан Са1еоп на движке
МохШа (можно читать Мейсаре), поэтому он умеет все, что умеет Ые&саре
(МогцИа). Это означает, что веб-страницы в браузере Са1еоп будут ото-
бражаться точно так же, как в браузере \ гусаре и наоборот.
Оа!еоп без проблем справился со всеми приготовленными мною тестами.
Самое главное, что мне не пришлось вокруг него плясать с бубном и
песнями, чтобы запустить апплеты Зата.
Что мне еще понравилось в этом браузере, так это работающая консоль
Тол. В отличие от Копциегог. в котором я не смог добиться появления
этой консоли, в Са1еоп консоль 1ауа еще и нормально функционирова-
ла. Для появления консоли выполните команду меню Инструменты —>
Консоль Лата.
Диспетчер постоянных данных Са!еоп позволяет централизованно управ-
лять СооЙе и паролями. Для его вызова выполните команду меню Ин-
струменты —» СооЮе —> Просмотр Соок1е. Вы можете удалить выбранные
или всё Соок1е и одновременно запретить их прием.
Что такое СооНе? Некоторые сервера, когда вы их посещаете, записы-
вают в определенный файл на диске какую-то информацию. Обычно
это время последнего посещения сайта, ваше имя (если вы его ввели в
анкете), параметры сайта и другие сведения. Например, для почтового
сервер МаП.ги это дата последней регистрации и применяемая схема
дизайна. Хранить эти несколько байтов, умноженных на огромное ко-
личество пользователей, на самом сервере невыгодно, поэтому сервер
предписывает каждому клиенту хранить свои данные у себя. Это и есть
С'оокэе.
Вы можете указать, каким сайтам вы разрешаете устанавливать Соокде,
а каким ’—* нет.
Не разрешайте устанавливать Соокзе интернет-магазинам, и вот почему.
Один клиент заходил в интернет-магазин, покупал товары, которые по-
том доставлялись ему домой. Он уже 2-3 месяца пользовался услугами
этого магазина и не замечал ничего странного в поведении цен: рынок —
дело непредсказуемое, цены могут постоянно меняться, на некоторые
товары — в течение дня. Но однажды ему пришлось работать в интер-
нет-кафе. Знаете, что он обнаружил, когда вошел на сайт магазина с
другого компьютера? Что цены для новых пользователей на 20% ниже.
Магазин привлекал покупателей низкими ценами, постепенно увеличивая
цену (или делая формальные скидки) для постоянных клиентов. Старых
клиентов магазин узнавал именно по Соокле, после чего предлагал им
соответствующий прейскурант.
Ер1рЬапу
Прямо-таки браузер для настоящего аскета: минимум функций и жидень-
кий интерфейс пользователя. У текстового браузера 1упх, наверное, боль-
ше возможностей, чем у ЕрфИапу. Единственная функция, оставшаяся
от Са1еоп — это возможность управления Соокзез. Вызвать ее можно из
меню браузера Правка -> Изменить персональные данные. Хотя, опять-
таки. эту функцию «урезали» — если раньше можно было определить,
какие сайты могут устанавливать Соокзек, а какие — нет, то в ЕрфЬапу
этого сделать нельзя.
Прид&ж&мий ^аиандь) -
*; ЦпвиСютн-" яутмодапи» К ЛИР* Цю»«»<Яй1р
&вйл При*: а Вид Гарвард Эвкяздкя Видами йправ*’.в
* , ► , © । е. а
Назад Зпе^ц. естаияигй Парааагруэить. I З аачапо К истерии
: АЛгЬоР
заратиты*
=' е х 1
Мвхамиэк Сснз&нк
^сгисгрди^д]
•ЗАЙЫгЯл пвропь?
Лрцду*
&И$В№)№КЗ
: Несчотг
• ййрсию |
. фулкцж
Домен ** Нашивном»
Книга и руеоаолства
; Яресс-фвяиэы
' Муторно и»ьа
: ИЕШх'сжаы шу-т
: 3 нц^пон&дусн 1Етх
КППМЯЧ
] ДряРег 7:Й дли
: ОРвггё
ПйдДер!
' аЕЮш
МоЯоо и
! ,1еага.ш
; З|31.Ш
.^ьг.ш
? тп1.ш
ггатЬ&ЕШ
УЮ
ГГЮ
пай
^пу1ао.сот..У(5Ю..
^Изменить саойстаа
ХДарнтъ
брвдаки
гц!4
ш
Рис. 6.16- Менеджер персональных данных
Ые^всаре
Что я вам могу сказать относительно Хе1ясаре? Вы и так все знаете.
Единственное правильное решение, которое вы можете принять при
выборе браузера, это ХеЬсаре. Большинство страниц будут корректно
отображаться в этом браузере. У вас никогда не будет проблем ни с
апплетами За\'а, ни с Е1акЬ иля )ауа$спр1. То, что некоторые страницы
будут выглядеть не так, как в 1п1егпе1 Ехр!огег, так это уже не глюк На-
вигатора, а непрофессионализм веб-дизайнеров. Некоторые горе-мастера
сознательно создают сайты, которые эффектно выглядят в 1Е, но куда
хуже отображаются в ХеЬсаре Эго и есть непрофессионализм.
Легкие и быстрые браузеры Копциегог и Ер)рНапу можно использовать
для просмотра несложных страниц, например, чтения НТМЬ-документа-
ции, а все остальные открывать с помощью ГЧеГясаре. Ну и что, ятю время
его запуска на несколько секунд больше?
ЯгеЕох
Браузер ЕйеЕох, Основанный на движке МохШа, появился сравнительно
недавно. Его можно найти в последних версиях дистрибутивов (уже в
Ребога Соте 3 он есть). Большинство веб-страниц просматриваются в
браузере без особых нареканий, кроме страниц, содержащих ЕЫ11-ани-
мацию.
Для просмотра НакЪ-анимации вам нужно загрузить Масготесйа
Г1акЬР1ауег. Сделать это можно на сайте ЕС ср: / /мии. тасготеёНа. сот.
Распакуйте его в какой-нибудь каталог, перейдите в этот каталог и вве-
дите команды:
$ сИтой а+х 1:1а8Йр1ауег-1пзЬа11ег
$ . /11аз.11р1ауег-1пвСа11ег
После этого проверить корректность установки проигрывателя можно
с помощью команды аЬоиСркцрпв, введенной в поле адреса браузера. В
выводе браузера вы должны увидить что-то вроде этого:
ЖМЕ Туре ЗиЕПхев ЕЬаЫеб
арр11саГ1оп7'х-нИсх:ктауе-Е1азй Злоскыау» НавИ биЕ Уев
аррНсаь 1ап/йзЕигенр1азЬ. Нй:игеЗр1азЬ РЕауаг ер! Уез
Если вы увидите эти строки, значит, плагин корректно установлен.
6.4.4. Текстовые браузеры
Текстовые браузеры не показывают рисунков, различных шрифтов —
только текст. Зато при этом значительно повышается скорость доступа
к \У\УУ/.
Популярны такие представители этого семейства, как Ьупх и похожий
на него Ешкз.
Формат команды 1упх таков:
$ 1упх [опции] ОКЕ
Стрелки управления курсором «вверх» и «вниз» перемещают по ссылкам,
стрелка «вправо» открывает ссылку, стрелка «влево» возвращает на пред-
ыдущую страницу. Справку можно получить, нажав клавишу <Н>.
Некоторые полезные опции перечислены в таблице 6.4.
Опции программы 1упх Таблица 6.4
Параметр Опирание
-зпопутопз Использовать анонимную регистрацию
-ашп=имя пароль Использовать указанную информацию дли аутентификации
-Ьоок Загрузить страницу с избранными ссылками
-сасЬе и Установить количество кэшируемых документов
-СЙ56 Учитывать регистр букв при поиска
-йитр Преобразовать страницу в текстовый ВИД и отбранить результат на стандартный вывод
-де1„йа!а Использование метода СЕТ для отправления данных
Не выводить список ссылок при указании параметра -Цитр
-розгйао Отправка данных с помощью метода РОЗТ
-геа1т Запрещает указывать 1)РИ при запуске
ге1оай Сброс кэша прокси-сервера
“5О1ЯС8 Отображает страницы \л/еЬ в виде исходного текста НТМ1
6.4.5. Полезный трюк: Что делать, если браузер
«подаисает» на какой-то странице
Иногда попадаются веб-страницы, которым требуется целая вечность,
чтобы загрузиться. Если с одной и той же страницей это повторяется
изо дня в день, то причина, скорее всего, в следующем: код загружаемой
страницы содержит ссылки на какой-то объект (картинку или, еще хуже,
рекламный баннер), расположенный на другом сервере, причем имя этого
сервера невероятно трудно разрешить в 1Р-адрес. Вы думаете, что бра-
узер «висит», а на самом деле он ждет ответа от модуля распознавания
имен (резолвера), который в свою очередь ждет от вета от сервера ПИ$.
Службе ВИ5 посвящена 13 глава этой книги, и для лучшего понимания
этого совета просмотрите хотя бы бегло эту главу.
Путей решения проблемы два (не считая тривиального — прекратить
посещать «тормозную» страницу). Во-первых, можно установить кэши-
рующий сервер Вы сэкономите не только время, но и деньги, ведь
все запросы и ответы на них будут храниться в кэше вашего собственного
сервера и, значит, завтра не понадобится обращаться к внешнему серверу
за разрешением того же самого имени,
Во-вторых, можно явно отказаться от попыток открыть элемент Ошанины
по этой ссылке. В файле /’еЕс/пнетаСсЬ-.ебП'Е (и. 13.2)
определен порядок просмотра источников модулем распознавания имен.
Убедитесь, что первым опрашивается файл:
ЛозСЯ; П1ез <3пз
Этот файл — /ёСс/НоаСв. Впишите в него строку, «разрешающую» имя
проблемного сервера в ваш собственный (1оса1Ьок1) 1Р-адрес:
127.0.0,1 дал-?.аегуег.пебозГиреп.сот
Когда вы в следующий раз заглянете на эту страницу, браузер быстро
получит ошибку» успокоится и продолжит грузить страницу.
6.4.6. Набор программ для работы в Интернете
Болтанка 1СО
Разве может популярная операционная система не включить в свой состав
популярную программу для общения? Нельзя сказать однозначно, что
Ыпих является самой популярной операционной системой, первенство
все-таки принадлежит У/шскм’з, но то, что ГСО — это самая популярная
программа для общения, сомнению не подлежит. Посмотрите на свой
1Л1Ч: вот столько пользователей было зарегистрировано до вас.
Количество пользователей 1СО растет не по дням и даже не по часам, а
по минутам. Наверное, компания МйаЬШя, когда разрабатывала первую
версию ГСО, и не рассчитывала, что программа станет настолько попу-
лярной.
Клиент 1СО для Ыпих так и называется — Ыпих 1СО (ЬЬСр: //Исд.
отд). Запустить программу можно с помощью команды Нсц. Программа
может даже работать в терминале (консоли), для этого введите команду
11сд -р сопзо1е.
Менеджер закачки файлов ОомтГоабег Тог X
Штатной утилитой для скачивания файлов в Ыпих служит поддер-
живающая протоколы РТР, НТТР и НТТР8. Она работает в консольном
режиме и не требует взаимодействия с пользователем, то есть можно за-
пустить процесс скачивания в фоновом режиме и завершить свой сеанс
работы с Ыпих. Разработанная специально для медленных и ненадежных
линий связи, она умеет возобновлять процесс закачки с того места, на
котором он был прерван.
< Прмюж»ИИ"» -Л ,;..::,4 .;, 4И.
Рис. 6,17. Сеанс Юй для имх
Воспользуемся ею, чтобы скачать последнюю версию программы
Х-Воул11оас1ег. разработанной Максимом Кошелевым (иыи. кгаеи . ги/
иоГГ; /скисИе1о):
$ а *с б С Ср: / Л/ьти кг а з и . ги / С / с!1ис Ье 1о / Е11 е а /
<34х--2 . 5 . СИ1па1-1. 1386 . грга
Как видно из названия Х-По«'п1оабег, этот менеджер закачек предна-
значен для работы в графической среде X Моск™.
Возможности программы таковы:
♦ Загрузка файлов по протоколам РТР и НТТР.
* Организация очередей и подочередей закачки.
♦ Многопоточный дизайн, благодаря которому файды загружаются на-
много быстрее, потому что каждый файл закачивается одновременно
несколькими потоками. Количество потоков можно настроить. По
умолчанию оно равно пяти.
♦ Множественные параллельные закачки.
♦ Рекурсивное копирование по РТР и НТТР.
♦ Поддержка шаблонов при рекурсивном копировании по РТР.
• Поддержка прокси (РТР и НТТР).
• Принудительное ограничение скорости загрузки.
♦ Организация расписания загрузки.
♦ Приостановка закачки файлов и докачка в случае разрыва соединения.
♦ Поддержка метода йга§-апй-йгор для добавления закачек.
♦ Прекрасная настраиваемость программы.
♦ Дополнительные возможности: шкуры (зкшя) и т.п.
Программа Х-Оо^п1оабег входит в состав некоторых дистрибутивов.
Точно знаю, что она входит в состав дистрибутивов группы ДЕТ.
Я с программой знаком достаточно давно. С тех времен программа замет-
но выросла, появились новые функции и усовершенствовались старые.
Запустите программу 64х в окне терминала или из меню Команды —>
Запустить приложение.
В левой части окна Л'-Оомп1оабег (рис. 6.18) отображаются активные
очереди закачки. Каждая очередь содержит список файлов, которые
нужно закачать. Работа с очередями (создание, удаление) осуществля-
ется с помощью меню Очередь. Если щелкнуть правой кнопкой мыши
на названии очереди и выбрать команду Свойства, мы сможем изменить
параметры очереди.
Рис. 6.18. Очередь закачек
Сейчас в списке файлов очереди Мат находятся три задания. Для каж-
дого задания отображаются:
♦ Его состояние (иконка с изображением бутылки): загружается, за-
гружен, приостановлен, неудачное завершение;
* Имя, тип, размер файла;
• Сколько загружено, сколько осталось, отношение размера загружен-
ной части к размеру файла в процентах;
♦ Скорость соединения, время загрузки;
• Количество попыток загрузки.
♦ Адрес (полный 15КЬ файла).
На панели состояния отображается информация о загружаемом файле.
Чтобы добавить новую закачку, нажмите кнопку Добавить закачку на
панели инструментов. Если вы предварительно поместили 1К1 загружа-
емого файла в буфер обмена, то можете нажать кнопку Добавить закачку
из буфера. А можно воспользоваться, наверное, самым удобным спосо-
бом — просто перетащить ссылку из окна Копциегог в окно программы
Х-1)онп[о«н1ег. Появится окно Добавить закачку, на вкладках которого
можно дополнительно настроить параметры загрузки. Если ваш сервер
требует авторизации, укажите имя пользователя и пароль. Обычно это
нужно для неанонимных ГТР-сернеров.
На вкладке Время вы можете определить время и дату начала закачки.
Это очень удобно, если вам нужно закачать какой-нибудь большой файл,
например, то же ядро Ыпих: вы можете поставить закачку на ночь. Только
не забудьте об этом и не выключите компьютер!
Дважды щелкнув на любой закачке, вы увидите протокол загрузки файла.
В протоколе отображаются все ответы сервера и сообщения самой про-
грам мы Х-Оомтйоабег. Протокол помогает понять, почему же вы никак
не можете закачать гот или иной файл.
Обратите внимание на горизонтальный «светофор» на панели инстру-
ментов. Это ограничитель скорости: красный свет означает, что будет
использоваться самая низкая скорбеть, Желтый — средняя, а зеленый —
максимальная, то есть без ограничения.
Самые главные параметры находятся в группе Закачка (Настройка -э
Свойства программы Закачка -э Ограничения). Здесь вы можете
определить:
♦ Таймаут чтения из сокета (по умолчанию 300 сек);
♦ Таймаут до повторного соединения (5 сек.);
♦ Количество попыток (0 — не ограничено);
♦ Откат после обрыва (0 байт, то есть закачка будет продолжена с того
же самого места). Эта возможность позволяет заново передать указан-
ное число байт, которые, возможно, были искажены перед обрывом
соединения;
• Ограничение максимальной скорости (0 — без ограничения);
♦ Максимум строк в логах (100).
Еще одна полезная функция программы — Планировщик (Настройки
Планировщик). С его помощью можно создавать расписания закачек и
выполнять другие действия, перечисленные в таблице 6.5.
Допустимые действия Планировщика программы Х-Ооит1оа<}ег
Таблица 6.5
Действие Описание
Ограничить скорость С помощью этого действия вы можете как снизить, так и по- высить скорость, поскольку вам по-прежнему доступны три режима: Минимум. Среднее и Неограниченное. Зачем это нуж- но? Например, вы целый дань загружаете файлы параллельно с другой работой в сети. Тогда на время обеденного Перерыва можно повысип> скорость, а в остальное время снизить, чтобы закачка не загружала канал и тем самым не мешала вашей основной работе
Поднять главное окно Отображает главное окно программы в указанное время
Выйти Завершает работу программы
Удалить завершенные Удаляет завершенные закачки из очереди
Удалить неудачные Удаляет неудачные закачки иа списка
Перезапустить закачку Вы можете указать закачку, которую нужно перезапустить. Тут, наверное, нужно быть волшебником, чтобы угадать точное время перезапуска закачки
Остановить закачку Останавливает закачку
Удалить закачку Удаляет закачку. Закачка будет удалена в любом случае, даже если она еще не завершена
Удалить, води завершена Удаляет закачку только в том случае, если она завершена
Добавить закачку Добавляет закачку а список
Сохранить список Сохраняет список
Выполнить команду Позволяет выполнить внешнюю команду, то есть запустить программу а указанное время
РТР-клиенты
В любой сетевой операционной системе (а ОС Ыпих — именно такая)
есть простейший ВТР-клиент — программа Г1р. Она предлагает интерфейс
командной строки. В ответ на приглашение р> введите команду Не1р,
чтобы увидеть список встроенных команд Пр.
Эти команды очень похожи на те, с которыми вы уже встречались, изучая
программу хшЬсПепТ Важнейшие из них для вас — команды и рн1.
Удобный РТР-клиент с графическим интерфейсом — программа ^ГТР.
Я рекомендую устанавливать самую новую версию программы, не ниже
2.0. Запустите программу командой дПр (см. рис. 6.15).
На рисунке видно, что я подключился к серверу Йр.уагв.Ггее.пе! под
именем апопушоиз. Если ваш сервер не разрешает анонимный доступ,
придется ввести имя и пароль. Порт в большинстве случаев — 21. После
ввода всех необходимых параметров соединения нажмите кнопку Соеди-
нить (с изображением компьютеров). В правом углу находится кнопка
Отключиться.
*/......„,., >.' ,.^^Ш^.'.,. .... р "..
ЕТ₽ ^&ж*$ычг ЭмэдЗД йяртДОн! 2Ьури*1ч
^гсм№М|^0*|1&
1Ш<[Вср '
^|Н*пМИ#Я
::в
«дЙядЛХГ
?0Э * тли 127
; У Ьк1огтХЙ&^|Щ ': Гтгр
' Р йа^еап-ТЗЛ»»;^
Ж^ШЬ&ЕйЬ
0 5чиИ-Язга4йе1'СТ
6 5фМл?31йаЬ№*-*п
* «МЙ2.Т5ТАВЫ4
41 м^азгайш
Ф «цк^ДБТАВЬЕЗ
Ф
7» а*
75м ан/
этгет л?у
1.971.3» «V
1 Эв1йЮ1аУ
г.338.7» ГаУ
ш&
ипа
Л1Г4
ЦПМ
ДИ»*.
5« Аид^
Аид;'."
№еР Ар...
ТМ ''
ЫгоЭД'з
^§дтаАдл;Ц*
«е «щ*ти гиждедвле >(<»гст и с ^ГТе* нд Одйт&ш&эдлсу1 №р /Ач*№и|^Емж^
дГТ Р гц^т*» г*чтся АЬСОПЮТИ О БЕЗ ГАОДИ 7-Ш^ И^^чоеги с-мСГДи'О» в фДОад СОРУШС. 3 гв
сьа6^а%«1у4Х-$л»1и&1 а»* ям »т V рнгпрж^рд^АШ эд НЙ^Лов^.Ях, айясвмпь» » фДЙЛдСОРУШС
П-лрадккД с.^ллял В|нн1к Филилпоа.. лонмии^ Вмтдлнй. Липвтйй
Рис. 6.19. Окно Программы дРТР
С помощью меню ГТР можно установить один из режимов работы ГТР-
сервера: А8СП (текстовые данные) или Втагу (двоичные). Режим В1гагу
устанавливается по умолчанию, и лучше эту установку не изменять:
текстовый файл в этом режиме поврежден не будет, а вот наоборот...
Дело в том, что текстовый режим заменяет символы конца строки на те,
что используются на принимающей стороне, так что разбиение текста
на строки сохраняется; понятно, что двоичному файлу от такой замены
не поздоровится.
Чтобы принять или передать файл, пользуйтесь командами меню Переда-
ча или инструментальными кнопками, расположенными между областями
локального и удаленного компьютеров.
Мне очень понравился инструмент Сравнить окна, который сравнивает
окна Локальное и Удаленное. Эта функция незаменима, если вы обнов-
ляете свой веб-сайт по РТР.
Встроенными РТР-клиентами снабжены также браузеры ^Ьсаре/МояШа,
Копциегог и файловый менеджер МШпщШ Соттапбег.
Однако все эти программы обладают одним небольшим недостатком: они
не могут докапать файл в случае разрыва соединения (операция НЕСЕТ).
От этого неудобства избавлена программа псПр.
Она не обладает удобным графическим интерфейсом, а больше похожа
на стандартный ЕТР-клиент Г1р и понимает его команды. Это значит, что
для соединения с узлом вам нужно ввести команду ореп, а для закачки
файла — команду (*Н и т,д.
Предположим, что когда мы выкачивали все грт-пакеты, соединение
было разорвано (ох уж эти линии’). Для до качки файлов устано-
вите соединение заново, откройте нужный вам сервер (например,
ореп ЕСр. геййаС . сот) и введите команду:
псЕср> деС -С *.грт
Опция -С активизирует функцию докачки.
При работе с этой программой меня очень обрадовала возможность
создания закладок «на лету». Например, если Вы работали с сервером
Гер, геДЬаГ. сот и последним каталогом был каталог /рнЪ, то при вводе
команды ореп гейЬаг. программа установит связь с сервером ЕГр.ге-
йЬае.сош и перейдет в каталог /риЬ. Просмотреть и отредактировать
закладки позволяет команда Ьоокшагкк
Глава7, основы
АДМИНИСТРИРО-
ВАНИЯ СИСТЕМЫ
о___ЧТО ПОНИМАЕТСЯ ПОД
АДМИНИСТРИРОВАНИЕМ СИСТЕМЫ
— конфигураторы ишх
<»--ПОЛЬЗОВАТЕЛИ и квоты
п___ПОДКЛЮЧЕНИЕ И КОНФИГУРИРО-
ВАНИЕ АППАРАТНЫХ УСТРОЙСТВ
п| УСТАНОВКА ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ
.КЛОНИРОВАНИЕ
И ВОССТАНОВЛЕНИЕ СИСТЕМЫ
ЫМ11Х Л О ЛН О Е РУКо в од ст в о
7.1, Что понимается под
администрированием системы
В ОС 1.1Ш.1Х существует корневая учетная запись го<н для привилегиро-
ванного пользователя, которому разрешено делать все: читать, изменять
и удалять любые файлы, создавать и разрушать файловые системы, за-
пускать и прекращать выполнение любых программ. Эти привилегии
нужны для администрирования системы.
В обязанности системного администратора обычно входит:
• управление пользователями: ведение ученных записей пользователей
и групп, квотирование дискового пространства;
• управление процессами; перераспределение ресурсов с целью повы-
шения производительности системы;
♦ установка и модернизация программного обеспечения;
♦ подключение и конфигурирование аппаратных устройств;
♦ настройка системы: управление общесистемными сервисами, настрой-
ка сетевых служб с точки зрения безопасности и производительности,
конфигурирование ядра;
* резервное копирование и восстановление данных.
Я включил главы, посвященные основам администрирования, в поль-
зовательский раздел, потому что пользователю домашнего компьютера
придется большинство администраторских обязанностей взвалить на себя.
Помощи ему ждать неоткуда.
В следующем разделе я подробно остановлюсь на настройке различных
сетевых служб.
Несколько советов начинающему администратору:
♦ Входить в систему под именем гоо! только тогда, когда это абсолютно
необходимо, и завершать сеанс привилегированной работы сразу же
после выполнения административной задачи. Чем реже вы работаете
под именем гоо1, тем меньше шансов случайно разрушить систему,
спутав права пользователя гоо1 с правами других пользователей.
♦ Настроить строку приглашения командной оболочки так, чтобы
для пользователя гоо! она отличалась от приглашения для обычных
пользователей. Как правило, строка приглашения гоо( оканчивается
символом а для других пользователей — символом $. Если все-таки
есть вероятность забыть, под каким именем вы сейчас работаете,
пользуйтесь командой ч11оапп.
♦ Для часто выполняемых работ по обслуживанию системы сохранять
нужные последовательности команд в файлах сценариев (скриптах),
чтобы автоматизировать выполнение этих работ.
7.2. Конфигураторы Ыпих
Настройка всего программного обеспечения в иМ!Х-подобных системах
сводится к редактированию текстовых файлов, которые программа про-
читывает при запуске и которыми руководствуется при выборе режима
работы. Каждая прикладная программа или демон, включая демон 1пй.
поддерживает отдельный набор этих, называемых конфигурационными,
файлов (в отличие, скажем, от М8 Е>08, где в один файл могут быть объ-
единены секции, управляющие различными подсистемами). Общесистем-
ные службы держат их, как правило, в каталоге /еСс, а пользовательские
приложения — в домашних каталогах пользователей: такое размещение
позволяет каждому пользователю настроить приложение в соответствии
со своими нуждами.
Конфигурационные файлы самодокументированны: любая строка, начи-
нающаяся с символа считается комментарием и может содержать лю-
бые справочные сведения. Кроме того, если вы вносите мелкую правку —
скажем, изменяете значение одного параметра, — вам необязательно со-
хранять резервную копию старого конфигурационного файла: достаточно
закомментировать строку с этим параметром.
Несмотря на удобство настройки путем редактирования текстовых фай-
лов, все еще находятся администраторы, привыкшие к настройке в стиле
XV1 пс1ои'з: через многоуровневые меню и диалоговые окна. Для таких
администраторов предусмотрены графические конфигураторы, в разных
дистрибутивах называющиеся по-разному. Запускать их нужно с графи-
ческой консоли, потому что многие из них нуждаются в графическом
режиме. В таблицах 7.1, 7.2 и 7.3 перечислены основные конфигураторы,
включенные в дистрибутивы Мапбгаке, К.ебНа( и Ребога Соге.
Основные конфигураторы Опох Мапдгаке
Таблица 7.}
Программа Назначение
йгаксаоТ Основной конфигуратор
РгакЬооТ Конфигуратор загрузчика 1ЛО/6НОВ
бгакдгм Совместное использование интернет-соединения
ОгакпеГ Настройка сети
ДгакПорру Создание загрузочного диска
йгакзес Определение уровня безопасности
Ргакх5егу1сее Автозапуск сервисов
Фзкбгаке Программа для работы с разделами диска
0гаксопсо1е Доступ к консоли
Огаккте Настройка даты и времени
й(зкагаке--Ц1в5Иага Разрешение совместного использования каталогов
айгТизегскакв Управление учетными записями
Нагбйгаке2 Средство для настройки оборудования {а Цпих Мапбгака до вер- сии 9 называется нагДДгаке}
кеуЬоагйргаке Настройка клавиатуры
1оса)ейгаке Изменение параметров локализации
птаизейгакв Настройка мыши
тепиШаке Настройка системного меню ОМОМЕ и КОЕ
рпптегРгаке Настройка принтера
петсопт Настройка сети
ЕодДгайв Поиск в файлах протоколов
МойвгпеопТ Конфигурирование модема
ТщуйгеийП Параметры брандмауэра
ХГйгаке Настройка сервера X
Хбгакгез Установка разрешения монитора
Хсопбдигатог Настройка графической системы X УИпбон'
Основные конфигураторы Опих РеР Наг
Таблица 7.2
Программа Назначение
$аиф Основной конфигуратор
соп(го!-рапе1 Вспомогательный конфигуратор
МойетГоо! Конфигурирование модема
Рг|СТепоо| Настройка принтера
ЮТсоп! Настройка сети
ХсснбдцгаТог Настройка X ЗДпйои'
АоПтсопГгд Параметры аутентификации
тесйтат-согфд - весип(у!еуе! Установка уровня безопасности О
гвйГтаг- со л(1д -!апд иаде Выбор языка (*)
гейЛаГ-сопйд-йаТе Установка даты (*)
ге Дйа|-согфд.изегк Управление пользователями (’)
геДЬат-соикд-раскадез Работа с пакетами
Продалжениегтабл. 7.2
Программа Назначение
гебйаг-сепйд- хТгеевб Настройка системы X Уйпбои (•}
гербаV сопйд - рбп(ег Конфигуратор принтера (*)
8пбсоп(!д Настройка звуковой платы
(*} Данные конфигураторы доступны в версии Ней На18.0 и выше
Основные конфигураторы Илих Редага Соге Таблица 7.3
Программа Назначение
ВВШр Основной конфигуратор
ву^ет’СопЯд -раскадез Установка и удаление пакетов
вумепт- сопйд-аиШепбсабоп Параметры аутентификации
вузТет- сопбд- зесигйу!еуе| Установка уровня безопасности
зув1бт-соМтд-здсипгу1еуа| -Ш! Настройка брандмауэра без графического режиме
вузтет-соЫщ - ивегз Управление пользователями
вувтет .сопбд -пеыгогк Настройка сети
еу зТегп - сов) го! - пеЪчогк Настройка сетевых интерфейсов
ау втет -сопбд-пеЬюгк - (кий Мастер установки сетевого соединения
зузТет- сопкд-кегутсва Настройка служб
кузТет -сопкд-сйзр1ау Настройка монитора и видеокарты
вузГет-сопЛд - кеуЬоап! Выбор раскладки клавиатуры
зузТет -сопйд- гпоизе Настройка мыши
яу 5<е гл’ еопйд -рл Л1аг Настройка примтАра
зузТет -сопкд- воипбсагй Настройка звуковой платы
Основной конфигуратор (веШр или вгаксоп!) обычно используют для
первоначальной настройки системы сразу после установки.
7.3. Пользователи и квоты
7.3.1. Учетные записи пользователей
Система учета пользователей опирается на следующие конфигурацион-
ные файлы:
♦ /е^с /ранв^с! — учетная информация о пользователе;
♦ /еЬс/аИасЗок — скрытая информация о пользователях: пароли в за-
шифрованном виде;
♦ /еЬс /дтоцр — информация о группах;
♦ /еСс/дзИасЗои — скрытая информация о группах;
• /ег.с/<Зе:Гаи1г/и8егайд — свойства, назначаемые по умолчанию
новым учетным записям;
♦ / е Ь с /1 од 1 п. де Г к — настройки безопасности пароля (время истече-
ния, минимальная длина);
♦ /еис/зке1 — каталог, содержащий личные файлы настроек по умол-
чанию (когда для нового пользователя создается домашний каталог,
в него помещаются эти файлы).
Файл /еГс/равзул! — информация о пользователях
Учетная информация о пользователях системы хранится в файле /еСс/
раявмз в следующем виде:
изегпатевраавтеогй :ПЮ:вЮ: Ги11_пате:Ьоте_<11г: 1од±п_вке11
Где:
* Пйегпате — это регистрационное имя пользователя, часто называе-
мое логином. Обычно администраторы присваивают пользователям
логины, образованные от их реальных имен. Имя гоо1 закреплено
за суперпользователем. Кроме реальных пользователей, в системе
существуют еще фиктивные (Ып, баетоп и т.п.), от имени которых
запускаются общесистемные службы.
♦ раз виога — пароль. Обычно испол ьзуются теневые пароли, и вместо
пароля в файле /есс/раввин! стоит знак *, а сам пароль в зашифро-
ванном виде хранится в файле /еДс/кЬ.адои.
♦ ию — уникальный числовой идентификатор пользователя из диа-
пазона от 0 до 65534. Суперпользователю присвоен СЮ, равный 0.
♦ сто —числовой идентификатор первичной группы пользователя.
Помимо первичной группы, пользователь может входить или не вхо-
дить в состав разных групп, но в первичную группу (паШ»е ^гоцр) он
входит всегда. Пользователи, входящие в одну группу, могут работать
с общими файлами. Первичная группа суперпользователя называется
гооТ Ей присвоен С>Ю. равный 0,
♦ Ри11„пате — обычно представляет собой реальное имя пользовате-
ля, например Кап 1уйпоу. Может содержать и другие данные: номер
телефона и т.п. Эти сведения системой не используются, но доступны
по команде ъ!пдег <ивегпап1е>.
♦ Ноте_сНг —домашний каталог пользователя. Стандартное место для
него — это каталог /Ъоле/<ивегпагае> (например, /Иогае/йеп), и без
особых причин изменять такую организацию домашних каталогов не
рекомендуется.
♦ Ьод1п_вЬе11 — командный интерпретатор, запускаемый по умолча-
нию при входе пользователя в систему.
Пример фрагмента файла /еЬс/раввмй:
гооС :х: 0 : 0 : гооС : /г-ООС: /Ып/ЬавИ
Ып: X: 1:1: Ып: /Ып; /зЫп/ПО1од1п
йаетоп:х:2 :2 . дзетой: /зЫп: /яЫп/по1од1п
йеп:х: 500:500:(3еп:/ИотеМепг/.Ьхп/ЬавЪ
еVд:Х:501: 501: : /Ъоте/сгуд: /Ый/ЬавЬ
Применение теневых паролей оправдывает себя с точки зрения безопас-
ности. Обычно к файлу /есс/разйвд<1 разрешен доступ в режиме «только
чтение» всем пользователям. К файлу /еСс/зИайсад обычный пользователь
не имеет даже такого доступа.
Системы, использующие ТСВ (Тгш1е<1 СотриПп$ Вахе), хранят пароли не
в файле /'еГс/вЬ-абои, а в файлах /еСс/С.сЬ/<имя_пользователя>/
вНайо«. Считается, что технология ТСВ более практична с точки зрения
безопасности, поскольку доступ к паролям отдельного пользователя не по-
зволит злоумышленнику скомпрометировать сразу всю систему. Для вклю-
чения поддержки ТСВ нужно установить пакет 1сЬ. Многие современные
дистрибутивы (например, дистрибутивы АГТ Ыпих) поддерживают ТСВ
по умолчанию.
В качестве основного алгоритма шифрования используется МО5. превра-
щающий пароль в 32-значное шестнадцатеричное число. Этот алгоритм
является самым надежным. Раньше использовались алгоритмы ОЕ8 и
ЗЮЕ8, но здесь я не буду подробно останавливаться ни на одном из них.
При установке системы обычно спрашивается, хотите ли вы использовать
теневые пароли (8Иас1о\с Разйжзгдз) и МО5. Я очень рекомендую вам ис-
пользовать обе эти возможности.
Информация о группах пользователей. Файл /е!с/дгоир
Информация о группах пользователей хранится в файле /ерс/дгоир в
следующем формате:
имя_группы: пароль: СЮ :члены_группы
Пароль используется крайне редко. Пример фрагмента файла /еСс/
дгоир:
ГООС:*:0:ГОСТ
Ып: * : 1: гооС , Ып,баетоп
1оса1: * : 100 :йен,орега1ог, МП
диезС:*:200 :
<31а1ир:*:250:^1сСог, еуд
В этом примере группа гоо( зарезервирована для пользователя гоо(. Груп-
па с идентификатором 100 используется для локальных пользователей. В
ее состав входят пользователи йен, орегаСог, Ып. Группа диезе пред-
назначена для гостевого входа и пользователя диезе. В состав группы
<11а1ир входят пользователи V^с^:о^ и еуд.
Системой определяются группы для фиктивных пользователей: Ып, вуз,
айгп и т.п* Реальные пользователи входить в них не могут. Эти группы
используются для системных файлов.
Добавить труппу вы можете с помощью команды $гоирай(1. Я, как пра-
вило, просто добавляю запись в файл /еСс/дгоцр, а если мне нужно
удалить группу, то удаляю соответствующую строку.
7.3.2. Создание и удаление пользователей и групп
Большинство утилит административного назначения хранится в каталогах
/зЬш и /шг/зЫп. Полный набор утилит для управления пользователями
и группами, установленных в вашей системе, вы можете увидеть по ко-
манде
# 1й {/вЫп, /изг/зЫп} /* {изег, дгоир}*
Выполнив подстановки аргументов, командная оболочка Ъахк превратит
эту команду в четыре:
1з /зЫп/*изег*
1з /зЬ1п/*дгоир*
1з /Ц8г/яЫп/*изег*
1к /иэг/еЫп/*дгоир*.
Чтобы добавить пользователя, выполните команду
# изегаскЗ <имя> ; раззвдЗ. < имя >
Для удаления учетной записи пользователя служит утилита няегйе!, а для
модификации существующей учетной записи — утилита изегтой. Все они
снабжены тап-страницами.
Чтобы добавить или изменить несколько учетных записей сразу (на
больших системах это приходится делать чаще, чем на персональном
компьютере), можно воспользоваться утилитой пенияегх.
Для групп те же функции создания, удаления и модификации выполняют
утилиты ^гоирайй, §гоирйе1 и щтшртой соответственно.
Если вам почему-либо неудобно управлять пользователями из команд-
ной строки, можно делать это с помощью графического конфигуратора.
На рис. 7.1 показан пример работы ^уьГет-сопГщ-икег» из дистрибутива
Рейога Соге 3.
&айп йвойстэа’ Сяраака
%
%
Добавить оолыкжатвпя До&гамть группу Свойства
Удалить Справка Обнсеить
Пйльзсаат
* С папстве мльк|;гсл' « “ к
. р.. . . ... .............р -......... |
Данные пользователя |Свопм<ий о учетной записи Сведения о пароле]Оуппи
Имя пользователя:
<кп
Имя польз
оЬег
Полное имя;
| 0ел(5 КоИпкЛепко
«к?п
Даром»:
|уап
Псйтдайчйте гга^йяь: г
Домашний каталог: рЬеджИеп
Оболочка:
!#ип/ЬааН
К Отменит^
Рис. 7.1. Добавление учетной записи
7.3.3. Квртироввние
Что такое квотирование. Особенности квотирования в Ыпих
Квотирование — мощный механизм ограничения использования диско-
вого пространства, применявшийся еще в самых ранних версиях 11Ы1Х,
тогда как в состав ОС семейства У^шбо’М компания Мтсгохой включи-
ла их только в \Ушс1оуук 2000, естественно, гордо заявив об этом. Этот
материал настолько объемен, что ему можно было бы смело посвятить
целую главу.
При помощи квот системный администратор принуждает пользователя
не расходовать неограниченный объем дискового пространства. Суще-
ствует два типа ограничений: ограничение на количество файлов (такз)
и ограничение на размер дискового пространства в килобайтах (Ыоскз).
Если установлены оба ограничения, то они будут применяться одно-
временно.
Ограничения на шобез и на Ыоскк могут быть установлены как для поль-
зователя, так и для группы. Если вы входите в группу, которая превысила
наложенное на нее ограничение, то вы не сможете использовать дисковое
пространство, даже если вы не превысили квоту как пользователь.
Ограничения устанавливаются отдельно для каждого пользователя на каж-
дой файловой системе. Ограничение определяется четырьмя числами:
1. Текущее значение ограничения;
2. «Мягкое» ограничение (уоД&щ#);
3. «Жесткое» ограничение (/шгаШгн#);
4. Период отсрочки: время, по истечении которого «мягкое» ограниче-
ние будет интерпретироваться как «жесткое»,
«Мягкое» ограничение определяет число блоков, которые пользователь
все еще может превысить, «жесткое» ограничение превысить невозможно.
При попытке сделать это пользователь получит сообщение об ошибке.
По истечении определенного времени (обычно 7 дней) «мягкое» ограни-
чение переходит в «жесткое». За это время пользователь должен удалить
ненужные ему файлы.
Ядро и поддержка квотирования
В ядро ОС 1лпих поддержка квотирования встроена (по некоторым
сведениям, она появилась в ядре, начиная с версии 1.3.8), осталось
убедиться, что она у вас включена. Если это не так, то ядро придется
перекомпилировать.
После установки дистрибутива исходные тексты модулей ядра обычно
находятся в каталоге /11Ь/тойи1ез/<версия„ядра>/Ьи11й.
Привыкайте к возможностям подстановки аргументов командной оболочкой ЬааЬ:
перейти в этот каталог можно командой
$ ей /11Ь/яюй*/ 'адате -г* /Ьи11Д
Там лежит файл .сопЕ1д, хранящий текущие настройки ядра (имя
файла начинается с точки, поэтому он считается скрытым: чтобы уви-
деть его по команде к, пользуйтесь ключом -а), Найдите в нем строку
СОМРЮОООТА и убедитесь, что значение этого параметра равно «у».
Далее обратите внимание на формат квот, строки С0\Г16_0ЕМТУ<х>,
где х = 1 или 2. Версия 1 — это старый формат, использовавшийся в ядрах
до версии 2.6. Если ваш дистрибутив основан на ядре 2.4, должен быть
включен старый формат. Он отличается именами файлов квот.
Ту же самую проверку (при необходимости —• настройку) можно вы-
полнить и с помощью диалогового конфигуратора. Чтобы запустить его,
выполните одну из следующих команд:
♦ таке теписопГц»: работает в консоли, предлагает текстовые меню и
кнопки;
♦ таке сопЙ§: работает в консоли, залает вопросы;
♦ таке хслпРцр работает в графическом режиме при запущенной си-
стеме X ХУ1пФж;
♦ таке цсопП^;. то же самое, только для оконной среды бХ’ОМЕ.
На рис. 7.2 показано окно конфигуратора ядра для оконной среды
ОЬЮМЕ. Обратите внимание, что квоты поддерживаются только для
файловых систем ех(2. ех13 и Кё&егГЗ.
Проверьте, установлены ли у вас утилиты квотирования, командой
# 1й {/кЫп, /ивг/вЫп , /изг/Ып} /*диоТ.а*
Скачать пакет этих утилит можно из репозитория Сизиф, поддержива-
емого командой разработчиков А1Т Глпих: бе ср: / /а! с . Ипих.ктеу.
иа/зтрт/диоТа/деЪ.
. .ияик
Як РрЬоп5 Ийр
Вас* I 1оай Захе Г ЗтдЕе Зрйг ^п Гй! ; Со11арве. Ехралй
Ориопь кат$.- |н |м /]УаЬ»
Е1 Мшм Ь> нирроп В ЙОМ Йе нунтетп нирроп М1МРСГЗ ЙОМЕЗ-РЗ м м _ м М Й ж
□ СИ чиста («тал ьирротТ <ДМТ_У’. ы К 1
Э Оита Голла: у2 пиррол С|ГМТ.У2 У У я
- .„.
Числа нирроп ОИОТА
И уои нау У Неге, уои уйЙ Ье аЫе го нет рег инет Шв Гог Йтнк
инаде (аЬо саПей йнк дитхан). С иггелйу, И тикхкз Гог тЬе
ехЙ, ехТЗ, алд гетнетГз ГЙеаувгет. ехгЗ ако нирроян {оита1|ей
чиоГан Га» икск уои йопЧпееЙ (о тип диоТасЬеск® аГтет ал опекал
нЬштГоил, Той леей атИЙопа] нойхаге к агйетГо ине диота пиррол
(уои сап ШхЫоай наитсет» Гтадл
<йрр:/,'ии/и.5(.пеИ'ргч«:1н/!|лихди<йаС>). Рог ГиЛЬег <кйаи!н. геат!
(Не Оша тМ НОУ/ТО, ахайаЬк (тот
<Нпр://т»и .гШрсокУтЬкн .НипЙ'Ида>'Ш>, от тТи> еккитегйайоп ргойексС
ийН тЬе циЛа тооК РгоЬаЫу тНе читка пиррол к оЫу имЫ (от
Рис. 7.2. Графический конфигуратор ядра, меню ГНеяуаТетз
Назначение и активация квот
Теперь нужно определить, использование какой файловой системы вы
хотите ограничить. Обычно это /Иоте (домашние каталоги пользовате-
лей), /нет (пользователи имеют право записывать информацию в этот
каталог) й, возможно, /чаг. Чтобы включить квотирование файловой
системы, отредактируйте файл /етс/ЕзьаЬ, добавив ключ изгсркйа (и/
или цгрсрнИа для групп) в поле, содержащее слово (1еГаи11$
ДЗеч/Ма! / ехЬ2
/ с1ем/Ь0а4 /Ноте ехЬЗ
/йеу/Ьйа5 /цзг ехЬ 3
йе Еаи1Ьз
<ЗеЕан1С а, ивгди.ора=/пут&/к/файлу./квот
йеЕанТСз,нзгдиоСа,дгрдиоСа
Если путь к файлу квот не указан, то используется файл в корневом
каталоге квотируемой файловой системы. В версии 2 (ядро 2.6) он назы-
вается адиоба.ивег (адибСа.дгоир для групп), в версии 1 — дноСа .
изег и диойа.дгонр.
Периодически необходимо проверять файлы ограничений и само диско-
вое пространство, выделенное пользователям, на целостность, особенно
после аварийного завершения работы системы. Для этого используется
команда циоСасйеск. Не рекомендуется применять ее к используемой в
данный момент, а поэтому подверженной изменениям, файловой систе-
ме: сама программа пытается перемонтировать проверяемую файловую
систему в режиме «только чтение», но на занятой ФС это невозможно.
Рекомендуется также на время проверки отключать квотирование.
Если программа цшИаскеск не находит файлов ограничений, то соз-
дает их.
Для проверки файловых систем на число блоков, которые используются
пользователем или группой, выполните команду:
# диоСасЬеск -амид
Ключ -а требует проверки всех смонтированных файловых систем (если
его не указывать, то нужно задать точку монтирования), ключ -V требует
подробного отчета о работе команды, ключи-на требуют проверки квот
как для пользователей, так и для групп.
Команда диоСа <имя> | <имя_группы>. позволяет просмотреть
ограничения дискового пространства, наложенные системным админи-
стратором на данного пользователя или группу, а команда герцшНа —
сводку ограничений и фактически занятого Дискового пространства
для всех пользователей дайной файловой системы (с ключом -а всех
файловых систем).
Только суперпользователь может просматривать квоты Других пользова-
телей. Обычный пользователь может просматривать только свои квоты
и квоты группы, к которой он принадлежит.
Рис. 7.3. Результат выполнении команды г/ютГасйеоА
Рис. 7.4. Результат выполнения команды гердиоТа -на
Для задания ограничений предназначена команда ес!цио1а. Файлы огра-
ничений при этом должны уже существовать. Создайте их и включите
режим подсчета квот командами:
# диосаскеск -и <точка|тмонтироБачия> # для групп нужно
# выполнить то же
# диоСаоп -и <точка„монтмрования> # самое с ключом -д
Команда ейдиоЬа - и <имя> создает временный текстовый файл, пред-
ставляющий собой выдержку из двоичного файла квот, запускает А5СП-
редактор, указанный в переменной окружения $Е1ЙТОК (по умолчанию
это редактор VI), в котором вы можете отредактировать ограничения
для данного пользователя, и записывает сохраненный текстовый файл
обратно в файл квот.
Текущие показатели занятого дискового пространства приводятся толь-
ко для справки, редактировать нужно только число, которое следует за
словом Ьагб или за ЕС (рис. 7.5), Значение «О» указывает на отсутствие
ограничений.
Рис, 7,5. Результат выполнения команды еддиоТа -и деп
Чтобы изменить периол отсрочки, пользуйтесь ключом -1:
# еддиока -Е.
Т1те ип!.1з тау Ье: даун, Поите, тхпикев, от весопде
Стасе регтод ЬеЕоге епЕогс1пд во^с ИппХн Еог изегз:
/деу/Ида4: Ыоск. дгасе ретход.: 50 ттпиЬез,
И1е дгасе реттод: 50 ттпиЬев-
В старой версии формата квот существовало значение периода отсрочки
по умолчанию, «компилированное в ядро. В версии 2 значения по умол-
чанию нет, и период отсрочки для каждой файловой системы нужно
указывать явно,
В большинстве случаев у вас есть несколько пользователей, на которых
нужно наложить одинаковые ограничения. Самым быстрым способом
редактирования ограничений в этом случае будет использование про-
тотипа. С помощью команды:
# ейдиоСа -и <пользователь„который_станет_прототипом>
можно определить ограничения прототипа, а затем с помощью команды:
# ейдои!1а -р <прототип> <Пользователь>
создать квоты для всех оставшихся пользователей, применив к ним огра-
ничения прототипа.
Для активации/деактивации подсчета квот на файловой системе, для кото-
рой заказано квотирование, предназначены команды цшйаоп и <|ио1аоГГ
Команду цшНаопнужно включить в сценарий загрузки системы, как и
команду цшНасЬеск:
# Смонтированы, все- файловые системы из' /вЬр./'СБкаЬ
# Проверка и активация квот
есИо "СИескдпд диогаз. ТЬ1б тау Раке зоше Ыте."
/изг/вЫп/фгосасИеск -ауид
есИо " Попе," • -
еско "ТигпХпд оп диока.”
/изг/вЫп-Лдиокаоп -ауид{1
7.4. Подключение и конфигурирование
аппаратных устройств
7.4.1. Ядро и поддержка устройств
Ядро ОС 1.1'пих может быть собрано как монолитное или модульное.
Монолитное ядро — Это один большой файл, в который включены сразу
все возможности, заложенные в данную версию ядра. Оно без всяких
изменений находится в оперативной памяти от запуска до остановки
системы.
В модульном же варианте сборки в ядро включают только самый не-
обходимый код, обеспечивающий загрузку системы. Все возможности,
которые могут быть вынесены в отдельный файл (модуль), туда и выно-
сятся, чтобы при необходимости динамически подключать их к ядру и
отключать без перезагрузки компьютера. В результате ядро получается
небольшим, быстрым и гибким.
Раньше, в первых версиях ядра Ыгшх, механизм работы с модулями не
был предусмотрен, и ядра тех времен содержали в себе код драйверов
для всех поддерживаемых устройств. Такое решение нельзя было на-
звать рациональным: невозможно предусмотреть, какие устройства будут
установлены у конечного пользователя, даже если включить в состав
ядра драйверы всех известных устройств. Кроме того, даже если нужное
устройство (скажем, звуковая плата УашаЬа) ядром распознается, то
драйверы остальных устройств того же назначения будут впустую за-
нимать оперативную память. Поэтому, начиная с версии 2.0, ядро Еших
поддерживает модульную организацию и из дистрибутива, основанного
на ядре 2.x, ставится в модульном виде.
При этом, кроме файла образа ядра /ЬооС /хпп! 1пи2-<версия_ядра>.
ставится каталог с модулями /11Ъ/тоаи1ее/<версия_ядра> и файл об-
раза загрузки /ЬооЬ/1п1Ьг<1-<версия_ядра>. Образ загрузки содержит
все модули, необходимые для того, чтобы ядро загрузило систему. Без этих
модулей оно неспособно подключить системный раздел жесткого диска
и прочитать файлы. Другие модули подключаются к ядру сценариями
загрузки при старте системы.
Перед тем, как устанавливать новое оборудование, нужно убедиться, что
ядро поддерживает ваше устройство. Если это не так, нужно пересобрать
ядро, включив поддержку нового устройства. Можно со стопроцентной
уверенностью сказать, что ваше ядро будет поддерживать вашу сетевую
плату КТЕ8139 или любую другую, совместимую с Ж2К РС1. А вот о
поддержке П8В-модема или принтера заранее ничего сказать нельзя:
пользуйтесь диалоговым конфигуратором ядра (п.7.2.3.1) или загляните
в базу поддерживаемого оборудования по адресу М&р://иии.шапй-
гакеИпих .сот/еп/Ь.агйиаге.,р11рЗ. Ничего, если у вас другой дис-
трибутив, например, основанный на Яеб НаГ. основные устройства те
же. Современное ядро версии 2.6 поддерживает очень много устройств,
и проблемы могут возникнуть только со следующими их типами:
1. XVп1-модемы, то есть программные модемы, часть функций которых
выполняет сама ОС \У'1пс1о\у8. Я не говорю, что под 1дппх они вообще
не работают, но, потратив уйму времени, даже если вы и настроите
этот модем, удовольствия от его работы вы не получите.
2. Х'гДп-прингеры — комментарии те же, что и для У/ш-модемов. Раз-
работчики дешевых устройств, как правило, стараются сэкономить
на драйверах для менее распространенных ОС,
3. Экзотические ТУ- и ЕМ-тюиеры.
7.4.2. Утилиты для работы с модулями
Основу модульной организации ядра составляет возможность динамиче-
ской загрузки и выгрузки модулей. Обеспечивается эта возможность тем,
что, в отличие от обычного приложения, модуль имеет несколько точек
входа, исполняемых при установке и удалении модуля из ядра, а также
при обработке поступающих от пользователя запросов (рис. 7.6).
Модуль Ядра
Рис. 7.6. Связь модуля с ядром
Утилиты, обеспечивающие загрузку, выгрузку и просмотр загруженных
модулей, собраны в пакет, который для ядер 2.4.x называется тобибк,
а для ядер 2.6.x — тос1и1е-1пй-1оо1!>. Не смешивайте эти пакеты: одно-
именные утилиты из них конфликтуют друг с другом.
Выполнять эти утилиты может только суперпользователь. В состав обоих
пакетов входят:
♦ 1$шо<1 — просмотр списка загруженных модулей;
♦ тоШпГо <имя_модуля> — получение информации о загруженном
модуле;
♦ !п$той < имямодуля > — загрузка модуля;
♦ гттос! < имямодуля > — выгрузка модуля;
♦ Чертой — нахождение зависимостей между модулями;
♦ тобргоЬе — загрузка модуля с аргументами и теми модулями, от
которых он зависит.
Из сценария инициализации системы вызывается именно пюйргоЬе. Эта
команда руководствуется конфигурационным файлом /еСс/тоаргоЬе -
сопЕ, в котором могут быть записаны аргументы, передаваемые загру-
жаемым модулям, определены псевдонимы модулей и указаны команды,
которые нужно выполнить перед стандартной процедурой загрузки
модуля или вместо нее. В дистрибутивах, основанных на ядре 2.4, этот
файл называется /еСс/шобиХеа .сопЕ и имеет несколько более сложный
синтаксис. В совсем старых версиях Ыппх (до дистрибутива Кеб На1 1лппх
7.0) вместо этого файла использовался /есс/сопЕ .шойиТез.
7.4.3. Кибхи — утилита для автоматического
определения устройств
В [дпих для автоматического определения устройств используется специ-
альная утилита киски, названная в честь китайской лианы — злостного
сорняка. В дистрибутивы, основанные на Ьших Мапбгаке. вместо нее
может входить утилита ЬагсЮгаке. Задача этой утилиты состоит в том,
чтобы определить, какие устройства установлены, и добавить в файл
/еСс/шойргоЬе. сопЕ (как бы он ни назывался в вашем дистрибутиве)
команды загрузки модулей ядра с драйверами для этих устройств.
Обычно кийки запускается при каждом запуске системы из сценария
загрузки. Ее работа занимает довольно заметное время, поэтому я реко-
мендую сразу после установки дистрибутива, когда все устройства уже
определены и настроены, отключить ее автоматический запуск. Если вы
установите новое устройство, что случается не каждый день, запустите
киски вручную от имени суперпользователя.
Напоминаю, что отключить автоматический запуск служб можно с по-
мощью диалогового конфигуратора (см.п.7.1) $у«1ет-сопПц-м?гтк-е$ или
бгакхаегпсе», в зависимости от дистрибутива.
Если нужно передать драйверу нового устройства дополнительные пара-
метры, отредактируйте вручную файл /егс/тодргоЬе. сопЕ.
7.4.4. Настройка установленных устройств
Настройка устройства обычно выполняется с помощью диалогового кон-
фигуратора устройств соответствующего типа. Например, для настройки
принтера можно запустить кутйет-сопГф-ргпПег в дистрибутивах Ее Но га,
геЙЬаЕсопйй~рпп€ег в дистрибутивах Кеб На1, рппГегбгаке в дистрибу-
тиве Мапбгаке.
Если вы не знаете точного названия нужного конфигуратора, вам по-
может функция автозаполнения командной строки (п.2.1.4.7): имена
многих конфигураторов начинаются одинаково, с «вузгет-сопйц»
(«гебЬа1-сопй§») или «бгак». Если подходящий конфигуратор таким спосо-
бом не нашелся, командой \*Ыс11 определите каталог, в котором находятся
найденные конфигураторы, поройтесь в нем командой 1н *сопЕ* и
тап <утилита_похожая_на„нужную>.
И, наконец, пользуйтесь командой аргорок с аргументом «сопГ», которая
в числе прочего сообщит вам об установленных в вашей системе кон-
фигураторах и конфигурационных файлах, для которых предусмотрена
справка.
7.5. Установка программного обеспечения
В ОС ЛУ|пбо\е5 установка новых программ происходит просто: достаточно
запустить зеЬир.ехе, ввести серийный номер, каталог для установки и
нажать на кнопку «Далее». После этого вы можете поступить так, как
рекомендует М1 стомой: «откиньтесь на спинку стула и подождите, пока
программа установки все сделает за вас».
В Епшх же установить программное обеспечение можно одним из трех
способов: из исходного кода, из бинарного пакета и из пакета, содержа-
щего исходный код. Рассмотрим по порядку все три способа.
7.5.1. Установка из исходных текстов
Бесплатное распространение исходных текстов программ — именно то,
что делает Еших уникальной операционной системой и составляет одно из
Величайших Достижений Человечества. Поэтому традиционный способ
распространения приложений под Ыпих — это архивы исходных текстов
(в просторечии — тарболлы).
Обычно имя файла, содержащего такой архив, имеет двойное расширение:
например, 1аг.§/ или 1аг.Ь/2. Это означает, что данный файл получился
в результате работы сначала архиватора Гаг (Таре Агенте г по первона-
чальному назначению — работе с ленточными накопителями), а потом
компрессора или Ьх{р2. Чтобы распаковать архив, нужно применить
сначала декомпрессор йипк1р или ЬшипрЗ, после чего разархивировать
его командой (аг.
Иногда расширение только одно: Ых. В этом случае нужно запускать раз-
архиватор (аг с ключом, указывающим ему на необходимость применить
фильтр-декомпрессор §ипг(р.
Формат команды (аг:
Саг [ключи] [файл_архива] [архивируемые файлы и/или каталоги]
Подробные сведения о ключах команды (аг ищите на тап-странице, я
перечислю только самые употребительные:
♦ с (сгеай) — создать архив;
♦ х (еХ&ас!) — извлечь файлы из архива;
♦ I (/йТ) — показать содержимое архива;
♦ V (уегкозе) — выводить на консоль подробный отчет о своей работе;
♦ Г — работать с файлом, а не ленточным накопителем;
• 2 — применить фильтр-компрессор при создании архива или деком-
прессор при распаковке.
Архивный файл обычно содержит дерево каталогов, которое по-
сле распаковки будет создано в вашем текущем каталоге, или, по
случайной небрежности создателя архива, — несколько деревьев и
файлов россыпью: в этом случае каталог для распаковки вам нужно
создать вручную. Таким образом, первый шаг при установке из ис-
ходных текстов пакета ргодгат 3.14 . Саг.Ьг2 — распаковка —
выглядит так:
$ ЬипгтрЗ ргодгагп 3.14.Ьаг.Ъг2
$ Ьаг СчГ ргодгат 3.14.Саг # проверьте, есть ли обьемимций каталог
$ # оболочка ЬавЪ превратит это в команду
Саг этЕ ргодгат 3.14.Саг
Следующий шаг — собственно установка. Перейдите в распакованный
каталог (обычно он называется <имяпакета-версия>) и прочитайте все
К1:АОМЕ подобные файлы, которые там найдете. Обычная процедура
установки состоит из трех этапов:
1. $ ./сопЕ1диге # помните, что текущего каталога в $РАТН нет?
Сценарий сопПциге, приложенный к архиву, опрашивает компоненты
вашей системы с целью определить, сможет ли устанавливаемый па-
кет собраться и заработать именно у вас и что в нем для этого надо
«подкрутить». При успешном завершении он создает файл Макейе —
основной документ для сборочной утилиты гпаке. содержащий ин-
струкции и необходимые параметры (пути к заголовочным файлам,
библиотекам и т.п.) для компиляции и сборки программ пакета.
2. $ таке
Собственно компиляция и сборка.
3. $ таке 1пзЬа11
Установка собранных программ пакета, конфигурационных файлов и
справочных страниц в каталоги, указанные в МакеШе. Обычно испол-
няемые файлы помещаются в каталог /ивг/Ьхп, а шап-страницы —
в /иег/шап, но после этапа конфигурирования ничто не мешает от-
редактировать МакеГйе вручную.
После этого можно, прочитав приложенную к пакету документацию,
запустить программу.
Часто этими тремя этапами процедура установки и исчерпывается, но не менее
часто неприятности начинаются уже на этапе конфигурирования: сценарий
соприте обнаруживает, что необходимая для этого пакета библиотека у вас
не установлена. Что ж, найдите и установите ее и снова запустите сценарий
сопй1Ц1ге. Он сообщит о нехватке чего-нибудь другого... но при достаточном
терпении, времени и дешевом Интернете эти пробпекш решаются.
На этапе компиляции и сборки можно столкнуться с тем, что нужные
заголовочные файлы и библиотеки называются по-другому или располо-
жены в другом месте, чем ожидал разработчик. Придется разбираться в
сообщениях компилятора и утилиты токе, подсовывать вместо недоста-
ющих файлов символические ссылки на имеющиеся и выполнять другие
нетривиальные действия, помогающие короче познакомиться с вашей
операционной системой.
7.5.2. Установка из бинарных пакетов
Как это делается и что для этого нужно
Как ни гибок способ установки приложений из исходных текстов, по-
зволяющий установить программу, созданную для другого дистрибутива,
и настроить ее под конкретную системную среду, вчерашние пользова-
тели №шс1<лш тоскуют по простоте хегпр.ехе. Хорошим компромиссом
считается распространение приложений в виде заранее собранных на
определенной платформе бинарных пакетов.
Пакет содержит исполняемые файлы и библиотеки, подлежащие уста-
новке, а также разную служебную информацию об этом пакете: какие
пакеты необходимы для его работы (зависимости), с какими пакетами
он конфликтует, какие действия следует выполнить при его установке,
список файлов, сведения о разработчике.
В мире Еших известны два формата бинарных пакетов: КЕМ от компа-
нии Йес! НаЕ используемый не только в клонах Кед Нас, но и в других
популярных дистрибутивах: Мапбгаке, 8и8Е, АЗРЕгпих. АЬТЬйшх, В1аск
Са1, и ЬЕВ, разработанный для ИеЫап Еших и применяемый в его по-
томках: Кпорргх, Соге! Еших, Еглбо^к. Пакеты дистрибутива 81аскх*аге —
это просто сжатые архивы не поддерживающие зависимостей. От
архивов исходных текстов они отличаются только тем, что в них находятся
заранее скомпилированные программы.
Набор утилит для установки, конфигурирования, удаления и ведения
базы пакетов определенного формата называется системой управления
пакетами. Наиболее распространены системы:
♦ ИРМ — менеджер пакетов формата К.РМ;
♦ ЮРКО — система управления пакетами БЕВ;
♦ АРТ — менеджер пакетов, поддерживающий автоматическое разре-
шение зависимостей, разработанный для ПеЬгап и заимствованный
ВРМ-дистрибутивами.
На сегодняшний день самым распространенным в бывшем СССР сред-
ством управления пакетами является В.РМ, на котором я остановлюсь
подробнее.
Менеджер пакетов ЯРМ
Первоначально название программы КР.М расшифровывалось как Кес!
НаГ Раскате Мапа^ег, но в соответствии с соглашением ОКЕ! о рекур-
сивном именовании (ОКП’8 КоГ Пшх) сейчас оно читается как КРМ
Раска§е Мапацег. Эго открытая пакетная система, позволяющая создавать па-
кеты из исходного и двоичного кода, так что двоичные файлы легко установить
и сопровождать, а исходный код легко собрать. Система также поддерживает
базу данных обо всех установленных пакетах и входящих в них файлах.
Пакеты формата КРМ — это файлы с расширением ,грш. В имени
файла обычно присутствуют название и версия приложения, выпуск
пакета и платформа, для которой он собран. Например, для пакета
ео{ Ьиаге -3.0-2.1386. грт: 3.0 — это версия программы воЙ^аге,
2 — выпуск пакета, г386 — платформа Iп(е! 386. Обратите внимание на
разницу между версией программы и выпуском пакета: номер версии на-
значается автором программы и характеризует ее саму, а номер выпуска —
сборщиком пакета и характеризует этот пакет. В некоторых случаях,
даже если программное обеспечение не изменилось, бывает необходимо
его переупаковать.
Самыми «универсальными» пакетами являются пакеты, рассчитанные
па архитектуру 1п1е1 386. Собранная таким образом программа должна
работать на любом процессоре 1п1е1, начиная с 80386Г)Х (или совмести*
мого с ним). А вот если у вас процессор 80486, пакет, рассчитанный для
работы с архитектурой 80586 (РепПшп). скорее всего, не установится в
вашей системе. Обычно для процессоров архитектуры С18С (с набором
команд х86) используются следующие обозначения:
♦ 1386 — I л1е! 80386ОХ;
♦ 1586 — Ые1 РепПшп (ММХ), АМГ) К5 (Кб);
♦ 1686 — 1п(е! РРго. Сектой, РП, РШ, РГУ.
Узнать о своем процессоре можно по команде ипаше -а.
В простейшем случае команда установки пакета выглядит так:
$ грт -1 <пакет>.грт
Установку можно производить не только с локального диска, но и по
протоколу РТР:
$ грт -1 €Ср://вотеЬовС.дотаап/риЬ/раскаде.грт
Перед установкой пакета менеджер грт проверит его зависимости, то
есть другие пакеты, которые необходимы новой программе или, наоборот,
конфликтуют с ней. Если установлены все нужные программе пакеты и ни
с одним из установленных она не конфликтует, менеджер грт установит
программу, в противном случае сообщит вам о проблеме. Если нужен
дополнительный пакет, просто установите его. А вот если программа
конфликтует с уже установленным пакетом, то вам нужно будет выбрать,
какой пакет вам больше нужен: уже установленный или новый.
Для удаления пакета используется команда:
$ грт -е <пакет>
При удалении программы менеджер пакетов тоже проверяет зависимо-
сти между пакетами. Если удаляемый пакет нужен каким-нибудь другим
пакетам, удалить его вы не сможете.
При установке программы я рекомендую указывать два дополнительных
ключа: -И и -V. Первый требует показывать индикатор выполнения в виде
строки, заполняющейся символами а второй выводит дополнительные
сообщения.
Для пропуска проверки зависимостей нужно использовать ключ —потеря.
Например, у вас установлен'агент отправки почты (МТА — МаП Тгапз/ег
Л$еп1) ровШх, а вы хотите установить программу того же назначения
5>еп(1таН, которая с ним конфликтует. Просто так удалить пакет роаШх вы
не сможете, потому что он нужен многим почтовым клиентам. Удаляйте
его командой:
$ грт ~е --пойерз роасНх
После такого удаления нормальная работа других программ, использу-
ющих МТА, невозможна, поэтому вам сразу же нужно установить про-
грамму чепйшай или другой агент МТА.
Ключ -С служит для обновления программ. Я рекомендую использовать
его и при установке программ, потому что если устанавливаемый пакет у
вас уже стоял, то будет произведено его обновление, а если нет, то будет
просто установлен новый пакет:
$ грт -Щр/ <пакет>
Просмотреть все установленные пакеты можно с помощью команды:
$ грт -да I Хевк
Если вам требуется узнать, установлен ли определенный пакет, выпол-
ните команду:
$ грт -да ! дгер <пакет>
Просмотреть общую информацию о пакете можно с помощью команды:
$ грт -д! <па.кет>
а информацию о файлах, которые установит этот пакет:
$ грт ~д1 <пакет>
Чтобы узнать, какому пакету принадлежит некоторый файл, выполните
команду:
$ грт -дС <файл>
Графические менеджеры пакетов
Менеджер пакетов грт является мощным средством для произведения
операций над пакетами — создание, установка, обновление, удаление.
Однако интерфейс командной строки нравится далеко не всякому на-
чинающему администратору.
Существуют и графические (под X \Утдо^) реализации менеджера пакетов—
например, для оконной среды КОЕ разработан краскаде, для 6М0МЕ —
^погряз, аналогичный по своим функциям. Какую из этих программ ис-
пользовать — дело вкуса и привычки (я вообще обхожусь одним грт).
Скажу несколько слов о программе краска^е (рис. 7.7).
.№1аде,
<
>
Ж*-
<?
ЕГ
*т
даяк
4Ж.
еи»к
адгак
т«К
ж’
' ’Фэдп'И а
?-®*йп<атн1оп *
. '®*Ь(МйМ#1йев *
'-® *йп*иып<внй -
?ё&Ехгфпмггпд
се*
«И7К- О*
937К кг.54.
^ВК «ДПР
/1,3 -17
<7.^7
•:$М -1
:14МН
ЦММЧ^Ми !м--------------
Г%вПЯ«4»П
*-#ЖПЯйВрвйк
гФмк«4К
папо
«**!»•
«ятзду
домр
1.24 ‘1
Аррйвайол а/&йв«
1Ш71М
•ЙР
«меНДОт
МреМ»
<ЗМЦ ганга к$ Я «(лмЯ >м +Й*»й]]
ВЙИ»..
ЪгсвН, ЛамЬ г
УВДГ
Л«тяН «5Й0?
К
Рис. 7.7. Просмотр установленных пакетов
В функции программы краска^е входит:
1. Установка и удаление пакетов;
2. Получение сведений о пакете;
3. Проверка зависимостей пакета;
4, Поиск файлов и пакетов в базе К.Р.М.
Вы можете установить пакет со своего жесткого диска, с инсталляционно-
го компакт-диска или по протоколу РТР. Для установки пакета выберите
в меню команду РИе -> Ореп и введите путь (или 1ЖЕ) к каталогу с паке-
тами. Открывать подкаталоги можно и в окне выбора пакетов (рис. 7.8).
Выбрав пакет, нажмите ОК и в появившемся окне установки (рис. 7.9)
закажите режим установки. Поставьте флажок Тев1, если вы хотите только
проверить зависимости пакета, не устанавливая его.
Для поиска установленных пакетов и входящих в них файлов служат
команды ГПе -* Ршй Раскате и ЕПе Гшд РПе.
АрТ: ОеЫап-совместимый менеджер пакетов
Система управления пакетами программного обеспечения АРТ была
разработана для ПеЫап Ыпих, но впоследствии заимствована мно-
гими Кей На (-совместимыми дистрибутивами. В сам Кед На( и его
потомки (Редога Соге) эта система не включена, но включена, напри-
мер, в состав ДЕТ Рлпих, и ее можно скачать из репозитория Сизиф
ГИ: !:.р: / / агзурЬиз . ги/згрт/арС/деС.
Р декаде ••
А Е& г{р:/Т’р аййтая от/роЬ<Ша1КЬм11ОП5/А1Типи>и*5<8у^1и5^11аь'5(! у
а2ре-4. 1 3-аиг.в1о.фгп
а55Йвс 0.7.4-аЙЗ. 8« фт
аа);Ь-1 4-аИО, Вгс5.5ГС,фТ
аЫчияй-2.2.3-ЫИ. ягс.фгп
7со1оГ5-С.80-аИ4.еп:.фт о аЬоОк-О.&З-аИТяс.грт жркМ,0.4-а!!3.5Г
955гэво1ы!«5-О.З-а}11.«л:.фт0 аЬиав_вй1-0.7.В>а!11Мс.г^п^? ай|!1тим-К^аЙ!
§ асы-6.3.5-«Я4.вп:.фт
в ЬСЙпрО.14-8|И.вК.фт
!*? ас 1-2.2 гЗ-аЙЯв<с.ф<п
я?
Я аср1-ао7-а1Р.зп:.!рт
» айтИЛ-ШР.ие/ '
аед!вЧ. 2РаЙ1.я^ <
*?' АПвг81ер-2.0-«1н.:.
адад-ато,Роки .
В1Ш
10й*Й0П:
Рис. 7.8. Выбор пакета для установки
КРаскаде
1пз1а11:1 НРМ Раскаде
(РАСКАВЕЗ
аЬтостй
□ Срдгайв
.□.ЙврЙВвЯвв:...
□ Ре₽1асвРагкадая
@ СЬеск О0реп(1е»®105 ':
ЕЭ Тай(ешпа ИйаЩ
□ Кеврйй илпйо»
! <ск’<?сог-айг/Е’еаога/Р,РМЗ/аЬ1ыг.гй-2 . О , 12-3 .
|«асп1лд : //глей 1а/ейгесогйег / Рес1ога/ЕРМЗ/а
^еггог: Га11ей йерепйепсхез:
ахкваигиз-дСк >— 1.2.1 1з пеейей
ИЬМкваигив-!-2-во.О сеейей 1.
ИЬМкяаигизВТК-! . 2 . зо. О 1.3 пеейб
НЬЕг 1ЫЙ1. зс. О пеейей Ьу аЬ11пм;
11Ьдс1а-2 . зо. 1 1з пеейей Ьу аЫао: I
. ИЬдпогчейЬ >- 1.0.4 1я пеейей Ьу
ИЬдпотейЬ-З .30.3 1з пееЙеЙ Ьу а1
11Ьогз- 1. яо. О 1з пеейей Ьу аЫиог "
11Ьирй-I. зо . 7 1з пеейей Ьу аЫиог ’
!пшй . ,
Рис. 7.9. Проверка-зависимостей пакета
Для управления пакетами используется программа ар1-(;е(. Формат ее
вызова:
$ арС-деТ [ключи] [команды] [пакеты]
Самые полезные команды перечислены в таблице 7.4.
В отличие от системы грт, которая только докладывала о неразрешенных
зависимостях, предоставляя вам справляться с ними самому, программа
ар1-^сЧ пытается разрешить зависимости самостоятельно. Для этого она
пользуется файлом /еьс/арс/воигсев. ИеС, в котором перечислены
источники пакетов (каталоги и ЕТР-архины). к которым она обращается
за необходимыми пакетами. Раскомментируйте в нем нужные строки и
добавьте свои.
Команды программы ар( Таблица 7.4
Команда Назначение
ирйа!е Используется для синхронизации файлов описаний пакетов с их источником, кото- рый указан в файле /а(с/ар1/воигсез.||з(
ирдгабе Используется для обновления установленного пакета до новейшей версии, доступ- ной а источнике. Может также использоваться для обновления всех установленных в системе пакетов. Новые пакеты при атом не устанавливаются. Перед этой коман- дой обязательно должна быть выполнена команда ирба1е
Й15Т-ирдгаде Более «интеллектуальная» версия команда ирдгабе. Кроме установки новых вер- сий пакетов, она также проверит изменившиеся зависимости между новыми вер- сиями пакетов и попытается разрешить конфликты в пользу более важных пакетов
<П51а!! Установка пакета. Если источник, из которого вы собираетесь устанавливать этот пакет Перечислен в файле источников, то в качестве имени пакета нужно указы- вать только имя упакованной программы
гетоуе Удаление пакетов
сЬеск Используется для диагностики нарушенных зависимостей между пакетами
йеап Очищает локальное хранилище полученных файлов пакетов. Перед установкой пакеты копируются из источника в локальное хранилище, а оттуда потом устанав- ливаются. Пользуйтесь этой командой время от времени для освобождения места на диске
При установке группы пакетов с помощью ар1-$»е1 будьте внимательны.
Обычно для установки группы пакетов используются символы шаблона
«?» и «*». Если нет пакетов, имена которых совпадают с указанным ша-
блоном, то этот шаблон будет рассматриваться как выражение РО81Х.
В этом случае, если вы указали шаблон а*, то будут установлены ВСЕ
пакеты, имена которых содержат букву «а», а не только те, которые на-
чинаются на эту букву. Это же касается и команды гетоуе.
Из ключей арЬ@е( полезными для вас будут -Г и -д. Ключ -Г требует по-
пытаться исправить нарушенные зависимости, а при указании ключа -4
пакеты только скачиваются из источника, но не устанавливаются. Ключ
-по-ир^гайе, указанный при установке группы пакетов, запрещает об-
новлять те из них, что уже установлены. Еще одна полезная, но опасная
возможность — ключ -Гогсе-уев, принуждающий программу не задавать
вопросов, выполняя потенциально разрушительные действия. Иногда она
действительно необходима.
Для установки пакета не по сети, а с дистрибутивного компакт-диска
предназначена команда ар1-сйгот.
7.5.3. Установка из пакетов,
содержащих исходный код
Иногда в пакетах ИРМ находятся не откомпилированные версии про*
грамм, а их исходный код. Признаком этого является слово «мс» вместо
названия архитектуры. Для установки такого пакета введите;
$ грт -IV <пакет>.згс.грт
Менеджер пакетов распакует исходные тексты в каталог Кеб НаГ. по
умолчанию это /иаг/Бгс/ге<1Ъас, но вы можете установить другой
каталог директивой (орсйг в конфигурационном файле /еРс/гртгс. В
подкаталог 8О1ЖСЕ8 будут распакованы исходные тексты и заплатки
(патчи) к ним, в подкаталог 5РЕС8 — зрес-файлы, содержащие инструк-
ции по прикладыванию заплаток и последующей сборке. Чтобы собрать
программу, выполните команды:
$ сс1 /изг/згс/гесШаЬ/ЗРЕСЗ
$ три ~Ьр <пакет>.зрес
Явление патча (заплатки — мы же на русском языке говорим) очень
распространено в мире открытого кода, поэтому я скажу о нем здесь.
Допустим, кто-то нашел и исправил ошибку в каком-нибудь известном
пакете. Исправление может заключаться в двух строках кода, так что
же — выкладывать в общий доступ исправленные исходники целиком?
Нет, он распространяет заплатку, которую желающие могут приложить
сами. Заплатка представляет собой текстовый файл, содержащий список
отличий исправленного кода от исходного.
Такой список в стандартном виде генерирует утилита ШЯ с ключами
-ц.\г. Чтобы его приложить, нужно перейти в корневой каталог дерева
исходного кода пакета и выполнить команду
5 раСсЬ -рО < <файл_заплатка>
# < - это знак перенаправления ввода
Ключ -р указывает, сколько отделенных «/» частей нужно отщипнуть
от путей к файлам, подлежащим исправлению (вдруг каталог пакета у
автора заплатки назывался иначе?).
Приложив заплатку, выполните обычные команды сборки:
$ . /сопИднге
5 таке
$ таке 1паЬа11
7.6. Клонирование
и восстановление системы
Клонирование — это создание точной (побитной) копии исходного носи-
теля. Носителем в нашем случае будет корневая файловая система 1лгшх.
Клонированная копия называется образом.
Если вам нужно установить дистрибутив на несколько компьютеров оди-
наковой конфигурации (например, вы администрируете интернет-зал), то
целесообразно установить и настроить его на одной машине, а на другие —
склоиировать. Для домашней системы из одного компьютера клонирова-
ние тоже имеет смысл: если что-то вдруг «слетит», то вы сможете быстро
восстановить исходное состояние системы простым развертыванием об-
раза. На развертывание образа нужно намного меньше времени, чем на
установку и настройку системы.
Перезагрузитесь в однопользовательском режиме (о режимах и вариантах
загрузки сказано в п.9.1.1). Введите команду тошй, чтобы узнать, какой
раздел содержит корневую файловую систему:
/беч/Ьба! оп / Суре ехТЗ (ги,.поаС1те)
попе оп /ргос куре ргос (ги)
попе оп /ауз Туре зуз^з (гш)
Корневая файловая система расположена на разделе /аеV/^к^а1. Образ
именно этого раздела мы будем сохранять на другом носителе. Носителем
может быть другой жесткий диск -— я буду использовать внешний С8В-вин-
честер. Для его подключения должен быть загружен модуль изЬ„зпогаде.
Создадим каталог /тпр/гтаде й примонтируем к нему 118В-винчестер:
# тойртоЪе пзЬ_зкогаде
# шкдхг /тпк/ипаде
# тоипс /беу/зйа! /тпС/Чтаде
Все, что осталось сделать, — это перемонтировать корневую файловую
систему в режиме «только чтение» и создать образ:
# зупс
# тоипП -о гешоипГ., го /
# сН 1Г = /<Зеу/Ма1 оГ-:/тпк/1таде/11паде.Ып
Подробно описывать утилиту сМ не стану — это очень хорошо сделано в
справочной системе. Скажу только, что кроме сШ существует еще и ути-
лита с1й_гехсие, которая при клонировании пропускает плохие секторы
и делает максимально возможную копию файловой системы. Для меня,
да и для вас использование этой утилиты неактуально — ведь винчесте-
ры меняют минимум один раз в год, поэтому не думаю, что у вас будет
«битый» винчестер.
Теперь рассмотрим, как можно восстановить систему. Для восстановления
системы вам понадобится загрузочный компакт-диск Ыпих. Подойдет
первый диск любого дистрибутива, даже несовместимого с вашим. Если
вы используете не ГдуеСВ, а простой загрузочный диск, для перехода на
текстовую консоль нажмите СЧН + АН + Е2. Подмонтируем наш внеш-
ний винчестер:
# ткй1г /тшаде
# тойргоЬе и5Ь_5Согаде
# тоипС /йеу/зба! /1шаде
Теперь на новом винчестере нужно создать разделы. Это можно сделать
с помощью утилиты ОДак или с помощью программы установки — как
вам удобнее. Если же вы восстанавливаете систему после сбоя, ничего
создавать не нужно — все уже создано. Не забудьте только создать раздел
подкачки (тип раздела /йеу/иаа2 должен быть Ешнх зидр):
# тквиар /<Зеу/Ьйа2
Теперь развернем образ (обратите внимание на параметры (Г и о( про-
граммы йй — на этот раз их аргументы поменялись местами):
# <1<1 1Е”/1ааде/1таде.Ып о{=./йеу/Ьс1а1
Сейчас нам нужно изменить корневую файловую систему, чтобы попасть
«внутрь» развернутого образа:
# тксЦт /1п8Са11
аоипС /йеу/Ма! /хпзбаИ
# сИгооС /ЛпзбаИ /Ып/Ьазб
Теперь корнем стал каталог /тпзСаИ, к которому примонтирован новый
винчестер, а в качестве командной оболочки используется /Ып/Ьаяп.
Все, что нам осталось сделать — это перезаписать загрузчик. Если у вас
Е1ЕО, введите команду:
Шо
А если ОКЕ В:
# дх-цЬ-тпзЬа!! /йеу/Ма
Теперь перезагрузите компьютер (геЬоо() — ваша система успешно вос-
становлена после клонирования.
Глава 8 ЯЗЫК
КОМАНДНОГО
И НТЕРП РЕТАТО РА
”---ПАРАМЕТРЫ
---ПОДСТАНОВКИ
о МАССИВЫ
о УПРАВЛЯЮЩИЕ СТРУКТУРЫ
.. УСЛОВНАЯ ПОДСТАНОВКА
ПАРАМЕТРОВ
о---ФУНКЦИИ
о___ОБРАБОТКА СИГНАЛОВ
И ПРОТОКОЛИРОВАНИЕ
имих ПОЛНОЕ РУКОВОДСТВО
Для автоматизации часто выполняемых работ по обслуживанию системы
вам понадобится объединять команды в сценарии. С простейшими сце*
нариями, обеспечивающими последовательное выполнение перечислен-
ных команд, вы уже познакомились в гл. 3. Уточню только, как система
обрабатывает сценарии. Она ищет в первой строке файла сценария
выражение
#!/абсолютный/луть/к/программе/интерпретатору/сценария
и передает сценарий ей на обработку. Как правило, эта программа — либо
одна из установленных в системе оболочек (например, #! /Ып/ЬснЬ),
либо один из интерпретирующих языков {#! /ивг/Ып/рег1), либо ваш
собственный интерпретатор: #! /цэг/Ып/ту_ргодгат. Если сценарий
предназначен для обработки оболочкой $Ь, то ее имя указывать необяза-
тельно. Между символами # и ! не должно быть пробелов.
Чтобы непосредственно запустить файл сценария на выполнение, вы
должны иметь полномочия на исполнение этого файла. Если он доступен
вам только для чтения, выполнить его можно командой
3 /программа/обработчик -Г <имя_файла>
Эта глава посвящена языку программирования, встроенному в оболочку
ЬавЬ,
Базовыми операциями этого языка служат все установленные в системе
программы, утилиты и сценарии. Оболочка находит их, запускает, обе-
спечивает передачу им — аргументов, а результатов их работы — дру-
гим программам и пользователю, выполняет подстановку переменных и
раскрытие шаблонов. Кроме того, оболочка содержит операторы цикла
и условные операторы, в результате чего получается мощный язык про-
граммирования.
8.1. Параметры
Вместо переменных, как в обычных языках программирования, в ЬаяЬ
используется понятие параметра. Именем параметра может быть: слово,
состоящее из латинских букв, цифр и знаков подчеркивания, начинающе-
еся с буквы; число; один из специальных символов: *, @, ?, $, !, О, _ .
Тип всех параметров — строковый. Если параметру присвоено значение
(хотя бы пустая строка), то говорят, что он задан или установлен. Чтобы
сослаться на значение параметра, нужно поставить символ $ перед его
именем:
$ есГю $0
ЬазЬ
Параметры делятся на:
♦ переменные оболочки — о них рассказано в п. 3.4.3;
♦ позиционные параметры — их имена представляют собой натуральное
число, а значениями служат аргументы с соответствующими номера-
ми, начиная с 1, переданные сценарию или самой оболочке при их
запуске;
♦ специальные параметры — их именами служат перечисленные специ-
альные символы, а назначение сведено в таблицу 8.1. Эти параметры—
шаблоны, подстановку которых производит оболочка.
Специальные переменные Таблице 8.!
Название Подстановка
50 Имя выполняемого сценария (или, а интерактивном режиме, — самой оболочки}
$# Количество позиционных параметров, переданных сценарию
$_ Последний аргумент предыдущей из выполнявшихся команд
5? Код завершения последней выполненной команды (напоминаю, что значение 0 говорит об успешном завершении, другое — об ошибочном)
$$ Номер текущего процесса (РЮ)
Л Номер (РЮ) последнего асинхронного процесса (команды, выполненной в фоновом режиме)
$' Все позиционные параметры, слитые в одну строку: “$*» эквивалентно где к — первый символ значения переменной !Р8 ((гнета! ЛеШ яерагаТог), по умолчанию— пробел
$@ Все позиционные параметры, подлежащие дальнейшему разбору: эквивалентно ...*$п»
Напоминаю, что специальные символы в значениях параметров нужно
экранировать. Экранировать одиночный символ можно символом «\»
(обратный слэш), несколько — апострофами или двойными кавычками.
Разница в том, что внутри двойных кавычек выполняются подстановки
значений: сравните вывод команд есНо '$0' и еско "$0".
Организовать диалоговый ввод значения переменной можно с помощью
встроенной команды геай:
еско “П "Продолжать? (у/п): "
геай уезпо
есЬо $уезпо
Ключ ~п команды есЪо не выводит символ новой строки в конце со-
общения, то есть не переводит строку. Команда геаб читает значение,
введенное пользователем с клавиатуры, и записывает его в переменную
уевпо. Последняя команда выводит только что введенное значение.
Одной командой геад можно прочитать несколько переменных:
теав пате тхй41е 1азЬпате
Пользователь должен ввести значения переменных, разделяя их про-
белами, и для окончания ввода нажать <Ввод>. Если введено меньше
значений, чем нужно, оставшимся переменным будет присвоена пустая
строка. Если больше, то весь остаток строки будет присвоен последней
из перечисленных переменных.
8.2. Подстановки
Кроме подстановки обычных переменных (п.3.4.4) и раскрытия шабло-
нов имен файлов (п.3.4.5), оболочка Ьаьй умеет выполнять еще и такие
подстановки:
* Подстановка тильды:
— заменяется на имя домашнего каталога пользователя,
запустившего сценарий;
— + заменяется на путь к текущему каталогу;
— заменяется на путь к предыдущему каталогу.
* Раскрытие скобок:
строка! { строка2, строкаЗ.строкам заменяется на:
с трока! строка 2 ст рокаК строка!строкаЗстрокаН ...
Пробелов внутри скобок быть не должно. Эта функция полезна, когда
нужно применить одну команду к нескольким файлам, не подходящим
под общий шаблон:
$ саЬ /Ьоте/йеп/ИппхЬоок/{гпЕгОкрагат, апЬвЬ} > д!ама8
* Подстановка арифметических выражений:
$((выражение)) или $ [выражение] — эквивалентные формы
записи. Внутри выражения выполняются подстановки параметров.
Приоритет арифметических операций — обычный, подробнее см. тап
ЪазЪ, секция АШТНМЕТ1С ЕУА1Л'АТЮ\.
Например, количество часов, прошедшее с момента запуски оболочки,
можно подсчитать командой:
$ есЪо $Н 55ЕСОКПК/3600 Н
8.3. Массивы
Интерпретатор ЬазЬ поддерживает одномерные массивы с неограничен-
ным числом элементов. В других оболочках существуют определенные
ограничения на массивы, например, в к$й максимальное число элементов
массива ограничено 1024 элементами.
Нумерация элементов начинается с нуля. Тип элементов массива, как и
тип параметров, строковый. Присвоить значение элементу массива можно
с помощью такой конструкции:
Имя_массива[индекс! --значение, например:
$ иеекйау[0]=Понедельник
$ ыеекдау [ 4 ] =Пятница
Обратиться к значению элемента массива можно следующим образом:
$[имя„массива[индекс!]
Например, вывести значение первого элемента массива можно так:
$ есРю ${кеекдау[0]}
Обратиться ко всем элементам массива сразу можно с помощью одного
из выражений:
$ {имя„массива [ *)} или $ {имя_массива [ @! 1} например:
$есИо $[иеекйау[*]}
Понедельник Пятница
Второе выражение нужно использовать, если значение хотя бы одного
элемента массива может содержать пробелы.
Можно инициализировать массив целиком: команда
$ иеекбау=(.Пм Вт Ср Пт Пт Сб Вс)
эквивалентна списку
$ иеекйау [0] =Пн; ??еекйау[1] =Вт; ... не.екйау [6 ] =Вс
Эти способы инициализации массивов могут применяться как в Ьа$й, так
и в каЬ и в других командных оболочках. А следующий способ работает
только в Ьа$Ь:
$ НоИйауз- ( [0]=8ипЙау [6] =ЭаТигйау)
8.4. Управляющие структуры
Напоминаю (п.3.4.7), что список команд — это одиночная команда, кон-
вейер или последовательность команд/конвейеров, разделенных одним из
операторов:; &&. [ |, завершенная точкой с занятой. Не забывайте ставить
точку с запятой даже после одиночной команды, терять ее — типичная
ошибка начинающих программистов.
В синтаксис следующих команд квадратные скобки не входят: они огра-
ничивают необязательные выражения.
8.4.1. Условные операторы
Оператор варианта саке
Синтаксис:
сазе значение 1п
[шаблон!) СПИСОК1;;
шаблонЗ I шаблонЗ) список2;1
езас
Ищется первый шаблон, совпадающий со значением. Если он найден, то
выполняется соответствующий ему список команд, завершенный двумя
символами «;». Шаблон и список разделяются символом «)». Одному
списку команд может соответствовать несколько шаблонов, тогда они
разделяются символом «|».
В шаблонах могут использоваться метасимволы *, ? и [ ] (о подстановке
метасимволов сказано в п.3.4.5). С их помощью можно организовать ин-
струкцию, действующую как йеГаиИ в операторе кн'йсЬ языка С.
Порядок сравнения шаблонов со значением не определен. Первое со-
впадение прекращает дальнейшее сравнение и приводит к выполнению
соответствующего списка команд и выходу из структуры саме — поведе-
ние, больше похожее на поведение оператора сазе в языке Паскаль, чем
на зи'йсй в языке С.
Листинг 8.1. Пример использования оператора сазе
еско "Ошибка, Каму переслать протокол?"
есЪо "Начальнику-. Ь"
есИо "Коллегам: с"
есНо "Сам разберусь: апу Иеу"
геаб апзмег
сазе фапеиег 1п
ЫВ) та!! ~з "еггог 1од" Ьойй < еггот.1од;;
с1С) гааЫ -в 'Не1р’И еггрг Дод' -с 1увп дер < еггогЛод;;
*) есХто "ОК. Ех1Ыпд"; еххЬ;;
езас
Обратите внимание на апострофы вместо кавычек во втором списке: они
экранируют подстроку «Н» от подстановки предыдущей команды.
Условный оператор К
Синтаксис:
И список! СЪеп
список2
[е11! списокЗ СИеп
списокй]
[ е 1 э е
списокБ]
II
Эта конструкция работает так же, как в других языках программирования.
Сначала выполняются команды из списка!. Если этот список выполнен
успешно, то есть с кодом завершения 0, то выполняется списокЗ, если
нет — то список, стоящий после очередного е!И. При невозможности
выполнить список команд, стоящий после очередного Шеп, выполняется
список, стоящий после е1®е.
Можно использовать сокращенный вариант, только 1НЬеп-Д:
$ IX Е -пе 0 ]; сИеп есЪо "Ошибка. Смотри протокол"; XI;
Оператор 1езГ и условные выражения
В вышеприведенной команде вместо диализа кода завершения списка ис-
пользована проверка условия. Две формы такой проверки эквивалентны;
встроенная команда и [условие]. Например, для проверки существо-
вания файла можно написать
севе -е <файи>
или
Г -е <файл> ]
Если вместо слова (е«1 используются квадратные скобки, они обязательно
должны быть отделены от аргументов пробелом, потому что на самом деле
«[» — это название команды, а «]» — обязательный последний аргумент
этой команды.
В случае истинности условия команда возвращает код успешного за-
вершения, то есть 0; в случае ложности — код ошибки 1 (не спутайте с
обычными языками программирования, где 1 — другое имя для Ггие !).
Команда йй может проверять и строку на пустоту: непустая строка счи-
тается выполнением условия и приводит к коду завершения 0. Пример:
$ СееС $О5ЕЙ; есПо $?
О
$ СезС $УАК_поЬ_8е1:_уеЬ; еско $?
1
Условные выражения можно комбинировать с помощью обычных логи-
ческих операций:
♦ ! (выражение) —отрицание;
♦ выражение! -а выражение2 — логическое И
♦ выражение! -о выражение^—логическое ИЛИ (от).
Элементарные условные выражения перечислены в таблицах 8.2 и 8.3.
Полный список их можно получить по команде Ье1р Севр.
Основные условные выражения для файлов
Таблица 8.2
Выражение * Истинно, если
й файл файл существует и является каталогом
-е файл файл существует
4 файл файл существует и является обычным файлом
Т файл файл существует и является символической ссылкой
-гфайл файл существует и доступен для чтения
файл файл существует и доступен для записи
х файл файл существует и является исполняемым
5 файл файл существует и его размер больше 0
-Ы файл файл существует и изменился со времени последнего чтения
файл! -п! файл2 время модификации файла! позже (пажвг (Пап), чем файла2
файл! -о( файл 2 время модификации файла! раньше (о№т йзап), чем файла2
файл! -е( файл2 файл! — это жесткая ссылка на файл2
Таблица 8.3
Элементарные условные выражения для сравнения строк
Выражение Истинно, если
-г строка длина строки равна 0
•п строка длина строки не равна 0
стр! « стр2 строки совладают
стр! !— стр2 строки не совпадают
стр! < стр2 строка! предшествует строке2 в лексикографическом порядке. Алфавит соответствует текущей лежали
стр! > стр2 строка! следует за строкой2 в лексикографическом порядке
Арифмет ическое условное выражение имеет формат гтгд! ОР агд2,где
агд! и аг§2 — целые числа, а ОР — одна из операций:
• -<ч| — равно;
• -пе — не равно;
• -И — меньше;
♦ -1е — меньше или равно;
* — больше;
* .^е — больше или равно.
Таким образом, можно переписать предыдущий пример с использованием
оператора И:
Листинг 8.2. Пример использований оператора И
есНо "Ошибка. Кому переслать протокол?"
есбо "Начальнику: Ь*
есЬо "Коллегам: с"
есНо "Сам разберусь: апу кеу*
геаб апеиет
1Г [ "$ап5«ег" == "Ь" -о "ёапаиег" == "В" ]I ббеп
гпа11 -з "еггбг 1од" Ъбаз < еггог.1од;
еНЕ [ "$апз№ёг" "сн -о "$ап8мег" =~ "С" ] ; ЬНеп
шаП -я 'Не1р! !! еггог 1од' -с З^ап <5еп < ёггог.1.од;
е].зе
есЬо "ОК. ЕхЗХгпд"; ем 16;
ЗА
8.4.2. Операторы цикла
Командные интерпретаторы ЬазЬ и к$Ь поддерживают циклы типа Гог,
\уЫ1е, ипб] и ке1ес1, а интерпретатор аЬ — только циклы Гог и уДШе.
Оператор цикла с перечислением Тог
Синтаксис;
бог переменная Ггп шаблон]
бо
список
Йопе
В результате подстановки шаблона получается список слов. Переменная
получает значение первого слова из этого списка, и выполняется список
команд, стоящий между йо и допе. Затем переменная получает значение
очередного слова из списка слов, и снова выполняется список команд.
Повторение прекращается по исчерпании слов в списке. Отсутствие
конструкции [1п шаблон] эквивалентно записи 1п
Список слов можно сформировать и вручную:
$ ^ог Йау 1п Мои Тие Ией ТИи Гг1; йо есЪо "План работы на
$йау:"; саС $Йау.р1ап; йопе
Еще раз напомню, что любой список в ЬавЬ нужно заканчивать точкой
с запятой.
Пример использования цикла с перечислением: допустим, у вас не хочет
собираться некий программный пакет — он рассчитывал, что имена зато-
ловочных файлов в некотором каталоге имеют расширение .И, а у вас они
такого расширения не имеют (установлена другая версия библиотеки).
При этом содержание этих файлов его устраивает. Так создадим симво-
лические ссылки, чтобы он нашел заголовки по знакомому имени:
$ ей /путь/к/каталогу/1пс1ийе
$ ^ог пате 1п *; йо 1п -з $пате $пате.Н; йопе
Оператор цикла с условием шЫ1е
Синтаксис:
иЫ1е список1
йо
списокЗ
йопе
Оператор выполняет список! и в случае его успешного завершения (ну-
левого кода возврата) — список!. Процедура повторяется до тех пор,
пока результат выполнения списка! не станет ненулевым. Например:
$ 1=10
$ иЫ1е [ $1 -дЬ 0 ]; йо
> еейо $1.,.
> 1=$(($1-1))
>йопе; есЬо 'ВАКСИ I ! '
с
Примечание л
Тот же самый обратный отсчет можно реализовать и с помощью цикла 1ог, если у
вас установлена утилита аец. печатающая последовательность (аецнелсе) чисел
с заданным шагом:
$ 1 1п 'еед 10 -1 О’; йо еспо $1...; Йопа; есЪ-о 'ВАЖН ! ! '
Оператор цикла с инверсным условием ипГН
Синтаксис:
ипС11 список!
йо
список2
Йопе
Оператор выполняет список! и, если он выполнен неуспешно (код воз-
врата ненулевой), то выполняет список2. Процедура повторяется до тех
пор, пока результат выполнения списка! не станет нулевым.
Оператор цикла с выбором $е1ес!
Синтаксис:
зе!есС переменная [1п шаблон!
й.о
список
йопе
В результате подстановки шаблона получается список слов. К этим словам
оператор добавляет порядковые номера и выводят весь набор в стандартный
поток ошибок (хС&гг). Если шаблон опущен, то вместо него используется
список позиционных параметров После этого оболочка выводит при-
глашение и считывает строку из стандартного потока ввода (лййн)- Если
строка содержит номер, соответствующий какому-либо слову из списка,
то переменная получает это слово в качестве значения. Если в строке под-
ходящего номера нет, то значением переменной становится пустая строка.
После этого выполняется список команд, и процедура повторяется до тех
пор, пока в строке ввода не встретится символ конца файла (введ ите Сп!+П)
или пока в списке команд не встретится команда Ьгеак или геГигп
Этот оператор полезен для создания нумерованных пунктов меню. Напри-
мер, у меня в каталоге -/Сетр есть три файла: ргобо.ЬхЬ , Е11е. схс
и йеаже. В листинге 8.3. приведен фрагмент сценария, позволяющего
быстро просмотреть любой из них.
Листинг 8.3. Пример использования оператора зе!осГ
есЬо "Выберите файл для просмотра:
ееХесс Ше 1п -/Ъетр/* ри1Х;
йо
И [ -I $Ше ]; СЬеп саС $Ше;
е!зе Ьгеак;
Г 1
Йопе
Запустив этот сценарий, я увижу на экране:
Выберите файл для просмотра:
1 ) /Ьсэте/йеп/Ьетр/ГИе. Ьхс.
2 .} /Йоте/Деп/ Сетр/ргоСо. ЬхС
2 > /Ьоте/беп/Сетпр/Р.ЕАПМЕ
4) 0и1Ь
*??
Последняя строка — это приглашение, устанавливаемое переменной
окружения Р83.
8.5. Условная подстановка параметров
Условная подстановка позволяет проверить, установлен ли определен-
ный параметр, или использовать вместо его значения другое. Значение
самого параметра при этом не изменяется. Допустимые виды условных
подстановок перечислены в таблице 8.4.
Условная подстановка Таблица <5.4
Конструкция Выполняет подстановку
$ {параметр: - строка) Значение по умолчанию. Если параметр имеет непустое значение, то подставляется оно, иначе — указанная строка
${ параметр ;=строка} Присваивание значения по умолчанию. Если параметр не имеет непустого значения, то ему присваивается «строка», после чего значение подставляется. Конструкция допустима только для переменных оболочки
$ {параметр:?со общение) Ошибка, если пусто. Если параметр не имеет непустого значения, то выводится указанное сообщение. Сообщение можно опустить, тогда будет выведено стандартной сообщение
$ (параметр: ^строка} Дополнительное значение. Если параметр имеет непустое значение, подставляется «строка», иначе — пустая строка
$ (параметр#шаблон) Подставляется значение параметра, в котором из головной части удален наименьший фрагмент, удовлетворяющий шаблону
$ (лараме тр##шаблон) Подставляется значение параметра, в котором из головной части удален наибольший фрагмент, удовлетворяющий шаблону
${нараметр%шаблон) Подставляется значение параметра, в котором из хвостовой части удалей наименьший фрагмент, удовлетворяющий шаблону
$ (парамвтр%%шаблон} Подставляется значение параметра, а котором из хвостовой части удален наибольший фрагмент, удовлетворяющий шаблону
${ «параметр} Если параметр есть • или <&, подставляется количество позиционных параметров, иначе ~ длина значения параметра в байтах
Например, команда есИо $ {0 : + "Моя любимая оболочка" } заменит
непустое значение параметра $0, равное «Ьа^Ь», на указанное дополни-
тельное значение. Команда : ?"Не хватает параметра" } выведет
сообщение, если сценарий, в котором она встречается, будет случайно
запущен без аргументов. Правильным подходом к написанию сценариев
было бы выводить не такое малоинформативное сообщение, а краткую
справку об использовании этого сценария, подобную тому, что можно
увидеть, запустив почти любую команду с ключом -и.ча^е.
Подстановки # и % полезны, например, тоща, когда нужно «выкусить» из пол-
ного пути к файлу собственно его имя или, наоборот, родительский каталог;
$ рас’п='мМсЬ. Сит'; есНо $раСИ.
/инг/ХИНб/Ып/Ькт
$ есИо $[раСЬ##*/}
Сит
$ ёсУю ${раСИ%/*}
/изг/ХИКб/Ып
$
8.6. Функции
Оператор определения функции имеет следующий синтаксис:
[ гнпсЫоп] имя ()
{
список
)
Определять функцию можно в любом месте сценария, но вызов ее должен
осуществляться строго после описания. Вызывается функция подобно
любой команде — по имени. Переданные ей аргументы в теле функции
рассматриваются как позиционные параметры, причем в вызывающем
сценарии значения позиционных параметров не меняются. Значение
позиционного параметра 0 — это имя функции.
Вызов функции не порождает нового процесса, поэтому ей видны локаль-
ные переменные, установленные вызывающим сценарием или оболочкой
до ее вызова.
Ошибка при выполнении функции приводит к немедленному ее завер-
шению с ненулевым кодом возврата. Если вы хотите передать в коде воз-
врата собственное значение, пользуйтесь оператором геъигп <число>.
Отсутствие числа или всего оператора геЧигп означает возврат нулевого
значения. Код возврата функции помещается в переменную $? и доступен
до выполнения следующей команды.
Если вы задумали функцию как «библиотечную» (вызываемую из разных
сценариев и в связи с этим определенную в отдельном файле), то для того,
чтобы определить ее в текущем процессе, нужно не запускать ее файл на
выполнение, а прочитать его встроенной командой мшгсе.
8.7. Обработка сигналов
и протоколирование
Обычно при завершении сеанса работы пользователя система посылает
всем запущенным им процессам сигналы (п.3.3.2), которые приводят к
прекращению этих процессов. Возможно, вам понадобится обеспечить
своему сценарию возможность продолжать выполнение даже после отклю-
чения запустившего его пользователя. Тогда посланный сигнал придется
перехватывать и обрабатывать собственными средствами сценария.
Перехватить сигнал можно с помощью встроенной команды Стар. Формат
ее следующий:
Ггар [~1р] [команда сигнал сигнал,..]
Ключ -1 выводит список имен и номеров сигналов, известных в ОС Стих.
Ключ -р выводит список команд, связанных с каждым сигналом. Сигналы
указываются по номерам или именам, приставку 8Ю можно опускать.
Команда — это та команда, которая будет выполнена оболочкой при по-
лучении сигнала (ваш собственный обработчик). Если вместо нее указать
пустую строку, то перечисленные сигналы будут проигнорированы. Если
вместо сигналов указать ЕХГГ или 0 (фиктивный номер), то команда будет
выполнена при завершении сеанса работы с оболочкой.
Чаще всего перехватываются сигналы:
01 81ОНПР Ьап§ир, освобождение линии связи;
02 81ОПЧТ шЩггирЕ, прерывание;
03 81СКЛЛТ цнй, выход;
15 8ЮТЕК.М (егтшаГе, программный сигнал завершения.
Чтобы игнорировать все эти сигналы, введите команду:
$ Стар 1 2 3 15
Протоколировать работу собственного сценария можно двумя способами.
Первый состоит в использовании команды-фильтра 1ее (п.3.4.6). Название
этой команды происходит от английского названия буквы Т, и действие
ее похоже на эту букву: она копирует данные из своего стандартного
потока ввода и раздваивает их на стандартный поток вывода и поток в
указанный файл:
$ Ш0Р1ЬЕ=ту_1од
$ 1Г [ "$ 1,0(361МГ ==• "Тгие" ]; сЬеп
> ®у„йсг!рС I Сее е!ве
> ту_5сг1рг;
> Г1
$
Если вы собираетесь не вводил* эти команды из командной строки, а
включить их в сценарий гпу__8спр1, то вызов сценария изнутри него самого
должен выглядеть так:
ехес $0
Встроенная команда ехес заменяет текущий процесс (то есть ту дочер-
нюю оболочку, в которой запущен сценарий) на выполняемую команду,
и сценарий, завершившись, возвращает управление прямо родительской
оболочке. Интерактивную оболочку (ту, с которой вы начинаете сессию)
подменить таким образом нельзя.
Если команде ехес не указан аргумент, но указано перенаправление вво-
да-вывода, то ехес совершает это перенаправление, продолжая выполне-
ние текущего сценария. Таким способом можно получить динамическое
перенаправление:
$ 1-Лу
/йеу/рСэ/З
$ есЬо “Вывожу строку на терминал"
Вывожу строку на терминал
$ ехес > 1од
$ еспо “Вывожу строку в файл”
$ есЬо “И эту .в файл"
$ ехес > /<Зеу/рСв/2
$ есйо "А эту снова на терминал *
А эту снова на терминал
$
Второй способ заключается в использовании команды 8спр(, которая ко-
пирует в файл весь сеанс работы в текстовой консоли: ввод пользователя
и вывод команд. Это должен быть в полном смысле слова сеанс работы в
командной строке: полноэкранные команды, такие, как редактор у| и даже
шап, оставляют в файле протокола мусор. Если вы запускаете команду
яспр1 вручную, то остановить протоколирование можно командой ехИ
$ ЬО(ЗЕ'1ЬЕ=ту_1од
$ 1Г [ == “Сгие" ]; СИ ей
> зегзри. ту_зсг1рС $ЬОЙР1ЬЕ; е1ее
> тпу„цсг1рС ;
> Л
$
Вызов сценария изнутри него самого должен выглядеть так:
ехес зсггрС $0 $ЬО<ЗР1ЬЕ
Начать знакомство с чужими сценариями вы можете с инициализацией-
ных файлов ЬаяЬ / еЬ с /ЬаеЬгс и /еЪс/ргоЕЫе. Команда «.» (точка)
в оболочке хА и ее производных (ЬакЬ, кхй), подобно команде яоигсе,
означает чтение и выполнение команд из файла-аргумента этой команды
в текущем процессе.
Глава 9
УПРАВЛЕНИЕ
ПРОЦЕССАМИ
КАК ЗАГРУЖАЕТСЯ ИШХ
о---КОМАНДЫ УПРАВЛЕНИЯ ПРОЦЕССАМИ
о--- ПРОТОКОЛИРОВАНИЕ СИСТЕМЫ
ВЫПОЛНЕНИЕ ЗАДАНИЙ
ПО РАСПИСАНИЮ
иыих ПОЛНОЕ РУКОВОДСТВО
9.1. Как загружается Ыпих
9.1.1. Начальная загрузка: НЬО и СНУ В
Общие механизмы
Как известно, первая программа, которая выполняется после включения
компьютера, — это В1О8. Она находит загрузочное устройство, считывает
в память его первый (нулевой) сектор и передает на него управление. В
этом секторе находится МВ К. (Л/лугсг Воог Несог4) — главная загрузочная
запись размером в 512 байт, в которой помешаются:
* первичный загрузчик;
♦ таблица разделов диска (РагИйоп ТаЫе) размером в 64 байта, описы-
вающая четыре первичных раздела: номера их первого и последнего
цилиндров, тип файловой системы и признак активности раздела;
• «волшебное число» (0хАА55), Предназначенное для проверки, служит
ли данный сектор загрузочным.
Формат МВВ стандартен для всех операционных систем, а содержание
области, отведенной под первичный загрузчик, может различаться. Этот
загрузчик очень мал, поэтому пере® ним стоит всего одна задача: найти
на диске и считать в память код загрузчика следующего этапа, разворачи-
вающего уже саму операционную систему, и передать ему управление.
В ОС ХМшклиз 9х первичный загрузчик передает управление на Воот
Г<есог(1 — первый сектор того первичного раздела, который отмечен как
активный (Ьо<>1аЫе — такой может быть только один). В более слож-
ных системах из МВК запускается диспетчер загрузки (МТЬоайег для
ХУшбо'Уз МТ, 1.11.0 и СК1В — для Ыпих), позволяющий выбрать вариант
загрузки и даже загружаемую ОС. Такую гибкость диспетчеру обеспе-
чивает возможность не ограничиваться тем объемом данных, который
помещается в МВК, а читать необходимые данные из файлов на диске.
Достигается эта гибкость ценой зависимости от файловой системы: су-
ществуют файловые системы (например, ХР8 и КеЬегРЗ с включенным
режимом оптимизации дискового пространства), с которыми ОС Ришх
может работать, но загружаться с них не может. Отдельный раздел /Ьооь,
о котором говорилось в п.1.2.2 в связи с «барьером 1024 цилиндра», не-
обходим еще и поэтому: на нем должна быть создана файловая система
ех(2Е или ех!ЗЕ, а для всех остальных разделов файловые системы можно
выбирать произвольно.
Загрузчик ИЮ
Стандартный загрузчик Ыпих — Е1ЕО {Ыпих ЬОас1ег) — состоит из двух
частей: первичного загрузчика Е1 и вторичного 1.0 Ы располагается в
МВК и только и умеет, что загружать ЕО, а тот уже передает управление
ядру или вызывает другой первичный загрузчик (например, Х'нпбоу.т
9х). ЬО находится в файле на диске (по умолчанию /ЬсюС/Ьоос .Ь). О
файловых системах Е1 не знает, поэтому карта размещения этого фай-
ла хранится в нем в виде «цилиндр/головка/сектор». Помещает ее туда
утилита /яЫп/Шо, которую нужно запускать после любого изменения ЬО
или его конфигурационного файла /ебс/111о . сопГ.
У вторичного загрузчика ЕО есть собственная карта размещения файлов
(по умолчанию /Ьао'с /тар). По ней он ищет загружаемое ядро и образ
виртуального диска, поэтому после любого изменения ядра или загружа-
емых модулей тоже обязательно запускать утилиту Шо.
Что такое виртуальный диск? Представьте себе загрузку 1дпих со 8С81-диска
или другого устройства, драйвер которого не вкомпилирован в ядро, а под-
гружается в виде модуля. Е1Е0 сможет найти и прочитать с него файл образа
ядра. Теперь ядру предстоит смонтировать корневую файловую систему.
Чтобы сделать это, нужно подключить драйвер 8С81. а чтобы найти драйвер
в / ИЬ/тоаи1ев, нужно смонтировать корневую файловую систему.
Похожая проблема возникает при первоначальной установке ОС Ейшх:
.для работы инсталлятора нужна файловая система со стандартными ути-
литами, а на диске ее еще нет. Обе проблемы решаются в Еших с помощью
технологии шйгй (11\!ГПа1 Кат йКк): вместе с ядром Е1Е0 загружает в
память образ стартового диска, и ядро монтирует его как обычную фай-
ловую систему. В этой файловой системе находятся модули, необходимые
для работы с нестандартными внешними устройствами и сетью, и утилиты
для их подгрузки. Подключив модули, ядро отсоединяет виртуальный
диск и монтирует настоящую корневую файловую систему.
Файл образа виртуального диска обычно называется /ЬооС/1п11:га-
<версия__ядра>. Если нестандартных устройств у вас нет или их драй-
веры встроены в ядро, то этот файл для загрузки не нужен.
Поведение ИЪО зависит от настроек в его конфигурационном файле
/еЬс/111о. сопЕ . Ниже приведен пример такого файла. Символ
как обычно, служит для комментариев.
Листинг 9,1, Примерный файл /е1с/1Но.согИ
# ЫЬО уегвхоп; 21.5
# Общий раздел
#
# использовать МЕР. первого, жесткого диска первого
# контроллера ЮЕ
Ьооб=/беу/Ъйа
# Карта ЬО
тар=/Ьооб/тар-
#
# Файл вторичного загрузчика'
1пвба11=/Ьооб/Ьооб.Ь
#
# Режим для загрузочных дискет. У меня закомментирован,
# сошрасб
#
# Режим УСЗА: погта! - 80x25, ехс - 80x50
уда=погта1.
$
# Раскладка клавиатуры
кеуЬаЬ1.е=/ЬооС/ги4 -к1Г
# Диск поддерживает режим ЕВА (Ъагде В1оск Асееве) -
# трансляцию
# физических адресов в логические так,
# чтобы число цилиндров не превышало
# понятных В1ОЗ 1024. Другое-значение этого
# параметра — Ивеаг. Не меняйте значения, выставленного
#инсталлятором, если вы .не знаете точно, что делаете.
1Ьа32
#
# Сообщение, которое выдается при загрузке
тей5аде=/ЬооС/тез8аде
# Задержка 5 секунд (в других версиях ЫЬО этот параметр
й называется Де1ау)
Г1теоиС.=50
# Вывести теэваде и приглашение
# к выбору .загружаемого ядра на
# Ытеопб/10 секунд, после которых загружается ядро,
# выбранное по умолчанию.
# Если рготре не установлен, добиться приглашения
# можно, удерживая <5п1^б> во время загрузки,
рготрб
#
# Цветовая схема
тепи-зскете^-иЬ: Ьи; иЬ *. Ьи
$
# Ядро, загружаемое по умолчанию. Если не указано, то
# загружается первое в списке
бе^аи1Ь=Ребога
#
# Список вариантов загрузки, не более 16.
# В каждой секции варианта должна быть строка
# 1аЬе1. Это имя, которое вводится в ответ на приглашение
# ЫЬО или является командой мен» и служит для выбора
# загружаемого ядра или ОС.
1таде=/ЬооЬ/ут11пиг-2.4.20 # ядро
1аЬё1^11пих-1п1ГтсЗ # метка
1п1Сгб=/ЬооС/1п1Сгб"2.4.20.1гад
гооЬ=/Йе.У./Ма6 # монтировать этот раздел как корнедой
геаб~оп1у # режим монтирования / на время загрузки
1паде=/ЬооС/угп11 пик-2.6.9-1.667
1аЬе1=Еейога
гооС“/деу/Ъба2
геай-оп1у
йпаде=/ЬооС / угп1 1пи т.
1аЬе1=га11заГе
г ооС=/йеи/Ма 6
аррепб=" тет”64М {аИваЕе" # параметры, передаваемые ядру
геай-опТу
оскег=/йеу/Ма1 # ОС — не Ыпих
1аЬе1=К1ййоивХР # гооС не указывается
СаЫе=/Йеу/Ма # где находится таблица разделов
Если вы определили секцию о1Ъег=/беу/Ъба1, то в корневом каталоге
раздела /с1е\; '1к1а1 (диска С:) должен находиться вторичный загрузчик. У
меня, например, на одном из компьютеров с многовариантной загрузкой
там находится №ГЕоайег (поскольку ХУшбо^ХР была установлена до
1дпих), и Ы1.0 успешно загружает Уипс1о'Л'?>ХР.
Команда аррепс! позволяет передать ядру необходимые параметры. Ее
формат:
аррепО=" параметр! [ =значение1 ] [,значение2...]
{параметра (. = значение! 1 [, значение^..). .. ] "
Значения разделяются запятой без пробелов, параметры разделяются
пробелами. Например, у вас есть устройство СП-КХУ, которое вы до сих
пор использовали как обыкновенный СО-КОМ, подключив его как 8е-
сопбагу 51ауе, то есть /деу/ъаа. Чтобы записывать компакт-диски под
1лпих, (ТЖХУ должен быть устройством 8С81, значит, это устройство
нужно эмулировать. Команда выглядит так:
аррепс!=" ”
Не забудьте после каждого изменения конфигурационного файла запу-
стить утилиту Шо. Некоторые ее полезные ключи:
♦ -V — показать версию ЫЬО;
• -<) — показать текущую карту загрузки;
♦ -I — проверить 111о. сопх на ошибки;
* -и — удалить И 1.0. После удаления вы сможете загрузить 1Лпих
только с внешнего носителя (дискеты).
Если вы решили пока не удалять НТО. то при очередной загрузке систе-
мы вас встретит приглашение ЫЕО. Нажмите <Ввод>, чтобы загрузить
вариант по умолчанию. Нажмите <ТаЬ> для просмотра вариантов. Ино-
гда на экран выдается только подсказка:
ыьо
Чтобы выбрать ядро, нужно нажать клавишу «8ЬШ», после чего появится
подсказка:
Ы ЬО ЬооТ:
и только теперь можно нажать <ТаЬ>. Если вы введете команду Ие1р, то
получите список всех команд ЕШО.
Чтобы загрузиться в однопользовательском режиме (например, для вос-
становления системы после аварии), введите в строке приглашения:
<метка_варианта> з1пд.1е
Если вы переустановили ХУ!пс1омге, а она заменила вам содержимое МВК,
то восстановить его можно, загрузившись с дискеты или компакт-диска
и введя команду 1 Но. Таким же образом можно установить ЫЕО. если
при инсталляции системы вы выбрали другой диспетчер загрузки.
Любопытно, что четыре буквы приглашения ЫЬО — это отметки об
успешном окончании четырех шагов загрузки. Если вы видите меньше
четырех букв, то это значит:
♦ Ь<хх> : первичный загрузчик запустился, но не смог загрузить
вторичный. Двузначное число хх — это код ошибки. Обычно причина
ошибки — аппаратный сбой.
• Ы : Ы смог загрузить вторичный загрузчик, но не смог передать ему
управление. Причина: перемещение /ЬооГ /ЬооС, Ь без запуска утили-
ты й/о. Чаще всего это значит, что вы удалили или добавили раздел.
♦ 1Л. : ЬО запустился, но не смог прочитать карту размещения
файлов. Аппаратный сбой,
♦ Е1Е? : ЕО загрузился по неправильному адресу. Причина — пере-
мещение /Ьоо I / ЬооС. Ь без запуска утилиты Шо.
♦ НЕ- : испорчена карта размещения файлов. Причина — пере-
мещение /Ьоог./тар без запуска утилиты Шо.
♦ Еще одной причиной любой из этих ошибок может быть неправильное
указание геометрии диска (несовпадение ее с фактической).
Загрузчик (3811В
Другой известный диспетчер загрузки — это набирающий все большую
популярность ОК Ь'В (СВан(1 ишПес! ВооНош/ег). В дистрибутивах
Мапбгаке и Гебога Соге этот загрузчик используется по умолчанию, хотя
я рекомендую вам сменить его на проверенный временем ЕП..О.
ОКОВ использует несколько отличную от Е1ЕО схему загрузки. Вто-
ричный загрузчик хранится не в каком-то файле, а в не используемом
системой пространстве. Обычно это вся первая дорожка диска. Если
места для полноценного вторичного загрузчика там недостаточно, туда
помещается маленький загрузчик промежуточного этапа, «полуторный»,
состоящий из драйвера файловой системы и инструкций для вызова на-
стоящего, большого, вторичного загрузчика. Благодаря такой организации
СтКЕГВ поддерживает большинство файловых систем (ЕАТ и ЕАТ32, ехЙК
и ех(ЗГ§, Ке18егЕ$, ХР5, ВМЭ ЕГ8), понимает большинство форматов ис-
полняемых файлов и — не главное, но самое заметное для начинающего
системного администратора, — изменения в конфигурационном файле
вступают в силу сразу же, без прописывания их в специальном месте
специальной утилитой.
Конфигурационный файл ОКОВ называется /ЬооС/дгиЬ/дгиЬ. сопЕ.
В мгновенно устаревающих руководствах вы мажете встретить другое
название — /ЬооС/дгиЬ/тегш. 1вс — но это не страшно: этот файл
является символической ссылкой на первый. Пример такого файла при-
веден ниже.
Листинг 9.2, Примерный файл /ЬоордгиЬ/дгиЬ.сопГ
#ЬооС=/йеу/Ма
й®1аи!1=0
Еа11Ьаск=1
Ытеои1=5
зрХакЪшаде^(МО, 1) /дгиЬ/зрХазЬ.хрт.дг
Ыддептепи
Ск1е Рейога Соге (2.6.9-1.667)
гооЬ (МОД)
кегпе1 /утпИпих-З . 6.9-1.667 ро гоок = /йе'//Ыа2
тпИгй /1п1ыа-2.6.9-1.667.1тд .
ЬШе ШпйонвХР
гооГ.помег1€у (М0,0)
сИа!п1оайег +1
Закомментированная команда Ьоо1 указывает загрузочный диск. Коман-
да йе!аи11 говорит, какая метка (ННе) будет загружена по умолчанию, а
ГаПЬаск — какая система будет загружена в случае неудачи. Команда
ПтеоШ указывает время (в секундах) ожидания ввода команды или вы-
бора другой операционной системы.
Команда 8р1а81мта§е указывает, Какой рисунок будет использован в
качестве фона. Если у вас что-то не ладится с видеорежимом, закоммен-
тируйте это строку.
Труднее всего смириться с тем, как СК. С1 В именует жесткие диски и их
разделы. Диски отсчитываются не с буквы «а», а с нуля, а разделы — не
с единицы, а тоже с нуля. Таким образом, раздел, который 1лпих именует
/йеV/Ийа1, а \\Чпс1ом.я — С:, ОКС’В называет (М0,0). Круглые скобки
обязательны.
Команда го(НпосегИу нужна для не-Енгах систем, а сйаш1ош1ег +1 — для
ОС, понимающих только «цепочечную» загрузку (МЫ?. —> загрузочная
запись активного раздела). Если-вы зачем-то разместили 'Мпдохте на
неактивном разделе, откуда она сама загрузиться не сможет, то команде
сйаш1оас1ег должна предшествовать команда такеасВхе.
СКОВ имеет графический интерфейс, но попасть в его командную строку
все-таки можно: увидев меню вторичного загрузчика, выберите курсором
нужную позицию и нажмите <с> (нажав <Ввод>, вы загрузите выбран-
ную систему, нажав <а>, вы сможете передать ядру дополнительные
параметры, а нажав <е> —отредактировать последовательность команд,
выполняемых при загрузке выбранной системы).
Итак, вы в командной строке. Редактировать вводимые команды можно
в стиле ЬакЬ: поддерживается автодополнение команд и путей к файлам,
пролистывание истории команд стрелками «вверх» и «вниз». Список всех
доступных команд можно получить по команде Ье1р, а получить краткую
справку о команде — введя Ье1р <имя_команды>.
Установить диспетчер загрузки СН-ШВ (если вы не сделали этого при
инсталляции системы) можно командой /йЪ1п/дгиЬ-1пзСа11 /Деу/
И <3а. Утилита кгиЬ-1п.ч(а11. как и все остальные компоненты (НШВ, со-
держится в пакете §гиЬ, который можно скачать по адресу МТр; //ял;.
втзурЬиз.ги/нгрт/дгиЬ.
Как установить графический фон загрузчика САВВ
Много интересных картинок, пригодных для установки в качестве фона
загрузчика СгЕШВ, можно найти по адресу Шр: //гиз1ид. гнкдегв -
е<1и/~тсдго1:/дгиЬ-1тадез/1таден/ыогк1пд-зр1а8Ытадез. Чтобы
не загружать все эти картинки, можно просмотреть их уменьшенные изо-
бражения по адресу ЪсЬр; / /гие1ид. гиСдегз . е<2и/~тсдгоЕ/дгиЬ-
гтадее/ттадее, а потом уже загрузить понравившуюся картинку.
Выбранную картинку поместите в каталог /Ьоос/дгиЬ и укажите ее в
директиве чр1ач!нтауе конфигурационного файла:
8р1ааЫтаде= (МО , 0 ) /ЬооС/дгиЬ/хгоаде.хрт.дг
Собственную картинку можно использовать как фон для загрузчика,
если преобразовать ее в формат, поддерживаемый (ЭКЦВ. Преобразо-
вание выполняется утилитой сопусгЦ после чего картинку нужно сжать
компрессором ц/лр:
# соотегС гпуппаде „рпд -со1ог5 14 -гектяе 640x480 гаухладе.хрт
# дхгр туг.ладе. хрт
9.1.2. Продолжение загрузки.
Демон 1ПИ
С момента загрузки ядра процесс начальной загрузки системы идет под
управлением самой системы. Первой получает управление процедура
автозапуска ядра. Она определяет объем доступной оперативной памяти,
зип и быстродействие процессора, тип видеоадаптера, переинициализирует
жесткие диски, не полагаясь на инициализацию, выполненную ВЮ8.
Это делается для того, чтобы выбрать из возможных вариантов выпол-
нения ядром основных функций оптимизированные именно для данной
архитектуры компьютера, повысив тем самым быстродействие всей си-
стемы. Здесь же определяется системная консоль, на которую выводятся
диагностические сообщения.
Наконец, процедура автозапуска распаковывает загруженный в память
образ ядра (на этом этапе вы видите сообщение: «ипсотргеккт^ 1ппих...»)
и передает ему управление («ОК, ЬооНп§ 1Не кегле!»). Теперь ядро ини-
циализирует таблицу страниц виртуальной памяти, устанавливает обра-
ботчики прерываний, разбирает параметры, переданные ему диспетчером
загрузки, и настраивается в соответствии с ними.
Завершив самонастройку, ядро создает несколько системных «процессов»,
фактически представляющих собой части самого ядра: планировщик
процессов, диспетчер виртуальной памяти, различные обработчики сиг-
налов ядра.
В списке текущих процессов, которой вы видели по команде ре -е, эти
системные процессы взяты в квадратные скобки. Один из них получает
идентификатор 1, он-то и станет полноценным пользовательским процес-
сом, в котором будет выполняться код демона шй. Этот демон запустит
все остальные службы и процессы, управляющие базовыми операциями:
например, входом пользователей в систему.
Ядро монтирует корневую файловую систему в режиме «только чтение»,
находит исполняемый файл демона шй (в каталоге /Ын, /еЫп или
там, где вы укажете, передав ядру параметр 1п1ь = /путь_к_1п1х) и по-
средством системного вызова ехес() загружает его код в процесс номер
1, Все остальные процессы порождает шй и его потомки путем деления
с помощью системного вызова /огк().
Примечание^
Ядро покорно запустит в качестве первопроцесса любую программу, которую вы
укажете ему как !пИ:
ШО: ту_11пик 1п1 ш/Ып/зЪ
Конечно, оболочка еВ не запустит Других процессов, но она предоставит вам
интерфейс командной строки, в которой вы сможете выполнить необходимые
ремонтные работы.
Процесс 1пй прочитывает свой конфигурационный файл /еСс/хпЛесаЬ
и запускает другие процессы согласно указанным в нем инструкциям.
В этот момент выводится приглашение нажать определенную клавишу
(обычно <1>), чтобы войти в интерактивный режим, позволяющий за-
пускать каждый процесс вручную или отказываться от такого запуска.
Уровни выполнения
Уровень выполнения (шл/еге/) — это такой режим работы системы, в
котором разрешается существование только определенной группы про-
пессов. В каждый момент времени система находится на одном из уровней
выполнения (на каком именно, можно узнать по команде ибо -г . Она
покажет также значение предыдущего уровня).
Разрешенные на каждом уровне процессы указаны в файле /еЬс/1ш±еаЬ.
Демон тИ заведует переключением уровней, остановкой запрещенных на
новом уровне процессов и запуском предписанных. В ОС Еших опреде-
лено:
♦ семь уровней выполнения, обозначаемых номерами с 0 до 6;
♦ особый уровень 8 или 5 — однопользовательский;
♦ уровни по требованию (опЛетаис!) А, В и С — фиктивные: при пере-
ходе на эти уровни запускаются приписанные к ним процессы, но
текущий уровень выполнения не меняется.
Термин «уровень выполнения» унаследован от тех времен, когда система
была обязана проходить уровни последовательно, от низшего к высшему
при загрузке и обратно при выключении. Сейчас их можно переключать
в любом порядке. Для переключения на уровень п нужно от имени су-
перпользователя ввести команду
# 1еПп1Ь п
Эта команда посылает соответствующий сигнал процессу шй (1е11 тИ).
Ее исполняемый файл представляет собой символическую ссылку на
/зЫп/1л1Ь, так что вместо нее можно отдавать просто команду 1п1с.
При этом не будет запущена копия процесса |пН: стартующий процесс
первым делом проверяет свой РЮ и, если тот не равен 1, просто передает
сообщение настоящему процессу тй.
Запустив все процессы, приписанные к текущему уровню выполнения,
1пН засыпает до получения сигнала о завершении дочернего процесса,
отключении питания или требовании переключить уровень. Тогда он
просыпается, перечитывает свой конфигурационный файл и, если нужно,
выполняет записанные в нем инструкции. Чтобы заставить его перечитать
измененный вами /еСс/1п1ЕЬаЬ, не дожидаясь трех вышеуказанных
событий, введите команду
# СеИптС д
Важно понять, что уровень выполнения — это программная абстракция,
аппаратура ни о каких уровнях не знает. Поэтому в разных реализациях
Еших (разных дистрибутивах) одному уровню могут соответствовать
разные конфигурации системы. Следующие уровни используются в дис-
трибутивах, основанных на Кед На1:
♦ 0: Останов системы.
♦ 1: Однопользовательский режим. То же, что уровень 8.
• 2: Многопользовательский режим без поддержки сети.
♦ 3: Полный многопользовательский режим.
♦ 4: Не используется.
* 5: Графический режим с XII.
♦ 6: Перезагрузка.
В однопользовательском режиме никакие службы не стартуют; только
грузится ядро, монтируется корневая файловая система и запускается
командный интерпретатор. На этом уровне не нужен даже файл /еСс/
1п:ИгаЬ, повреждение которого означает невозможность загрузиться на
любом другом рабочем уровне. Этот уровень обычно использует адми-
нистратор для аварийно-восстановительных работ.
Неиспользуемые уровни можно занять под свою собственную конфигу-
рацию служб, собранных для конкретной задачи.
Конфигурационный файл /е(с/1пИ±аЬ
Первая незакомментированная строка этого файла определяет уровень
выполнения по умолчанию, то есть тот, в котором стартует система, если
в процессе загрузки ядру не указано иначе. Эта строка выглядит как
Обычно в качестве уровня по умолчанию выбирают 3 (полнофункцио-
нальный многопользовательский текстовый режим) или графический 5
(запускается X \'ипс1о'Л' и выдается графическое приглашение для входа в
систему). Если оставить поле уровня пустым, то нн7 переспросит значение
в процессе загрузки. Если указать в поле уровня несколько значений, то
сработает наибольшее. Уровни 0 (останов) и 6 (перезагрузка) указывать
нельзя.
Следующие строки имеют формат:
идентификатор:уровни„выполн®ния:действие:запускаемый_процесс
♦ Идентификатор — это уникальная последовательность из четырех
символов (в старых дистрибутивах — двух).
♦ Уровнивыполнения: перечень уровней выполнения (номера без
каких-либо разделителей), для которых будет выполнено указанное
действие. Например, значение 2345 требует выполнить действие на
уровнях 2, 3, 4 и 5. Здесь можно указывать также уровни по требова-
нию (рп^етап^) А, В и С.
♦ Действие: одно из действий, перечисленных в таблице 9,1,
♦ Запускаемый_процесс: процесс, над которым производится действие.
Это может быть исполняемый файл или сценарий.
Действия над процессами, задаваемые а файле/е1с/1п1оаЬ Таблица 9. ?
Действие Описание
гезра’ЛФ! В случае завершения процесс будет перезапущен
чгаг( Процесс будет запущен при переключении на любой из указанных уровней, и 1пН будет ждать его завершения
опсе При переключении на любой из указанных уровней процесс будет запущен только однажды
Ьоо! Процесс будет запущен во время загрузки системы.. Поле ^уровни_&ыполнения* игнорируется
ЬооТтеаЙ То же, что и Ьоо1. но 1пИ ждет завершения процесса
ой Не выполняет никаких действий
огметапй Процесс выполняется в режиме по требованию, то есть он будет запущен при переключении на уровни а, Ь или с
нвШ<#аи1( Определяет уровень выполнения по умолчанию
ЗУ<51ПЙ Процесс запускается во время загрузки системы до любых процессов, стартующих через Роот или Ьоодуап
рошегйаЛ Процесс будет запущен, когда исчезнет напряжение в сети, Естественно, для корректной работы згой записи нужен источник бесперебойного питания, от которого система и получит уведомление об исчезновении напряжения; /пй будет ждать завершения этого процесса
роигагТаН То же, что и роччецчай, но 1пН не будет ждать завершения процесса
ромлэтокжай Процесс запускается по получении 1пЙ сигнала о восстановлении питания
рочтегТаИпсад Процесс запускается, когда источник бесперебойного питания подает сигнал о том, что его батареи почти разряжены
сШаМе! Процесс запускается при получении ЬЙ сигнала 1МТ, посланного нажатием комбинации клавиш СЙ+Ап+беГ Обычно это процесс перезагрузки, выключения или перехода в однопользовательский режим.
кЬтершыЛ Процесс запускается при получении 1пН сигнала, посланного нажатием «специальной» комбинации клавиш. Назначить клавишам специальное значение можно с помощью утилит из пакета КМ
Сценарий, помеченный действием кумпй, выполняется во время запуска
системы, однократно, вне зависимости от запрошенного уровня. Затем
запускаются процессы, помеченные действиями Ьоо1 и ЬооЬтаИ.
На данном этапе загрузки системы происходят следующие действия по
инициализации, результат которых необходим на любом уровне выпол-
нения:
1. Устанавливается имя машины (ЬоМпате).
2. Конфигурируются параметры ядра.
3. Устанавливаются раскладка клавиш и системный шрифт.
4. Активируются разделы подкачки.
5. Корневая система проверяется программой Нек. Если будут найдены
ошибки, которые невозможно исправить автоматически, будет запро-
шен пароль администратора для входа в административный режим,
что равноценно переходу на уровень выполнения 1. В этом режиме
вы запустите программу Гвск с аргументом «/», который означает про-
верку корневой файловой системы. После исправления всех ошибок
введите команду ех1с для перезагрузки системы. Если программа
Ряск ошибок не обнаружила, файловая система монтируется в режиме
чтение/запись.
6. Проверяются зависимости модулей ядра.
7, Выполняется проверка других файловых систем,
8. Монтируются локальные файловые системы.
9. Включаются квоты.
10. Подключается (не активизируется!) раздел подкачки. С этого мо-
мента система начинает использовать раздел подкачки.
Дальше включается сценарий загрузки, специфичный для запрошенного
уровня, и начинается разница между дистрибутивами.
В процессе развития ОМХ-подобных ОС выделились две основных систе-
мы инициализации (набора сценариев загрузки). Одна была разработана
в рамках ОС В81) (Вегке!еу ЗоЙУУате ШмпЬибоп) Калифорнийского уни-
верситета, от которой произошли бесплатная ЕгееВМ) и коммерческая
.8ипО8. Другая применяется в классической! 8уз1ет V от АТ&Т и ее по-
томках, среди которых ПшхАУаге, 1В1Х, НР-СХ и 8о1ап$. ОС Стих заим-
ствовала удачные решения с обеих эволюционных ветвей, и в результате
часть дистрибутивов следует в инициализации стилю В81) (81аскчга.ге,
СК. ОХ. СтегНоо), а часть (Ёеб Па(-подобные) — стилю 8уз1ет V.
Инициализация в стиле В$О
Для этого стиля характерно наличие конфигурационного файла старто-
вых сценариев /еСс/гс . соп^. Уровней выполнения как таковых в В8О
и ориентированных на нее реализациях Ыпих нет, вместо них вводится
понятие режима — группы процессов, объединенных общей функцио-
нальностью. Режимов обычно два: однопользовательский и многополь-
зовательский. Каждый режим запускается своим сценарием. Файлы этих
сценариев обычно находятся в /еЕс и называются тс . * (рис. 9.1).
В дистрибутиве 81аск^аге этим сценариям присвоены имена:
♦ гс. з — сценарий запуска (действие яумпй);
♦ гс. о —- останов системы;
• гс , 6 — перезагрузка;
♦ гс. К — однопользовательский режим;
• гс. М — многопользовательский текстовый режим;
♦ х-с. 4 — многопользовательский режим с графическим входом в си-
стему.
В / есс/<Зе^аиП/гс.сопг хранятся в неизменном хорошо откомменти-
рованном виде все системные настройки в количестве нескольких сотен,
а редактируемый администратором /егс/гс.соп^ содержит только от-
личия желаемой конфигурации системы от /еСс/йеЕапЪЬе/гс-соп{,
которых раз в десять меньше. Загрузочные сценарии режимов прочиты-
Рис. 9.1. Порядок инициализации в стиле В50
вают оба эти файла и в зависимости от требуемой конфигурации могут
запускать из-под себя дополнительные сценарии инициализации раз-
личных служб: гс. 1пеьа* , тс . сйгот и т.п. Последним при загрузке
выполняется сценарий гс.1оса1, содержание которого определяется адми-
нистратором конкретной системы.
Инициализация а стиле Бузует V
В этом стиле каждому уровню выполнения соответствует целый каталог,
все сценарии в котором выполняются при переключении на этот уровень.
Это подкаталоги /еТс с именами гсО . <3, гс1.а, .... гсб.й. Сцена-
рии в этих каталогах — файлы с именами вроде 812зу81о§ или К95кис1/и —
только символические ссылки на настоящие сценарии, находящиеся в
/йсс/1п1ь . а. Каждый из настоящих сценариев, будучи вызван с аргу-
ментом я1агГ, запускает свою службу, а с аргументом вЦ>р — останавливает
ее. Какой аргумент будет ему передан, зависит от первой буквы имени
символической ссылки: 8 означает 8(аП, К — айзр. Следующее за этой
буквой число определяет порядок вызова настоящих сценариев: чем оно
больше, тем позже срабатывает данная ссылка при включении текущего
уровня. Сначала выполняются все сценарии останова процессов, не раз-
решенных на данном уровне, потом — все сценарии запуска (рис. 9.2).
Переключением уровней выполнения занимается центральный сценарий
/еСс/гс. Вызванный с аргументом где — это номер включаемого
Настройка служб
файл Вид Действия Изменить уровень ^правка.
► О 1 0 ш
Запустить Остановить Перезапустить ! Сокрянить Р.'х;.;тл-:лк1<7н
Текущий уровень запускам
Редактируется уровень запускам
фСЗУСдЗЗЙ
гаупс
5аа1ашЬй
зепс)таЛ
зталй ;
5рата55а551П
ззЬб
5уз1од
6 те
йте-ийр
упсзепгег
штЬЫ
[Описание................................. -
; х)пеКН5 а рпигегЙ терйсетеп» бзнпей. х!пеМ баз ассевз
соп»о1 тесНагмзтз, ехТетгёе !одд)пд сараЬНШев, Ле аЫНту (о
таке земсев а№Й1аЫе Ьаяей ои йте, апй сап р!асе Йтйз оп
Йн»т1тЬего?5е«тТЬаГсапЬе5Гап«1> атопд о№ег№пдз.
тСостояние“‘" -..... —-
|Х!пеЙ(рИ 2256) выполняется...
урЫпй
уит
уровня, он ищет каталог / ег. с / гс. И и выполняет в нем сначала все стоп-
сценарии, потом все старт-сценарии.
Для выбора демонов, которые будут запускаться автоматически при за-
грузке системы, обычно используют конфигуратор НгаксопГ в операцион-
ной системе 1лмх Мапдгаке, ^^(ет-сопП^-яегуйх^ в Гебога Соге (рис.9.3)
или эеСир в других кед НаЬподобных дистрибутивах.
Чтобы обеспечить автоматический запуск какого-нибудь сервиса, нужно
создать сценарий для его запуска и поместить его в каталоге /еъс/1п1Ь.<±
Затем, в зависимости от уровня выполнения, в каталоге /еСс/гсК.а
нужно создать символические ссылки на этот сценарий для его запуска
и останова.
Если вы хотите сами создать сценарий для запуска своего демона, можете
воспользоваться шаблоном, приведенным в листинге 9.3.
Листинг 9.3. Шаблон для запуска демона
# ’ /Ып/Ьавй
#
# Подключаем библиотеку функций
. /еСс/тптЪ.а/ТипсСхогш
# Определяем параметры
сайе я$1* 1п
ебагС)
# Запуск демона
есЬо и5Ьах±1пд ту^даетоп..."
с!аетоп ту__йаетоп
Гойей /чаг/Хоск/еиЪзуй/ту^йаетоп
вгор)
й Останов демона
кШргос ту_баетоп
гт ^аг/Хоск/аиЬвуз/гу.уЗаетоп.
гт /уаг/гип/Епу_дЗаетоп.р1<а
ясабиз)
# Выводим статистику работы
гевГагб I ге1оай)
# действия, выполняемые при перезагрузке демона
*)
# Произошел вызов без параметров
есИо "Цзаде: ту_даетоп (з.ЬагЬ | йЬор! зсаш |гезСагС ге.1сш4}
ех!х 1
езас
ех!с О
После того, как в процессе инициализации системы будет выполнен за-
грузочный сценарий уровня по умолчанию, последним выполняется сце-
нарий /еьс/гс, 1оса1. Выполнив все сценарии, тй переходит к другим
записям в /еьс/ 1.п1ссаЬ, от носящимся к текущему уровню. Обычно там
остаются только перезапускаемые (гезраччп) действия: процессы, которые
шй запускает в фоне, а когда какой-нибудь из них завершается, запускает
вновь. Так ведут себя процессы *§еЦу, обслуживающие виртуальные кон-
соли, и менеджер дисплеев системы X Шшбочу. Инициализация системы
считается законченной, когда запущены все перезапускаемые процессы
и 1пй остается только следить за ними.
9.2. Команды управления процессами
9.2.1. Иерархия процессов: ре и ре1гее
О том, что команда ра позволяет просмотреть сведения обо всех про-
цессах, протекающих в системе в данный момент, вы уже знаете (п.3.2).
С ключом -€ эта команда выводит как РЮ самого процесса, так и РРЮ
его родителя, то есть по ее выводу можно восстановить всю структуру
дерева процессов до их общего предка — процесса 1п11. «Древовидный»
взгляд может понадобиться, например, если вам нужно уничтожить це-
лую группу процессов, происходящих от общего предка: в этом случае
вы можете не убивать их по очереди, а просто послать сигнал ТЕКМ их
родительскому процессу.
Команда р$1гее представляет дерево процессов сразу в наглядном виде:
$ рзТгее
ГпХГ-т—а ср 1а
ЬопоЬа-асЛ
—сгоцЦ
~-дсап.1с5-2
-Лйщ-Ыпагу--дб^-Ыпаг у—т—Х
—дпогсе-рапе!
^дтюте - з еГЛ 1 пд в-
Е-дпоте - з е з з 1 о п
—дпсаве-Е е гтпХ ла.1—,—Ьа 51т—-пз К г ее
—Ьаз И--зи---Ь а зй-гпап—зЕ-—~зЬ—г-1 е з з
'—пг о Т Ё—1СОТЗ V
—Ьа зЕ..за...Ьа зЕ
^—дпотпе - рь у ~Ье1ре
ЕзуаХодс!
айеуй
ххпеЕд
Ключ ”р выводит вместе с именем процесса его ИГ>, а ключ ~п — имя
пользователя, запустившего процесс. Если в качестве аргумента указать
РГО, то команда выведет не все дерево, а только ветку потомков процесса
с этим РП). Имя пользователя в качестве аргумента требует вывести все
ветки процессов, запущенных этим пользователем: у них общего предка
может и не быть.
9.2.2. Информация о ресурсах системы:
команды Тгее, сК, с!и
Команда Ггее показывает общее количество занятой и свободной памяти:
физической, в разделе подкачки и в буферах ядра. По умолчанию объем
памяти выводится в килобайтах, а ключи -Ь и -т позволяют измерять
его в байтах и мегабайтах соответственно.
Ключ -я <число> требует опрашивать систему непрерывно, через каж-
дые <число> секунд, пока вы не прервете выполнение команды, нажав
С1г1 + С.
Команды ЛГ (<№к /гее) и би (Лик и$а%е) показывают, сколько места до-
ступно и занято на жестком диске.
Утилита <И выводит сведения о дисковом пространстве на всех смонти-
рованных в данный момент файловых системах — как локальных, так и
сетевых:
$ сИ
Файловая система 1К-блоков Исп Доступно Исп% смонтирована на
/ Деу/ЫаФ 22200824 4630864 16442200 22% /
/йеу/Ма2 101105 8383 87501 9% /Ьоог.
/Дет/ЬДаб 10221420 1737440 8483980 17% / пи с / та п_дЗ 1 з к_е
//аяег5/еЬаге 7543680 4623488 2920192 62% /тпЕ/м1п_ивег5
С ключом “I команда измеряет дисковое пространство не в блоках,
а в индексных дескрипторах (п.2.2.1), а с ключом -Т показывает тип
файловой системы. О других ключах можно узнать, как обычно, на глав-
странице.
Команда би показывает, сколько места занимает каждый подкаталог
каталогов, указанных в качестве аргумента (если аргументы не указаны,
то это будет текущий каталог), и подсчитывает общий итог. Если у вас
недостаточно прав на просмотр некоторых подкаталогов, то итог будет
отличаться от правильного на размер запрещенных каталогов.
9.2.3. Процессы в реальном времени: команда Юр
Команда 1ор предназначена для наблюдения за процессами в реальном
времени и интерактивного управления ими. Терминал, на котором за-
пущена программа 1ор, превращается в окно, разделенное на области
(рис. 9.4, сверху вниз):
♦ сведения о системе — продолжительность текущего сеанса, коли-
чество задач, использование памяти и процессора, средняя длина
очереди задач, ожидающих выполнения (1оаб ауега^е) и т.п,;
♦ командная строка;
♦ заголовки столбцов;
• область задач. Задачи в терминологии 1ор — это не только пользова-
тельские процессы — потомки ЙШ, но и системные процессы — части
ядра.
3
г:ар - Талка Сри (я Мели Праяч Вид Виящш . Данина
20:16:30 цр 100= : 2.3$ и#, 1 гиткипд» 99 Хоай ауе-гаде: 0.30. 0.14, 0,07
пх, 96.3$ 0 згюррес!,. 0 зогъЫ.е 0.0 5 «а, 0.Л М, 0.0$ а 1 7320к ЫГГеге 5к Ътад, 72372к
1.0$ л! * .а!, зу, 0.0% зшш и Я512к и
223284к 10441евк 4зей, 626 1.03567
3294 сЮп 1е 0 416В4 16т В 2.0 7 , 4 0:17.04 <^пегГт.®'~:!!изг"П1.з.па 1
2537 15 внви 2. Ст $ 1.3 9 . 2 2104,11 X Я'
1 ГСЮЪ 16 0 гет 564 1400 5 0.0 0.3 0:00.51 -л-Г
2 гею* 34 19 с 0 О я 0.0 С . 0 0:00.04
3 5 -10 0 0 0 $ 0 . о 0.0 0:00.01- е V® л * з / 0 1
4 гезоъ 5 -10 б 0 0 $ 0.0 0.0 0' ОС.ОО
5 геют 15 -10 0 О 0 2 0. й 0.0 0:00.00 КаерЮ
24 госи: 5 -10 (1 0 с Я 0.0 0.0 0:00.00 кЫ.оокс!/С
34 Гр0ф 20 с 0 0 0 2 С г 0 0 .0 0:00,00 раП\1яН
35 ГОО“ 15 с 0 0 0 $ 0.0 С , 0
Рис. 9.4. Программа (ор запущена на виртуальном терминале
Каждые несколько секунд (по умолчанию 3 секунды) окно обновляется.
В командную строку можно вводить команды управления самими зада-
чами или порядком отображения сведений в окне программы 1ор. Вот
некоторые из таких команд:
♦ Ь —- вызов справки;
• (| — завершение работы программы (для выхода можно нажать и
комбинацию СШ+С);
• и — показывать только процессы, запущенные определенным поль-
зователем (следует указывать его регистрационное имя, а не СЮ);
♦ <1 — изменить интервал обновления;
• Г — добавить или удалить столбцы;
♦ Ь — изменить столбец, по которому сортируются задачи. По умолчанию
это %СРЧ — доля использованного процессорного времени, но можно
сортировать, например, по убыванию объема занятой памяти;
• «— переключатель отображения: либо все задачи, либо только актив-
ные (в состоянии Киппшц);
* к — отправить процессу сигнал. Программа спросит у вас РЮ про-
цесса, а затем номер или название сигнала. По умолчанию посылается
сигнал ТЕЕМ;
♦ г — изменить приоритет процесса.
Количество и порядок отображаемых свойств процесса (столбцов) мож-
но изменять. Всего доступно 26 свойств процесса (нумеруемых буквами
английского алфавита), и соответствующие им заголовки столбцов пере-
числены в секции ПЕ8СШРТ1СЖ5 оГ Пе1дн тап-страницы команды 1ор.
На рис. 9.4 (команда 1ор запущена с настройками по умолчанию) ото-
бражены следующие свойства:
♦ РЮ — РЮ процесса;
♦ Р18ЕК —• регистрационное имя владельца процесса;
♦ РК — приоритет;
* — показатель уступчивости (см. п.9.2.4);
* У1КТ — занятая виртуальная память в килобайтах;
♦ КЕК — физическая (без подкачки) память, занятая процессом;
• ЗНК — объем разделяемой памяти, используемой процессом;
* 8 — состояние процесса;
• %СР11 — доля процессорного времени, доставшаяся процессу с мо-
мента последнего обновления экрана;
• %МЕМ — доля занятой процессом физической памяти;
♦ Т1МЕ+ — процессорное время, израсходованное с момента запуска
процесса, в секундах с сотыми долями;
♦ СОММ.АМ) — либо имя исполняемого файла программы, либо вся
командная строка с аргументами. Режим переключается вводом в
командную строку команды «с».
Процесс может находиться в одном из следующих состояний, отобража-
емых в столбце «8»:
♦ К (Кипшпс;) — активен, то есть находится в основной памяти и ждет
выделения ему процессорного времени либо уже выполняется;
♦ 8 (81еерЩ|>) — выгружен из основной памяти;
♦ Т (Тгасеб) — приостановлен, например, в ходе отладки;
• О — состояние непрерываемого ожидания: процесс может быть «раз-
бужен» только прямым (сйгесГ) сигналом от оборудования;
♦ 2 — зомби. Это процесс, родитель которого не получил сигнала о за-
вершении потомка и не очистил связанные с ним структуры ядра. То
есть дочернего процесса нет, он Не тратит процессорного времени и
других ресурсов, а запись в таблице процессов осталась. Такие про-
цессы нужно убивать вручную,
9.2.4. Приоритет процесса: команды тсе и гетсе
Каждому процессу в системе назначен определенный приоритет, который
учитывается планировщиком процессов при выделении процессу про-
цессорного времени. Значение приоритета находится в диапазоне от -20
(наивысший приоритет) до 19 (наименьший: процесс выполняется только
тогда, когда нет других претендентов на время процессора). Значение,
обратное приоритету, называется показателем уступчивости (пке).
По умолчанию все процессы запускаются с базовым приоритетом, равным
0. Владелец процесса может в любой момент повысить его показатель
уступчивости (понизить приоритет). Суперпользователь имеет право
установить для любого процесса любое значение приоритета.
Если процесс отъедает слишком много ресурсов, то для нормального
функционирования системы не обязательно его убивать: достаточно
назначить ему низкий приоритет. Тогда планировщик предоставит ему
меньше циклов процессора, и его выполнение займет больше времени,
зато в течение этого времени можно будет выполнять другие задачи.
Для запуска процесса с приоритетом, отличным от базового, служит
команда шее:
п1се [ -п. <приоритет> ] [командная_строка]
Например, копирование образа компакт-диска, будучи запущено с обыч-
ным приоритетом, может заблокировать остальные процессы. Поэтому
запускать его нужно так:
$ п!се -п 19 <3<3 1^ = /тей1а/сдгесог<1ег о^ = -'/ту_сйгот.
Значение нового приоритета по умолчанию равно 10. Команда п!се без
аргументов выводит текущее значение базового приоритета.
Для изменения приоритета уже запущенного процесса служит команда
гешсе:
гепхсе -и <показатель_уступчивости> [-р РЮ] [-и ПП)]
Суперпользователь имеет право назначать процессу (или всем процес-
сам указанного пользователя) отрицательный показатель уступчивости,
то есть повышать их приоритет. Если указанное значение уступчивости
выходит за границы диапазона [-20...19], то вместо него применяется со-
ответствующее крайнее значение.
9.2.5. Фоновый режим: команды )оЬз, Тд, Ьд
В п.3.2 я уже говорил, что родительский процесс может либо ждать за-
вершения дочернего, либо продолжать свое выполнение. Если в роли
родителя выступает командная оболочка, то это значит, что процессы,
запущенные с одной консоли (или виртуального терминала), распадают-
ся на две группы: те, которых оболочка ждет, — они взаимодействуют с
пользователем, занимая консоль, — и те, после запуска которых с пользо-
вателем взаимодействует сама оболочка (консоль свободна). Эти группы
называются передним и задним планами.
Чтобы запустить процесс на заднем плане (в фоновом или асинхронном ре-
жиме), нужно завершить командную строку управляющим оператором &.
Подкоманды оболочки ,]оЬх, Ь(» (Ъаск^гоипЛ) и (/оге^гонш/) позволяют
манипулировать заданиями, выполняющимися на переднем и заднем
планах:
♦ Команда доЬ.ч выводит список процессов, которые выполняются в
фоновом режиме,
• <номер_задания > переводит процесс на передний план,
♦ <номер_задания > — переводит процесс на задний план.
Номер задания — это не РГО, а число, которое команда ]оЬз выводит в
квадратных скобках. С ключом -I она будет выводить, кроме того, и 1’11)
процесса.
Поскольку перечисленные команды — не самостоятельные утилиты, а
подкоманды ЬааЖ, справку по ним нужно запрашивать так: Ие1р <под-
комаида>.
9.3. Протоколирование системы
В любой ПМХ-подобной системе есть стандартные файлы протоколов
(журналов). В них попадают сообщения, генерируемые ядром, системны-
ми демонами,, утилитами окружения. Эти файлы размещаются в каталоге
/уаг/1од. Прикладные программы обычно помещают свои протоколы
в подкаталоги этого каталога, например, ^аг/ 1од/Ыхра — журналы
НТТР-сервера. Точное расположение журнала прикладной программы
зависит от ее настройки.
За ведение журналов отвечает система регистрации событий 8ув1о§. Она
позволяет сортировать сообщения Йо источникам и степени важности, а
также перенаправлять их в журнальные файлы, на консоль или на другой
компьютер в сети. Все подсистемы (демоны) и правильно написанные
прикладные программы не ведут протоколов самостоятельно, а посылают
сообщения в систему регистрации. Дальнейшая судьба этих сообщений
зависит от политики системного администратора.
Система регистрации состоит из следующих компонент:
♦ демон .чу$1о^с1, принимающий сообщения от других процессов и пере-
направляющий их указанным адресатам;
♦ библиотечные функции ореп!од(), 8уз1овО* с1т>екц;0, посредством
которых процессы общаются с демоном . Функция кув!ой() за-
писывает протокольное сообщение в гнездо (сокет) /<ЗеV/ Ход, откуда
его читает демон $у81о^ф
• команда Ь^вег, с помощью которой сообщение демону вув1о^ может
передать командный интерпретатор.
Демон 5у$1о&(1 запускается ишшиализационным сценарием в ходе на-
чальной загрузки системы и работает непрерывно. Убедиться в том, что
он запущен, можно с помощью команды
$ рн -еГ | дгер зу.а1одй | дгер -V дгер
Последняя в этом конвейере команда ну*на для того, чтобы отфильтровать из
в : 1 вывода команды дгер сведения о дамой команде дгер.
Если ваша система загружается в стиле 8уйеш V, то сценарий запуска
демона — это /егс/гс.а/1п1Ь,а/ауз1од. Как обычно, запустить демон
самостоятельно вы можете с помощью команды
/еЬс/гс.а/1п1Ъ,а/эуе1од дЬагР,
а остановить — /еЬс/гс.а/1п1Ь . а/зуз1од зеор.
Автоматический запуск системы $уь!оц можно отключить или включить
при помощи графического конфигуратора (яеГир для дистрибутива Вей
НаГ, йгакхчетсеч для Мапскаке. вувйеш-сопйе-вегукек для Ребога Соге).
В Веб Н несовместимых дистрибутивах демон $у$1о§(1 устанавливается из
пакета кувЮо^б, в состав которого входит также демон к1о{>й, принимаю-
щий сообщения ядра и отправляющий их на обработку демону чу.ч1о^б.
Как и всякий демон, управляется конфигурационным файлом.
По умолчанию это файл /еЬс/зук1од.соп{, однако ничто не мешает
назвать его как угодно, а потом запускать зуз1о^<1 с ключом - Г /расЪ/
То/сопЕ1д. ^Ие.Об остальных немногочисленных ключах можно узнать
по команде тап нуа1ода.
По сигналу НОР демон закрывает все журнальные файлы, перечитывает
конфигурационный файл и возобновляет процесс протоколирования.
Чтобы изменения в конфигурационном файле вступили в силу, нужно
послать демону зузквд! сигнал НОР. Например, так:
$ кШ -НОТ ’са1: /уаг/гип/зузХодб.рЮТ
9.3.1. Конфигурационный файл /е1с/$у$1од.соп?
Это простой текстовый файл, каждая непустая и незакомментированная
(знак комментария — #) строка которого имеет следующий формат:
<селектор>(;<сеяектор>...] <действие>
Селектор представляет собой правило отбора сообщений, а действие —
указание, что с отобранными сообщениями дальше делать. Например, строка
изег . * "/уаг/1.од/цвет. .Ход
диктует перенаправление сообщений от пользовательских программ в
файл /уа.г/1од/изег. Ход.
Действиями могут быть:
* /абсолютное/имя/файла — записать сообщение в файл. Префикс
«-» перед именем файла запрещает синхронизировать файл после
каждой записи. По умолчанию после записи каждой строки
выполняет вызов купс(). Это делается ради сохранности журналов,
но при интенсивной записи может отнять половину процессорного
времени. Поэтому следует отключать синхронизацию протоколов, в
которые пишется много сообщений — например, отладочных,
♦ @имя_машины — переслать сообщение демону $у51о^(1, работающему
на указанной машине. Имя должно быть известно ЕЖ$ или прописано
в /е(:с/Ъо8Ьвв пробивном случае следует писать @1Р-адрес.
♦ /йеу/сопзо1е — вывести сообщение на консоль.
• * — вывести сообщение на экраны всех работающих в данный момент
пользователей.
Несколько селекторов, отбирающих сообщения разной категории, можно
группировать, разделяя точкой с запятой, для того, чтобы над ними было
выполнено одно и то же действие. Действия группировать нельзя. Чтобы на-
править одни и те же сообщения и в файл, и на удаленный компьютер, нужно
вписать в конфигурационный файл две строки с одинаковыми селекторами.
Селектор, в свою очередь, имеет формат:
<средство> [, средствоЗ...] »<уровень„серьезности>
Средство (Гасйцу) — это категория программы, пославшей сообщение. Ка-
тегория выбирается из списка ключевых слов, приведенного в таблице 9.2.
Категории программ, ведущих протокол Таблица 9.2
Ключевое слово Назначение программы, пославшей сообщение
аоЩ ашбрпч ЯВСИпТу Программы, отслеживающие регистрацию пользователей в системе и повышение привилегий пользователе (1од1п, ей)
аигЬрпи Программы, отслеживающие повышение привилегий пользователя (команда ви)
стоп Выполнение заданий по расписанию (сгоп и ар
Нае топ Системные демоны* для которых не нашлось более подходящей категории
кегп Ядро
1рг Подсистема печати
та<1 Почтовые программы
пемз Подсистема, обслуживающая телеконференции Окепет
ииср Система 1Д1СР
зуйод Сам демон гугГодр
Все остальные программы
* Любая программа
ПОП0 Никакая программа
Уровень серьезности (рпогйу) определяет важность сообщения. Про-
граммы регистрируют любые сообщения — от отладочной информации до
требований экстренного вмешательства — а демон $у$1(щс1 игнорирует те
из них, важность которых ниже, чем указано в конфигурационном файле.
Уровень серьезности указывается ключевым словом, список которых в по-
рядке возрастания важности приведен в таблице 9.3. Допускаются также
ключевые слова * (все сообщения) и попе (никаких сообщений).
Уровни серьезности сообщений Таблица 9.3
Ключевое слово Означает
РеЬид Отладочные сообщения
Информационные сообщения о штатных ситуациях
побсе Замечания: сообщения о необычных ситуациях
игаггнлд Предупреждения
егг Ошибки
сгП Критические ошибки
а1вг! События, требующие срочного вмешательства
егпегд События, угрожающие работе системы
В Кес! НаС-совместимых системах можно ставить перед уровнем серьезности
дополнительные модификаторы «=» (регистрировать сообщения только
указанного уровня) и «!» (игнорировать сообщения указанного и более вы-
соких уровней). Можно также направлять сообщения не только в обычный
файл, но и в именованный канал, поставив перед ним символ «|».
Листинг 9,4, Примерный файл /е1с/зу51од,соп1
# Протоколирование аутентификации. Файл протокола
аиГН,аиРЪргХч. * /чаг/Ход/аиДИ. Ход
* . *;аиСИ,аиСЪргФч.попе -/чаг/1од/8ув1од
# Файл регистрации попыток доступа к системе, имеет
# ограниченный доступ. Обычно в этот файл записываются
# сообщения об удаленном доступе к этой машине,- например,
# сообщения от демона РТР о том, какие пользователи и
когда регистрировались на данном сервере.
аибЬргху.* /чаг/1од/весите
# Сообщения пользовательских программ
иеег.*
-/маг/Ход/цвет.Ход
# Протоколировать все информационные сообщения, кроме
# почтовых
* .1п!о;та!1.попе; -/маг/1од/теззадев
# Протоколирование почты
# Уровень отладки, информации и замечаний
ша11.=аеЬид;п1а11.=1пбо;таХ1.=по!Хсе -/чаг/1од/та11/1п^о
# Уровень предупреждений
та!!. =>гагп - /чаг/1од/та!1/иагп1пдз
# Уровень ошибок
та 11. етт ~/чаг/Ход/таХ1/ еггог 8
# Протоколирование демона стоп.
сгон. =йеЬид;стоп. =1пЕо;стоп. =поМсе -/уаг/Ход/стоп/ХпГо
сгоп’.^тгп -/чаг/Ход/сгоп/'ыагпХпдв
сгоп.егг ~/маг/Ход/стоп/еггогз
# Протоколирование ядра
кегп.=аеЬид;кегп.=1пГо;кегп.~поЫсе -7чат/Ход/кегле!/1п!о
кегп.=иагп кегп.егг -/чат/Ход/кегле!/иатптпдз ~/чаг/1од/кегпе1/егхогн
$ Очередь печати: сообщения уровня от "инфо" до "предупреждений*
1рг. 1п.Ео; 1рг, !етг ~/уаг/1од/1рг/1пЕо
# Протоколиронаше.. демонов: сообщения всех.уровней, кроме "инфо"
баетоп. =йеЬид;12аетоп.1 ~/уаг/1од/йаетопз
# Критические сообщения — всем тревога
*.етегд *
К Сохранять ошибки почты и новостей в отдельном файле
циср,певдз,сг1Ь -/чаг/фод/врооХег
# Загрузочные сообщения
1оса17 . *
~/уаг/1од/ЬооС,1од
9.3.2. Сетевое протоколирование
Протоколы — это история жизни системы; они необходимы админи-
стратору для выявления и устранения неполадок, но они необходимы и
злоумышленнику — для поиска уязвимости или для того, чтобы скрыть
следы своего вторжения. Поэтому иногда бывает полезно вести журнал
на другом, более безопасном, компьютере.
Протоколирование в сети — это перенаправление сообщений демону
5уз1оей, запущенному на другой машине локальной сети, где они будут
записаны в локальный файл. Таким образом, один демон яуя1ор;с1, пере-
дающий сообщения, выступает в роли клиента, а другой такой же, но
принимающий и сохраняющий их, — в роли сервера.
Сообщения передаются по протоколу ПОР. Он не обеспечивает ни га-
рантированной доставки пакетов, ни секретности, но работает несколько
быстрее, чем ТСР. Следующая строка должна присутствовать (в незаком-
ментированном виде!) в файлах /еГс/ЕегУ1сез обоих компьютеров:
зуе!од 514/ибр
Затем необходимо внести некоторые коррективы в файл конфигурадии.
На клиентской машине определите объекты протоколирования (селек-
торы), как и раньше, а в качестве действия укажите @имя_узла, где
имя_узла — имя компьютера, на который будут перенаправлены сообще-
ния. Это имя желательно указать в файле /есс/Ьо$Ьз, так как демон
зу$1о§<1 может быть запущен до сервера доменных имен или сервер
окажется недоступным.
На сервере протоколирования может быть необходимо перезапустить
с другим набором ключей. В Ней НаЬсовместимых системах 5ут.1ощ1
по умолчанию игнорирует сообщения из сети; для того, чтобы он начал их
принимать, он должен быть запущен с ключом -г (это верно для пакета
5у5к1о§<] версии 1.3 и новее. Ранние версии вели себя в точности наоборот).
Каждое сообщение в журнальном файле маркируется полным именем
узла, с которого оно поступило (с указанием домена). Чтобы на
сервере записывал только краткие имена узлов, нужно запустить его с
ключом “1 <список_узлов> или -з <список_доменов>. Узлы и домены
в списках нужно разделять двоеточиями,
9.3.3. Протоколирование ядра.
Демон к!од<1 и команда йтеед
Демон предназначен для перехвата и протоколирования сообщений
ядра Стих. Ядро, в отличие от пользовательского процесса, не может вы-
водить сообщения, пользуясь стандартной функцией 5ув1о§(): библиотека,
содержащая эту функцию, доступна только обычным приложениям. В
ядре есть свои средства вывода сообщений, приложениям недоступные.
Обработку этих сообщений и организует демон к1ощ1. Обычно эта обра-
ботка состоит в пересылке сообщений демону хотя к1о§с1 может
работать и самостоятельно.
Демон $у8|о§с! направляет сообщения ядра вперемешку с сообщениями от дру-
гих источников в общий журнальный файл (обычно /уаг 11од/тевнадей,
смотри / е&с/еуеХод . сопС), но ядро поддерживает и собственный
кольцевой буфер сообщений. Для просмотра текущего состояния этого
буфера предназначена команда бгое^. Ее вывод рекомендуется пропу-
скать через фильтр тоге Или 1ев8.
Анализ сообщений ядра может потребоваться для того, чтобы узнать,
поддерживает ли ваше ядро то или иное устройство или функцию. На-
пример, чтобы узнать, включена ли поддержка квотирования (п.7.2.3),
выполните команду
$ бтезд 1 дгер -1 фМ
Сообщения, которые ядро генерирует и сохраняет в буфере во время за-
грузки системы, направляются также в файл /уаг/Тод/йтаезд (в не Неб
На!-совместимых системах этот файл может называться /уаг/1од/Ьоог .
твд). По окончании загрузки этот файл закрывается и его содержимое
становится доступно для просмотра и анализа.
9.3.4. Что делать с протоколами дальше?
Утилита 1одго1а1е
Журнальные файлы разрастаются быстро, и рано или поздно с ними
приходится что-то делать: сжимать, архивировать или просто удалять. В
дистрибутивах линии Неб На! и ОеЫап для управления журналами — не
только системы но и любых прикладных программ, — предназна-
йена утилита 1(щгоШе. Она устанавливается из пакета 1о$гоШе вместе с
примерным конфигурационным файлом и сценарием, обеспечивающим
ее периодический запуск (п.9.4). В результате установки этого пакета
сценарий 1оЕго(:Пе попадает в каталог /еСс/сгоп.даНу.
Как следует из названия утилиты 1о^го1а1е, ее основное занятие — это
ротация журнальных файлов. Ротация — это последовательное пере-
именование предыдущих версий журналов
(та! Под . 2 в та!Под. 3 , т$ф110д. 1 В та!Цод. 2 , та! 11 од в
шаШод. 1) и создание нового пустого журнального файла (таШод)
для записи последующих сообщений. Ротация производится либо по ис-
течении указанного времени, либо по превышении журнальным файлом
указанного размера.
Список журналов, подлежащих обработке утилитой 1о^гоСа1е, и инструк-
ции по обработке определяются конфигурационными файлами, имена
которых в любом количестве передаются как аргументы при вызове
утилиты (см. пип Ходгоьаье), Директивы последующих конфигураци-
онных файлов перекрывают директивы предыдущих, так что порядок
имеет значение. Традиционно используется один файл /еСс/1одгоСаСе.
соп! , а инструкции для дополнительных журналов включаются в него
при помощи директивы шс1ш1е.
Листинг 9.5. Примерный конфигурационный файл /еГс/1одгоГзШ,согй
# Секция глобальных параи<е®р0.В —
# инструкции для всех журналов
# Расписание ротации-, еженедельно.
# Возможны варианты: <!а!1у, йюпЬЫу,
# 512е <байт> — по достижении файлом указанного размера
меек!у
# Сохранять 4 предыдущих журнала
гоСаСе 4
# После ротации создавать новый пустой журнальный файл
сгеаСе
# Сохранять старые журналы в сжатом виде (по умолчанию -
# при помощи дг!р, директива сотртевзстс! позволяет указать
" другую программу для сжатия)
сотруезв
# В каталог /еСс! 1одго!.аЬе . б прикладные программы помещают
# инструкции по управлению их собственными журналами.
# Директива ХпсХийе <каталог> требует включить все файлы,
# содержащиеся в этом каталоге.
1пс1ийе /е!с/1одгоса!е.А
# Секция локальных параметров - инструкции для
# перечисленных в ней журналов
/уаг/1од/иСтр /уаг./1од/1азС1од {
товРЫу
стеаЬе 0664 гоог иСтр
гоСаСе 1
}
9.4. Выполнение заданий по расписанию
Пользователи ОС \У1пс1о\\;5 привыкли к тому, что существует Мастер
планирования заданий, позволяющий автоматически запускать при-
ложения в заранее назначенное время. В 1Л41Х-подобных ОС есть еще
более мощный и гибкий диспетчер расписаний. Его удобно использовать
для автоматизации обслуживания системы и выполнения других задач,
не требующих взаимодействия с пользователем. Например, в нерабочее
время можно автоматически выполнять резервное копирование данных
или обновление системы через Интернет.
Создавать расписания и ставить задания в очередь на выполнение имеют
право все, кому это явно не запрещено суперпользователем.
Сердцем системы периодического выполнения служат демоны а1б и сгоп
(в КеЦ Нарсовместимых дистрибутивах он называется сгошГ).
9.4.1. Запуск задания
в назначенное время: команда а*
Демон а1<1 обслуживает задания, назначенные для однократного выпол-
нения либо в установленное время, либо тогда, когда нагрузка на систему
снизится до приемлемого уровня.
Для постановки задания в очередь для выполнения в указанное время
служит команда аг.
аС [-Г <файл>) ЧЧ:ММ
Файл — это исполняемый файл либо сценарий командного интерпре-
татора. Если он не указан, то вы должны будете вводить команды в
командной строке, завершая ввод, как обычно, нажатием комбинации
клавиш СгН+О.
Команда а1 допускает и более сложные спецификации времени, чем
ЧЧ:ММ; вы можете указать дату или такое время, как пнс1пщ1П, пооп или
1еаНте. Подробности вы найдете на шап-странице команды а1.
Команда аЦ служит для просмотра очереди заданий. Для непривилеги-
рованного пользователя она выводит задания, поставленные в очередь
им, а для суперпользователя — всезадания. Удалить задание из очереди
вы можете командой а1гш.
Команда Ьа1сЬ используется для тех заданий, которые заведомо потре-
буют много процессорного времени. Задание, поставленное в очередь
при помощи этой команды, начинает выполняться только тогда, когда
нагрузка на систему (среднее число процессов, ожидающих выделения
им кванта времени) снизится до заранее установленного значения (по
умолчанию 0.8; подробности — тай ас<3).
Очередь заданий находится в каталоге /уаг/зроо1/аЬ. Файлы /е^с/
ас . а11о« и /еСс/ар. делу содержат списки тех пользователей, которым
разрешено и запрещено пользоваться системой аС.
9.4.2. Диспетчер расписаний — демон сгоп
Этот демон запускается во время инициализации системы (сценарий / ее с /
1П1С. сЪ'сгопа), читает свои конфигурационные файлы и переходит в режим
ожидания. Раз в минуту демон просыпаегся, проверяет дату последнего из-
менения конфигурационных файлов, перечитывает те из них, которые ока-
зались изменены, и выполняет задания, назначенные на данную минуту.
В конфигурационных файлах, называемых еще сгоШаЬ-файлами, хранятся
расписания: в каталоге /уаг/вроо1/сгоп — по одному на зарегистриро-
ванного пользователя и — суперпользовательский. Вы-
полнив задание, демон стоп отправляет почтовое сообщение о результатах
выполнения владельцу стоп1аЬ-файла или пользователю, указанному в
переменной МАШГО этого файла.
Управление файлами расписаний
Пользовательские сгогПаЬ-файлы не предназначены для ручного редак-
тирования. Для управления ими служит команда сгогНаЬ. Список тех,
кому разрешено ее запускать, находится в файле /еЬс/сгоп . а11ом.
Если этот файл отсутствует, то запускать сгоп1аЬ могут все, кроме тех,
кто перечислен в файле /еСс/сгоп. йену. Если отсутствуют оба файла,
то запускать команду может только суперпользователь.
Формат команды:
сгопСаЬ {-и <логин_„имя> ] [ <файл> I 1-1] 1 [-г] | [-е] I [~1]1
Если указан файл, то этим файлом замещается сгогНаЬ-файл указанного
пользователя; если нет, то сгопГаЬ-файл редактируется на месте. Ключи
означают следующее:
♦ -I — вывести на консоль содержимое файла расписания;
• -г — удалить файл расписания;
• Ч — удалить, предварительно переспросив;
♦ -е— редактировать файл расписания, то есть открыть его в
редакторе, указанном в переменной окружения 5ЕО1ТОК. (по
умолчанию — VI).
Если не указаны ни файл, ни ключи, то сгопСаЬ будет читать файл рас-
писания со своего стандартного ввода. Закончив ввод строк, нажмите
(Гг! + П.
Формат файла расписания
Каждая незакомментированная строка файла расписания имеет следу-
ющий формат:
минута час день месяц день_недели [логин_имя] команда
Поля спецификации времени могут содержать:
♦ символ *, соответствующий любому значению;
♦ число: 0-59 для минуты, 0-23 для часа, 1-31 для дня, 1-12 для месяца,
0-7 для дня недели (воскресенье — это и 0, и 7);
♦ диапазон чисел, разделенных дефисом: например, 1-5 в поде день не-
дели означает «с понедельника по пятницу»;
• числа или диапазоны, разделенные запятыми, действующими как
ИЛИ.
Поля «день месяца» и «день недели» тоже объединяются как ИЛИ: за-
дание будет выполнено в день, удовлетворяющий хотя бы одной из этих
спецификаций.
Команда — это любая командная строка, допустимая правилами интер-
претатора 8Й.
Например, следующая запись означает, что архивирование каталога
/’пюпе/йеп будет производиться каждый день, кроме воскресенья, в семь
часов утра:
07 * * 1-6 Саг сГг /Ьаскир/Ьоте.йеп.дг /Ъоте/йеп
В дистрибутивы Ьлпих обычно входит готовый системный файл расписа-
ний /есс/сгопСаЬ и сценарии для выполнения стандартных задач по
обслуживанию системы (ротации журналов, ведения базы установленных
пакетов программ и т.п.), размещенные в каталогах /еСс/сгрп.Иоиг1у,
/еСс/сгои.даНу, /еСс/сгоп .иеек1у и /еЬе/сгоп .пгапКЫу. Дирек-
тива гип-раш в файле /еСс/сгопсаЬ указывает, что следует выполнить
все исполняемые файлы из указанного каталога.
Глава 10
РЕЗЕРВНОЕ
КОПИРОВАНИЕ И
ВОССТАНОВЛЕНИЕ
ДАННЫХ
СТРАТЕГИЯ РЕЗЕРВНОГО
КОПИРОВАНИЯ
ОБОРУДОВАНИЕ
ДЛЯ РЕЗЕРВНОГО КОПИРОВАНИЯ
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
ДЛЯ РЕЗЕРВНОГО КОПИРОВАНИЯ
ДУБЛИРОВАНИЕ ДАННЫХ:
ВВЕДЕНИЕ В РАЮ
КАК НАЙТИ, СПРЯТАТЬ
И БЕЗВОЗВРАТНО
УНИЧТОЖИТЬ ДАННЫЕ
имих ПОЛНОЕ РУКОВОДСТВО
В обязанности системного администратора входит обеспечение сохран-
ности пользовательских данных. Потерять данные легко: их уничтожают
ошибки в программном обеспечении, сбои оборудования, сами невни-
мательные пользователи. В случае домашнего компьютера разгильдяй-
пользователь, теряющий данные, и несчастный системный администратор,
которому приходится их восстанавливать, это обычно одно и то же лицо,
но тем важнее уметь их восстановить. Пенять-то не на кого.
В этой главе я сначала рассмотрю способы вернуть случайно удаленный
файл, а потом остановлюсь на принципах и средствах резервного копи-
рования информации.
10.1. Восстановление удаленного файла
Из второй главы вы узнали, что файл на файловой системе ех12 (и ех!3)
представляет собой индексный дескриптор (/яо/е), указывающий на бло-
ки, в которых и размещаются данные. Содержимое блоков удаленного
файла не исчезает сразу: эти блоки помечаются как свободные и отводятся
для размещения других файлов по мере необходимости в свободном месте.
Если файловая система используется не слишком интенсивно, блоки будут
перезаписаны нескоро, и данные еще можно восстановить.
Первым делом размонтируйте раздел, содержавший удаленный файл. Это
нужно для того, чтобы предотвратить перезапись его блоков во время
попыток восстановления.
Если размонтировать файловую систему не удается (вы получили сообще-
ние «йехчсе 18 Ьпху»), то проверьте, какие процессы к ней обращаются, и
прервите их. Это можно сделать с помощью команды
Ёизег ~т <файловая_система>
Если удаленный файл находился на корневой файловой системе, то ее
размонтировать нельзя. Вам придется выключить компьютер, извлечь
жесткий диск и заняться восстановлением файла на другой 1лпих-машине.
Отсюда мораль: при установке Ыпих разбивайте жесткий диск так, чтобы
файловые системы /ивг, /уаг и особенно /Иоте (те, в которых данные
меняются чаше всего) размещались на отдельных разделах.
1лпих — тщательно документированная система, и пути решения рас-
пространенных проблем описываются в документах 1104'1'0. Восстанов-
лению файлов посвящено руководство и™. ь 1йр. огд/нокто/ Ехс2 Гв-
ипаейеЫоп.ЪЬга! (его русский перевод можно найти, например, на
ЬЬСр : //11пнх.УхСеЬек-Ьу/Нои'С.о/Ехс2Гя-ипйе1еС1оп. ЪЫп!).
Для восстановления файлов на файловой системе ех12 (не ех13!) разра-
ботана утилита е2ипйе1 (1г.г.р: //е2ипсНО . зонгсе^огде С ней
вы разберетесь сами, а сейчас я скажу пару слов о средствах, входящих
в состав обыкновенного дистрибутива.
10 .1.1. М‘|с1п1дЫ Соттапс1ег
Любимый многими файловый менеджер тс имеет в своем составе сред-
ство восстановления файлов, которое иногда может помочь. Запустите
тс от имени суперпользователя. Выполните команду меню Команда
Восстановление файлов. Затем введите имя файла устройства, на котором
находится нужный раздел, без /аеV: например, Ма4. Через некоторое
время МИпщ1й Соттапйег представит вам список удаленных индексных
дескрипторов. Если вы не знаете номер [-узла удаленного файла, вам при-
дется просмотреть их все, чтобы найти нужный вам файл. Но гарантии
того, что вы его найдете, нет никакой,
10 .1.2. Утилита ^вЬид^з
Эта утилита входит в состав пакета е2Й5рго§8 и служит для интерактивного
исследования и изменения состояния файловых систем типа ехг2 и ех|3.
Порядок ваших действий будет следующим:
1. Размонтируйте файловую систему с удаленным файлом.
2. Откройте ее в режиме «только чтение»:
беЬидГн <файл_устройстэа>.
3. В ответ на приглашение введите подкоманду 1ь<1е1, чтобы получить
список удаленных 1-узлов. Попытайтесь определить свой файл по
атрибутам: владельцу, размеру, дате удаления и т.п.
4. Сохраните содержимое 1-узла в файл на другой файловой си-
стеме, введя подкоманду <3итр <1пос1е> имя_нового_файла.
Номер 1-узла указывайте в угловых скобках!
5. Выйдите по подкоманде цнй.
Список остальных подкоманд Не1нщГ$ вы можете получить по подкоманде
Ье1р или узнать на тап-странипе.
10.2. Стратегия резервного копирования
Чтобы героически спасать файлы приходилось не слишком часто, следует
заранее позаботиться об их надежной защите. Важнейшим средством
защиты является резервное копирование.
Вам нужно хорошо продумать следующие пункты:
1. Какая информация будет резервироваться (архивироваться)?
В первую очередь вам нужно архивировать данные пользователей, то
есть каталог /Иоте. Эти данные относятся к наиболее критичной кате-
гории данных. Восстановить систему вы сможете в течение не более чем
двух-трех часов, а вот данные пользователей уже не восстановишь...
На втором месте — файлы настройки системы, находящиеся в ката-
логе /еСс. Архивирование этих данных позволит существенно сэко-
номить время, которое вам потребуется на восстановление системы
после сбоя.
И, наконец, на третьем месте — дистрибутивы программ, не входящих
в состав дистрибутива Еших. Эти данные, как правило, не нуждаются
в частом обновлении.
2. Когда будет происходить создание резервных копий?
Самое удачное время для этого мероприятия — ночь. Во-первых,
архивирование обычно не требует вмешательства оператора и по-
этому его можно выполнять автоматически (п.9,4.2). Во-вторых, оно
создает дополнительную нагрузку на систему, чему не обрадуются
пользователи. В-третьих, открытые этими пользователями файлы
создадут при копировании массу проблем.
3. Кто этим будет заниматься?
Если речь идет о вашем домашнем компьютере, то этой ответствен-
ной задачей будете заниматься вы сами. На предприятии (особенно
большом) необходимо определить, кто будет архивировать данные с
каждого сервера сети: не будете же вы бегать по зданию со стриме-
ром, контролируя процесс создания резервных копий? В идеале, за
каждым сервером должен быть закреплен человек, ответственный за
процесс создания архива и поддержания его в должном состоянии.
4. Как часто будет производиться архивирование?
Дома можно архивировать диск еженедельно и после обширных из-
менений. На предприятии зарекомендовала себя шестидневная схема.
Вам понадобится шесть сменных носителей (кассет для стримера или
магнитооптических дисков). В пятницу, после конца рабочей недели,
создается резервная копия всего диска на первой ден ге. С понедель-
ника по четверг архивируются только новые и обновленные данные
(каждый день — на свою ленту), и в следующую пятницу создается
новая копия всего диска на шестую ленту. Таким образом, всегда
можно восстановить данные на любой день последней недели.
Архивирование только новых данных обычно называется инкрементным.
Отбирать файлы, дата последнего изменения которых свежее заданной,
умеет архиватор 1аг (см. тап-странйцу).
10.3. Оборудование
для резервного копирования
При выборе стратегии резервного копирования решающим фактором
может оказаться соотношение размера диска и емкости имеющихся у вас
внешних носителей. Привычные диски СО-КХУ вмещают всего 640 Мбайт,
поэтому резервирование сколько-нибудь значительного объема данных
нельзя организовать автоматически: кто-то должен менять диски вруч-
ную. Вот почему стоит обратить внимание на стримеры, позволяющие
сохранять от 10 до 100 Гбайт сжатой информации на одном картридже.
К тому же 1'МХ-прсяраммы резервного копирования создавались в те
времена, когда ленточные накопители были единственным типом внеш-
него хранилища, и идеально приспособлены к работе с ними.
10.3.1. Стример
!.лпих, как и любая СМХ-система, обладает богатыми возможностями
по созданию и сопровождению резервных копий с помощью стримеров.
Стример — это потоковый накопитель на магнитной ленте. Стримеры
работают в безостановочном режиме, обеспечивают запись и считывание
данных с ленты сплошным потоком.
Существует два типа стримеров; стримеры, использующие интерфейс
8С81, и стримеры, использующие интерфейс РОС. Первые из них до-
вольно дороги, что объясняется дороговизной самого контроллера 8С51.
Хотя в последнее время наблюдается снижение цен на контроллеры и
устройства $С81. Эти стримеры подключаются к шине 8С81.
Второй тип, использующий интерфейс РОС, подключается к контроллеру
гибких дисков. Это более дешевый и медленный вариант, и поэтому, если
вы собираетесь использовать стример в профессиональных целях, лучше
приобрести стример с интерфейсом 8С51. Второй тип более подходит для
домашнего применения.
Основным преимуществом стримеров является их низкая стоимость, но
у них есть ряд недостатков:
* с ними не так удобно работать, как с жестким или магнитооптическим
дискам;
♦ скорость передачи данных низка (хотя к дорогим стримерам с интер-
фейсом 8С81 это не относится).
Подключение стримера с интерфейсом 5С51
ОС Ыпих поддерживает все возможные стримеры с интерфейсом 5С5Е
Это объясняется интеллектуальностью контроллера 8С8Е Вы также
можете использовать интерфейс ЕОИ (Ео$1са1 УпИ МитЬег), который
является расширением интерфейса 8С81, для подключения стримера с
автоматической заменой ленты.
Для подключения стримера вам потребуется перекомпилировать ядро
системы (глава 20), включив опцию 8С81 Таре 8аррог1 Также вам нужно
установить тип контроллера 8С81 в подразделе 8С81 Еои-Еетс! дптегв.
Возможно» нужно будет включить режим РгоЬе аП ПЖ он еасЬ бегке
После перезагрузки в вашей системе появится устройство / <3е>у/яг_ 0.
Подключение стримера с интерфейсом РОС
В зависимости от типа вашего стримера вам нужно включить опцию
01 С-02 Гаре шррогГ или Паре (О1С-80/Тгаичш) лиррогГ. О том, какую из
этих опций нужно использовать, вы можете прочитать в документации,
поставляемой со стримером. Эти опции находятся в разделе СЬагасГег
(1езтсе8. После перезагрузки должно появиться устройство /беу/пгГГО.
10.3.2. Магнитооптический диск
Я решил написать этот параграф в силу большой распространенности
магнитооптических дисков. Первые магнитооптические диски подклю-
чались к контроллеру 8С81, что не способствовало их широкому рас-
пространению из-за довольно высокой стоимости. После выпуска первых
устройств с интерфейсом ГОЕ цены на магнитооптические устройства
значительно снизились.
Подключение магнитооптического привода подобно подключению
жесткого диска. При этом следует помнить простое правило: не нужно
подключать к одной шине магнитооптический привод и жесткий диск.
Логика проста: магнитооптические диски обладают довольно низкой
п роизводительностью по сравнению с жестким диском, и использование
двух этих устройств на одной шине снизит общую производительность
дисковой подсистемы.
После подключения не забудьте выполнить процедуру АЦТООЕТЕСТ
для данного устройства. ОС Еших определит магнитооптический привод
как обыкновенный жесткий диск с интерфейсом ГОЕ. Если вы поспешили
и, запустив чтобы полюбоваться новой буквой в списке доступ-
ных дисков, отформатировали ваш магнитооптический диск, то, скорее
всего, в Ь1пих он будет работать некорректно. Для обеспечения нормаль-
ной работы магнитооптического привода в Ыпих запустите/(Ияк для 1лпих
и удалите все разделы, которые создала Мпботе. Затем создайте один
первичный раздел и командой I измените его тип на ЕАТ32.
Хочу отметить, что ЕАТ32 может работать довольно медленно, но позво-
лит сэкономить около 80 Мб дискового пространства при использовании
магнитооптического диска размером 640 Мб.
10.4. Программное обеспечение
для резервного копирования
10.4.1. Простое резервное копирование по сети
Простейший способ сохранить каталог со своими данными — это пере-
кинуть его по сети на другой компьютер. Утилита вер (Зесиге Сору) по-
зволяет копировать каталоги в защищенном зашифрованном виде не
только в пределах локальной сети, но и по Интернету. Например, вы
можете скопировать свои данные с рабочей машины на домашнюю (чаще
наоборот, потому что компьютер назначения должен быть, разумеется,
включен и подключен к сети).
Утилита яср служит клиентом демона 88Й<1 (п. 11.3.2), который должен
быть запущен на компьютере назначения. Она устанавливается из того
же пакета Ореп$8Н.
Чтобы скопировать каталог /Иоте/аеп/гпуиогк с узла загакзб в свой
домашний каталог на узле дйййаЪк, введите следующую команду:
[аепйзагакаИ-] $ вер -г туетогк дйвИаЬв:/Ьоте/йеп
Ключ -г указывает, что нужно рекурсивно копировать подкаталоги.
Вместо имени узла бйнйаЬх можно (или нужно, если это имя неизвестно
в службе ЭХ8) использовать ТР-адрес.
Если защищенность ваших данных в процессе передачи для вас не так важна,
как способность инструмента отличать «свежие» файлы и копировать толь-
ко их, пользуйтесь утилитой гяупс. Она должна быть установлена на обоих
компьютерах — локальном и удаленном. Чтобы скопировать с узла бЫ1аЬ$
только те файлы каталога туиогк, которые были обновлены с момента по-
следнего запуска гяупс, за вычетом подкаталога Ьаскир, введите команду;
1. йеп^затакак-] $ гзупс ~-ехс1ийе™Ьаскир \
йкзЫаЪз: /Иоте/йепЛпуногк /коте/йеп
Ключ -г сжимает передаваемые данные. Утилита гзупс не шифрует
данных, но предоставляет возможность подключить для шифрования
оболочку «Ь.
10.4.2. Управление стримером
Управление стримером выполняет программа пН. Она входит в состав
пакета тс-ве, который обычно входит в состав дистрибутива (в дис-
трибутивах, основанных на Кеб На1, он присутствует), Программа т(
использует устройство /беу/пГеаре, которое является символической
ссылкой на /беу/пг-ЕСО. Если вы используете стример с интерфейсом
$С51, вам нужно сделать его ссылкой на /йеу/зСО.
После подключения стримера необходимо подготовить ленту к работе.
Вся подготовка состоит из перетяжки ленты и ее форматирования. При
перетяжке с поверхности пленки снимаются статические заряды. Пере-
тяжку можно выполнить командой:
$ тС-вС -Е /беу/пЕЬаре гесепзхоп
А вот форматирование вам придется выполнять с помощью программы
для 008, которая поставляется со стримером. Можно, конечно, исполь-
зовать и другие программы. Стабильно работают Соппег Васкнр Вав1с8,
8'ог(оп Васкнр, а также <ДС$1геат. По завершении этого процесса тре-
буется инициализировать ленту:
$ тС-вС -Е /бёу/пЕСаре егаве
Вот теперь можно приступать к архивации данных. Например, если вы
хотите записать на ленту содержимое своего домашнего каталога, вы
можете использовать следующую команду:
$ Саг Меу/пЕсаре /Иоте/беп
Здесь я использовал команду 1аг, которая изначально предназначалась
для работы с лентой (это видно из ее названия — Таре Аг<Мие). Ключ
2 указывает программе Гаг на необходимость сжать данные. Для записи
без сжатия достаточно ключей сС. Для восстановления архива с ленты вы
можете использовать команду
$ Саг хЕа /йеч/пЕСаре
Если бы не сжимали данные, то разархивируйте их с ключами хЕ.
Проверить целостность архива на ленте можно с помощью команды
$ Саг /йет/пЕСаре
Чтобы разместить на одной ленте два или более архивов Гаг. вам пона-
добятся средства позиционирования головки и перемотки ленты. Это
делается при помощи программы ш1. Например, перемотать ленту на две
отметки начала файла в формате 1аг вперед можно таким образом:
$ пн -Г /с!еу/пйаре ГбГ 2
Для перемотки назад вместо операции (кТ нужно использовать операцию
ЬчГ Список операций команды пй вы можете найти на тап-странице, а
в таблице ЮЛ приведены чаще всего употребляемые.
Таблица 10.1
Операции программы т1
Операция Назначение
ео<1 Перемогать ленту к концу записанных данных. Применяется для дозаписи файлов на ленту
ео1 Записать метку конца файла в текущую позицию
егазе Стереть ленгу
гздлЛпд Переметать ренту к началу
ге1еп5юл Несколько раз промотать ленту, чтобы снять статические заряды
оЖпз Перемотать ленту к началуй извлечь из накопителя
Ы <число> Перемотать ленту на <число> файлов вперед
ЬкТ <ЧИСЛО Перемогать ленту на <число> файлов назад
акт < номер > Перемотать ленту К началу файла с указанным номером
10.4.3. Команды (Литр и гез1оге
Пара утилит — йитр и гевЮге — это самое распространенное средство
резервирования и восстановления данных в С№1Х-сисгемах. Они обслу-
живают файловую систему ех!2 (ех13),то есть для архивирования ваших
\У!п<Зоу78-разделов их использовать не удастся. Эти утилиты входят в
состав пакета бшпр, который в дистрибутивах Неб Н;И устанавливается
по умолчанию; если в вашем дистрибутиве этого пакета нет, то скачайте
его с ЬсСр: I Митр. зоигсеГогде.пеЬ.
Программа битр позволяет организовать инкрементное резервирование,
сжимать полученный архив и разбивать его на тома, когда его размер
превышает емкость внешнего носителя. Формат вызова:
йитр [-уровень] [ключи] список„фа.йлов
Номер уровня — это средство, при помощи которого программа скппр
выполняет инкрементное архивирование. Исторически использовались
номера от 0 до 9, Ьщих-версия программы понимает любое целое число.
Уровень 0 соответствует полному копированию всей файловой системы.
Уровень И архивирует только те файлы, которые изменились с момента
создания последнего архива уровня ниже 14. Уровень архива и время его
создания отмечаются в файле /®1с/витрааСез, если команда битр за-
пущена с ключом -и.
В качестве списка файлов можно указывать не только файлы и каталоги
на смонтированных файловых системах, но и файл устройства, на котором
находится файловая система, в данный момент размонтированная. Един-
ственное ограничение — такую файловую систему можно архивировать
только полностью (уровень 0).
Полный список ключей команды бшпр вы найдете на ее гпап-сгранице.
Вот наиболее важные из них:
* -С <файлы>— список имен файлов, разделенный запятыми. Тома
многотомного архива выводятся в указанные файлы в порядке их
перечисления. Это могут быть файлы на диске, файлы устройств,
стандартный вывод (символ «-»);
♦ -и — после успешного архивирования отметить дату и уровень в файле
/еСс/ди.трйаСев;
♦ -афуровень сжатия] — сжимать выводимый архив средствами библи-
отеки гНЬ. Значение уровня сжатия по умолчанию равно 2; другой
уровень нужно указывать без пробела.
Программа геяГоге восстанавливает отдельные файлы и файловые систе-
мы, архивированные программой йишр Формат команды:
гевСоге [режим] [кличи]
Важнейших режимов два:
• -I — интерактивное восстановление отдельных файлов и каталогов.
Подкоманды этого режима (список которых можно получить по
подкоманде Ье1р) позволяют перемещаться по архиву, оглавление
которого прочитано с ленты, как по обычному дереву каталогов, и
выбирать файлы для восстановления. Выбранный файл добавляется
в список восстановления подкомандой ас!с1. Список восстановления
извлекается с ленты подкомандой ехГгасЕ
♦ -г — полное восстановление файловой системы. Пострадавшую
файловую систему нужно сначала отформатировать командой шкГя
(п.2.3), смонтировать и переместиться в ее корневой каталог. Потом
восстановить с ленты архив уровня 0, а потом — все инкрементные
архивы в порядке возрастания номера уровня.
10.4.4. Архиватор ерю
ОХП-версия этого классического архиватора (Сору 1п!Ои1), используе-
мая в 1лпих, поддерживает архивы как в собственном формате, так и в
формате 1аг. Программа ерю может работать в одном из трех режимов в
зависимости от первого ключа:
♦ ср1о -о [ключи] < список„файлов > архив : режимсору-®и1,
копирование файлов в архив. Список файлов, по одному в строке,
подается на стандартный ввод программы; в архив перенаправляется
поток стандартною вывода, В качестве архива можно указывать файл
на диске, файл устройства магнитной ленты или канал: например,
можно пропустить вывод через какую-нибудь программу сжатия.
Список файлов можно подготовить вручную, а можно использовать
поток вывода другой программы, например, 1 в -1 (с ключом «де-
фис-единица», выводящим файлы по одному в строке) или ГшЙ,
♦ ср!о ~1 [ключи] (шаблоны) < архив : режим соручп, извлече-
ние файлов из архива или вывод содержания архива. Архив читается
из стандартною потока ввода. Извлечению подлежат только те файлы,
имена которых удовлетворяют одному из шаблонов, перечисленных
через пробел; если шаблоны не указаны, то извлекаются все файлы.
Внимание: символы подстановки не совпадают с теми, которые исполь-
зует оболочка. Символу «.» удовлетворяет любая подстрока в начале
образца, а символу «/» в имени файла — любой набор символов.
♦ срто -р [ключи] каталог^назначения < список_файлов :
режим срру-раи, копирование дерева каталогов.
О ключах команды ерю можно узнать из ее тап-страницы. Приведу не-
сколько примеров ее использования.
Архивирование в формате (аг под именем агсЫче . Саг файлов, имена
которых вы вводите в командной строке:
$ ср!о -о -Н Ьаг -О агаЫдге.Саг
/орс/сСг1/сбг1. с
/орс /сСг1/сСг'1 .И
/орс/сСг1/сг.г.1. .ИЬт1
ЛР
$
Архивный файл будет создан с сохранением структуры каталогов. Чтобы
убедиться в этом, запустите файловый менеджер тс и просмотрите со-
держимое архива агсЫче. Саг.
Архивирование текущего каталога с использованием перенаправления
вывода команды 1з:
$ 1з -1 I ср!о -о “И саг ~0 сиггер,г_й1г. Саг
Извлечение файлов из архива:
$ ерзо -1 < сиггепС_<Я1г. Саг
В режиме сору-т ключ формата «-Н саг» указывать необязательно,
потому что программа ерго автоматически определяет формат входного
архива.
Просмотр содержимого архива на магнитной ленте:
$ ср.1о -1 -I < /йеу/пЕЬаре
10.4.5. Программа АМАМ О А
Этот параграф я помещаю здесь, так сказать, «на вырост». Администра-
тору домашней сети он вряд ли пригодится.
Программа АМА Ж.) А (Тке А&апсес} Магу1апс1 АиютаИс МеНх’огк Люк
АгсИгиег) — это система резервного копирования, которая позволяет
администратору локальной сети установить один главный бэкап-сервер
для резервного копирования множества узлов локальной сети. При этом
вам не придется подходить к каждому компьютеру, чтобы сделать ре-
зервную копию. АМАЖЭА использует стандартные программы Литр и
1аг, поэтому вы можете выполнить резервное копирование большинства
ГЖХстаншш. Последние версии программы позволяют выполнять ре-
зервное копирование рабочих станций М8 \У1п9х/ХТ, но для этого нужно
установить пакет 8АМВА.
Скачать программу вы можете с сайта разработчика кии.атапба.отд.
Вам потребуются 3 пакета: атапба, атапба-сКепГ, атапба-кегуег. Первый
пакет устанавливается как на сервере, так и на клиенте: второй пакет —
только на клиенте, а третий — только на сервере.
Я рекомендую загрузить самую последнюю версию. Как правило, самые
новые версии распространяются не в виде КРМ-паксга, а в виде так на-
зываемого тарболла — файла с расширением 1аг.§г. Распаковав архивы,
выполните команду:
$ ./сопЕтдиге ~~ЖЬИ-СОпЕ1д=пеи*гагк --ЖТЪ-изег-атапба
--юЛИ-дгоир=0регасог
Опции мИй-вкег и УЙ1й-§гоир указывать обязательно, Желательно перед
выполнением данной команды создать пользователя атапба и поместить
его в группу орегасог. Название нашей конфигурации — пептогк. Так
же будет называться каталог с резервными копиями.
Если вы планируете делать резервное копирование с ХУшбоуге-машины,
нужно добавить опцию Г-ЖзтЬс! 1епт. = /раЬИ/То/ктЬс11епС.
Обратите внимание на то, что:
• На клиенте сначала нужно установить пакет атапба, затем —
агпапба-сНеШ. На сервере вместо пакета атапба-сНеш нужно устано-
вить пакет ашапба-кегуег.
• Пользователя атапба нужно добавить на всех машинах сети, с кото-
рых предполагается архивирование данных.
После успешного завершения программы сопИдиге введите команды
таке и тако хпвСаИ.
Основными конфигурационными файлами АМАЫП’ы служат /еСс/
агаапйа/атапйа.соп^ и /еЬе/ащй;ПЙа/с118к1±БС. В этих файлах на-
ходится информация о стримере, о разделах, которые вы хотите резер-
вировать, а также другая важная для АМАЖУы информация. Пока
воспользуемся файлами по умолчанию. Откройте их и измените только
специфические для вашей сети параметры.
В файле сИнкИзС нужно прописать имена узлов сети, которые вы хотите
архивировать. При этом лучше прописывать 1Р-адреса, поскольку некото-
рые версии АМАЛП’ы иногда не могут преобразовать имя узла в 1Р-адрес
(почему — сам не знаю, ведь все должно работать через ЬЫЗ).
Теперь приступим к настройке узлов, резервную копию которых вам
нужно создать. Если эти узлы используют устаревший суперсервер ше1й,
в файл /еСс/±пеЫгсопГ нужно .добавить такие строки:
агаапйа бдгагп ийр агпапба ./иаТ'/ЦЬехес/апипбаЙ атапдад
агаапйаАйх зЫеат Ьср псадазХ агвапйа /изг/НЬехес/атАпдехй агл.и1йехй
атАс&Саре вьгегап сер понаАС атай^-../изг/11Ьехес/а1Ш..йх1:арей акДйхГареЗ
Если же используется суперсервер хшсЧф то в файл /еРс/хАпеЫ. сап Г
нужно добавить следующие строки:
Листинг 10.1. Конфигурирование службы АМАЫОА
зегмАсе атапйа
(
ргогосо! = цйр
воскеС_Суре = йдгат
маАс = по
иаег = атапйа
эегмег = /изг/ААЬехее/атапйай
1од„оп,ДаПиТе 4-= иЗЕНХП
)
зесуАсе атапДаАЙХ
{
ргоСосо! = Гер
зоскег_.Суре = зСгеат
маг г = по
изег = атапйа
зегмег = /инг / НЬехес/а.тАпдехй
1ор_.оп|_Аа11иге += □ ЙЕН 19
}
зегмАсе атАйхГаре
{
ргоСосо! ~ Сер
зоскеС„Суре = еТгеат
иак = по
изег = атапйа
зезтсег = /изг/11Ьехес/агс1йхЬарей
1од_0П_ГаИиге += ПЗЕЙ1О
}
Затем в файл /еСс/ . гЪозЬа нужно добавить строку:
192,168.0.1 атапДа
Чтобы изменения вступили в силу, желательно перезагрузить компью-
тер или перейти на первый уровень выполнения и обратно по команде
1е1нн1.
Теперь нужно пометить кассеты стримера. Это позволяет сделать команда
ап11пЬе1. Зарегистрируйтесь как суперпользователь, вставьте в стример
первую пленку и введите команду:
# атпапйа -с "алЦаЬе! пеГ:иогк Саре!"
Здесь «петогк» — это имя конфшурации, заданное в файле атап<1а. сои Е,
а «1аре1» — это метка вашей пленки. АМАХИА запишет имя пленки
в список пленок, поэтому у вас никогда не будет двух кассет с одной
меткой.
Вам больше не нужна какая-нибудь лента? Для ее удаления из списка
введите команду:
# атапда -с "аттшСаре пеТлтогк Саре!"
Команда атсНеск позволяет проверить созданную вами конфигурацию
и сообщить о возможных ошибках:
# атапсЗа -с "амсИеск пеСвдогк"
Вот теперь можно приступить к резервному копированию. Введите ко-
манду:
# атапйа -с "атОишр пеГлгагк" &
Архивирование данных по сети обычно занимает много времени, поэтому
его следует запускать в фоновом режиме. Чтобы узнать состояние про-
цесса архивирования, введите команду:
# аглапйа -с "ашвЬаЕив песиогк"
Если у вас возникла необходимость восстановить какую-нибудь рабочую
станцию, зарегистрируйтесь на ней как суперпользователь, перейдите в
корневой каталог и введите команду:
# атапба -с "атгееСоге песмотк"
Программа атгезНэге соединится с сервером кассет. В ответ на пригла-
шение сервера введите:
кеГсИак абОЕ
После этого вы сможете просматривать файлы и каталоги резервной ко-
пии так же, как при работе с РТР-сервером. Если вы найдете файл или
каталог, который хотите восстановить, введите команду:
ай<1 имя_файла_или„катапо1'а
Выбранный вами файл будет добавлен в список восстановления про-
граммы атгечПэге. Для извлечения добавленных в этот список файлов
введите команду ехйгасТ
За дальнейшими инструкциями обратитесь к документации по системе
АМАКОА.
10.5. Дублирование данных:
введение в НАЮ
Идея надежности хранения данных волновала, волнует и будет волновать
не одно поколение системных администраторов и пользователей. Исполь-
зуемые ОС Еших файловые системы ех(2 и ехгЗ обладают достаточной
степенью надежности, но зачастую этого мало.
Если существует вероятность потерять данные в результате выхода из
строя жесткого диска, то единственным выходом из данной ситуации яв-
ляется использование массивов жестких дисков НАЮ. КАП) (Пе&т&тг
Аггау о/' 1н(1ерепАеп1 0пехреп$п’е) — это способ хранения данных
с избыточностью на группе независимых (недорогих) жестких дисков.
Под избыточностью понимается дублирование данных и хранение до-
полнительных кодов коррекции ошибок. Всего существует 6 уровней
ВАГО (таблица 10.2).
Чаще всего используются массивы уровней 0, 1 и 5. Иногда встречаются
комбинированные способы объединения данных в массив, например
КАГО-10 (КАЮ 0+1) — это чередование блоков данных на двух парах
дублирующих друг друга дисководов.
КАЮ-5 использует дисковое пространство экономнее, чем КАЮ-1, так
как избыточность представляет собой не полную копию информации, а
только контрольную сумму. Но за высокую эффективность использова-
ния пространства приходится платить более низкой скоростью обмена
данными.
Уровни ПАЮ Таблица 10.2
Уровень Описание
0 («полосатый», зГлрюд) Группа дисководов баз избыточности. Этот уровень предназначен для храпа- ния больших объемов данных, не умещающихся на одном диске, и ускорения доступа к ним. Последовательные блоки одного файла хранятся на разных дисководах. Емкость массива равна суммарной емкости всех дисков, об- разующих массив
! .'дисковое аеркшэд, тигоНпд) Дисководы, входящие в группу, содержат одинаковые данные и образуют один логический диск. Благодаря атому скорость чтения (но не записи) воз- растает вдвое. Емкость массива равна емкости самого меньшего из дисков
2 Запись на разные дисководы производится методом чередования «страй- поа* размером в один сектор с добавлением кодов исправления ошибок
3 То же, что уровень 2. но контрольные коды записываются на отдельный диск. При отказе одного из дисков оставшиеся диски можно использовать для восстановления хранившейся на нем информации
4 То же, что уровень 3, но размер страйпов — несколько секторов
5 (массив с вращающейся четностью) То же, что уровень 4, но контрольные суммы хранятся не на одном дисково- де, а на всех по очереди. При выходе из строя одного из дисков потерянные данные восстанавливаются с помощью контрольных сумм. Общая емкость массива вычисляется по формуле т(п>йе‘(п-1}, где тЩ вме — объем наименьшего из дисков, ап- количество дисков в массиве. Минимальное количества дисков равна трем
Организация массива КАЮ доступна не каждому из-за все еще высокой
стоимости аппаратных контроллеров КАШ, Хотя производители мате-
ринских плат пытаются поправить это, выпуская материнские платы со
встроенными контроллерами КАШ, но такие контроллеры не слишком
универсальны и обладают слабыми возможностями.
ОС Хлпих поддерживает программные контроллеры КАШ, Применение
программных контроллеров имеет как свои преимущества, так и недо-
статки, К достоинствам относится возможность использования дисков
с различными интерфейсами, например 8С81 и ГОЕ, для организации
массива — программному контроллеру все равно, с чем работать. Не-
достатком же является дополнительная нагрузка на центральный про-
цессор — он выполняет всю работу по обеспечению функционирования
массива ВАГО.
Итак, приступим к созданию массива ВАГО. Вам понадобится любой
дистрибутив с поддержкой программного контроллера ВАГО: такой воз-
можностью обладают практически все современные дистрибутивы. Для
включения поддержки ВАГО вам придется перекомпилировать ядро.
Включить поддержку ВАГО можно в разделе В1оск <1еутсе.ч конфигуратора
ядра (траке теписопбХд). Нужная опция называется ВАГО и киррогТ,
где п — это номер уровня массива КАЮ. После этого нужно устано-
вить пакет гакИоок, в состав которого входят программы гакНкМсмЫ.
га1<1ко(гетоуе> ткгаМ и другие.
Для организации массива уровня КАЮ 1 нужно выделить два раздела
и изменить тип этих разделов на ЕЩхгшд .'Н!1ос1е1ес1. Обратите внима-
ние, я написал «два раздела», а не «два диска», так как конфигурируется
программный контроллер. Конечно* лучше, чтобы эти разделы распола-
гались на разных дисках, в противном случае от нашего массива будет
мало толку.
Если ваше ядро поддерживает КАЮ. при загрузке системы вы должны
увидеть примерно следующее:
та Лгхчег 0.90--0’ МАХ_МП_ЙЕиЗ«25.б, МАХ_НЕАЬ~12
га1й5: ~еай-,:г1пд сйесквипшШд вреей
: ММХ (ЗеЬесСей, Сгу1пд: Н1ф1*нрее<Э ММХ сНескзит годе тлев
рИ_ттх ; 980.694 МВ/зеС
р5_ттх 999.744 МВ/веС
8гедз : 753.237 МВ/неС
ЗЗгедз ; 444-246 МВ/яес
нзгпд газЬезЬ тцпсЫоп: р5_.ттх (999.744 МВ./яес^
та.с: я!сеоЁ {т<Зр_вирег_С) = 4096
Р'а.гИ1С1оп сИеск:
пйа; Ьаа1 Ма2 < Ъ.йа5 Май Ма7 Ь3а8 >
апСодеГ.есШ1пд КАЮ гаггаув
аикогип ...
... аийогип ГЮЫЕ.
Теперь отредактируйте файл /е&с/га1аьаЬ,
Листинг 10.2. Примерный файл /е1с/га1сПаЬ для уровня 1
# !^мя устройства ЙА1Й
га1ааеу /аеу/тао
# Уровень
га.1а-1еуе1 1
скипк-зтяе 8
ре.гнтзСепс-вирегЫоск 1
# Число дисков в массиве
пг-га1а-а1йк 2
# Число дисков, которые будут использоваться в качестве замены,
# если один из дисков выйдет из строя
пг-зраге-дтэк О
# Определяем парный диск ЙАХО
б.ем1се /беу/ЫЫ
гаМ-йазк о
# Определяем второй диск НАТО
йеVIсе /<Зем/Мс1
г<11й-й15к 1
После этого нужно создать устройство /йеу/шбО, для чего выполните
следующую команду:
# ткгахй /йеу/тйО
В некоторых случаях нужно будет использовать дополнительные па-
раметры, о которых вы можете прочитать в справочной системе (тап
ткгаАЙ). Если инициализация прошла успешно, в файле /ргос/тйнгаг
вы увидите примерно следующее:
РегзопаИЫез: [га!.й1 ]
геай„.аИеай 1024 зесЬогн
тйО: асНуе га!й1 Ь.йс1 [1] .Ьс1Ы. [0]
10.6. Как найти, спрятать
и безвозвратно уничтожить данные
Просмотреть содержимое А5СП-файла нетрудно, но что, если вам нужно
узнать, что находится в двоичном файле неизвестного формата? Можно
использовать шестнадцатеричный просмотрщик Ьехйитр, который в за-
висимости от указанных ключей выводит содержимое файла в десятичном
(-6), восьмеричном (-о) или каноническом А8СП+шестнадцатеричном
(-С) виде:
$ ЬехсЗишр -С /йМп/Ыь | 1еаз
0300013001 00 00 00 47 4е 55 00 00 00 00 00 01 00 00 00 I . . . .СМИ ..I
Но таким способом искать в двоичном файле текстовые фрагменты не
слишком удобно. Утилита «<пп§8 извлекает из файла последовательности
печатных символов длиной не меньше указанной (по умолчанию 4 сим-
вола), В качестве файла можно указать весь дисковый раздел:
$ вбгтпдн -п 18 /йеу/Ма4 1 ^тер '‘образец для поиска"
Особенности файловой системы ех12 подсказывают, что данные можно
хранить и не в файлах. В самом деле, файловая система адресует блоки
размером 1, 2 или 4 Кб, но что если «хвост» файла не занимает блока
целиком? Это место, «резерв» (я!аск), остается неиспользованным. Су-
ществуют утилиты, позволяющие записывать данные в «резервы», читать
эти данные и затирать их, если необходимо. Эти данные будут невидимы
для файловой системы, недоступны для обычного использования и не-
обнаружимы средствами проверки целостности файла (йгедгйу скескегз).
Таким способом можно хранить секретные данные.
Одна из таких утилит — Ьтар
(1’ьр: / / ЕСр. есу1й. сот/рсЬ/ 1:о.геп81с„сотриС1пд/Ьтар).
Например, вот как эта команда записывает данные в «резерв», созданный
файлом /еЕс/развисЬ
# есЬо "здесь спрятана строка* I Шар —гюде риЬвУаск /еЬс/раззнй
А вот так эта команда показывает данные:
# Ьтар ~-то<Зе а1аск /еСс/раезж!
десЫпд Сгот Ыоск 887048
Н1е 51ге иаз: 9428
з!аск з!г:е: 2860
Ыоск 512е: 4096'
здесь спрятана строка
Для затирания «резерва» (удаления скрытой информации) используется
команда:
# Ьтар --тойе итревХаск /ёйе/ра&змй
Предотвратить восстановление удаленных файлов с конфиденциальной
информацией можно, забив нулями освободившиеся блоки. Самый про-
стой способ сделать это состоит в использовании стандартной Ьтпх-ути-
литы йб. Вытереть пустое место на разделе /Ноте можно так:
$ Ьй ХХ^/Ьеу/гего оХ = /Ьоте/ЫдТгЫе
$ зупс
$ гт /Ьоте/Ыд^'Ие
$ зупс
Утилита аЬгей из пакета согеиЪИя, входящего в подавляющее боль-
шинство дистрибутивов Глпих, затирает файл перед его удалением, не-
сколько раз записывая на его место случайные данные. К сожалению,
ее применение имеет смысл не на всех файловых системах, а только
на тех, которые переписывают файл «на месте». Файловые системы
со включенным журналированием (п. 2.2.2), избыточностью (НАГО),
кэширующие и сжатые не позволяют удалить файл без возможности
его восстановления.
Остатки конфиденциального файла могут уцелеть в аварийном дампе
памяти, страницах памяти, выгруженных на диск (раздел подкачки), так
что в целях дополнительной безопасности следует затирать весь раздел,
/ киар и (на всякий случай) раздел с. /сыр. Утилита чйгес! разрешает
указывать в качестве файла, подлежащего затиранию, файл устройства
(например, /<Зеи/Ма4).
На сайте Тйе Наскег’я Скоке (»#»м. Ытс. огд) можно скачать пакет ТНС-
8есигеВе1е1е, а также узнать побольше о безопасности данных и борьбе
с ней.
Глава 11
БАЗОВОЕ
КОНФИГУРИРО
ВАНИЕ СЕРВЕРА
0---СЕРВЕРНЫЕ технологии ишх
о ОРГАНИЗАЦИЯ И СОСТАВ
ышх-сервера
---СУПЕРСЕРВЕР Х1МЕТО
о---УДАЛЕННЫЙ ДОСТУП: 55Н И ТЕ1МЕТ
ПОЛНОЕ РУКОВОДСТВО
11.1. Серверные технологии Ыпих
Каждая операционная система имеет свое «призвание». Операционную
систему Унпйом/ч ИТ Йегуег предпочтительнее использовать как сервер
рабочих групп сетей Мюго80Й. Система ХосеН Ке№аге лучше «смотрится»
в роли файлового сервера и сервера печати. ОС 1Л9.ГХ первоначально
разрабатывалась как интернет-сервер.
Средства для работы с Сетью встроены непосредственно в ядро этой
операционной системы, а все необходимое программное обеспечение
для организации сервера входит в состав дистрибутива. СМХ-сисгема
работает со всеми сетевыми протоколами (особенно с ТСР/1Р) лучше,
чем любая другая операционная система для платформы 1п1е1. Недаром
говорят, что ЁМХ создан для сети, как птица для полета. Все перечис-
ленные выше качества касаются также и ОС Ыпих.
Еще один важный аспект — документация системы. Все без исключения
Пшх-подобные системы очень хорошо документированы, и поэтому вся
необходимая информация для настройки сервера, по сути, уже есть в
вашем компьютере.
Где же применяются 1.ишх-ссрнеры? Прежде всего, это ш пернет-серверы
Вы можете спросить, почему именно Ыпих (Ошх)? Почему не какая-
нибудь другая операционная система, например, \У1пбохх$ ХГГ (2000)?
Давайте подумаем вместе. В начале 60-х годов по приказу Министерства
обороны США была создана сеть АграпеС, которая и послужила в даль-
нейшем прототипом для создания Интернет. Как можно использовать
ХТ сервер в качестве интернет-сервера, если он был выпущен в 1996 году?
А Интернет-то существовал с 70-х годов. И существовал именно благо-
даря Спгх-системам. Так почему же не использовать для предоставления
интернет-услуг родную операционную систему?
Многие правительственные и финансовые организации всего мира, напри-
мер, Министерство иностранных дел Германии, используют Ыпих (8и$Е
□них), а немецкий Пгек^пег Вапк совместно с американской компанией
СоИаЬНе! объявил о новой банковской информационной системе, постро-
енной на основе Ыпих. И тут, как вы видите, дело не в деньгах — платить
или не платить за 1лпих, а в заботе организаций о своей информационной
безопасности и надежности своих серверов. Как объяснить клиенту, что
его счет «будет закрыт», поскольку «программа выполнила недопустимую
операцию»? Тут даже созданный журнал ошибок не поможет. Недавно
открытый сайт президента России, к которому предъявляются повы-
шенные требования надежности, безопасности и производительности,
базируется именно на основе Кеб На! Елпих.
Второй отраслью применения 1апих-серверон является создание кластеров
для произведения параллельных вычислений. По определению кластер —
это несколько компьютеров, объединенных вместе для совместного ре-
шения одной задачи. Объединение компьютеров, как правило, произво-
дится с помощью высокоскоростной сети. На сегодняшний день создано
специальное программное обеспечение^ позволяющее собрать кластер
даже в домашних условиях, например, РУМ (РагаИе! Уй!иа1 МасЫпе).
Помимо всего вышеуказанного, существует еще множество направлений,
где используются Ыпих-серверы; У*'№\У-сернеры, 1-ТР-серверы, почто-
вики, шлюзы, можно даже эмулировать домен ЙТ с помощью пакета
Загиба. При этом нужно учитывать то, что все необходимое программное
обеспечение уже входит в ваш дистрибутив:
1. веб-сервер Арасйе
2. РТР-серверы ’ли-Прб и РгоРТРГ)
3. Агенты МТА (Май Тгап.Тег Ацап!) зепбтаП и ро51йх
4. Поддержка сети Мгсговой — пакет 8атЪа
5. ОН СР (Оупапйс Но8! Соп(фигаНоп Рго1осо1)-сервер, который исполь-
зуется для автоматического назначения 1Р-адреса рабочим станциям
в сети
6. Прокси-сервер КОНГО
7. Брандмауэр 1рСЬатз и/или 1рТаЫе$
8. Сервер баз данных МуТСН
9. 0148-сервер
10. Специальный прокси-сервер 8оск.*>5,
Подробно о настройке всех этих служб, а также о многом другом вы
сможете прочитать в моей книге «Стих-сервер своими руками», третье
издание которой вьппло в 2005 году в издательстве «Наука и Техника».
11.2. Организация и состав Мпих-сервера
Что такое сервер? С точки зрения пользователей сети, сервер — это уда-
ленный компьютер, выполняющий некоторые функции, например, прием
и отправку электронной почты. С точки зрения нас, администраторов,
сервер — это программа, выполняющая определенные функции. Раз
уж мы рассматриваем почтовый сервер, то на этом компьютере должна
быть установлена специальная программа, которая будет отправлять и
принимать сообщения.
Компьютер без этой программы (которую мы также будем называть
сервером) — это просто рабочая станция. Мало просто установить опе-
рационную систему Моих, нужно еще установить программы-серверы,
которые будут выполнять те самые функции, которых ждут от сервера.
Построение Ыпих-сервера нужно начать с настройки суперсервера —
х!пеШ (в более старых дистрибутивах — 1пе({1). Суперсервер — это основа
основ: без него не будет работать большинство сетевых сервисов, таких
как РОРЗ, 1МАР, РТР (если он не запускается отдельно). Сервер Х1пе1й
называется суперсервером, потому что он отвечает за установление ТСР-
соединения, то есть прослушивает пакеты и передает их на обработку
другим программам, управляя таким образом другими серверами. Напри-
мер, если в запросе клиента будет требование установить соединение с
двадцать первым портом, то суперсервер вызовет сервер РТР: конечно,
при условии, что соединение с 21 портом разрешено (в противном случае
клиент получит сообщение «Соппесбоп геСшеб»).
л «шш
По правда говоря, не все так просто, как я описал. На практике за установление
Я В ТСР-соединений отвечает демон ТсрД (в ранних версиях 1эпих его не было).
Программы-сервисы (ЬНрД, ПрД) могут постоянно находиться в памяти (режим
51алс1а1опе): в этом случае они сами обрабатывают пакеты, и суперсервер их уже
не вызывает. Но это уже детали, и они картины не меняют.
Отнеситесь к настройке х!пе1й с должным вниманием: от того, как вы его
настроите , будет зависеть работа вашего сервера.
После настройки хше1с! можно приступить к настройке конкретных сете-
вых сервисов. Я вам рекомендую настраивать Не все подряд (по принципу
«чтобы было»), а только те сервисы, которые вам сейчас нужны. Напри-
мер, если вы настраиваете почтовик, то нечего на нем устанавливать
0148-сервер, веб-сервер и РТР-сервер. Лучше хорошо настроить две-три
нужные службы, чем использовать десяток (включая нужные и ненужные)
с настройками «по умолчанию». Помните, что ненастроенная служба —
это потенциальная дыра в системе безопасности вашего сервера.
Если вы настраиваете серверы провайдера, я настоятельно рекомендую
разделить серверные функции между разными компьютерами. Не нуж-
но, чтобы один компьютер обслуживал и входящие звонки, и почту, и
разрешение имен. Для провайдера целесообразно разделить функции
серверов так:
♦ Два отдельных ОМ8-сервера —- первичный и вторичный. Пусть себе
стоят в углу — О.\8-сервсры редко требуют администрирования, ес ли,
конечно, вы не выдаете доменные имена по десять раз за день.
• Главный сервер, который обслуживает одновременно и входящие
звонки (ЛаЫп), и почту.
• Отдельный веб-сервер. Обычно на веб-сервере устанавливаются
интерпретаторы РНР, рег! и сервер баз данных Му8ОЕ. Если поль-
зователям нужен доступ к их файлам, можно настроить на этом же
компьютере РТР, но я рекомендую вместо РТР использовать вяЬ.
Конечно, если ваши пользователи пойдут на такие жертвы ради без-
опасности.
Если же вы ограничены в средствах, можно все это добро установить на
одном компьютере. Надежность схемы «все в одном» значительно ниже, и
в основном она используется для тестирования — проведения небольших
экспериментов с сетевыми сервисами.
Сейчас мы подробно разберемся, что нужно устанавливать на ваш буду-
щий Еших-сервер. Предположим, что вам нужно настроить веб-сервер.
Тогда нужно установить и настроить следующее программное обеспе-
чение:
• Суперсервер хшеЫ — вы уже знаете, для чего он нужен. Настройку
любого Еших-сервера нужно начинать именно с настройки хтеПЕ
♦ Пакет арас1ле (в некоторых дистрибутивах он называется ЬНрй). Про-
грамма АрасНе выполняет функции веб-сервера: именно она передаст
пользователю веб-страницу, когда тот введет ОКЕ страницы в окне
браузера.
* Если ваши пользователи желают программировать на РНР, нужно
установить пакет РНР. Связке веб-сервера АрасНе, интерпретатора
РНР и сервера баз данных МуЗрЕ посвящена целая глава, поэтому
мы не будем сейчас подробно на этом останавливаться.
Теперь рассмотрим второй распространенный случай — почтовый сервер.
Почтовый сервер отвечает за отправку и прием сообщений электронной
почты. Обычно он Использует протоколы 8МТР (!Нтр1е МаП Тгапхрег Руо-
(осо1) и РОР (Роу/ О/'/:се РтЮсо1). Для создания почтового сервера нужно
установить и настроить следующее программное обеспечение:
* Суперсервер х«пе(б.
• Почтовый агент (МТА, МаИ Тгапх/ег А^еп(), которая будет отправлять
и принимать сообщения. Обычно эту роль выполняет программа
кепйтай, а кроме нее довольно распространены программы ^таП и
рояШх, выполняющие аналогичные функции.
♦ Пакет 1тар, обеспечивающий получение пользователями своей почты
по протоколам РОРЗ или 1МАР.
♦ Программу ргостаН, сортирующую почту. С ее помощью можно
организовать автоответчик и другие полезные услуги.
• Программу Ге1сН[шп1. позволяющую получать почту с других РОРЗ-
серверов.
• Желательно также установить какой-нибудь антивирус, например,
КАУ, и «прикрутить» его к яепйтаП (или другому 8МТР-серверу):
тогда входящие и исходящие сообщения будут автоматически про-
веряться на вирусы.
Третьим распространенным примером Ыпих-сервера является ОтТ
сервер. Для его организации вам достаточно установить и настроить
суперсервер хшеГд и сам ОН8-сервер — пакет Ьтй.
Следующий пример Ыпих-сервера — это шлюз. Шлюз позволяет соединить
две сети различного тапа, например, локальную сеть н 1л1егпе1, Для его соз-
дания нужно установить и настроить следующее программное обеспечение:
♦ Суперсервер хшеТсС
♦ Пакет ррр, содержащий сервер для работы с протоколом РРР (Рот!
1о Рот! Рго!осоГ). Данный пакет нужно устанавливать лишь в том
случае, если вы сами подключаетесь к Интернету по протоколу РРР
или вы настраиваете сервер входящих звонков (сйаНп) для доступа
удаленных пользователей в Интернет через ваш компьютер.
* Пакет 1р1аЫе$ — это межсетевой экран, или брандмауэр. Именно
эта программа будет выполнять функции шлюза, то есть переадресо-
вывать пакеты из одной сети в другую (из локальной в глобальную).
Кроме того, брандмауэр может отфильтровывать пакеты, что позво-
ляет оградить вашу сеть от вторжения извне.
♦ Пакет 5Ц1Й6 — это прокси-сервер, который кэширует веб-страницы.
В таблице 11.1 перечислены лишь немногие функции, выполняемые сер-
вером, и рекомендуемое программное обеспечение, которое необходимо
для реализации этих функций. В графе «Дистрибутив» сказано, входит
ли нужный пакет в состав популярных дистрибутивов.
Серверное программное обеспечение Таблица 11. 1
Функция Программное обеспечение Дистри- бутив
Авторизация удаленных пользователей (Фа1ир) РРР Да
Автоматическое конфигурирование узлов сети аьср Да
Совместный доступ к файлам МР5. РТРЦ (РгоГГРО, <лги Нрф Да
Доступ к сети М (егозой датЬа Да
Кэширование передаваемой информации 5яшс4 Да
Маршрутизация гош е(ф Да
Обмен сообщениями электронной почты зепйглай роз^х длшй »гпар Да Да Нет Да
Продолжение табл. 11.1
Функция Программное обеспечение Дистри- бутив
Подсчет передаваемого по сети трафика ядро Шмх, 1РСЬа!П5 (в старых дне- трибу-имх с ядром 2.2.x и меньше) или 1РТаЫез (в новых дистрибутивах с ядрам 2.4,х и 2.6.Х) Да
Передача секретной информации той 531 Нет
Разрешение имени компьютера а 1Р-адрес Ыпб Да
Сетевая печать Ьрй, ЗзтЬа, СЦРЗ Да
Функции веб-сервера арасНа Да
Фильтрация пакетов 1Р-Маскарадинт 1РТвЫез (|РСПа1п5 в старых версиях Ыпих) Да
Управление базой данных МуВСК РратдгвЗаь Ыегбвае Да Да Нет
11.3. Суперсервер х!пе1с1
11-3.1- Установка суперсервера Х1пе1с3
Суперсервер хшеШ появился в дистрибутивах давно (например, в Леб
На1 начиная еще с 7 версии) и стал достойной заменой 1пек1, исполь-
зовавшемуся до него. Суперсервер Х1пе1с1 обычно устанавливается по
умолчанию во время установки системы. Одним из преимуществ этого
суперсервера является наличие встроенных механизмов защиты, которые
для 1пе1с1 реализует отдельный демон 1срс1. К тому же хшеШ, в отличие
от шеН1, поддерживает 1Рг6. Даже если вы пока не планируете перехо-
дить на 1Ру6, установка хшеШ будет очень полезной из-за расширенных
функций суперсервера.
В шестой версии протокола (Р(!Рх6, ранее именовавшегося |Рпд — 1Р пех1 депега-
боп) используются 128-разредные адреса получателей и отправителей (это в 4 раза
больше, чем в версии 4). Адрес состоит из шестнадцати октетов и изображается в
виде восьми пар октетов, разделенных двоеточиями. Адрес в формате !Ру6 может
выглядеть таю ЗАЗРВС21:Р133:56С4:А103:ОВ11:1000:400?
Если в вашем дистрибутиве хшеШ не устанавливается по умолчанию, то
рекомендую пойти по пути наименьшего сопротивления и установить
хпнЧс! из ЯРМ-пакета. Можно также скачать последнюю версию хшеМ
по адресу кг Ьр:/ . ку паск. пеС /х1пеь<а. и установить его из ис-
ходных кодов.
Если вы собираете хшеЫ из исходников, вы можете сконфигурировать
его (./сопй§иге) с одним из следующих флагов:
♦ "МлШ-НЬитар: с использованием (ср мтаррегя. С этой опцией мпеМ бу-
дет сперва проверять ваши файлы /еСс/ЪовСя.аИоии /еТс/ЬоеЬз.
белу и только после этого запустит свой механизм контроля доступа.
Библиотека 1йтгар должна быть установлена у вас заранее;
♦ -иНЫоайау^: с этой опцией хшеГй остановит сервис, когда нагрузка
достигнет определенного уровня;
* -*пЙ1-те1б: включает поддержку 1Р\6.
Внимание! При включении 1Ру6 все 1Ру4-сокеты становятся 1Ру6-сокета-
ми. Поэтому будьте готовы к тому, что вам понадобится перекомпилиро-
вать свое ядро с поддержкой 1Ру6. Если ваше ядро не поддерживает ПМз,
выкачайте последнюю версию ядра по адресу Мер = / /мути , кегпе1, огд.
Никаких ограничений на клиентские узлы включение 1Ру6 не наклады-
вает: запросы 1Ру4 также будут обрабатываться.
11.3.2. Настройка суперсервера х!пе1с1
Все настройки суперсервера Х1пе1й сосредоточены в файле
/есс/х1песа.соп{. В составе дистрибутивов Кеб На1 и Мапбгаке уже
имеется такой готовый файл, но и нем содержится лишь минимальный
набор установок. В него включена строка, которая указывает суперсер-
веру прочитать все файлы в каталоге /етс/ххиеьа.б и воспринимать
их как дополнительные конфигурационные файлы.
Все конфигурационные файлы — /етс /х.1пес<3. сопЕ и включаемые в него
директивой тс1ш1е(11г — состоят из записей, имеющих следующий вид:
кегухсе <имя_службы>
<атрибут> <оператор„присваиваиия > <значение> ...
}
Имя службы может иметь значение 1о{рп, яйе11.1е1ие1, йр, рорЗ и т.п.
Оператор присваивания может быть одним из следующих: «=», «+=»,
«-=». Большинство атрибутов может работать только с оператором «=».
Назначение операторов таково:
♦ «.=»: присвоить атрибуту значение;
* «+=»: добавить атрибуту еще одно значение;
♦ «-=»; удалить значение атрибута.
Атрибут может иметь несколько значений, указанных через пробел. Боль-
шинство атрибутов можно использовать в секции беГаикч конфигураци-
онного файла. Эта секция размещается в начале файла, и все заданные
в ней атрибуты применяются ко всем серверам (сервисам), находящимся
под контролем хтеМ. Для каждого сервера (сервиса) можно индивиду-
ально переопределить установки, заданные по умолчанию: если атрибут
определен и в секции с1еГаи!Ь. и в описании сервера (сервиса), то имеет
силу значение, заданное в описании данного сервера (сервиса).
Среди атрибутов хтеП1 можно выделить следующие группы:
♦ Запрет вызова сервера (сервиса). Запретить вызов какого-либо серве-
ра (сервиса), находящегося под управлением хтеШ, можно с помощью
значения атрибута <И5аЫе=уез (в шеШ для этого пришлось бы заком-
ментировать все строки описания сервиса). Того же эффекта можно
достичь, если в секции веГанИв файла /есс/хтпеЫ.сопЕ указать
й1ваЫее=спис.ок_,сервероэ. Список серверов (сервисов) состоит
из их имен, разделенных пробелами.
♦ Перенаправление. С помощью атрибута гесйгес! можно обращение к
серверу (сервису), для которого указан этот атрибут, перенаправить
на другой компьютер. Целевой компьютер указывается либо домен-
ным именем, либо 1Р-адресом; геШгес!—целевой_компьютер. Этого
же эффекта можно достичь и с помощью трГаЫек, но, используя для
этой цели хшеМ. вы можете применять средства управления доступом
суперсервера.
* Протоколирование. Определить, какая информация должна записы-
ваться в журнал в случае успешного запуска сервера (сервиса), а какая
в случае неудачи, вы можете с помощью атрибутов 1оц_оп_хиссех‘>
и 1о§_оп_ГаНиге. Подробное описание этих атрибутов приведено в
таблице 11,2.
♦ Ограничение на установление соединений. Можно указать макси-
мальное количество запросов от одного источника (сервиса), которое
может обработать хтек! в единицу времени, а также максимальную
загрузку хпн'Ы. по достижении которой он будет отвергать все об-
ращения, и приоритет обработки серверов (сервисов). Для этого
предназначены атрибуты рег_коигсе, 1п<йапсе$, ерв, шее и тахДоай
(таблица 11.2).
♦ Атрибуты защиты и управления доступом. В этих атрибутах заклю-
чается основное преимущество юпеШ перед его предшественником
теШ. С их помощью можно установить:
• ограничения для отдельных узлов (атрибуты оп!у_Ггот и по-ассек»);
• ограничение по времени — временной интервал, в течение которого
сервер (сервис) будет доступен для клиентов (атрибут ассея5_бте«):
• ограничения на использование интерфейсов — можно связать сервер
с одним конкретным сетевым интерфейсом (атрибут (пГегСасе).
Атрибуты сервисов под управлением хлпеШ Таблица 11.2
Атрибут Возможные значения
й Используется, если сервисы используют разные протоколы. Обычно совпадает с именем сервиса
1уре Любая комбинация из следующих значений: 1. НРС — если эта сервис ЙРС (Йето<е Ргасебигв Са11). Вызов удаленной проце- дуры используется в серверной части приложения. Механизм НРС скрывает от программиста детали сетевых протоколов нижележащих уровней. 2. ИЫиЗТЕО — если сервис не описан в файле /е1с/грс для НРС сервисов или в /е(с/вегу}сев для не-НРС. 3. (МТЕ1ЭДАЕ— если х)пе(й представляет этот сервис (для есНо, пте, ДауГипе, сЬагдеп и б! вещй). Если ЙРС-сервисы у вес работают некорректно после установки хтей, вы можете использовать для них старый й№Ш — он прекрасно уживается с х(пе(б. в файле /е{с/!пеЩ,сопТ оставьте только НРС-сервисы, а остальное закомменти- руйте, а в /е1с/х!пвй.соп1 — наоборот
Падв Любая комбинация из следующих значений: 1. 1400ЕНУ — только для ТСР-сервисов! Будет установлен флаг сокета — ТСР_!ЧООЕЕАУ 2. ОЗАВЕЕ — отключить сервис. 3. КЕЕ РАШЕ — Только для ТС Р сервисов! Установка флага сокета ЗОКЕЕРАШЕ, 4. РЕОзЕ — установить флаг ЗОЙЕОЗЕАОСР на сокет сервера. 5. ЙЧТЕВСЕРТ — перехватывать пакеты или принимать соединения по порядку, проверяя, что они приходят из нужных мест, 6. ЫОЯЕТЯУ — избегать повторных попыток в случае неудачи. 7. ЮОМ1У — соединение будет приниматься только от идентифицированных пользователей. На удаленной машине должен работать сервер идентификации
ЩдаЫе уев (отключить сервис} или по (не отключать)
зоске1_!уре Тип сокета. Может принимать следующие значения: 1. зТгеат — сокет этгеат, обычно используется службами, работающими на основе протокола ТСР; 2. Ддгат — сокет йдгат, обычно используется службами, работающими на основе протокола ЕВР; 3. гащ — сокет гауу для сервисов, требующих прямого доступа к 1Р; 4. зедраске( — сокет ведраске» для сервисов, требующих надежной последо- вательной пересылки датаграмм
рго(осо| (ср, (Щр и т.п.
»а)( уев (ждать завершения сервиса на данном сокете) или по (не ждать). Значение уев обычно устанавливается для сокетов Фдгат, а значение по -для сокетов вТтеат
изег Регистрационное имя пользователя, от имени которого будет запущен сервер (по умолчанию — гоо()
зегтег Абсолютный путь к запускаемому серверу
зог/егагда Аргументы, передаваемые серверу
О!11у_(г'от Список хостса, !Р-адресов или сетей, которым будет доступен сервис. Аналог файла ЪозТь.аНоуг
по^ассеаа Список хостов, которым данный сервис не будет доступен. Аналог Ьози.бепу. Если ни один из атрибутов (оп!у_(гот и по.ассевв) не указан, то сервис будет доступен всем
асседабтез Интервалы времени в форме ЧЧ:ММ-ЧЧ:ММ, на протяжении которых сервис будет доступен. Например, 9:00-18:00
1ор_1уое Способ ведения сервисом журнала. Значения: 1.5УЗЕ06 вуз!одц(ас 1! 1Гу (вуз!од_|еуе|] — сообщения будут посылаться демону 5уя1одф 2. НЕЕ б|е [вой.НтП [1загб_1!т1!|] — сообщения будут писаться в указанный файл
Атрибут Возможные значения
1одиоп_ЭД!игв Определяет, какая информация будет протоколироваться, если сервис по кв' ким-либо причинам не запустился: 1, НО5Т—записывать адрес удаленного хоста. 2. П5ЕКЮ — если возможно, записывать идентификатор удаленного пользова- теля (используется протокол идентификации НРС 1413). 3. АТТЕМРТ — записывать факт неудачной попытки. 4. НЕСОНО — записывать информацию с удаленного узла в случае невозмож- ности запуска сервера
1од„оп лиссезз Определяет, какая информация будет протоколироваться в случае удачного за- пуска сервиса. Можно комбинировать любые из следующих значений: 1. РЮ — идентификатор запущенного серверного процесса. 2. НО5Т — адрес удаленного хоста, 3. П5ЕНЮ — если возможно, идентификатор удаленного пользователя (исполь- зуется протокол идентификации ЯРС 1413). 4. ЕХ1Т — записывать, каким образом был произведен выход. 5. оиЯАТГОМ — продолжительность сессии
грспитЬег Номер сервиса НРС
грс_уег5|ол Версия сервиса ЯРС
Список строк типа ”имя=значенйе". Эти переменные будут добавлены е окруже- ние перед тем, как сервер будет запущен
раззепу Список переменных окружения хйтеШ, которые должны быть переданы серверу
роя Порт сервиса. Если парт указан а файле /еЮ/зепясее, та значение данного параметра должно совпадать -с Ним
гесйгес! Позволяет 1ср-сервису делать перенаправление на другой хост: Значение за- дается в виде ЬозсроП
Щ(ег(асе Устанавливает интерфейс, через который будет работать сервис. Значением должен быть !Р-адрес
Ьтс1 Синоним параметра (теНасе
Ьаппег Определяет имя файла, который будет показываться гтри соединении с сервисам
Ьаппаг_киссвзз Определяет имя файла, который будет показываться при удачном соединении
ЬаппегДаЛ Определяет имя файла, который будет показываться при неудачном соединении
срз Атрибут имеет два аргумента. Первый устанавливает количество соединений в секунду. Если это число будет превышено, сервис будет временно недоступен. Второй — число секунд, после которых сервис снова будет доступен
гпах_1аас1 Определяет максимальную загрузку. При достижении максимума сервер пере- стает принимать запросы на соединение. Значение параметра — вещественное число типа Лоа<
рег_зоигс& Количество запросов от одного источника (сервиса), которое может обработать хюетб в единицу времени. Значением может быть либо число, либо имЬ1М|ТЕО
1П5(апсез Максимальное количество процессов (серверов), котсроах1пеМ может одно- временно использовать для сервиса (по умолчанию лимита нет). Значением этого атрибута может быть либо число (большее значения атрибута рег_ зоигсе), либо 1ЖЦ1М1ТЕ0
песо Устанавливает приоритет (показатель уступчивости) сервиса
Необязательно указывать для каждого сервиса все атрибуты. Можно
указать только необходимые:
♦ $оске1_1уре
♦ изег
• зегуег
♦ гуаН.
Атрибут ргоГосо! указывается только для КРС-сервисов, а также для всех
сервисов, которые не описаны в /еьс/еегУ1сеэ, Атрибут грстегыоп —
только для КРС-сервисов. Атрибут грс_питЬег указывается только для К.РС-
сервисов, которые не перечислены в файле /еСс/грс. Атрибут рой задается
только для нс-КРС сервисов, которые не описаны в /еЪс/вегуфсез.
Следующие атрибуты поддерживают все операторы присваивания:
♦ оп1у/гоп1
♦ по_ассе5«
* 1о§_оп_8иссе58
♦ 1о§_опЛаПиге
♦ раязепу
♦ епу (кроме оператора «-=»).
В секции <1еГаи!с, в которой описаны атрибуты по умолчанию, обычно
указываются следующие атрибуты:
* 1ок_<уре
• 1о§_ОП_8несе88
♦ 1о$_оп_йн1иге
* оп1у_1гот
* поасссхч
♦ развепу
• ткгапсек
♦ ШзаЫес!
♦ епаЫеб.
11.3.3. Запуск х1пе1б
Я надеюсь, что с настройкой все более-меиеё понятно. Если нет, то
немного ниже вы найдете пример файла /екс/хХпеыЗ. сопЁ. Сейчас
же займемся запуском только что откомпилированного и настроенного
суперсервера. А запускать его можно с ключами, самые нужные из ко-
торых приведены в таблице 11.3. За списком остальных обращайтесь к
тап-странице.
Ключ» запуска МлеШ Таблица П.З
Ключ Назначение
-* файл Устанавливает альтернативный файл конфигурации, который должен испо.льзо- ваться вместо стандартного файла /едс/хЗнетФ. сопС
рШ!е р^Цфайл Файл, в который будет записан РЮ процесса
-зтеуаИее Даже если ни один сервис не прописан, демон должен выполняться («остаться в живых»)
-б режим отладки (беЬид тойе)
ИтЙ число Ограничение на количество одновременно запущенных процессов
Как и любой демон, хшеЫ управляется сигналами:
• 816Н11Р заставит хчпеШ перечитать файлы конфигурации и остано-
вить службы, с этого момента отключенные;
• 8Ю01ЛТ остановит Х1пек1;
♦ 816ТЕКМ остановит хше(ф остановив предварительно все запущен-
ные им серверы;
* 8Ю178К1 выведет дамп состояния в файл ^аг/гип/х1пеМ.ашгф.
11.3.3.1. Защита хшеЮ
Суперсервер хшеГб достаточно защищен, но его конфигурационный файл
придется защитить вам самим. Естественно, нужно установить ему права
доступа, разрешив только чтение и только суперпользователю;
# сЬтюб 400 /еТс/хХпеСд.сопС
Чтобы никто не смог изменить, удалить, переименовать этот файл, уста-
новите ему атрибут <4» (только на файловой системе ех12 или ех13):
# сНасГ.г /еСс/х4пе<с1.соп€
11.3.3.2. Пример файла конфигурации /еГс/хтеТО
Теперь, как и обещал, привожу пример файла конфигурации, В этом ли-
стинге перечислены чаще всего используемые сервисы с оптимальными
атрибутами. Конечно же, вам предстоит решить, какие сервисы вы будете
использовать, а какие нет. Возможно, вы также измените и их атрибуты —
например, время работы того или иного сервиса.
Листинг 11.1. Фрагмент файла конфигурации /ещ/хтеГб
# Параметры по умолчанию дЙй все.х возможных сервисов
Йе^аиЗ.Св
{
# Число серверов, которые могут быть активны одновременно
тпзСапсев ~ 25
# Параметры протоколирования
= РТЬЕ /^аг/1од/зе^.1.се1од
1одтоп_впссезз = НОЁТ Р1П
1од_оп_Га11.шге = НОЗТ йЕСОКВ
# Параметры доступа
оп!у_1гот = 111.11.111.0 111.111.112.0
оп1у_Егот = 1оса1ЬО5С 192.168,1.0/32
# Отключенные сервисы
с11ваЫез ” : С Л:р
зегухсе 1од1п
{
Наде = КЕСЗЕ
воскеС_Хуре = зкгеатп
ргоросо! = 1:ср
махС = по
изер = гооЬ
зегуег = /изг/еЬсЛп.гХодлпй
1од_Ьуре - ЗУЗЬОС 1оса14 1п^о
}
# Сервис йеХпеЬ - эмуляция терминала удаленных систем
# для интерфейса обратной петли
зегухсе Ье1пеЬ
(
Падз- = КЕСЗЕ
зоскеЬ_1уре = нЬгеат
иа1Ъ = по
изег = гооЪ
зегуег - /изг/еСс/1п.Ье1пеРд
Ыпа = 127.0.0 л
1од_оп_^а11иге += Ц5ЕК1П
}
# Сервис ЬеТпеЪ эмуляция терминала удаленных систем
зехтЛсе Ье.1пёЬ
{
Падв = ЕЕСЗЕ
ЗхзаЫе = уее
зоске!:_Ьуре = зЬгеап!
!лга1С - по
и зет = гооТ
зегует = /изг/ерс/1п. Ре1пеЬ<3
ЬХПЙ = 192.231Л39.175
геЛгесЬ = 128Л38.202.20 23
1од_оп_Ла11иге += С5ЕК1Р
вегухсе СЬр
{
зоскеЬ_Суре ~ ёЪгеат
иа!е = по
изег = тоор
ветуег ~ /изг/есс!1п.
яегуег_агдз = -1
1пзЬ.апсез - 4
1од_оп_зиссезз += ОПНАТГОМ ЦБЕЙ1Э
1од_оп_Еа11ите += ПБЕЙГС
ассеза_С1гае8 = 2:00-8:59 12:00-23:59
п!се = 10
)
зегухсе паже
зоскеП_Пуре - бдгат
иааХ = уев
цвет = тооб
кегуег = /иаг/е(:с/1п. бпатеб
}
# Поддержка протокола ТЕТР (Тхтуха! ГТР). Этот протокол
# используется для обмена информацией между интеллектуальными
# маршрутизаторами и, скорее всего, аы не будете его
# использовать.
зегу1се ЬЕЬр
(
воскеС_Ьуре = йдгаш
на 1. Ь = уев
изег = гооб
зегиег = /ивг/ере/Хп.Ь^Ьрб
негуег^агдз = ~з /ЬЕСрЬооб
# ЗМТР-сервис ОтаИ. Конфигурируется для запуска по
# требованию суперсервера х1пеб6
ветухсе зтбр
(
5ОскеС_Хуре = збгеат
ргобосо! = Гер
иагб = по
□зег = дтаНй
16 ~ зттр
зегп/ег ~ /уаг/огпа11/Ып/кср~епи
зегуег_атде = /уаг/дтаИ/Ып/дгоаИ-етррб
1од_оп_виссевз-= ЭОНАТЮК И8ЕК1Р Р1П НОБТ ЕХ1Т
1од_оп_Га11ите-= ОБЕНТО НОЗТ АТТЕМРТ ЙЕСОКП
]
# Сервис Ипдег, позволяющий узнать общедоступную информацию о
# пользователях системы-, записанную в /ебс/разз^й.
зегугсе Ипдег
зоскеС„Луре = зСгеап;
сИваЫе = уез
«атЬ = по
изег = поЬойу
зегтег = /изг/еЬс/хп. ИпдепЗ
зйгуъсе есИо
{
гуре = ТКТЕЙЫАЬ
1<3 = есЪо-зЬгеат
•®оскеЬ_йур.е- = вСгеат
ргоСосо! = Сер
цзег ~ гооС
ига1Х = по
)
зегухсе есЬо
{
Суре- = 1НТЕКЫА1,
1<3 = есЪр-'йдтат.
5ое.кёЪ_Ьуре = «Здгатп.
ргоЬосо! = ис/р
изег = гоог
иа1Ь = уез
}
зегуХсе гвЬа(нЗ
Ьуре = НРС
МйаЬХёй , = по
Е1ад« = ХИТЕКСЕРТ
грс_уегв1оп =2-41
збекё&<Ьуре = йдгаш
ргойосо! = и<1р
з(^уфЕ ':' .=./и8г/еЪс/грс..гн.Ь.аЬ<а
..; = уев
азег = гооЕ.
) .: . . дЛ ". - ... 7*-^
Как видно из примера, я сконфигурировал лишь самые необходимые
сервисы. Доступ к сервисам в рассматриваемом примере могут получать
только клиенты из сетей ШД11.Ш.0, Ш>ШЛ12.0н 19X168.1 А Можно
также указывать адрес и маску подсети, например, 192.168.1.0/32. Вместо
^епйшай я использовал дтай. Можно было бы запускать цтаП в режиме
ыапй.'йопе. но так как я не очень часто пользуюсь услугами 25-го порта,
то мне удобнее запускать сервис §т!р через хшеШ. Из соображений без-
опасности я отключил некоторые сервисы: Пп^ег, 1е1пе(.
11.4. Удаленный доступ: ееЬ и 1е1пе1
11.4.1. Использование 1е1пе1
Сервис 1е1пес обеспечивает базовую эмуляцию терминалов удаленных
систем, поддерживающих протокол 1е1пе1 над протоколом ТСР/1Р. Обе-
спечивается эмуляция терминалов О(§йа! ЕршртеШ Согрогабоп УТ 100,
ГЛуПа! ЕхриртепГ Согрогабоп УТ 52, 'ГТУ Проще говоря, сервис Ге1пеГ
позволяет работать на удаленном компьютере так, как будто вы сидите
непосредственно за ним. Протокол 1е1пеЕ описан в документе КЕС 854,
который вы найдете на сайте издательства «вд. п1Ь . сот. ги.
Для использования Ге1пе1 на удаленном компьютере должен быть уста-
новлен 1е1пе1-сервер. На компьютере пользователя нужно установить
программу-клиент. Любые команды, вводимые пользователем, обрабаты-
ваются (е!пег-сервером, а не локальным компьютером. Пользователь на
своем компьютере лишь видит результат выполнения этих команд.
Практически в каждой операционной системе существует утилита 1е1пе(,
которая является клиентом для протокола Ге1пег (рис. ПЛ).
^8
Цснзро е щин’ .Ёс 'го й о $4, Ге|пеС
Символ перекл^е-н ия реяний з ‘СТШ.гН'
НОГ .*.)? 6Ы1 Ь сокрадаим. ПонлРЯ ЛЯ К0И&ЯДгЭ*№ Р0,-Нз1ПТ^ « !
4 о 2 сП - сТояе ~ «НкрЁяу -• н»шл,у|зла - ... закрыть ? поли лйиыт из ус * г >< й г?о дн леи«й ь паргчнйгтрм рл&рэцкм Я »< СЙЙ7 у Пор|
:и?п •••• Ь егрпки на
••• с О Г&К СОСТОЙКИИ!
ы - Сб'рОСНТЪ ?° Д4Я 13 «дг<
?/Ь - гпахзес гн с
Я 2 с 14» Те4] л г? О ж
Рис. 11.1. Те!пе Г клиент для \Мпясул'з
Сервис 1е!пе1 был и остается одним из'самых популярных Способов уда-
ленной регистрации и работы на удаленной машине. Однако основным
его недостатком является то, что любая информация, в том числе и
пароли, передается в открытом виде без какого-либо кодирования. По-
этому использование его в серьезных системах недопустимо, необходимо
пользоваться лишь защищенными средствами (например, 88Н).
Сервер кйпе! может в разных дистрибутивах называться по-разному. В
Кеб На1- дистрибутивах он находится в пакете Ге1пе(-8егтег и я большин-
стве случаев устанавливается по умолчанию.
11.4.2. Нвстройка и использование 88Н
Что такое 55Н
88Н (Зесиге 8(ге11 — защищенная оболочка) — это протокол, обеспечи-
вающий защищенную передачу данных. 88Н использует криптографию
открытого ключа для шифрования соединения между двумя машинами, а
также для опознавания (аутентификации) пользователей. Протокол 88Н
можно использовать для безопасной регистрации на удаленном сервере
или копирования данных между двумя машинами. Он позволяет предот-
вращать атаки способом присоединения посередине Ымш П^осктх) и
обмана сервера имен (ОМЗ цроо/1п§).
Протокол 88Н поддерживает следующие алгоритмы шифрования:
* В1озгЕ1вй — 64-разрядная схема шифрования. Этот алгоритм часто
используется для высокоскоростного шифрования данных больших
объемов.
• Тройной ВЕЯ (ВдЩ ЕпсгурИоп Згаги/ап!) — довольно старый стандарт
шифрования данных, который в наше время рекомендуется исполь-
зовать только для несекретных данных.
♦ 1ВЕА (1п1егпаиона1 1)и1а ЕпсгурНоп А^огИкт) — международный
алгоритм шифрования информации. Этот алгоритм работает со 128-
разрядным ключом и поэтому он более защищен, чем ШохуГйЬ и
ОЕ8.
♦ К8А (1Игех!-8/1ат1г-А(1е1тап а^огИНт) — алгоритм Ривеста-Шамира-
Адельмана. Представляет собой схему шифрования с открытым и
секретным ключами.
Поддержка нескольких алгоритмов шифрования позволяет обеспечивать
наибольшую безопасность, так как в случае обнаружения уязвимости
в одном алгоритме 88Н переориентируется на использование других
алгоритмов.
На данный момент существует две версии протокола 88Н:
* Протокол 88Н версия 1. У каждого узла есть свой К8А-ключ (обычно
1024 бит), который используется для идентификации узла. Этот ключ
еше называется открытым. Дополнительно, при запуске демона, гене-
рируется еще один К8А-ключ — ключ сервера (обычно 768 бит). Этот
ключ создается заново каждый час и никогда не сохраняется на диске.
Каждый раз при установке соединения с клиентом демон отправляет
ему в ответ свой открытый ключ и ключ сервера. Клиент сравнивает
полученный открытый ключ со своей базой данных, чтобы проверить,
не изменился ли он. Затем клиент случайным образом генерирует
256-разрядное число и кодирует его, используя одновременно два
ключа — открытый ключ и ключ сервера. Обе стороны используют
этот случайный номер как КЛЮЧ сессии, который используется для
кодирования всех передаваемых Йо время сессии данных. Затем клиент
пытается аутентифицировать себя, используя .гЬоЫз-аутентификацию,
аутентификацию К.8А или же аутентификацию с использованием
пароля. Обычно аутентификации небезопасна, поэтому она
отключена.
♦ Протокол 88Н версия 2. Версия 2 работает аналогично первой: каж-
дый узел имеет определенный В.8А-ключ, который используется для
идентификации узла. Однако при запуске демона ключ сервера не
генерируется. Безопасность соединения обеспечивается благодаря
соглашению Диффи-Хелмана (&1]$е~Не11тап кеу а$геетеп1). Кроме
того, в 88Н2 были исправлены недостатки 88Н1. Сессия может коди-
роваться следующими методами: 128-разрядныЙ АЕ8, В1охмЙ5Ь, ЗЭЕ8,
СА8Т128, АгсГоиг. 192-разрвдный АЕ8 или 256-раз рядный АЕ8.
Программные пакеты, использующие эти протоколы, так и называются:
85Й1 и $5112. Сервером 88Н служит демон ккЫ, который запускается на
ОМХ-машине, а клиентом — программа ккЬ. которая распространяется
как для Еших, так и для \Утс1ом<'Ю Клиент хтЛ служит для обеспечения
защищенной регистрации на удаленном компьютере. В пакет кзй входит
еще и третья программа — кер, служащая ддя безопасного копирования
файлов с локального компьютера на удаленный. Однако основным назна-
чением 88Н является все- гаки авторизация пользователя при регистрации
его на удаленном компьютере.
Оба программных продукта (88Н1 и 88Н2) являются коммерческими и
стоят денег. Хотя в какой-то момент разработчики одумались и сделали
бесплатной 88Н2 для 1дпих и *В8Э, было уже поздно. Открытым обще-
ством разработчиков на основе обоих протоколов 85Н, с добавлением
дополнительных возможностей и исправлением некоторых ошибок, был
разработан ее бесплатный вариант Ореи88Н.
Первая версия ОрепЗЗН вышла еще в декабре 2001 года. В дистрибутив
Ребога Соге 3 включена третья версия этого продукта. Компьютеры, на
которых установлена Ореп88Н, прекрасно взаимодействуют с компью-
терами, на которых установлены коммерческие 88Н1 или 88Н2, то есть
продукты полностью совместимы.
В дальнейшем, когда я буду говорить о 88Н, я буду иметь в виду именно
Орсп88Н, которая поставляется со всеми современными дистрибутивами
Ыпих. В целях безопасности рекомендуется отслеживать обновления и
скачивать последнюю версию (в мае 2005 г. вышла четвертая) с сайта
ины. орепззб. огд.
Свободно распространяемая версия 88Н состоит из следующих пакетов:
♦ орепязЬ — основные файлы;
♦ ореп88Й-с11еп& — программа-клиент:
♦ ореп^Ь-чегтег — кхЬ-сервер.
Чтобы служба 88Н начала работать, необходимо запустить демон мйй
на той машине, к которой предполагается подключение. Желательно
добавить команду запуска в сценарий загрузки системы. Демон 85Й<1
работает по 22 порту (см. листинг 11.2). Можно запускать его из-под
супердемона хШеМ/теСЛ, но обычно ччЫ запускается самостоятельно —
в режиме 51ап(1а1опе.
Настройка 55Н на сервере
Конфигурационный файл сервера кчЬб называется /еСс/85И/8вЪа_соп^1д,
Справку по его синтаксису вы можете получить по команде таи 5
= В пакете орепвзй-вегуег находится конфигурационный
файл с типовыми настройками.
Чтобы оградить ваш компьютер от нежелательных вторжений извне, ре-
комендую вписать в этот файл директиву аПотгедаЛгезд, перечислив через
пробел 1Р-адреса тех машин, с которых разрешен вход клиентов:
аПонебаагезн 10.1.1.1 10.1.2.1 10.1.3.1
Листинг 11.2. Приметный файл конфигурации /еХс/вкЬ/ввйс! сопйд
РогО. 22
# Сначала пытаемся работать по протоколу 35Н 2, а потом,
# если та сторона не поддерживает вторую версию, по ЗБН 1
РгоСосо! 2,1
# Ключ для протокола 55Н версии 1
НовСКеу /еСс/орепззЪ/ззб„бозГ-„.кеу
Ключи для протокола ЗЗН2 - КЗА и БЭА
НоеСКеу /е1с/орепз51"1/ввЪ.„Нюз1;_г5а_кеу
НовСКеу /еСс/орепзвЬ/ввЬ„1'1овЬ__дза„кеу
4 время жизни и размер ключа ввЬ. версии 1
КеуйедепегаС1оп1пЬегча1 3600
4 По умолчанию используется; размер 768 бит,
# лучше установить 1024
ЗегчетКеуВЗХе 1024
# время, через которое кзй&ч# сервера будут созданы заново.
4 Периодическая смена ключей повышает безопасность
системы.
КеуЙедепегаГ1оп1пВегча1 111
4 Запрещаем регистрацию пользователя грог по :бйЬ.
4 Это не исключает возможности- удаленного
4 администрирования: просто руту придется зайти под
4 обычным пользователем, а затем выполнить команду ей.
4 Зато злоумышленнику понадобится украсть
# не один, а два пароля: и геол, и обычного, пользователя.
регштЬКооГЬодтп по
# Протоколирование (раскомментируйте, если нужно
4 вести журнал с помощью системы вув1од)
# <Зу81одРасШДу АРТИ
# ЬодЬече1 1ИРО
# Аутентификация
# Включает парольную аутентификацию
4 и запрещает пустые пароли
РаевыогбАигЬепЬхсаСтоп уев.
РегпйбЕгарГуРаэежгбн пр
#ВГг1с1Мойее уев
4 используем КЕА-аутентификацию
НЗААисЬепЫсаЫоп уез
РиЬкеуАцсЬепЦфсМхрп уев
# Аутентификация тГюеЬз * обычно не используется,
4 поэтому запрещаем ее:
4 пользовательские файлы -/.гИовбе и --/.зЬонСв не
4 будут использоваться
КЬовбвАиГ-ИепЫсаЫоп по
ТдпогеНковЬз уев
4 НЕ использовать РАМ аутентификацию
РАМАиВИепЫсаЫопУтаКЬбХпб по
4 дополнительное время клиенту на то, чтобы
4 аутентифицировать себя.
# Если за это время клиент не смог ввести пароль,
# соединение будет прекращено
Ьод1п0гасеТ1те 2т
# Следующие параметры нужны для того, чтобы заставить
# систему X Шпйоиг работать по ааЪ. Подробнее вы
# сможете прочитать в документации по ззИ
#Х1 ХГогюагсИпд уев
#Х11В1зр1ауОЕбвет 10
#Х11П>е1‘Оса1Ио8С уев
#Рг1пбМоЬй уев
#Рг1пРЬавЫ|Од уев
#КеерА:1.1уе уев
#СвеЬод1п по
#УвеРг1и11еде5ерагаб1оп уев
# Сотргевв1оп уев
# Путь к баннеру
Ваппег /воте/раСЪ
# подсистема агСр-сервера
ЗиЬвузбет вГбр /изг/НЬехес/орепввИ/вЕЪр-вегуег
Запуск демона авКб
Перед первым запуском ккНй необходимо сгенерировать файлы, содержа-
щие ключи кодирования. В сценариях, осуществляющих запуск сервера
кяЬб, обычно предусмотрена проверка наличия этих файлов. В случае их
отсутствия они генерируются автоматически.
Ключи, с которыми можно запускать взЬб, перечислены в таблице 11.4.
Ключи сервера эвМ Таблица 11.4
Ключ Назначение
-Ь биты Определяет число битов для ключа сервера (по умолчанию 7681. Эту опцию можно использовать, Только если вы используете протокол 83Н версии 1
-б Режим отладки (ОЕВУС). В этом режиме сервер не переходит г фоновый режим, обрабатывает только одно соединение и подробно протоколирует свои действия в системном журнале. Ключ отладки особенно полезен для изучения работы сервера
•0 Так же, каки при использовании предыдущего ключа, сервер е$М не будет пере- ходить вфоновый режим. Однако в отличие от -б КЛЮЧ -0 не переводит сервер в режим отладки
-в Отправлять отладочные сообщения не в системный журнал, а на стандартный поток ошибок
-* файл Задает альтернативный файл конфету рации вместо /еЬс/вяй/вйЪЕ1„сопЛд
~д время Предоставляет клиенту, не прошедшему аутентификацию, дополнительное время на ввод пароля. Значение 0 интерпретируется как бесконечное ожидание
Продолжение табл. 11.4
Ключ Назначение
-В файлключа Задает альтернативный файл открытого ключа (ключ узла). По умолчанию не- пользуется файл /еь е/ая.Н/ваИ_Д1ааь_кву. Этот ключ может понадобиться, чтобы запускать зяМ от имени кеприйилегирозаннт-о пользователя» Также ключ —к часто применяется при за пуске ыФФ ж» сцена рнев. задающих различные настройки в за- висимости от времени суток (в рабочее и нерабочее время)
4 Используется, если нужно запускав* через суперсервер хИеТЧ Обычно демон «йк1 запускается отдельно при загрузке системы. Связано это с тем, что демону ввМ требуется некоторое время дли генерирования ключа сервера, првж де чем он сможет ответить на запросы клиентов. При запуске через суперсервер при каждом соединении суперсервер будет заново вызывать авВВ, а тот — заново генерировать ключ. Однако на современных компьютерах задержка практически не заметна. Поэтому вполне можно запускать иМи через суперсервер
-к время Задает время, спустя которое ключ сервера будет создан заново. По умолчанию время составляет 1 час, Эту опцию можно использовать только с протоколом 55Н версии 1
р порт Указывает альтернативный порт, который демон будет прослушивать вместо порта 22
-ч -Тихий режим-: не протоколировть сессию. Обычно протоколируется начало ау- тентификации, результат аутентификации и время окончания сессии
Тестовый режим. Применяется для проверки корректности файла конфигурации
-4 Разрешается использовать 1Р-адреса только в формате (Ру4
-6 Разрешается использовать 1Р-адоеса только в формате 1РчЕ>
Использование ЗЗН-клиента
Клиентская программа «як находится в пакете орепввк-сИепез вместе с
типовым конфигурационным файлом7еес/звН/зяИ_соп^1д. Настройки
можно задавать и из командной строки, запуская ккй с соответствующими
ключами. Основные ключи и аргументы перечислены в таблице 11.5.
Формат команды:
вэИ [ключи] [ключи_с_аргументами] [лсгин_имя@] хост. доме1ч
[команда]
Если последним аргументом указана команда, то после успешного входа
пользователя она выполняется на удаленной машине вместо командной
оболочки по умолчанию. Таким образом можно работать не в командной
строке, а запустить на удаленной машине графический сеанс.
Ключи программы мН
Таблица 11.5
Ключ Назначение
-а Отключает перенаправление аутентификации агента соединения
А Включает перенаправление аутентификации агента соединения
-с ЫоыЖаЬ 13($бЗ | йез Позволяет выбрать алгоритм шифрования при использовании первой вер. сии протокола ЭЙН, Можно указать ЫошТЕеЬ, Зйек или бек
-с Задает использование сжатия всех данных во всех выходных потоках с ие- дояьзоаанием дйр.
Продолжение табл. 11.5
Ключ Назначение
4 Данная опция переводит ззЬ в фоновый режим после аутентификации пользователя, Рекомендуется использовать для запуска программы Х11. Например: -Т Ном хтегт
Дидентдрайл Задает нестандартный идентификационный файл (для нестандартной АЗ А/Э5А- аутентификаци и)
-1 логин_имя Указывает, от имени какого пользователя будет осуществляться регистра- ции на удаленной машине
ф парт Определяет порт, к которому подключится программа взЬ (по умолчанию используется порт 22)
•ч Переводит программу кяЬ а -тихий режим». При этом будут отображаться только сообщения о фатальных ошибках. Все прочие предупреждающие сообщения в стандартный выходной поток выводиться не будут
-V Включает отображение всей отладочной информации
-X Отключить перенаправление XI1
-X Включить перенаправление Х11
Использовать только первую версию протокола ЗЗН (принудительно)
-2 Использовать только вторую версию протокола 53Н (принудительно)
-4 Разрешается использовать |Р-вдреса только а формате 1РМ
6 Разрешается использовать 1Р-адреса только в формате 1Рх6
Аутентификация средствами 55Н
Аутентификация в 88Н может производиться одним из следующих че-
тырех способов:
* По принципу доверия. При этом способе проверяется, внесено ли имя
компьютера, с которого производится доступ, в файл --/ .гИозсз (или
~/ ,зИозСй). Если его имя (1Р-адрес) внесено, то пользователю раз-
решается доступ без проверки пароля. Этот способ очень уязвим для
разнообразных атак (подмены 1Р-алреса и т.п.), так что использовать
его категорически не рекомендуется. Для того, чтобы разрешить этот
способ, нужно установить значение по для директивы 1(щогеКНо$^ и
уев для КЬозЬАпНзепйсаНоп в файле /еСс/орепзз1т/й8М„сопЕ, а
чтобы запретить — значения для этих директив поменять на противо-
положные.
* Усиленная аутентификация по принципу доверия. Этот способ в
принципе повторяет предыдущий, за тем лишь исключением, что
проверка имени компьютера (1Р-адреса) производится в защищенном
режиме. При этом используется шифрование открытым ключом. За
включение и отключение данного механизма аутентификации отвеча-
ют директивы ШювСвЯБААцШепНсайоп и 1&поге1Шо$&. Несмотря на
некоторые усовершенствования, этот способ по-прежнему является
небезопасным.
• Аутентификация самого пользователя с использованием шифрования
с открытым ключом. На момент регистрации у пользователя должен
быть доступ к файлу своего секретного ключа, и он должен предо-
ставить пароль для его дешифровки. Этот способ аутентификации
является самым надежным, но и самым неудобным. Кроме того, он
вынуждает пользователей постоянно иметь под рукой файл с клю-
чом. За включение и отключение этого способа отвечает директива
РиЬкеуАп(Ъеп11саНоп (или КБААтИЬепНсаНоп в зависимости от
версии).
* Аутентификация с помощью пароля. Это оптимальный способ: он удо-
бен в использовании и в го же время достаточно безопасен. Именно
он и используется в большинстве случаев. В отличие от иИпер пароль
здесь передается в зашифрованном виде. Основной недостаток дан-
ного метода заключается в относител ьной слабости паролей (их длина
зачастую составляет менее 8 символов). Это позволяет подбирать их с
помощью специальных программ. За включение и отключение этого
способа отвечает директива РазмгогбАиПтепНсаРоп
Какой способ использовать т решать вам. Однако настоятельно не
рекомендуется применение первых двух способов. Их использование до-
пустимо лишь в исключительных случаях и в особых условиях.
Бесплатный 88Н-клиент для ХУннкжа можно скачать у автора, Роберта
Каллагана, сайт ИСЬр:/ /иим. а!р. СОЙ . гаиХ-госа/ЬСззИ. ЪСй1 .
Глава 12
РАЗДЕЛЕНИЕ
РЕСУРСОВ:
№8 И 8АМВА
о---МРЗ _ СЕТЕВАЯ ФАЙЛОВАЯ СИСТЕМА
$АМВА:к1ШХ-СЕРВЕР
ДЛЯ УУ1Ь1ООУУ8-КЛИЕНТОВ
СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ
КАТАЛОГОВ В мних МАИОВАКЕ
ПРОГРАММА иИИЕЮНВОВНООО -
ПРАВИЛЬНЫЙ ВЫБОР
игшх ПОЛНОЕ РУКОВОДСТВО
12.1. ЫР8 — сетевая файловая система
Сетевая файловая система РИ& Зкапп§) — это протокол, по-
зволяющий монтировать файловые системы на удаленных компьютерах.
При этом создается ощущение, что эти файловые системы располагаются
локально, если не считать, конечно, скорости соединения. Сетевая файло-
вая система чем-то напоминает службу «Доступ к файлам и принтерам»
сети Мкгозой.
Служба МР8 основана на КРС Ргосейиге СаИ)' клиент вызывает
функции в программе сервера. Клиентскому компьютеру не требуется
дополнительного программного обеспечения, чтобы воспользоваться
?<Р8: ядро 1дпих само определяет^ ЧТО запрошенный файл находится на
ХР8-сервере, и автоматически гёйёрйрует КРС-нызов, чтобы получить
доступ к файлу.
Версия 2 протокола №8 появилась в ядре 1.2. Начиная с версии ядра
2.2.18, поддерживается версия 3, в которой улучшена производите льность
благодаря безопасной асинхронной записи файлов, добавлены поддержка
файлов размером больше 2 Гб и средства блокировки файлов. В ядра 2.4
и выше встроена полнофункциональная МР8уЗ, работающая поверх про-
токола ТСР (в дополнение к обычному СОР). и большинство популярных
дистрибутивов ее поддерживают. Четвертая версия с повышенной
безопасностью появилась в Кеб На! Егйегргйе Стих 4.
ГАО и НОЗСТО-доку менты можно найти на домашней странице проекта
пЕв . встгсеЕогде .пег. .
12.1.1. Клиент ЫГ8: монтирование сетевого каталога
Монтирование осуществляется с помощью команды тоип(:
й ггюппС -Ь птз -о Е1глео=30 пЕввет^ег .йотатп.сот;
/Ноте/йеп /Ноте/йеп/гегпоЬе/
Прежде всего, нужно указать тип файловой системы; -С пЕз. Параметр
бтео задает время ожидания, равное 3 секундам. Интересующая нас
файловая система находится на компьютере п Е эзегмёг. йота!» сот и
смонтирована там как /коше/йеп. Мы же подмонтируем ее в подкаталог
домашнего каталога на локальном компьютере /Ноте/йен/гетосе/ .
Для монтирования сетевых файловых систем предназначены ключи ко-
манды тоипг, перечисленные в таблице 12.1.
Ключи команды таит для сетевых файловых систем Таблица 12.1
Ключ Назначение
Ьд Если первая попытка монтирования файловой системы ИРВ окажется не- удачной. то попытки будут автоматически повторяться в фоновом режиме
?8 Если первая попытка монтирования файловой системы МЕЗ окажется не- удачной, то попытки будут автоматически повторяться в приоритетном режиме. Это значение установлено по умолчанию
5О(( Задержка при выполнении операции, связанной с файлом, расположенным в сетевой файловой системе МР5 (возникающая при сбое сервера или отклю- чении сети), будет приводить к отправке приложению сообщения Об ошибке ввода/вывода. Й хотя некоторые приложения могут корректно обрабатывать такую ошибку, но большинство из них все-таки такой возможностью не об- ладают. Не рекомендуется устанавливать это значение, так как оно может привести к появлению испорченных файлов и потере данных
ЬагД Задержка при выполнении операции, связанной с Файлом, расположен- ным в сетевой файловой системе МРЗ, будет приводить к приостановке, а затем возобновлению процесса с прерванного места. Таким образом будут предприниматься повторные попытки выполнения операции. Значение ЬагН установлено по умолчанию
1ср Монтирует сетевую файловую систему с помощью протокола ТСР, а не ПОР
г$ие=Ю24 Задает размер информации, пересылаемый при чтении файлов за один раз. По умолчанию этот размер равен 1С24 байта. Однако зачастую имеет смысл увеличить это значение (например, до 409В)
ще(да=1024 Аналогично гайа, но для операции записи
поезде Запрещает выполнение программ или сценариев в монтируемой файловой системе. При этом клиентом будет игнорироваться атрибут .исполнение*
Чтобы сетевая файловая система монтировалась автоматически при за-
грузке системы, нужно внести определенные записи в файл /ес с/Е в г. аЬ.
Например, такая запись для рассмотренного выше примера может иметь
примерно следующий вид:
пЕззеетехдбогат, сот; /йоге/йеп /5зате/бш/гетэЕе/' пЕз Ь^,йакй,.хн 1 О
12.1.2. Настройка сервера 14 Е8
Сервер КЕБ экспортирует файловые системы, то есть делает их доступ-
ными для использования с другого компьютера. Обслуживанием экспорта
занимаются следующие демоны:
• грс.пншпШ, обрабатывающий запрос на монтирование;
♦ грс.пГчй. обеспечивающий доступ к файлам смонтированной файловой
системы;
* грсДоскб и грслСаШ, управляющие блокировкой файлов;
♦ грс.гцщйад, контролирующий квоты на экспортируемых файловых
системах.
Эти демоны устанавливаются из пакета пЕз-нсИв в каталог /зЬ1п (реже
/ивг/вЫп). Запускаются они в ходе начальной загрузки, и сценарии
запуска находятся в том же пакете.
Как и другие КРС-службы, ХЕ8 зависит от демона роНшар (или грс.
рогйпар), который должен запускаться первым. Загрузочные сценарии
большинства современных дистрибутивов включают запуск этого демона.
Если в вашем дистрибутиве демоны ХЕ8 по умолчанию не запускаются,
отредактируйте загрузочные сценарии, организовав запуск в следующем
порядке:
1. грс.рогПпар;
2. грс.шоиШЙ, грс.пйй;
3. грс.йТаН, грсЛоскд (с ядром выше 2.2.18 этот демон вызывается из
пй>й, и отдельно запускать его не нужно), грс.гдио1ас1.
Если на вашем компьютере запушен также сервер 0X8, проследите за
тем, чтобы сервер 0X8 запускался после демонов ХЕ8. При соблюдении
данного условия гарантируется корректная работа ХЕ8.
Конфигурационным файлом сервера ИЕ8 служит /ерс/ехротрз, со-
держащий список экспортируемых файловых систем. В каждой строке
записан один экспортируемый каталог, узел или домен, которому раз-
решено монтировать этот каталог, и — без пробела, в скобках, через
запятую, — спецификации экспорта. Длинные строки можно разбивать
на несколько строк при помощи символа обратного слэша.
Разрешается экспортировать любые каталоги, а не только корневые
каталоги физических файловых систем. Единственное ограничение —
файловые системы, физически расположенные на разных устройствах
(разделах), должны экспортироваться по отдельности.
Листинг 12.1. Примерный файл /еГс/ехроПв
/риЬ (го, тпвесиге, а11_в<зи.азИ)
/йоте/беп бепкоте,йотатп.сот(ги)
/тпГ/сбгот (го)
/тпТ/сйгот сотрИ . <3ота1п. сот(поасссея)
Давайте разберемся в данной конфигурации. К каталогу /риЬ имеют
доступ в режиме «только чтение» все компьютеры сети. К каталогу
/Иоте/беп доступа режиме чтения и записи имеется только с компьюте-
ра йепТюте.ботам .сот. К каталогу /тпг./сйгот доступ в режиме «только
чтение» имеют все компьютеры, кроме сотрИ. бот а ш. сот.
Другие спецификации экспорта перечислены в таблице 127.
Спецификациив файле /есх/ехрожа Таблица 12.2
Спецификация Назначение
БбСИГЙ Требует, чтобы запросы исходили только из портов безопасного диа- пазона — с номерами, меньшими 1024. В Моих доступ к таким портам имеет только пользователь гоо(. Значение весите по умолчанию вклю- чено
1п$есиге Отключает значение весите
го Устанавливает для экспортируемого каталога доступ в режиме «только чтение*
п* Устанавливает для экспортируемого каталога доступ в режиме чтения и записи
поассезз Запрещает доступ к конкретной звтаи (подкаталогу) экспортируемого дерева каталогов
Нпк^аЬао1и(е Оставляет все символические ссылки без изменений. Значение включе- но по умолчанию
Нпк _ге1а1гче Конвертирует абсолютные ссылки а относительные
8циайН_ук183циазЬ_дИз Указанные идентификаторы групп и пользователей будут конвертирова- ны в анонимные
аНздоазЬ Все идентификаторы групп и пользователей будут конвертированы в анонимные. При этом всем им будет запретен доступ к экспортируе- мым каталогам. По умолчанию так наделается
поаЛ_5циазИ Значение, обратное а^здиазЬ Активизировано по умолчанию
тоотзциазЬ Преобразует запросы от пользователя гоо1 (щ<3“0) г запросы от аноним- ного пользователя с целью запретить суперпользователю его приви- легии при доступе к файловой системе. Это значение установлено по умолчанию
по гоо* зциазЬ Отменяет значение тоо^сдиазЬ
апопиШ=111Р апопдшй=БЮ Задают идентификаторы анонимных пользователей. По умолчанию анонимным пользователем является пользователь поЬойу. Однако с помощью этих спецификаций вы можете сами указать, кого следует воспринимать в качестве анонимных пользователей
Каталоги, перечисленные в /егс/ехрогЬз, экспортируются на этапе на-
чальной загрузки. Добавить или удалить каталог в течение сеанса можно
при помощи утилиты схроП/х из пакета пЬтШв.
Для повышения безопасности доступа к разделяемым ресурсам служат
конфигурационные файлы /еЬс/йовсз .а11ои и /есс/ИовСв. йепу
(п.11.2.2).
12.2. ЗатЬа:
Мпих-сервер для \ЛЛпс1оуу8-клиентов
12,2.1.8атЬа на сервере
Из п.6.3 вы узнали, как использовать пакет 8атЬа (ими. заглЬа. огд) для
просмотра общих ресурсов сети ’Мпдохуя. В этом параграфе я объясню,
как настроить сервер $атЬа, чтобы открыть общий доступ к ресурсам
компьютера под управлением Глпих.
С помощью ЗашЬа вы сможете:
• предоставлять доступ к: разделам Ыпих для рабочих станций \ММоуга;
• получать доступ к ресурсам сети Мтсгозой;
• распечатывать документы на сетевых принтерах сети М1сго.чой. а
также предоставить локальный принтер для использования в качестве
сетевого.
Вам понадобятся основной пакет ^атЬа-сопнпоп и серверный ^атЬа. Из
серверного пакета $атЬа устанавливаются демоны атЬб и птЬд. Пер-
вый из них является носителем протокола 8МВ, а второй обеспечивает
поддержку имен Ке1В1О$. Сразу жё после их настройки ваш компьютер
будет отображаться в сети.
После установки сервисы ыпЬй и птМ конфигурируются как запускаемые
в ходе начальной загрузки. Возможно, вас не устраивает такой вариант
(например, в тех случаях, когда обращение к ним планируется редко, и
вы хотите освободить память). В этой ситуации никто не мешает добавить
их в файл конфигурации суперсервера /есс/хтпеЫ.сопЕ и запускать
«по требованию». При этом не забудьте только отключить их автозапуск
с помощью конфигуратора системы.
12.2.2. Настройка 8атЬа
В этом параграфе будет рассмотрена Настройка пакета БашЬа «вручную»,
то есть без помощи конфигуратора. Вы же можете использовать кон-
фигуратор (рис. 12.1), однако имейте в виду одно «но»: если вы будете
настраивать 8ашЪа или любую дру^д службу сервера в другом дистри-
бутиве, знакомого вам конфигуратора в нем может не оказаться. Поэтому
вы должны знать хотя бы назначение и расположение системных файлов
той или иной службы сервера.
Основным конфигурационным файдом сервера 8ащЬа является файл
/еСс/атЬ.сопЁ. Именно в нем задаются все используемые и предостав-
ляемые ресурсы Формат данного файла напоминает формат ШЬфайла
ХМпдоте.
Файл /еСс / йгпЬ . сопг состоит из нескольких секций, в начале каждой из
которых в квадратных скобках указывается ее имя. Параметры в каждой
секции указываются в виде записей Имя= Значение.
3»в1|л:; /Настройка Ёправхв
ДовавктЪ О
Счтд/чь ресурс 5атЬа
КмёмжДНк
Каталог:
(утпт/Лак^е/Бибяиотекга'Фанта. |сйяР;у|
Нааааикереоуроа:
Фантастика
Оцисяиио:
Основнывлрааа:
® Тота для чтения
О Чтение /Лаптев
М отмени Пт
Рис. 12.1. Конфигуратор зувТет-сопЯд-затЬа в дистрибутиве Ре&ога СотеЗ
Секция [д!оЬа1]
Основной является секция Ед1оЬа1 К ее пример приведен в листинге 12.2.
Листинг 12.2. Пример секции д1оЬа!
[дХоЬаИ
иогкдгоир = НОНК
согнтепС. = Ыпих Зегуег
диезС ассоипС = диезе
зесигХСу - зИаге
рг1п61пд - Ьзб
рг±пЬсар пате = /еСс/ргхпСсар
1оай ргХп&егз = уез
с11епЬ ссиЗе раде = 866
сЪагасЕег зеС = ко18-г
епсгурЬ райБМогбз = Уез
1од Ше - ^аг/1од/затЬа/].одЛгп
щах 1од з12е = 50
воскеЬ орЫопн = ТСР„ЫОПЕЬАУ ЗО_НОТВНЕ= 8192 ЗО_5НПВОТ=Й192
впя ргоху = по
зиррогС = уез
йотпадп тазЬег = уез
ХлсегЕасен 192.168.1.1/24' 192.168.2.1/24
Директива н’огк^гоцр определяет рабочую группу или имя домена КТ.
Директива сопнпеп! аналогична параметру КТ ОезспрНоп для ОС М/1п-
(Зо\та МТ или Веъспрбоп (Описание компьютера) для ОС \\Чпбо>У8 9х.
Директива ^иез1 ассоип! задает имя пользователя. Значение означает
доступ без регистрации, точнее, под гостевой учетной записью.
Директива «еснгйу может принимать три значения:
• «Ьаге — при каждом доступе будет запрашиваться имя пользователь-
ского ресурса;
• и«ег — для аутентификации будут использоваться имя пользователя
и пароль, которые служат для входа в сетьУУгпбон'х. Это значение ис-
пользуется.по умолчанию;
* вептг — для проверки пароля будет использоваться сервер КГ.
Директивы рНпИвд и ргшТсар пате относятся к подсистеме печати.
Первая из них задает систему печати типа 1580, а вторая указывает, где
расположен файл, содержащий информацию о принтерах. О настройке
принтеров мы поговорим немного позже.
Директивы с!кчН собе раце и сЬагасЧег яе1 необходимы для корректного
отображения русскоязычных имен файлов файловой системы У/шбом'З.
В ОС ХУшОой’з ИТ, начиная с Зетсе Раск 3, передача паролей по сети
происходит в зашифрованном виде. Последние версии 8атЬа поддер-
живают эту возможность. Чтобы воспользоваться ею. нужно установить
значение директивы епсгурГ ра^угогб ранным уе». Если наша версия
8атЬа не поддерживает данную возможность, то вы можете отключить
использование закодированных паролей в ХУтбохУк. Правда, вам придет-
ся вручную править реестр на всех рабочих станциях \Утс1о\«, так что
проще, по-моему, обновить КапзЬа. Но если вас все же интересует, какой
именно параметр реестра УУшдосук нужно изменить, я укажу его:
* В разделе реестра ОС ХУЫом^ ИТ: [ИТ НКЕУ_ЬОСАЬ_МАСН1МЕ
ЗуаШпАСштегй СопГго18е1\$егисе5\Кдг\Рагате1ег8| нужно создать ключ
ЕпаЫеР1ашТех(Ра88М’огб типа ПУУОКХ) и установить его значение,
равное 1.
• В ОС ХУшбохуа 9х вам нужно создать тот же ключ, но в разделе
[НКЕТ_ЕОСАЕ_МАСН[МЕ\8у81еш\Сиггеп1СоШго18е1\8егу1се8\УхП\
Рагате1егк].
* В ОС 2000 нужно внести изменения в раздел реестра
|НК1У_ЕОСАЕ_МАСН^Е\8У8ТЕМСиггеп1СопГго18е(\8егУ1сеС
1.агппап\Уогк81;Н1Оп\Рага1пе1ег«].
Директивы !о$ ГПе и так 1о$» мге определяют имя файда протокола (жур-
нала) и его максимальный размер.
Параметры сокетов задаются с помощью директивы м>ске1 орйоп. Прежде
чем устанавливать эти параметры, рекомендую прочитать тап зтЬ. соп Г.
Если в вашем компьютере установлено несколько сетевых интерфейсов,
то вы можете сконфигурировать пакет 8ашЬа так, чтобы он использовал
все интерфейсы. Как это сделал я, показано в листинге 12.2.
Секция [Котез]
Следующая секция называется [йотез] и определяет параметры совмест-
но используемых ресурсов. Пример содержимого этой секции приведен
в листинге 12.3.
Листинг 12.3. Секция [Когпеа)
[1т отпев]
сотпгпепР = Ноте
ЬгоиееаЫе = уев
. игтЬаЫе = уев
Директива Ьгом>$еаЫе=уев разрешает отображение совместно используе-
мых ресурсов в сети МюгозоЙ. Директива зугйаЫе==уез разрешает запись
в каталоги (тот же эффект будет иметь директива геай оп1у—по).
Секция[риЬПс]
В секции [рцЫ1с] перечисляются расшариваемые каталоги (ли-
стинг 12.4).
Листинг 12.4. Секция[риЬЙс]
[риЬИс]
соттепС ~ УРАТ РагЫС1оп
расй = /тпС/<31зк_е
геас! оп!у ~ по
12.2.3. Практические примеры настройки
Ваших знаний уже достаточно, чтобы самим произвести дальнейшую
настройку. В качестве завершения этого параграфа я приведу пару
практических примеров (листинг 12.5). Обратите внимание, что в файле
зтЬ.соп? комментарии могут обозначаться либо решеткой (#), либо
точкой с запятой (;).
Листинг 12.5.
; Каталог МЕТЬОСОЫ дня входа в домен
[пеС1одоп]
согптепг = ЗагаЬа Нет Ходой. ВегУахе
рагН = /таг/пе^Ходоп
; Не устанавливайте значение уев
сазе зепвКтте = по
диезЬ ок = уез
1оск1пд = по
нгХкаЫе = уев
ЬгоивеаЫе ~ уаз
; Профиль для совместно исйбяьзуемых ресурсов
[ Р.го X 1 1 ев ]
рагЬ = /ивг/1оса1/йагпЬа/ргоМ1е8
ЬгонзеаЫе ~ Пйг •
ргФпСаЫе = по
диезЬ ок уез
; Каталог, используемый пользователем айпап
; Пользователь абпйп должен- существовать на сервере ЗатЬа
[айгок]
сотгпепД - айтхп'э с 1 геологу
раг’п = / Хюте / аскгйп
иаИа изегз = афшл гооЬ
геай оп!у - по
12.2.4. Доступ к принтеру Моих для УУтс1о7У5-машин
Для обеспечения поддержки печати мы уже сделали почти асе воз-
можное. Директиву секции [§1оЬ$1] 1оай рпгПегз загружает принтеры из
файла. / еьс /ртШЙЙдд (листинг 12.2). Используется Шегема печати В8Э.
Осталось только определить секцию [рппГегк] файла зтЬ.сопГ. В этой
секции задаются глобальные параметры для всех принтеров, поэтому нет
необходимости указывать их отдельно для каждого принтера.
Листинг 12.6. Секция (рНгйегз)
[рг.тпСегз]
соттепс = АН РтАпСегв
зесиг!су=зегуег
раЬИ ~ /уаг/врор1/1рс1/1р
Ьгок'зеаЫе. = по
ргтпХаЫе = уез
риЫ1с = уев
мгЗХаЫе = по
сгеа^е поде ~ 0700
Некоторые директивы, используемые в этой секции (Ьгом^еаЫе, нтйаЫе,
сошшеп!), имеют те же значения, что и в секции [Йошек], Директива ра1Ь
задает буферный каталог, в который файлы будут копироваться перед
печатью (так называемый спул принтера). Директива риЬПс ср значени-
ем уез разрешает печать из-под гостевой учетной записи, то есть всем
желающим. Чтобы запретить печать из-под гостевой учетной записи,
укажите риЫ1с=по: в этом случае доступ к принтеру будут иметь только
зарегистрированные на сервере пользователи. Вместо директивы рпЫк
иногда используется ее синоним — директива ок.
Директива мтЙаЫе установлена в значении по для того, чтобы в буферный
каталог принтера (спул) могли записываться только печатаемые файлы.
Возможно, вам потребуется разрешить печать только одному или несколь-
ким определенным пользователям на каком-то определенном принтере.
Сделать это можно так, как это показано в листинге 12.7.
Листинг 12.7. Разрешение печати определенному пользователю
[адгаргп]
уа.И<1 цзег = гооЬ аскгйп ай1л.1п1БСа*;ог
расИ = /Иотё/айпИг.
ртз.пСег ~ салол
риЬИс = по
у.?г1СеаЫе = по
рггпСаЫе ~ уез
Подключение к Уипдои^-компьютеру сетевого принтера, расшаренного
сервером или рабочей станцией под управлением Ыпих, осуществляется
точно так же, как подключение обыкновенного сетевого принтера, В
операционной системе \Ушс1о^ 98 для этого проделайте следующее;
1. Выполните команду меню Пуск-> Настройка-> Принтеры.
2. Активизируйте мастера Установки принтера.
3. Выберите тип принтера; сетевой.
4. Укажите путь к принтеру или нажмите на кнопку Обзор для автома-
тического выбора ресурса.
5. Далее установка сетевого принтера аналогична установке локального.
12.2.5. Доступ к У\Лпс!оуу5-принтеру с компьютера,
работающего под Мп их
Настройки сетевого принтера находятся в файле /еСс/рг!пЬсар.
Примерное содержание этого файла с комментариями приведено в
листинге 12.8.
Листинг 12.8. Файл /еТс/ргйПсар
# //пс_-н$1/11р5т ч!а зтНргДйС
#
1р: \
# описание принтера
:ст"-НР 5МР РозС.Всг1рС Ьр5т от. пСт.Ий1;\
$ имя устройства, открываемого для вывода
: 1р"/с^/1р0: \
# каталог сиула принтера (на локальной машине}
5Й=/ча.г/яроо1/ 1рй/1р: \
# файл учета использондедд -принтера
: а г>/ -саг/ ароо1/1рй/1р/асс1; \
< ; максимальный размер файла. Значение 0 означает
отсутствие сграничений
:тх# 0:\
# имя входного фильтра
.1 Е=-/ивг/Ы.п/зтЬрг ФпС =
В пакет ЗатЬа входит сценарий $шЬрпп1. С помощью этого сценария
можно распечатывать документы на сетевом принтере, используя сер*
висы 8МВ. Возможно, в состав вашего пакета он не входит, поэтому я
воссоздал его в листинге 12.9. Этот листинг частично позаимствован из
руководства по пакету 8атЬа.
Листинг 12.9. Сценарий «тЬрГ1В1
# !/Ы.п/вй. -х
3 (с) Апогеи ТгтйдеИ
$ Этот скрипт является фильтром для системы печати,
# и с по л ь зу юшей
# файл /еСс/ргХпСсар
й Он использует прегражу етЪсИепс для печати файла на
# сетевом принтере,
# который подключен к рабочей станции Ихпскжв.
#
#
# Эта запись создает ипдх-принтер, названный "зтЪ“,
# который будет печатать с помощью этого сценария. Вам
# необходимо создать каталог спупа /ивг/зрооГ/зтЬ с
# соответствующими правами и владельцем
& зтЬ; 1р=/деу/пи11: 8<3=/и8Г/Броо1/5тЬ:зИ:
# 1Е=/ивг/1оса1/ватЬа/втЬрг1пб
# Далее сценарий был изменен Майклом Гамильтоном
# так что сервер, сервис и пароль могут быть считаны из
# файла
# /изг/уаг/зроо1/1ра/РВТМТЫАМЕ/.сопПд
# Для того, чтобы это работало, запись в /егс/рг1пбсар
# должна включать файл учета использования (аГ=...):
#сбсо1онг:\
# :ст=СВ 1ВМ СоХог^ёб оп ббИ:\
# :5Й=/'саг/зроо1/1р<3/с<Зсо1оиг: \
# :аЕ=/Уаг/зроо1/1рб/с<1со1оиг/ассС: \
# :1б=/изг71оса1/ёЬс/этЬрг1пб:\
# :тх=0:\
# :1р=/аёу/пи11;
#
# Файл /изг/уаг/зроо1/1рса/РК1МТМАМЕ/.сопИд должен
# содержать
# вегуег=РС„ЙЕКУЕЙ
Й кегч1се=Рй__ЗНАНЕКАМЕ
#ра83вдогй="раззиогб"
# Например,
# 8егчег=РАЦЬЗ_₽С
# зегч1се=СДЕТ„371
# равз«ог4="я
&
# Файл для отладочной информации, можно изменить на /ДеУ/пиИ
1одГ11е=/стр/зтЬ"рг1пб.Год
Броо1_<31г=/уаг/зроо1/1.рс1/1р
сопЕ1д_Е11е=$5роо1_сНг/.сопЕГд
еуа1 'саЬ $соп€’1д_С11е'
есИо "эегтег $зеетег, зегтНсе $вегч1се" » $1од1:11е
(
есИо ЬгапэХаСе
есЬо ярг1гЛ -*
саС
) I /изг/Ып/втпЬсНепЬ "\\\\$зегУег\\$зегу1сея $раэзи'огс1
-Ц Йиэег -М ~Р » $1одСИе
Теперь вы можете печатать на сетевом принтере. Но, тем не менее, я нее
же рекомендую прочитать руководство по пакету ЗатЬа для получения
более подробной информации о печати на сетевых принтерах.
12.2.6. Конфигуратор 8\№АТ
Конфигуратор 8\УА Г (ЗатЬа М'еЬ-ЬахеЛ А&пМякШм ТооГ) предназначен
для настройки пакета ЗагпЬа через веб-интерфейс. Как и другие конфи-
гураторы. 8У/АТ предоставляет удобный графический интерфейс для
администрирования сервера ЗагпЬа. Основным преимуществом данного
конфигуратора является то, что вам не нужно находиться за компьюте-
ром, который вы администрируете: администрировать сервера ЗатЬа вы
можете с любого компьютера вашей сети. Как и при работе с другими
конфигураторами, при работе со 8\УАТ вам не нужно знать ни названия,
ни расположения, ни формата конфигурационных файлов.
Для установки 8\У?\Т нужно установить пакет эатЬа-зиаС.
После установки пакета проследите за тем, чтобы в вашем файле
/егс/з@гу1сев была следующая запись:
аиаТ 901/Мср
Конфигуратор 8\У?\Т для своей работы использует протокол ТСР и
порт 901. Тем не менее, вы можете назначить любой другой порт. При
изменении номера порта не забудьте изменить номер порта в файле
/егс/ 1пеС<Д. сопЕ или /егс/ххвеСй, сапТ
При этом, в конфигурационном файле /еСс/хтпега.соп{ суперсер-
вера Х1пе1б должна присутствовать секция следующего содержания
(листинг 12.10):
Листинг 12.10. Настройки службы ЗУУАТ
еег^1се зиаС
{
ЗтваЫе = по
рогЬ. - 9 01
зоскеГ„Луре = зЫеат и
маИ = по
оп!у_^гот. - 127.0.0.1
и вег = гооС
эегуег = /изг/вЫп/втак
1од„оп_1а11иге += УЗЕКЮ
}
Если вы хотите конфигурировать сервер ЗашЬа с любого компьютера
вашей сети, закомментируйте директиву оп1у_Ггот= 127-0.0.1 или уста-
новите любые другие параметры доступа к 8\\АТ.
Теперь нужно перезапустить суперсервер. Для этого введите команду.
Я /еЬс./1п1С .д/хХпеЫ гезсагС
Можно также заставить суперсервер перечитать свой конфигурационный
файл:
# к!11а11 -НОР х.1пеСс!
Все! Настройка 5\УАГ завершена, и теперь можно приступить к конфигу-
рированию 8ашЪа с помощью 8ААГ. Для этого запустите свой любимый
браузер и введите 1ЖЕ. ЬНр://ЬоЫ:901.
После установления соединения и авторизации вы увидите основное окно
конфигуратора (рис. 12.2), в котором все самое нужное находится «под
рукой» администратора: от документации до паролей пользователей.
В разделе С1оЬа!$ определяются значения глобальных переменных. Вы
можете получить подсказку по тому или иному параметру, перейдя по
ссылке Неф. Установить значение по умолчанию можно, нажав на кнопку
8е1 ГкГаиН
В разделе 8Ьагек определяются общие ресурсы, а в разделе Решаете — об-
щие принтеры. Состояние сервера 8атЬа можно посмотреть в разделе
ЗДаШв. Здесь же можно запустить, остановить и перезапустить сервисы
8МВ и ММВ. В этом разделе можно завершить любое соединение с сер-
вером 8атЬа, а также просмотреть состояние соединения.
В разделе определяются пользователи, которые имеют доступ
к серверу 8атЬа.
Рис. 12.2. Окно конфигуратора 5МАТ
12.2.7. ЗатЬа и безопасность
Вряд ли стоит разрешать доступ к вашему 8атЬа-серверу всем желающим,
Целесообразно разрешить доступ только определенным пользователям,
которые должны быть зарегистрированы на сервере КашЬа. Напомню,
что для создания пользователя используется команда аббивег, а для из-
менения его пароля — ра^м/ё.
# асМизег -в /Ып/^а1не еатЬа-изег
# разаиД затЬа-изег
Первая команда создает пользователя сервера 5>атЬа под именем ватЬа-
изег. Параметр -я устанавливает «оболочку» для этого пользователя —
/Ып/Еа1зе. Эта псевдооболочка не позволяет вводить команды, поэтому
всем пользователям, которые не нуждаются в работе из командной строки,
рекомендуется назначать ее из соображений безопасности.
ЗатЬа использует свой файл паролей — /еСс/затЬа/втЬраБвж!. В нем
всего три поля: регистрационное имя пользователя, СИЙ и хешированный
пароль. Для добавления пользователя в файл /еСе/ватЬа/етЬравз’ий
и изменения его пароля ЗатЬа использует команду ятЬрак.чнб:
II ктЪраззвд! затЬа-изег
Совет: если вы хотите добавить всех пользователей из файла
/ есс/ранБид в файл /еТ с/затЪа/йтЬраззж!, то используйте для этого
следующую команду:
Й саС /еЬс/раззм'с! I ткатЬраззий, зк > /есс/заЯ1Ьа/зтЬразяий
Не забудьте изменить права доступа к файлу /еСс/затЬа/зтЪразвис!:
# сЬлюй 600 /еСс/ватЬа/зтЬраззий
Осталось только сделать небольшие изменения в секции [§1оЬа1] файла
конфигурации /есс/зтЬ. сопЕ:
зесиг1Су = изег
12.2.8. Оптимизация ЗатЬа
Ваш ЗатЬа-сервер медленно работает, и вы уже устали от постоянных
жалоб пользователей? Лучшим выходом из данной ситуации будет по-
купка нового винчестера. Лучше всего покупать 8С81-винчестер со ско-
ростью 10000 оборотов в минуту. В крайнем случае подойдет 1Г)Е-диск,
поддерживающий режим АТА133 и работающий со скоростью 7200 обо-
ротов в минуту. При покупке такого винчестера обратите внимание на
следующие факторы:
♦ ваша материнская плата должна поддерживать режим АТА133;
♦ у вас должен быть специальный кабель для подключения жесткого
диска (если материнская плата поддерживает АТА100/133, такой ка-
бель у вас будет);
• покупайте винчестер с большим объемом кэша: на рынке можно найти
несколько моделей винчестеров, различающихся маркировкой, но в
одном случае вы получаете 2 Мб кэша, а во втором — 640 Кб (или 1
Мб, но все равно меньше, чем в более дорогой модели).
Если же денег на покупку такого винчестера нет, попробуем оптимизиро-
вать наши настройки. Во-первых, установите значение уея для директивы
майе Ппкх в файле конфигурации зтЬ. сап Е — это должно повысить про-
изводительность сервера, если в общих каталогах имеются ссылки.
Во-вторых, в дистрибутивах на ядре 2.4 есть демон ЬйПнзй. Он занимает-
ся записью буферов, содержащих модифицированные данные файловой
системы, надиск. Настройки по умолчанию не очень эффективны:
30 64 64 256 500 3000 60 0 0
Попробуем немного оптимизировать настройки МЛикЬ. Для этого от-
кройте файл /еСс/эувсЫ .сол{ и добавьте в него.следующую строку:
УГП.ЫПизЬ = 80 500 64 64 15 6000 6000 0 0
Этим мы говорим демону, чтобы он записывал буферы на диск, когда
буфер кэша файловой системы заполнен на 80 процентов.
После этого нужно перезапустить сервис пепл'огк:
# вегттсе пеЬиогк гевСагЬ
Если вам нельзя ни на секунду останавливать сервис пеРтогк, вместо мо-
дификации файла /есс / ву всЫ - соп! введите следующую команду:
4 зувсП -и У1Г..ЫПи3к=«80 500 .64 64 15 6000 6000 0 0»
Чтобы заставить ваш 8атЬа-сервер работать быстрее, попробуем по-
экспериментировать с кэшированием памяти: мы будем использовать
минимум 60 процентов памяти для кэша.
вуэсЫ -м \тп.Ьц{^егтет = «60 10 60»
: Примечание^
Последние два параметра (10 и 60) сейчас не используются.
Значения по умолчанию ~ «2 10 60».
12.3. Совместное использование
каталогов в Цпих Мапдгаке
Конфигуратор сй^кбгаке-ГЛеяЬаге позволяет очень быстро настроить
пакет 8ашЬа для разрешения совместного использования каталогов («рас-
шаривания» каталогов). Убедитесь, что запущены сервисы пй и ашЬ, если
это не так, запустите их:
4 аегутсе пЕа вЬагС
# вегуЗсе зтЬ аЬагС
Запустите конфигуратор сПхкбгаке-ГПе.чкагт1 (рис. 12.3), выберите опцию
«Разрешить всех пользователей» и нажмите Ок.
Если вы выберете опцию «Выборочно», то разделять каталоги смогут
только пользователи, входящие в группу ЕПезЬаге.
Как только вы разрешите совместное использование каталогов, пользо-
ватели смогут расшарить их в своем файловом менеджере. Например, в
Копдиегог для расшаривания каталога нужно щелкнуть на нем правой
кнопкой мыши и выбрать пункт меню БЬаге.
хотите разрешить пользователям совместно использовать некоторые свои
? директории? Это позволит пользователям просто нажать на "Совместное
У использование' в Копс пегас и пацйив
У"Выборочно" разрешит настроить доступ отдельным пользователям.
О Без совместного использования
♦ Разрешитьвсех польз ваятелей;/
О Выборочно
Рис. 12.3. Конфигуратор р1'якс1гаке-!11г15каге
12.4. Программа МпЫе1дГ1ЬогГюос1 —
правильный выбор
Доступ к совместно используемым ресурсам осуществляется с помощью
программ чтЬсКегП и $тЬтоип( Как их использовать, вы уже знаете. Не
очень удобно, не правда ли? Конечно, если вы работаете в текстовом ре-
жиме и система X ХУнккж у вас не установлена, то другого выхода у вас
нет. Но если у вас установлена графическая среда, то бороздить просторы
сети М1сго8ОЙ гораздо приятнее с помощью программы ЫпХец’йЬогйоод
(Сетевое окружение Ткпих).
Установите программу ипОДвЬЬоНюсм! (пакет и команда для запуска
называются так же). Запустите ее и наслаждайтесь!
В верхней части окна отображаются все узлы в Сети, а в нижней — под-
ключенные в данный момент общие ресурсы.
Вы видите, что в сети находятся две машины. Первая — это контроллер до-
мена $егуег.бЬы!аЫ.сот, а вторая — это моя машина <5еп. аЬзНаЬз . сот.
Ресурс рпЫк в данный момент подключен к каталогу /ИотЕ/йептз/тпЬ /
негуег .аНеИаЬа . сот/риЫ 1с. С этим каталогом можно работать как
с обыкновенным каталогом локальной файловой системы.
Чтобы подключить ресурс, выделите его и нажмите кнопку Подключить
или дважды щелкните на нужном вам ресурсе. Появится окно Диалог
подключения, в котором нужно указать необходимые параметры под-
ключения.
Рис. 12.4. Программа ипЫе/дЫюгЬооё
Кнопка Добавить позволяет добавить машину, которую вы часто ис-
пользуете. Совсем необязательно, чтобы машина находилась в одной с
вами рабочей группе.
Нажав на кнопку Настройки, вы можете определить параметры про-
граммы, но предлагаемые параметры вполне приемлемы для большинства
пользователей. Единственное, что нужно указать, так это имя рабочей
группы.
Для поиска компьютера в доступной сети можно использовать команду
меню Опции -> Просмотреть всю сеть.
Глава 13
0Ы5 —
СЛУЖБА ИМЕН
«’--ВВЕДЕНИЕ В 0143
V--- НАСТРОЙКА КЛИЕНТА 0148
’>-- НАСТРОЙКА СЕРВЕРА 0145
о--- КЭШИРУЮЩИЙ СЕРВЕР 0143
о---ВТОРИЧНЫЙ СЕРВЕР 0143
ПРОСМОТР оиз-зоны.
УТИЛИТА ЫЗЮОКЦР
ОПТИМИЗАЦИЯ НАСТРОЕК
СЕРВЕРА 0145
<>--ЗАЩИТА СЕРВЕРА 0145
ИСПОЛЬЗОВАНИЕ ПОДПИСЕЙ
ТРАНЗАКЦИЙ. МЕХАНИЗМ ТЗЮ
ЫНИХ ПОЛНОЕ РУКОВОДСТВО
13.1. Введение в 0Ы8
Перед началом настройки ОХ8-сервера давайте разберемся, как он
работает. Пространство имен 0X8 :— это иерархическая древовидная
структура доменов. Корень дерева доменов обозначается «.». Под ним
находятся домены верхнего уровня, Наиболее известные из них вы зна-
ете: сот, $оу, пеЦ ог§ и т.п. Выделением имен доменов верхнего уровня
занимается 1САХХ — 1п1еп)а1юпа1 Согрогабоп Гог Д8Ы§пес1 Хатек апс!
МшпЬегв. Администрация домена регистрирует домены следующего
уровня и так далее.
Всемирная система доменных имен представляет собой распределенную
базу данных. Каждый компьютер, подключенный к сети, является клиен-
том этой базы, а некоторые компьютеры — серверами.
Допустим, пользователь вводит в окне браузера адрес: Ы(р://«ту\у.уаЬоо.сот.
Чтобы установить соединение с компьютером у/\та/.уаЬоо.сот, компью-
теру пользователя необходимо знать его П’-адрес, поэтому операционная
система пользователя пытается разрешить (перевести) имя компьютера
в 1Р-адрес. С этой целью она обращается к серверу 0X8. Сервер 0X8
сначала пытается разрешить имя данного компьютера, используя свой
собственный кэш имен. Если требуемое имя компьютера в нем отсутству-
ет, то сервер 0X8 должен получить его у другого сервера 0X8, поэтому
база данных 0X8 и называется распределенной.
Сначала первичный сервер обращается к одному из корневых серверов,
список 1Р-адресов которых находится в его конфигурационных файлах
(конкретно, в файле пашей, са). Далее запрос обрабатывается рекур-
сивно: корневой сервер знает имена и 1Р-адреса официальных серверов
0X8 всех доменов второго уровня и перенаправляет запрос к серверу,
который отвечает за домен сот, а тот, в свою очередь, — к серверу 0X8
домена уаЬоо.сот.
Сервер 0X8 домена уайоо.сот возвращает 1Р-адрес компьютера \у\уу,' —
64.58.76.222 или все адреса, которые сопоставлены этому имени (многие
сетевые операционные системы, в том числе и 1лпих, позволяют одному
имени сопоставлять несколько 1Р-адресов).
На самом деле, если выполнить разрешение имени .уапос .сот, то сервер
0М8 возвратит следующие адреса:
64.58.76.222
64.58.76.228
64.58.76.223
64.58.76.176
64.58.76.224
64.58.76.177
64.58.76.227
64.58.76.179.
А официальное, или каноническое, имя компьютера тлууиузЬоо.сот — ’ЖУЛУ.уаВоо.
акаСлз.пет
13.2. Настройка клиента □№>
Разрешение имен на стороне О№-клиента выполняет модуль распозна-
вания (резолвер). В ОС 1лпих он представляет собой набор библио-
течных функций. Конфигурационным файлом распознавателя служит
/еСс/геноХу-сопС, содержащий список Э^'8-серверов (от 1 до 3), ко-
торым можно посылать запросы:
зеагсЬ виЬйотахп.йотаХп.сот йота1п.сот
патевегуег 127.0.0.1 ; сервер по умолчанию
; на локальном компьютере
патезегуег 81.3.165.35; запасной — у провайдера
Директива «еагсЬ используется для поиска компьютера в том случае, если
указано только имя узла без домена. Например, если вы введете в окне
броузера Ьйр://Ьо51, то сначала будет выполнена попытка обращения к
узлу ЬокизиЫотат.^оташ.сот, а потом, если узел не будет найден, к
узлу ИозКботаш.сот.
Комментариев в файле гезо!V.сопЕ не полагается: произвольный текст
можно вписывать только в строки с директивами патекегтег после 1Р-
адреса.
Кроме сервера имен, функции распознавателя могут просматри-
вать и другие источники данных: файл /е1с/Ьок18, СУБД Ш8 и
т.п. Порядок просмотра определен в файле переключения служб
/еСс/пз5^1С.сЪ. сопС:
13.3. Настройка сервера 0Ы8
Локальная сеть с выходом в Интернет может пользоваться сервером
имен, работающим на компьютере провайдера. Но, учитывая типичную
для бывшего СССР скорость соединения, при которой на обращение
к серверу ОМ8 провайдера требуется от 10 до 30 секунд, имеет смысл
установить собственный сервер Ьм$ — обычно на шлюзе, который ис-
пользуется для выхода в Интернет.
Внутренняя сеть (пПгагкт) может обойтись и файлами / еЪс/ЬозСз, но при
большом количестве узлов целесообразно завести ЭМ8-сервер и для нее.
Самый известный сервер имен для Глпнх — это демон пашей из пакета
В] МО (Вегке1еу 1п1егпе1 Мате Оаетоп). Вам понадобится установить еще
пакет Ыпб-НЬй с необходимыми библиотеками и Ыпб-ибк, содержащий
утилиты командной строки шйоокир).
Существуют три версии пакета В1МО. 4, 8 и 9 (версий 5-7 никогда не
было). Сейчас везде используется девятая версия, о которой я и буду
рассказывать.
Для установки девятой версии В1МО требуются:
♦ ядро 2.4 или выше;
♦ библиотека ОрепЗЫ..
Для работы сервера должен быть активизирован сервис ве1теогк.
Основным конфигурационным файлом пашей служит папдаб. сопС который
устанавливается по умолчанию в /еЪс для версии 9 или в /еЬс/паиебЬ
(версия 8), Синтаксис этого файла подобен языку С (листинг 13.1).
Листинг 13.1. Примерный файл патесНсопТ
1одд1пд {
саседогу спате [пи11; );
') ;
орЫопз {
сНгесТогу "Луаг/пашеб";
2опе *." {
Суре ЫпС ;
Ше "патеб. са";
} ;
2опе "бпзЫаЬн .сот" {
суре шазЪег;
Г Не "сШ&ИаЬз .сот";
ПОЫ^У ПО;
);
гопе "О.О.127.зп-айбг>агра" {
Суре тазСег;
ЕПе "патесЗ. 1оса1 ”;
};
гопе "1.168.192.гп-асМг.агра" {
Суре танГег;
Ше "192.168.1";
потНу уен;
};
Рассмотрим этот пример подробнее. Обслуживаемая сервером зона (до-
мен без поддоменов) — бйзЙаЬз.сош Рабочий каталог сервера, от которо-
го отсчитываются относительные пути файлов, — /шаг/пашей. Именно в
этом каталоге сервер будет искать файлы «ЗЪвИаЬв. сот, патей. 1оса1,
192.168.1, патей.са.
Блок определяет опции протоколирования. За ним следует за-
дание параметров самого сервера — блок орБоп$. Параметр Фгес1огу
определяет рабочий каталог сервера. Этот параметр обязателен, но кроме
него в блоке орНопк могут присутствовать и другие (Гогмагбегх, Гогиагс!
и т.п.), о которых будет сказано несколько позже.
После блока параметров должны быть перечислены зоны, обслуживаемые
сервером. Мы будем обслуживать зону (ИшНаЬшсош. Информация об этой
зоне хранится в файле /уаг/иатей/сЦгвИаЬз .сот, с помощью которого
наш сервер будет преобразовывать имена компьютеров в 1Р-адреса. Для
обратного преобразования служит файл /шаг/патес1/192.168.1.
Зоны «.» и «0.0.127.т-аскЗг.агра» —~ особые. Я не буду их подробно опи-
сывать: их назначение вы поймете из дальнейшего текста главы. Файл
пашей, 1 оса! — это файл обратного соответствия, предназначенный для
преобразования 1Р-адресов в имена, то есть, в частности, он используется
для преобразования адреса 127,0.0.1 в имя ХосаГЪозт.
Файл патей.са содержит набор 1Р-адресов корневых ЭМ8-серверов.
При разрешении имени в 1Р-адрес или наоборот полученная информация
кэшируется и остается в памяти сервера определенное время. В дальней-
шем, если нужно разрешить имя в 1Р-адрес или наоборот, ваш ЭМ8-сервер
сначала будет искать необходимую ему информацию в кэше. Если ее там
не окажется, то сервер обратится к одному из корневых серверов ЭМ8.
Файл патев.са необходимо регулярно обновлять, чтобы он всегда со-
держал свежие данные (первый раз его нужно обновить сразу же по-
сле установки сервера, несмотря на то, что этот файл будет только что
создан). Если ваш 1Ж8-сервер предназначен для обслуживания только
внутренней сети без выхода в Интернет, то зону корневых серверов
нужно удалить.
Файл данных сервера имен йИвИаЬз . сот непосредственно служит для
преобразования имен в 1Р-адреса (листинг 13.2).
Записи в этом файле называются записями ресурсов. Формат записи
ресурса следующий:
[имя л смена] [ТТЬ] <т'ип_сети> <тип_записи> сданные >
Где:
♦ Имя ломена обязательно для первой записи в файле, оно всегда
должно начинаться с первой колонки. Для следующих записей это
поле можно опускать. Символ @ обозначает текущий домен.
• Необязательное поле ГГЬ (Типе ю 1дуе) — это время в секундах,
в течение которого данные в кэше считаются достоверными. Если
значение не указано, то оно берется из записи КОЛ (см. ниже).
* Гип сети может содержать значение Ш (1п1егпе1) или Н8 (информа-
ционная служба Незтой).
♦ Тип записи. типы записи ресурсов приведены в таблице 13Д. Осталь-
ные поля данных зависят от типа записи ресурса.
Пустые строки и строки, начинающиеся с точки с запятой, считаются
комментариями.
Листинг 13.2. Файл сЖзПаЬз.сот
га 50А Теп. йЪвПаЬн. сот. ЬозбтааСег. бЪ.811аЬ8
93011120 ; серийный номер
10800 обновление каждые 3 часа
3600 ; повтор каждый час
3600000 ; хранить информацию 1000 часов
86400) 1 ТТЬ записи ~ 24 часа
га № беп . (ЗИвИаЬз - сот.
га А 192 .168.1.1
зга мх 150 <1еп. йИвПаЬа .сот.
йеп га А 192.168.1.1
га нгаго гаТЕЪ СЕЬЕКОМ !Ы№Х)
га мх 100 йеп
га мх. 150 еуд . ЗЪ.аНаЬе. сот.
сот
гш 1И СИАМЕ сЗеп. (ЗИйЫаЬз. сот.
1й СМАКЕ аеп.бМИаЬз. сот.
1 ‘-Р 1И СИАМЕ <3еп .(ЗйзИаЬв. сот.
таИ 1К СРАМЕ йеп.с&вИаЬз .сот.
еуд 1М А 192.168.1.2
1К ИХ 100 йеп.ййэ11аЬз.сот.
ТосаПюзс А 127.0.0.1
Тип записи БОА (Ыап о/ АитНойгу) означает начало зоны. Для каждой
зоны такая запись единственна и должна стоять первой по порядку. Она
содержит имя зоны, почтовый адрес ее администратора (где знак @ за-
менен на «.») и параметры обновления данных. Круглые скобки служат
для разбиения одной записи на несколько строк.
Имя домена может быть сокращенным или паяным. Полностью опреде-
ленные имена заканчиваются символом точки. Если точки нет, то имя счи-
тается сокращенным и к нему автоматически добавляется имя текущего
домена: так, аеп.айзИаЬя .сот без точки будет интерпретировано как
аепайеА 1аЬе. сот. йЬб 11аЬе . сой.. Не делайте этой распространенной
ошибки, не забывайте ставить точку после имени домена.
Серийный номер — это число, на которое ориентируются подчиненные
серверы, перезапрашивая данные у главного сервера зоны в том случае,
если его серийный номер больше, чем у них. Обычно номер представляет
собой дату последнего изменения файла данных зоны.
Типы записи ресурсов
Таблица 13.1
Запись Назначение
8ОА Начала полномочий; определение ОМ$-зоны
№ Определение сервера имен
А {р-адрес ((Ри4), соответствующий имени компьютера. Для 1РУб-адресоа используете» тип Аб
РТЙ Обратное преобразование; ими компьютера, соответствующее !Р-адресу
МХ Шй еХсЬзпде: почтовый сервер, обслухиаающийдомен. Можно перечислить несколько почтовых серверов, указав приоритет; чем меньше число, тем при- оритет выше
СИАМЕ Каноническое им» узла, к которому преобразуются псевдонимы: так, по адресу Ы!р:/ДчмлнЛНв11аЬз,еот обращение будет производиться к с1апДН5||аЬз.сот
Н1ЫРО Информация об узле: операционной системе Иаппаратном обеспечении. Рекомендую не заполнять эту запись или использовать заведомо неправильные денные. Чем меньше информации о вашей сетиполучит злоумышленник, тем сложнее ему будет атаковать ее
ТХТ Произвольный текст — комментарии или нестандартная информация
Содержание файлов обратного преобразования, устанавливающих соот-
ветствие между 1Р-адресами и именами при помощи записей типа РТК.
приведено в листингах 13.3 и 13,4. Внимание! 1Р-адреса указываются в
обратном порядке: 2.1.168.192. Если указан неполный 1Р, например, 1, то
к нему будет добавлен адрес подсети 1,168.192.
Листинг 13.3. Файл патеИДоса!
й 1Ы 8ОА ДИвИаЬв .сот. гос с . ййзИаЬз .сот. (
199609203 ;серийный номер
28800 .‘обновление каждые 8 часов
7200 ;повтор каждые 2 часа
604800 ;хранить информацию 168 насо-В (1 неделю)
86400) ;ТТЬ записи - 24 часа
№ бИзИа'Ьа. сот.
1 РТЕ 1оса1Иоз1.
Листинг 13.4. Файл 192.168.1
О 114 ЗОА деп.дИвИаЬв.сот. Ъо5ТтаБРег.й1811аЬв. сот. (
93011120 ; серийный номер
10800 ; обновление каждые 3 часа
3600 ; повтор Каждый час
3600000 ; хранить информацию 1000 часов
86400 ) ; ТТЪ записи - 24 часа
О 1Ы 115 йен, ЙИз! 1аЬз. сот
1 1.Н РТК <3еп. сйшПаЪв. сот
2.1.168.192 И4 РТЕ ечд .сШнЫаЬв. сот
13.3.1. Обновление корневого кэша
Если вы настраиваете сервер только для своей внутренней сети, ко-
торая не имеет выхода в Интернет, то не спешите обновлять файл кэша!
Он вам вообще не нужен. Вы также должны удалить зону, описывающую
корневой кэш в файле патед. сопЕ.
Обычно файл пагосй. са содержит примерно такую информацию:
Листинг 13.5. Файл корневых серверов
60 1Н №5 60 1К № С.ЕООТ-5ЕЙУЕНЕ.КЕТ. 5 . НСЮТ-ЗЕКУЕЙЗ . ШТ.
60 1Н М3 К.КООТ-8ЕЙУЕЙЗ.НЕТ.
60 1Ы № 0 . ЙООТ-ЗЕЙУЕЙЗ.КЕТ.
6И 1Ы № 6П ТЫ ЫЗ 6Ы ТЫ НВ 60 ТЫ № . 6В ТЫ ЫЙ 60 ты ыз 60 ты ыз . 6В 1Ы ЫЗ . бы ты ыз М.КООТ-ЗЕКУЕКЗ.ЫЕТ А. НООТ-ЗЕЖЕНЗ .ЫЕТ Н.ЙООТ-ЗЕНУЕЙЗ.ЫЕТ В. КООТ-ЗЕЙУЕНЗ. ЫЕТ С.ЙООТ-ЗЕНУЕкЕ.ЫЕТ В.КООТ-ЗЕКУЕЙЗ.ЫЕТ Е.ВОСТ-ЗЕЙУЕЙЗ.ЫЕТ I.ВОСТ-ЗЕВУЕЙЗ.ЫЕТ Е.ЙООТ-5ЕЙУЕВЗ.ЫЕТ
;; АПОТТТОЫАЬ ЗЕСТТОЫ:
С.НООТ-ЗЕНУЕНЗ.ЫЕТ. бмбахбй ТЫ А 192.112.36.4
Е.ЙООТ-ЗЕКУЕКЕ.ЫЕТ. 5нба1бИ ГЫ А 198.41.0.10
К.АООТ-ЕЕЙУЕЙЗ.ЫЕТ. 5мба16И ТЫ А 193.0.14.129
1,. АООТ- ЗЕЙУЕЙЗ . ЫЕТ. 5иба16й ТЫ А 198.32.64.12
М.ЙООТ-ЗЕЙМЕЙЗ.ЫЕТ. 5«бсП6Й ТЫ А 202.12.27.33
А.КООТ-ЗЕНУЕКЗ.ЫЕТ. 5^661611 ТЫ А 198.41.0.4
Н.ЙООТ-ЗЕВУЕЕЗ.ЫЕТ. БибсЦбИ ТЫ А 128.63.2.53
В. ВООТ-ЗЕНУЕЙЗ. ЫЕТ. 5зд6(31ЬЪ ТЫ А 128.9.0.107
С.ЙООТ-ЗЕНУЕЙЗ.ЫЕТ. 5«ба.16И Т.Ы А 192.33.4.12
Г?. ЙООТ-ЗЕЙУЕВЗ. ЫЕТ. 5иба16Ь ТЫ А 128.8.10.90
Е.ВОСТ-ЗЕКУЕЙ8.ЫЕТ. 5иба1ьЬ ТЫ А 192.203.230.10
I.НООТ-8ЕКУЕН5.ЫЕТ. 5иб<П6Ъ ТЫ А 192.36.148Л7
Р.ВООТ-ЗЕКУЕВЗ.ЫЕТ. БмбйТбИ ТЫ А 192.5.5.241.
Для установки файла корневого кэша следует установить пакет
сасЫп^-патеяегуег, но я рекомендую получить и установить самую новую
версий). Для этого подключитесь к Интернету, запустите сервер ОЫ8, а
затем выполните команду
гшХоокир I Ьее пз
В ответ на приглашение утилиты шЯоокир введите две команды:
> ае.С д=пз (или зеС Ьуре^пк)
На экране вы увидите список корневых серверов который будет по-
мещен в файл П8. Для преобразования файла пз в формат палей. са вос-
пользуйтесь следующим а\ук-сценарием (листинг 13.6), вызвав его так:
геЕогптаС из пашей.са
Листинг 13.6. Сценарий ге1оппа1
♦ ’ /Ып/аик
авдк ' .ВЕСТЫ {
/тро-С/ { ргТгЛ ". И № * $4"." }
/ТнЬегпеС/ ( рг!пС $1"." " 999999 ТЫ А * $5 }
Теперь осталось скопировать пашед.са в каталог /уаг/пашев, и на
этом — все.
Можно обновить корневой кэш и проще, воспользовавшись утилитой (Н$:
# й!д @а.гооЕ-вегчегв.пеЬ . пз > пат«с!. са. пей
или
# Д1д @198.41.0.4 . пз > пашей.са.пей
После этого остается только заменить старый файл пашей.са новым
файлом пашей. са. пей.
13.4. Кэширующий сервер ВЫ8
Каждую зону обслуживает один главный сервер имен, хранящий офици-
альную копию данных о зоне. Он называется «авторитетным», потому что
его ответ — точный и окончательный. В зоне может быть также сколько
угодно кэширующих серверов, у которых собственных данных нет: они
накапливают данные, кэшируя ответы на свои запросы. Ответ кэширую-
щего сервера неавторитетен, зато быстр. Обычно они используются для
уменьшения РИЗ-трафика во внутренней сети.
Если собственного домена у вас нет, то имеет смысл возложить обработку
□^ запросов на провайдера, создав у себя кэширующий РКЗ-сервер.
Вместо того, чтобы запрашивать последовательно несколько удаленных
корневых серверов, он будет отсылать в сеть только один запрос на раз-
решение имени (РИК-серверу провайдера) и получать только один окон-
чательный ответ. Это особенно полезно, если у вас плохое соединение
с Интернетом.
13.4.1. Настройка кэширования на 0Ы8-сервере
Для того, чтобы насладиться такой возможностью, следует в блок орбопх
файла пашей. сопТ' добавить следующие параметры:
^огмагй ЛгэС;
1’огиагйе.гз {
81.3.165.35;
81.3.150,2;
};
Директива Гоги-агйегз задает заключенный в фигурные скобки список
1Р-адресов РНЗ-серверов, которым ваш РМ8-сервер будет переадресо-
вывать запросы вместо того, чтобы отвечать на них самому. 1Р-адреса
перечисляются через точку с запятой.
Директива Гогнагб может принимать одно из двух следующих значений:
♦ оп!у — ваш ЭМ8-сервер никогда не должен предпринимать попыток
обработать запрос самостоятельно;
• ЙГ8( — ваш ОЫЗ-сервер должен пытаться сам обработать запрос,
если указанные далее параметром Гопуагбегя сервера не были
найдены.
Без директивы Гопгагбегз директива Горман! не имеет смысла.
Таким образом, возвращаясь к настройке сервера, весь файл пашей. сапЕ
будет выглядеть так:
Листинг 13.7. Файл патей.сстГ кэширующего сервера О№
ОрСЗОПБ {
<31гееСогу "/уаг/пашей";
Гогиагс! Е1гвЬ;
^огадагйетй {
81.3,165.35,-
81.3.150.2;
);
// Раскомментируйте следующую строку, если брандмауэр
// мешает работе службы ОЫ8
// диегу-воигсе рог! 53;
};
гопе " ." [
Суре Ыпб;
Ше "пашей, са";
};
гопе "0.0.127.тп-айбт.агра" {
буре зХаче;
^11е * пашей.1оса1
};
Обратите внимание, что в этом примере уже не поддерживается зона
с!Ьм1аЬз.сот.
13.4.2. Возможные проблемы и их решение
Как правило, кэширующий сервер запускается на отдельном компьютере,
который подключается к Интернету по коммутируемому соединению.
Нужно учитывать, что сервер сразу требует обращения к како-
му-нибудь сетевому ресурсу. В нашем же случае, если соединение не
установлено, то устройство рррО существовать не будет, а пашей будет
страшно ругаться на то, что сеть недоступна. При этом недоступным
окажется даже интерфейс 1о, а программа пх1оокир, если она нам ио-
на лобите я без существования сети, просто «подвиснет», ожидая ответа
от сервера
Есть два способа решить данную проблему. Какой использовать — это
решать вам. Первый заключается в том, чтобы запускать сервер ОМ8 по-
сле установления РРР-соелинения и останавливать перед его разрывом.
Для управления демоном пашей служит утилита тпйе (пйс в В1\'В 8). Ее
можно использовать с параметрами йагГ, ‘Лор. ге!оай (перегрузить файлы
данных зоны, если в них произошли изменения), гезГагк Команду гпйс
всагс следует включить в сценарий установления РРР-соединениг. а
команду гп<1с в Сор — в сценарий разрыва.
Второй способ состоит в том, чтобы при постоянно работающем сервере
ПМ8 подменять файл корневого кэша пашей. са. В отсутствие РРР-со-
единения по этому имени находится пустой файл, а сценарий установки
соединения содержит команду, копирующую на его место нормальный
файл кэша пашей.са.ррр-оп. При использовании этого способа в ваших
протоколах (журналах) будут регулярно появляться сообщения примерно
такого содержания:
Лап 5 16:10:1.1. йеп пашей [10.147 ]: Мо гооС патевеп/ег 1ог 1Ы
Для полноты картины хочу отметить, что, если при использовании ПЫ8 у
вас возникают проблемы с монтированием удаленных файловых систем,
запускайте сервер пашей после запуска пГяй и шоипГй.
13.5. Вторичный сервер ОЫ8
Вы когда-нибудь обращали внимание, что у любого уважающего себя
провайдера есть два сервера ЭМ8 — первичный (рптагу или такГег) и
вторичный (зесопйагу или з1ауе)? Вторичный сервер копирует данные о
зоне с первичного. Эта операция называется зонной пересылкой. В любой
зоне должен быть хотя бы один вторичный сервер на тот случай, если с
первичным сервером что-нибудь случилось или он просто не в состоянии
обработать большое количество запросов клиентов. Получив отказ от
первичного сервера, система разрешения имея обращается к вторичному.
Для повышения надежности работы службы имен желательно включать
вторичный сервер в другую сеть и в другую цепь питания.
Для вторичного сервера ОМ8. обслуживающего домен йЬвйаЬк.сот, сек-
ция зоны в файле пашей. соп! будет выглядеть так:
гопе * (ЗЬвНаЬе.сот" (
Суре &1ауе;
Н1е * йЬзИаЬз .сот" ;
тавЬегв { 192.168.1.1; 192.168.1.2; };
1Р-адреса основных серверов ОМ4, вашей сети указываются в директиве
тамегв через точку с занятой. Вторичный сервер, в отличие от кэширу-
ющего, всегда должен иметь тип $1ауе.
13.6. Просмотр ОЫЗ-зоны. Утилита пз!оокир
Утилита Пб1оокир. служащая для просмотра информации о зоне (домене),
входит в пакет Ыпа-иШз и в популярных дистрибутивах устанавлива-
ется по умолчанию. Она есть дакже в Р4Т/2ООО/ХР.
Зоны бывают разные: одни содержат информацию о компьютерах в до-
мене и служат для преобразования имени компьютера в П’-алрес и на-
оборот, другие содержат информацию о корневых серверах— зона «.».
Последняя зона относится к типу ЬпИ — подсказка. Зоны для разрешения
имен обычно имеют тип пииНег (главный), а зоны вторичных серверов от-
носятся к типу »1ауе (подчиненный). Обычно просмотр зоны разрешается
только определенным, доверенным узлам. Итак, запустите пвкюкир:
# паХоокир
ОеЕаиХЪ Яе^ег.- П54.оЫ1.ги
АоДгезЗ: 81.3.166.35
Дня того, чтобы получить информацию от сервера, нужно ввести в строку
приглашения тип запроса: зес ч=<тип> (или вес ьуре=<тип>). Типы
запросов перечислены в таблице 13.2.
Типы запросов Таблица 13.2
Тип Описание
аоа Начало полномочий
а Преобразование имени а ]Р-адрес узла
аааа Отображение 1Ру6-адреса узла
п$ Отображение информации о оерэера 0Ы8
р1г Преобразование !Р-адреса в имя узла
дак? Распространенные службы
ЫпТо Информация об аппаратном обеспечении узла
тх Информация о почтовых серверах домена
м Отображение записи общего назначения
спаггцэ Отображение канонического имени
апу Отображение всех ресурсных записей
Теперь рассмотрим несколько практических примеров. Допустим, аы зна-
ете имя узла — м^т.5егуег.сош. Давайте посмотрим, какая информация
будет выведена при указании типа апу:
д=апу
>зегуег.сот
Йегуег: туеегуег.аотахп.ссйв:
Адйгеез : 127.0,0.1
Ноп-аиСИогХСаПуе апниег:
вегуег.сога патеяегуег = сотрХ.вегуег.сот
вегуег.сст патейегуег = сотр2.эегтег.сот
вегуег.сот патёдегуег = рртрЗ.вегуег.ерт
АиГЬогдЛаЫуе апекегв сап Ье Еоип<3 1г от:
вегуег.сот патезегуег = йжр1. вегуег .сот
зегуег.сога г.атезегуег ~ сотр2 . зегуег. сот
зегуег.сот патезёгуег = сотрЗ.сегуег.сот
сотр!,зегуег.сот 1пСегпеС айбгеая ~ 323.11,1.200.1
сотр2.йегуег.сот 1пг.егпеС асИгезз = 323.111.200.2
сотрЗ.вегуег.сот хпгегпес дфйгевв = 323.555.200.3
А сейчас посмотрим информацию о других узлах в этой сети:
>1з зегтег.сош.
[сотр2.ввгуег.оот]
зегуег.сот. 323.111.200.2
зегуаг.сот. аегуег = сотр!.вегуег.сот
вегуег.сот. зегуег = сотр2.вегуег.сот
зегуег.сот. в.егуег = сотрЗ«вегуег.сот
та11 323.111.200.17
до1а 323.111.200.22
имиЛе 323.111.200.11
Зегз11<3 323.111.200.25
сотр! 323.111.200.1
сотрЗ 323.111.200.3
рагаззЛЗ 323.111.200.20
даж.ргесэ 323.111.200.30
сотр! 323.111.200.1
ииад 323.111.200.2
Но ответ мог быть и таким:
[вегуег.сот]
Сап'С ИвЬ йотаХп вегуег.сот: Оиегу ге1иэе<3.
Чтобы разрешить передачу зоны определенным узлам (а, значит, запре-
тить всем остальным), в файле конфигурации ЭМ$-сервера применяется
директива аПомЧгапэГег. В следующем примере трансфер зоны разрешен
узлам 10.1.1.1 и 10,1.2.1, то есть все остальные узлы в ответ на запрос
пя!оокир 1з получат ответ «Циегу гей1>е<.1»:
орЫопн {
аНои-ЬгапвГег {
10.1.1.1;
10.1.2.1;
};
};
Вторичный сервер не передает никакой информации о зоне, поэто-
му обязательно укажите следующую строку в его файле конфигурации
(в секции орЦопз):
аИоэд-ЪгапвЕег { попе; }
13.7. Оптимизация настроек сервера ОМ8
Как любой хороший администратор, вы хотите, чтобы ваш сервер ИМ8
быстро обслуживал запросы клиентов. Но к вашему серверу могут под-
ключаться пользователи не из вашей сети, а, например, из сети конку-
рирующего провайдера. Тогда ваш сервер будет обслуживать «чужих»
клиентов. Непорядок! Директива а11ом-циегу позволяет указать адреса
узлов и сетей, которым можно использовать наш сервер Е)М8:
а11ои-сщегу { 192.168.1.0/24; ХосаНювС; ) ;
В данном примере мы позволяем использовать наш сервер узлам из сети
192.168.1,0 и узлу 1оса1ИойЪ. Целесообразно разрешить рекурсивные
запросы только из сети 192.168,1.0 и узлу 1оса1йовС:
а11ой-гесигв1оп { 192.168.1.0/24; 1оса1йозГ. • }•
Обычно взлом любой сети начинается со сбора информации — о струк-
туре сети, об установленном программном обеспечении и его версиях и
т.п. Мы можем заставить сервер не сообщать номер своей версии,
а выдавать произвольное сообщение:
уегзХоп “Майе 1п ИБЗВ” ;
Все перечисленные директивы должны быть указаны в секции орНопя
файла конфигурации /еСс/патей.сопЕ:
орЫогш {
аПои-диегу { 192.168.1,0/24; 1оса1Ьовб; };
аИом-гесигеЛоп { 192.168.1.0/24; 1оса1ИойЬ; ];
а11ои-СгапзЕег { 10,1.1.1; 10.1.2,1; };
уегагоп "Майе 1п ЦЗЗЙ";
13.8. Защита сервера 0М8
13.8.1. Настройка и запуск ОМ8-сервера
в сЬгооТ-окружении
Из соображений безопасности рекомендуется запускать все сетевые
сервисы в так называемом сНгооГ-окружении (сИап$а юоГ). Это файло-
вая система, повторяющая структуру корневой файловой системы, но
содержащая только те файлы, которые необходимы для запуска нашего
сетевого сервиса. Взломав сетевой сервис и получив доступ к корневой
файловой системе, злоумышленник не сможет повредить всей системе в
целом, поскольку он получит доступ только к файлам данного сервиса. Не-
которые сетевые службы не могут работать в сйгооГ-окружении. ВПМО —
может, и сейчас я покажу, как это организовать.
Не нужно создавать отдельный раздел на диске для каждого сетевого
сервиса: нужно только создать каталог, например, гоос-йпз, в который
вы скопируете все файлы, необходимые для запуска сервера В\'8. Потом,
при запуске сервиса, будет выполнена команда сйгосП для этого сервиса,
которая подменит файловую систему. А так как в каталоге гооС-йпэ,
который станет каталогом /, имеются все необходимые файлы для работы
ВШЬ, то для сервиса запуск и работа в сйгоо!-окружении будут совер-
шенно прозрачными.
Сразу нужно оговорить, что настраивать сИгоо’.-окружение мы будем для
девятой версии В1№1). поскольку это значительно проще, чем для восьмой
версии. В отличие от восьмой версии, где для настройки сЬгоо!-окружения
нужно было копировать все бинарные файлы или библиотеки, необходи-
мые для запуска ВИФО, для работы девятой версии достаточно скопиро-
вать только файлы конфигурации и зон, обслуживаемых сервером.
Создайте каталоги корневой файловой системы сервера
# ткй1г -р /гооС-йпй
# ткй1г -р /гооС-йпв/еСс
# ткйтт -р /гооС-йлв/уаг/гип/патей
# ткй!г ~р УгооС-йпв/уаг/патпей
Остановите сервер если он запущен:
# вегухсе пашей зСор
Переместите файл конфигурации, файлы зон и файл /еВс/1оса1с1те
(он нужен для корректной работы сервера ОЫ5 со временем) в каталог
/гооС-йпз:
# ту /еСс/пашей.соиЕ /гооС-йпв/еСс/
# гау /уаг/памей/* /гооС-йпа/Уаг/пашей/
# сЬотап вашей.патеа /сЬгооЬ/еЬс/патей.сопЕ
# сЪоип -К пате б, пашей /гооё-йпз/уаг/пашей/*
Защитите от редактирования и удаления файл конфигурации:
# сЬаЬЬг +1 /тооС "йпн/еТс/пашей. соп^'
Добавьте в файл /еСс/аузсопГ1д/пашей строку:
НООТП1Н="/хооГ-Йпз/"
Все, теперь можно запустить сервер пашей'.
# аегутсе пашей зЬагТ.
Проверьте, все ли сделано правильно:
$ рг -ах дгер пашей,
5380 ? 3 0:00 пашей -и пашей -Г /госД-йпз/
5381 ? 5 0:00 пашей -и пашей -Г /гооЬ-йпн/
53-82 .? 3 0:00 пашей -и пашей -С /гооЬ-йпз/
13.9. Использование подписей транзакций.
Механизм Т5Ю
В девятой версии ВШП появилась возможность создавать подписи тран-
закций (Т8Ю “ Тгапзасйоп ЗЮпаШгех). Механизм Т8Ю работает так:
сервер получает сообщение, подписанное ключом, проверяет подпись
и, если она «правильная», сервер отправляет ответ, подписанный тем
же ключом.
Механизм Т81С очень эффективен при передаче информации о зоне,
уведомлений об изменении зоны и рекурсивных сообщений. Согласитесь,
проверка подписи надежнее, чем проверка !Р-адреса. Злоумышленник
может вывести из строя вторичный сервер В1Ч8 банальной атакой на
отказ, и, пока администратор будет «поднимать» вторичный сервер, он
заменит свой 1Р-адрес адресом вторичного сервера- При использовании
Т8Ю задача злоумышленника значительно усложняется: ведь ему при-
дется «подобрать» 128-битный МО5-ключ, а вероятность такого подбора
близка к нулю.
Итак, приступим к настройке. Остановите сервис пашей.
Сгенерируйте общие ключи для каждой пары узлов. Общие ключи ис-
пользуются при «общении» первичного и вторичного серверов
[гооШМпа]# Йпавес-кеудеп -а Ьшас-тй5 ~Ь 128 -п ИО5Т пв1-пв2
Кпз1-П82.+157+49406
Мы используем алгоритм НМАС-М1Э5,128-битное шифрование, п81-пй —
это имя ключа. После выполнения этой команды будет создан файл
Кпв1-пв2 .+176+40946 .ргхуаЬе. Откройте его в любом текстовом
редакторе. Вы увидите примерно следующее:
РгтчаСе-кеу-ЕогтаС: VI.2'
А1дот1сНт: 157 (НМАС_МП5)
Кеу: тв7<ЗЕС887С1М7ГО91к7аЗ«=
Ключ «!П5.7с!Й,ч87С]Ь]7Е1.)91к7аЗ-=» и будет тем секретом, который
будет передаваться между серверами. Запишите это значение на бу-
маге (которую потом нужно будет уничтожить) и удалите файлы
Кпз1-пв2.+157+4940 6.кеу и Кпз1-п$2.+157 + 49406.рг1^аЕе.
Добавьте в файлы конфигурации первичного и вторичного серверов
директивы, указывающие на использование ключа (листинги 13.8
и 13.9).
Листинг 13.8. Фрагмент файла патеФсогИ первичного сервера О№
кеу пз1-пв2 {
а1дог1скш Ьгадс-тйЗ;
еесгет втв7аЕСБ87СзВД7ЕО91к7аЗ==в;
) ;
# прописываем вторичный сервер ШЙ - 192.158.1.2:
зегуег 192.168.1.2 {
кеув { пз1“пз2; };
};
орИопв {
# разрешаем передачу зоны, вторичному серверу ШЗ
аНои-ЫапвЕех { 192.168.1.2.; };
);
Листинг 13.9. Фрагмент файла патей.сопТ вторичного сервера ОМЗ
кеу пв1~пз2 {
а1дог1Спт Ьтас-т<35;
зесгеС ‘'т87аГ1в87Ст1ф7ЕП91к7аЗ==" ;
} ;
# прописываем первичный сервер Ш5 - 192.168.1.1:
зегчег 192.168.1.1 {
кеув { П51-пз2; };
};
орЫопа {
# никому не передаем зону
аИсж-ЬгапаСег { попе );
};
Можно также настроить передачу зоны «по ключу». Для этого директива
аНочмгапз&г в файле конфигурации первичного сервера ОИ8 должна
выглядеть так:
а11оиг-СгапзГег { кеу па1~пн2; );
Осталось только «спрятать» файлы конфигурации обоих серверов ПИЗ
от посторонних глаз — ведь они содержат ключи в открытом виде.
сктод 600 пашеб.соп^
Запустите сервис патед. Теперь о его безопасности будет заботиться
Т8Ю.
Глава14 ПОЧТОВЫЙ
СЕРВЕР
УСТАНОВКА И НАСТРОЙКА 8ЕШМА1Г
---АУТЕНТИФИКАЦИЯ В 8ЕМОМА1Е
АГЕНТ ДОСТУПА — РЕТСНМАИ
АВТОМАТИЧЕСКАЯ СОРТИРОВКА
ВХОДЯЩЕЙ ПОЧТЫ —
ПРОГРАММА РРОСМАИ
<'--СОЗДАНИЕ СПИСКА РАССЫЛКИ
..ЗАЩИТА ПРОГРАММЫ
ЗЕМОМАИ. ПРОГРАММА 8МР5Н
ЫЫ1ЛХ ПОЛНОЕ РУКОВОДСТВО
Неискушенные пользователи обычно принимают за систему электронной
почты ту программу, с помощью которой они читают и пишут сообщения
( тай, рте, Ие&саре Мекхепрег, М8 ОиНоок Ехргеэк). На самом деле эта
система состоит йз нескольких компонентов (рис. 14.1):
* пользовательские агенты — те самые тай, рте и т.п,, реализующие
интерфейс к системе пересылки почты;
♦ транспортный агент (МТА, Май ТгащГег .Ддепс), пересылающий со
общения с одного компьютера на другой;
♦ агент доставки, сорт ирующий почту и помещающий ее в ящики поль-
зователей или другое хранилище сообщений;
• агент доступа,, скачивающий доставленную почту из хранилища по
протоколу РОР Илй ШАР. и агент подачи, доставляющий письма от
пользователей на сервер исходящих сообщений по протоколу 5МТР.
В качестве агента подачи может работать транспортный агент.
ЯИ& Структура почговай системы
При установке почтового сервера в сети организации или в любой другой
компьютерной сети необходимо настраивать именно транспортный агент.
Основными транспортными агентами пересылки почты на сегодняшний
день являются яепйтаЛ, ровШх и цтай. Кроме основной функции —
пересылки сообщений электронной почты — каждый их них имеет соб-
ственные эксклюзивные возможности.
Старейшим транспортным агентом, фактическим стандартом, работавшим
еще в самых ранних версиях 11Ы1Х, является яепбтай. Разработчики
<рп;н1 обратили особое внимание на обеспечение безопасности: до 1998
года реализация функций защиты в «ешйпай до такой степени оставляла
желать лучшего, что в конференциях вообще не рекомендовалось ее ис-
пользовать. Программа рояШх считается проще других в настройке.
Я решительно предпочитаю ьепйтаП, которая в настоящее время обе-
спечивает должный уровень безопасности и настраивается достаточно
легко. В этой главе я объясню, как настроить кепбтаП для организации
небольшого почтового сервера с использованием протокола 8МТР. В
качестве агента доставки я рассмотрю ргостаП, а в качестве агента до-
ступа, работающего по протоколу РОРЗ, — программу Ге1сНтаП. Для
заинтересовавшихся я разместил на сайте Ис ер: //Дкиа .пагод, ги
руководство по настройке цтаП.
Вкратце напомню о протоколах 8МТР и РОР, которые будем конфигу-
рировать:
♦ 8МТР (81тр!е Май Тгагнйег Ргокко!) — сервис в сетях ТСРЛР для
передачи почтовых сообщений. Обычно для 8МТР используется порт
25 (см. файл /еЬс/вегухсез).
* РОР (Роз1 ОГЙсе РгоГосо!) — используется для получения почты с
сервера. Порт по умолчанию — 110 (для протокола РОРЗ).
14.1. Установка и настройка аепдтаН
Программа вепйтаИ устанавливается из пакета вепйтаП, входяще-
го в состав Кес! На(-совместимых дистрибутивов. Я использую пакет
.чепдта11-8.11.0. Последнюю версию зепдтай можно скачать по адресу
или. зепйшаИ . огд.
Прежде чем приступить к настройке вешйпай, вам необходимо правильно
настроить Г1Х8. Настройка сервера ОМ8 подробно обсуждалась в главе
13. Необязательно настраивать сервер О№8 на том же компьютере, где
будет работать «енйтай: достаточно будет указать ПМ8-сервера вашей
сети в файле /еъс/гевоГя. сопЕ, чтобы система разрешения имен кор-
ректно работала. Впрочем, хепйтай можно настроить для работы и без
использования Г)5<8, но этот вариант я рассматривать не буду.
14.1.1. Базовая настройка зепйтаП
Основным файлом конфигурации зепбтай является зепйтаИ .сЕ, рас-
положенный в каталоге /есс/та1.1 (в некоторых дистрибутивах —
/есс, смотри грга -д! зепдтаИ). Об этом файле говорят, что ой Длин-
нее, чем лимузин у Билла Гейтса, и что его редактирование происходит
в режиме «глаза боятся, руки делают». Если вы не верите мне, откройте
этот файл, и вы убедитесь в этом. Редактировать данный файл вручную
могут только профессионалы-администраторы или разработчики про-
граммы яепбгааб.
К счастью, базовую настройку зепбтай можно выполнить при помоши
графического конфигуратора пеГсопГ. К сожалению, этот конфигуратор
(точнее, пакет НпихсопГ, в который он входит) в современные дистри-
бутивы включать перестали. Но не все потеряно: его можно скачать с
сайта разработчика Ье Ср: / / утми. в о 1 и с огр. дс. са /11пихсоп I. Многие
опытные пользователи Глпих критически относятся к возможностям паке-
та НпихсопГ и предпочитают прямое редактирование конфигурационных
файлов, ио для новичка эти утилиты, несомненно, удобнее.
Запустите утилиту псЧсопГ из-под суперпользователя (рис. 14.2).
Выберите в меню Май беПуегу зугйет, затем СопП^иге Ьз«ис 1пГогтаИоп.
В поле РгевепЕ уоиг зузГет аз просто введите свое доменное имя. Затем
обязательно отметьте флажок Лесер! етаЙ Гог вагидомен (рис. 14.3).
.—г.р’И ГМ'О-Я
, 'отЛ-г ?!Я й I!.4а. Ыл » ,л / 1'..'' : Д
1
[
Рис. 14.2. Конфигуратор пе1соп1
иЫ11Х: полное руководство
Рис. 14.3. Основная конфигурация запОта/!
Если вы этого не сделаете, через наш сервер можно будет перенаправить
сообщения на другой сервер — а это лишний трафик через вас, который
вам совсем ни к чему. Когда-то даже существовал такой вид атаки на от-
каз через электронную почту: письмо от несуществующего пользователя
по(_ех1'${8@А.сот другому несуществующему пользователю по1_ехшГ8@В.
сот отправлялось через компьютер Йом.сот, который позволял перена-
правлять сообщения (не включив режим Ассер( етаП Гог йокксот). Об-
ратно шло сообщение о том, что адресат не существует, но и оно не могло
быть доставлено по той же причине... возникала косвенная рекурсия, и
сервер йокксот падал.
В качестве протокола отправки сообщений (Май йа1е^ау ргоТОсо!)
установите чпПр. Этой информации уже вполне достаточно, чтобы ваш
яепйтай функционировал.
Теперь сделайте так, чтобы кепбтаИ принимал почту только с разрешен-
ных адресов. Для этого даже не нужно настраивать сам зепйтаП — до-
статочно только подправить файлы /еЬс/ИойГ з . а11ои и /есс/йоагз.
депу. Например, для запрещения доступа всем узлам, кроме компьютеров
вашей сети, в файл /еЬс/повса.аИои добавьте строку
192.168.1.
Здесь имеется в виду, что сеть имеет адрес 192.168.1.0 и маску 255.255.255.0.
Точка в конце образца требует сравнивать с образцом первые группы
цифр адреса узла. Подробнее о формате файлов козе в. а!1вд и Иовкв.
белу вы можете прочитать, введя команду тап йоабв.аИовд,
Теперь настала очередь РОРЗ. После установки пакета пиар у вас прак-
тически все настроено, т.е. я хочу сказать, что уже можно проверять
конфигурацию. Перезапустите супердемон шеЫ (хте1й) и введите сле-
дующее:
$ ЕеХпеС <имя„только„соэданного„почтовика> 25
Тгутпд 192.168.1.1 ...
СоппесЬей Со 192.168.1.1
Еясаре сЪагасСег 1з ,Л]'
220 аеп.аЬвИаЬв.сош ЕЗМТР ЗепбтаИ 8.11.0/8.8.7 Зап, 1?
Лип 20.01 10:54:22 +300
Это означает, что зепйтай работает, осталось проверить, насколько пра-
вильно он это делает. С этой целью попробуйте отправить письмо:
та!1 Егот: тейту.НовС.сот
220 2.1.0 теЙту.ЬозС.сот .... Зепбег Ок
гср! Ю: бепМеп. сШзИаЬз . сот
220 2.1.5 Цепйбеп.сЙщИаЬБ.сот .... Нес.1р1епС Ок
В качестве адресата (гсрк ко:) укажите существующее регистрационное
имя @ имя почтового сервера. После этого введите команду Дака, потом
текст сообщения, а для окончания ввода поставьте точку в пустой строке.
Программа вепбтай сообщит, что сообщение помещено в очередь на
отправку. Закончите 1е1пе(-сеанс командой дц1с.
Обратите внимание, что узла ту.йозгсот не существует, а программа
зевйтэй тем не менее рапортует, что «ЗепФег Ок». Вот почему в настрой-
ках вепйшай лучше включить флажок IVай Гог О№у
Теперь нужно запустить какой-нибудь почтовый клиент, например ктай,
и получить почту. Используйте следующие настройки сети в программе
ктай; Сеть -* Отправка почты. Там установите ЗМТР, порт .25, имя
сервера — имя вашего почтовика (в рассматриваемом примере это Феи.
ЗЬзЙаЬй.сот). Затем добавьте учетную запись для РОРЗ:
♦ Имя пользователя — йеп;
♦ Пароль — пароль, который используется для входа в систему;
♦ Сервер — Йеп.аЙ8ЙаЬ8.сот;
* Порт—110.
В результате вы должны получить то сообщение, которое только что
послали. При этом возможны проблемы при разрешении имени. Чтобы
их избежать, необходимо правильно настроить СИЗ или вместо имени
почтового сервера использовать его 1Р-адрес. При добавлении нового
пользователя не забудьте установить его пароль для входа в систему. Если
этого не сделать, а пытаться подучить почту без указания пароля, то вы
получите сообщение «Сбой аутентификации».
Базовая настройка программы зепйтаП с использованием конфигура-
тора выполняется очень просто и Обычно устраивает всех... до тех пор,
пока вашим почтовым сервером не заинтересуются спамеры. Для более
тонкой настройки нужно ознакомиться с файлами конфигурации про-
граммы зепЙтаП.
14.1.2. Редактирование конфигурационных файлов
Обычно для редактирования файла вепйтаИ .с! используется макро-
процессор Н14. Сначала вы подготавливаете специальный тс-файл, где
записаны настройки зепйтаП я более «читабельном» виде. Затем, отре-
дактировав тс-файл, нужно запустить макропроцессор т4 для создания
файла конфигурации зепбтай:
# ту /еЬс/зепдтаИ. с! /еСс/непйтаП .се .ог1д
# т4 ту„_соп11д .тс > /е^с/зепбдааН. с!
Файл конфигурации по умолчанию, который используется макропро-
цессором П14 для создания файла конфигурации программы зепбтай
(кепдтай.с!), находится в каталоге /икт'/эИаге/зепйтаИ-сЕ/с^, В
более старых версиях программы .чепйтаП он может быть расположен в
каталоге /изг/ЫЬ/вепйтаИ.
Как правило, этот файл называется зепЛтаН.тс. Иногда он может
называться и по-другому, например, гедЪаС .тс, если вы используете
операционную систему Кеб На! или совместимую с ней.
Пример стандартного файла /изг/зкаге/зепатаИ-сЕ/с^/теаИаЕ .
тс приведен в листинге 14.1.
Листинг 14.1. Стандартный файл гесЖаьтс
Й1уег1 (-1)
дп! ТШ ТЬе зепскпаП тпасго сопЕ1д 111е. уои таке
сЪапдез Ьо ТЫз Ше,
±11 уои пее<3 Обе зепйтаИ-с? грт 1.пзТа11ей апй ЕЪеп ИаУе
То депегаСе а
Дп1 нем /еЕс/зепс!та11. Ьу гипгйпд ТЬе То11ом1пд сотптапй:
< ±11
<3п1 т4 /е^с/таИ/вейбтаИ-тс > /еСс/вепскпаИ.сЕ
дп1
1пс1ийе('.. /т4/сС,т4')
МЕВ51ОМ1ПС11пих зеСир 1ог Вес! НаЬ Ыпих')<3п1
ОЗТУРЕСИпих')
аее1пе('сопШЕЕ„ПЗЕН_1П' , ”8:12" )бп!
ипбеПпе('ПОСР_НЕЬАУ' >бп1
ипбеНне (' В1ТМЕТ_КЕЬАУ ’} бп1
аеЕ1пе(ЧопГАПТО_ВЕВи1ЬП')ап1
аеПпе ('сопЕТО_СО№ЕСТ', Чт’) бп1
аеЕ1пе ('соптУ„ШЬЬ_Ж_1ЯЗТ' Лгие) бп1
аеЕ1пе( ’соп1ПОНТ„РНОВЕ__1ЫТЕВЕАСЕЗ' Дгие)ап1
аеЕ1пе (' РЙОСМА1Ь_МА1ЬЕВ_РАТН', ' /иег/Ып/ргостаИ ’) бп1
деЕ1пе('АЫАЗ_Г1ЕЕ’ , '/еРс/аИазев*) бп1
ап1 беГхпе ('ЗТАТЦЕ_Е1ЪЕ’, ' /еРс/таИ/зСаЫзЫсб' )бп1
ае€1пе('иОСР_МА1ЬЕВ„МАХ', '2000000') <3п1
беГ1пе('сопГПЗЕВ0В_5РЕС', '/еРс/таИ/ивегаЬ.бЬ') 3п1
аеИпе (' соп^РКГ7АСТ_РЕАС5 * , ' аиЕУи<гагп1пдв , поугРу, поехрп, ге
зЫ1с1дгип* убп1
аеГ1пе('сопТАиТН_ОРТЮ№' , 'А* )бп!
ап1 ТЙП8Т_АОТН_МЕСН(’П1СЕЗ'Г-МО5 СНАМ-МП5 ПОСЛЫ РЫШГ)*11
Йп1 аеГ1пе('соп^АПТН_МЕСНАМ13МЗ', 'ПКЗЕЗТ-МП5 СНАМ-МП5
1ХХЭ1К РЬА1М')ап1
бл1 ае^1пе ('сопГТО_0иЕПЕИАШ', '4Ь'|бп1
ап1 аеПпе( 'сопГГО_013ЕОЕКЁТОКН' , ’Зб' Нп!
ап.1 аеНпе ('сопГОЦЕЦЕ_ЬА’, ' 12 ’) бп1
бп1 аеГ1пе('сопГйЕРиЗЕ„ЬА’, ‘18’)дл1
3п1 РЕАТ1ЖЕ (ае1ау_сИеске) бп!
РЕАТЦКЕ( 'по_бе1:аи1Р_П15а’ , 'бп1’) 6п1
Р’ЕАТПНЕ (' зтгзИ' , ' /изг/ вЫп/вигак' ) <3п1
?ЕАТОКЕ( ьта11егЕ;аЫе', 'павИ. -о /еЬс/та11/та11егРаЫе.
аь')ап1
РЕАТПЙЕ('ухгЬивегРаЫе',‘ЪавЪ -о /еРс/таН/УхгРивегРаЫе.
аь')ап1
РЕАТШ1Е (геаХгесЕ. > бп1
РЕАТЦКЕ(а1маув„ааа_аота1п)6п1
РЕАТОКЕ (иве_си_ГИе) бп1
ГЕАТПКЕ (иве_СС_Шё) бп!
РЕАТЦВЕ(1оса1_ргостах 1,' ' , ’ргостаИ -с. -У -а $И -а $и*)бп1
РЕАТЦНЕ ( 'ассезв_дЬ' , 'Иазк -о /еРс/таЫ/ассезй.ЙЬ') бп1
ГЕАТЦНЕ (’Ыаск11вС_гес1р1епИе') бп!
ЕХРОЗЕО_ЕЗЕК('ГООЬ')бп1
<1п1 ТЫз сИапден аепбтаИ Ьо оп1у ИвЬеп оп ЪЪе 1оорЬаск
йеУхсе 127.0.0,1
йп1 апб по! оп апу обЪег пе^м-огк ЙвуХсев. СотшепС 1111з оиЬ
хЕ уои мал!
йп1 1о ассер! ета!1 оуег ЬЬе пеЬиогк.
ОАЕМОЫ_ОРТ1ОКЗ ('Рог(:=б1Жр, Аааг=127.0.0 Л , Нагае=МТА’)
<3п1 КОТЕ; ЫпсИпд ЬоЬЪ 1В^4 апй 1Ру6 ааетоп ро ЪЬе ваше
рогЬ гедихгев
йп1 а кегйе1 раГсИ
Йп1 ВАЕМОК_ОРТЮ№('роге-шер,Аййг=: :1, Каае=МТА-Уб,
Еат! 1у = 1п.ес.6 ' )
йл1 №’е екгопдХу гесоттепй Со соттепЬ Ыпе опё оиГ 1Е у ой
капп Со ргоГесЬ
Йп1 уоигзе!^ 'Егот врат. Ноадечег, ГЬе 1ар1ор апб изеге он
сотриЕ.егз Ъкае Йо
<3г.1 пог ИаУе 24x7 Б№ Йо пеей СНЬ.
РЕАТШЕ(' аосере_ипге5о2,уаЫ@_йотаа4пн' )<3п1
ЙП1 ГЕАТШ.ЕН 'ге.1ау„ЬазеЙ„рй^МХ* )Йп1
МА1ЕЕК!зП1Шага.
МА И.,ЕН (ргосгааИ.) Йп1
Си1оса1ИовЕ.1рса1Йота1п
С помощью директивы ГЕАТ1ЖЕ можно подключить ту или иную
функцию программы зепбтай. Например, функция шаЙеНаЫе предна-
значена для переопределения маршрутизации для конкретных доменов.
Вы можете легко расширить функциональные возможности программы
зепйтаН, добавив нужные вам функции в тс-файл.
Предположим, вы хотите, чтобы названия компьютеров домена были
скрыты. Это легко достигается с цомощью добавления функции таяц-
негайе епугЧоре в ваш тс-файл. Для этого скопируйте файл гейЬаЕ .
тс в файл Мйе_Ъо®г.Е.тс и добавьте в конец файла.Ыйе_ЬовЬв.тс
строки:
М А5И.)Ш:КА0 Е_А $(п1уч1о1па1П.ги)йп1
ЕЕАТиКЕ(та8диега4е_епуе1оре)бп1
Затем выполните команду:
# и4 /цзг/нЪагё/йепйтаИ-сС/с^/Ыйе^ЬозЬэ.тс! > /еЬс/вепйшаИ.сЕ
Вот и все! Названия узлов будут скрыты. Описание прочих функций
представлено в таблице 14.1.
Функции программы зепДтай
Таблице 14.1
Функция Описание
ассезз йЬ Определяет таблицу доступа. В згой таблице указаны узлы, которым разрешена или запрещена отправка почты через ваш почтовый сервер. Эта функция эффективно используется для борьбы со спамом
ассорти пте8о!чаЫе_Вопий18 Разрешает отправлять почту доменам г которые не могут быть распознаны
Ье51тх_13_1<м:а! Сообщения будут приниматься только э том стучав, если запись МХ сарвера 0Й5 указывает на этот почтовый сервер
Ы аск 21 $1_гес|р1 егНз Черный список». Еще одна функция для борьбы со спамом. Для ее работы необходима функция ассевв„<1Ь
Продолжение табл. 14.1
Функция Описание
ЙП5Ы Используется для работы с «черным списком». ВпвЫ — это со- кращение от СИЗ В1аск Ц«. В более ранних версиях эта опция называлась гЫ (Йезо1уе 81 иск из!)
йотаю«аЫе Используется для разрешения имен доменов
депег1с$(аЫе Используется для изменения адреса отправки в сообщениях
1оса1_ргостай Указывает, что доставлять почту нужно с помощью локальной утилиты ртостаИ
тайаНаЫе Переопределяет маршрутизацию для конкретных доменов
таздцегас1е„впЦпв_4отат Используется для маскировки (сокрытия) всего домена. Данная функция должна использоваться вместе с директивой МА5- ЙМЕВАОЕ А5 (или МА8ОСЕВДЗЕ_0ОМА|М. например. МДЗаиЕНАОЕ А5(П 17,то}4п|
таздцета((е_епуе|оре Позволяет скрыть имена узлов домена. .Заменяет поле гесеЫес! Гтот заголовка сообщения перед передачей сообщения другим МТА
гесйгес! Используется для перенаправления на другой почтовый сервер. Означает отказ от принятия почты с выдачей сообщения р!еаве Тгу <асМгев®> (попытайтесь использовать этот адрес)
ге!ау_Ьавей„оп_МХ Разрешает перенаправление (ретрансляцию) почты только для узлов, которые указаны в записях МХ сервера ОКБ
ге!ау_Ноз(з_оп!у Разрешает ретрансляцию только для узлов, указанных в ас- севв_с1Ь
ге!ау_та!1_?гот Разрешает ретрансляцию, только если отправитель указан в списке НЕ1АХ базы ассевз_с1Ь
зтгйН Использование ограниченней оболочки зепйтай
изе_сН)|е При указании згой функции зеяйтвН будет обращаться к файлу напела: , с»; за списком доверенных пользователей
изе_стк_Ч1е При указании этой функции вспйтяП будет обращаться к файлу зепймз.1 . си за списком локальных узлов
уНозеНаЫе Преобразует адрес получателя в адрес локального пользователя
В файле /есс/таИ/эепатаИ . си перечислены все псевдонимы вашего
почтового сервера. Предположим, что имя вашего сервера таЛ.бйкЯаЬз.
ги. Если отправитель отправит почту по адресу беп@та11.4Ь8ПаЪ8.ги,
письмо будет без проблем доставлено пользователю <1еп. А если кто-то
отправит письмо по адресу бегкйМЬкйаЬк.ги, то его доставка вызовет
определенные трудности, так как не ясно, какому узлу домена сЖкйаЬз
адресовано сообщение. Для решения этой проблемы в файл хепбтаП.с»
нужно поместить строку:
ейтвНаЪв .ги
Теперь, когда будет приходить почта формата ивег@с11ш1аЬ8.ги, она будет
доставлена почтовому серверу таП.ййзПаЬк.ги.
Напомню, что перед изменением файла еепйлзаИ - сЕ желательно оста-
новить программу вепбтаП. Это делается с помощью команды:
# /ебс/1п1Ь.а/кешЗта!1 вСор
Конечно, удобнее сначала отредактировать файл .еейдтаИ. с С с помо-
щью ш4, а потом ВЫПОЛНИТЬ команду /еСс/4пК .<3/5еп<3гаа: 1 геесагс
для перезапуска программы вепбта1|.
14.2. Аутентификация в вепсСтаИ
14.2.1. Установка и настройка 5А8Ь
Программа ЗепйтаП 8.10/8.11 поддерживает 8МТР АПТН согласно
стандарту КЕС 2554. Аутентификация базируется на 8А8Ь (81тр1е
АигЬепОсаНоп апб ЗесшгНу Ьауег). Она позволит вам несколько повы-
сить безопасность вашей сети, но создаст определенные неудобства для
пользователей, потому что не все почтовые клиенты (пользовательские
агенты) ее поддерживают.
Первым делом убедитесь в том, что ваша сборка аепйшай поддерживает
библиотеку 8А81/
# зепвтаИ -<10.1 -Ьу гооС [ дгер ВАЗЕ
При отсутствии поддержки 8А8Е от вас потребуется перекомпилировать
зепйтай. Распаковав исходные коды в каталог непс1та!1-х.хх.хх. создайте файл
зепс1п1а11~х.хх.х/<аеч1оо18/31Ье/81Ье.сопНд.ш4, в котором не-
обходимо прописать следующие строки:
АРРЕКОБЕР('сопСЕКУПЕР', '-РЗАЗЬ')
АРРЕНПОЕРС'сопСвепатаЮТВЗ*, '-1вав1')
АРРЕЫОПЕР( 'сопЕЫВСТКЗ' , ' -Е/изг/ИЬ/ ')
АРРЕЖОЕР ( 'сопЕЖОТЙЗ', ' -1/ивг/ 1пс1и<ае/' )
После этого запустите сценарий Вш1с1:
# ./ВиПсЗ
# ./ВиИД 1пзСа11
Если вы все сделали правильно, ваш зепйгпаИ теперь должен поддер-
живать 8МТР АПТН. Теперь вам потребуются библиотеки Сугиз 8А$Ь,
исходные коды которых вы можете найти по адресу {ср: / / сер. апйгеи.
сгпи. еди/риЬ/сугиз-таИ.
Соберите библиотеку Сугиз 8А81.. выполнив следующую последователь-
ность действий:
# Саг ~хгХ сугиа-зай1-1.5.24.Еаг.дг
# сд сугиз-еазИ.Э .24/
# ./соп^хдиге --рге{1х=/иег
# таке
# шаке 1пбЬа11
После установки библиотеки отредактируйте файл /ивг/ИЪ/вае!/
БепаиаИ. соп:. Если он не существует, создайте его. В конец этого
файла необходимо добавить строку:
р’.-;сЬеск„теЬИоб .• заеХдЬ
Это укажет кепбтай, что аутентификацию нужно проводить с использова
нием 8А8Е. Теперь займитесь созданием базы данных всех пользователей,
которые могут отправлять почту. Для этого используются две программы:
^аяфазмуй и завШЬИяШйегз. Они должны находиться в каталоге /вЫп.
Запускать их нужно от имени суперпользователя.
# вазХраззвдд -а вепдша.11 пеиизег
ранзиогск «пароль для пекинес>
Эту процедуру нужно провести для всех пользователей, которым раз-
решено отправление почты. Утилита зазкПНЫпвега предназначена для
просмотра всех записей в базе данных. После ее запуска вы должны
увидеть что-то наподобие этого:
ияег; пеиизег геаХт: йИаИаЬв.сот тесИ: СНАМ-М.05
ияет: пеиизег геаХт: йбвИаЬв .сот тесЬ: СИЗЕ5Т-МБ5
цзег: петлзег геаХтг йЬвИаЬз .сот теск: РЕА1Н
Отображенная информация означает, что пользователь пехуийег может
аутентифицироваться тремя методами: СК.АМ-МО5, ПЮЕ8Т-МО5,
РЬАШ. Рекомендую использовать метод СЯ.-ХМ-МО5, но в крайнем
случае подойдет и РЬАЖ.
14.2.2. Настройка зепдтаП+ЗАЗЬ
В файл непбтаИ .тс внесите следующие строки:
ТЙШЖАПТН_МЕСН{'(335АР1 ПХСЕ5Т-МП5 СЙАМ-М05 РЕА1Ы')йп1
йеПпе (‘сопЕАПТН_МЕСНАШ8М5' , 'С58АР1 П1СЕ2Т-МО5 СНАМ-МС5
РЕА1М' )
беЕ1пе('сопСБЕР_АЦТН_1МРО' , '/еЯс/таИ/аиСЕ/аиРЪ-ХпГо') йп!
РЕАТЖЕ ('по_веХаи 1С_п1за') <3п1 Сигп <Зе^аи1С епСгу Хот М3 А
ОАЕМОЖОРТТОЖ ( 'РогС=25 , ЫатеЖЗА, М=Е')ЙП1
Метод РЕА1И, как самый ненадежный, можно было бы убрать из списка
авторизации, но я рекомендую вам его оставить для совместимости с не-
которыми почтовыми клиентами.
Запустите интерпретатор т4:
# т4 зепйтаХХ.тс > зеПЙтаН.с^
Скопируйте новый фаЙлв.епйтаП .ск на место старого, перезапустите
«епбтаП и проверьте его работоспособность. Для этого запустите клиент
(е!пе1 и присоединитесь к порту 25 вашего компьютера:
1е1пеТ 1оса1ЬоБЬ 2-5
Тгу1пд 127.0.0.1...
Соппессед Со 1оса1ИозТ
Еесаре спагасХег 18 'Л1'.
220 1оса1.аедаВ1а.11.0ЙС! Е5МТР ЯеМтаП 8.10.0/8.10.0; Тйи,
9 Зер 1999 10;4а.:М -0700 (РОТ)
еЫл 1оса1ИозЬ
250-1оса1.аепбИаИ.ОНС НеЦо :1оса1ИойЬ [127.0*0.1],
р1еаве<1 ко тееС уои
2 5 0 - Е1ЖАЫСЕПЗТАТПЗСООЕ8
250-ОЗМ
250-А11ТН О1СЕЕТ-МО5 СНАМ-МП5 РЬАХМ
2.50 НЕЬР
ди 11.
Теперь желательно добавить описания поддерживаемых вашим сервером
методов ауте] пификации. Это делается для того, чтобы в заголовке письма
появилось такое сообщение:
(аисИ-куре 1в СЙАМ-М.О5, наег 4еп)
Откройте файл мгЛаЛ .с[ в любом текстовом редакторе и найдите
следующие строки:
Рогтак ок Иеайегя #
тшшй««иинни
После них вам нужно добавить следующее:
$ . $? [аи1И_куре) (аик.1т_куре. 1а $[тип}, и&ег
$(пользователь)$.)
14.2.3. Настройка почтовых клиентов с
использованием аутентификации
Я рассмотрю настройку трех самых популярных почтовых клиентов:
1. ТЬеВаН. Создайте учетную запись (АссошП Иек). В качестве имени
и пароля введите регистрационные данные пользователя, установлен-
ные на сервере с помощью команды равз^б. Сервером входящей и
исходящей почты назначьте только что созданный почтовый сервер
беп.дйк11аЬв.сот. Нажмите кнопку Моге (рис. 14.4). В окне Абтапсеб
8МТР ОрПощ установите режим РегГогт 8МТР аШйепПсабоп. Если
имя пользователя и пароль на сервере РОР совпадают с именем поль-
зователя и паролем на сервере 8МТР, а это обычно так, установите
режим Све РОР вегтег 1о$>т. В противном случае укажите нужное
имя пользователя и пароль.
Рис. 14.4. Настройка ТЪеВаИ
2. ОиНоок Ехргевк. Создайте учетную запись (Сервис > Учетные за-
писи, кнопка Добавить). В окне свойств учетной записи перейди-
те на вкладку Серверы, Включите режим Проверка подлинности
пользователя, нажмите кнопку Настройка и установите параметры
аутентификации.
3. ОД&саре Меввеп^ег. Выберите пункт меню Ейй —» РгеРегепсе». В окне
РгеГегепсея (рис. 14.5) перейдите в раздел Май вегтегв и укажите не-
обходимые вам параметры. Параметры протокола РОР можно задать,
выбрав почтовый сервер и нажав на кнопку ЕсШ \е($саре Ме$$еп§ег
версии 4.76 поддерживает только метод авторизации РЁАШ.
Рис. 14.5. Настройка И&асаре Мезаепдег
14.3. Агент доступа — Те1сЬтаЛ
Программа ГеСсЬтаП используется для загрузки сообщений с сервера вхо-
дящей почты в почтовый ящик пользователя. В домашнем каталоге того
пользователя, от имени которого будет запускаться ГеСсЬтаН, создайте
файл . ^еесЬтаНго. Добавьте .в него следующие строки.
вес розГтавСег ’Пй11'
ро11 ргомЮвг.ги ргоЬо РОРЗ по бпя
изег ’таИ’ разе "ту^раазиогй" Со та11 кете
орСтопз СеСсИаИ
Ргоуккг.ги — это имя почтового сервера, откуда вы будете забирать почту
по протоколу РОРЗ. При этом вы будете использовать имя пользователя
тай и пароль ту^затгагс!. Директива ТеГсИаП указывает программе по-
лучить всю почту и потом удалить полученные сообщения с сервера.
Запускать программу Ге(сЬтай можно как демон, а можно с помощью
планировщика с гоп. В первом случае просто выполните команду:
$ СеСсИгпаИ -<1 12000
При этом ГеГсЬтаП будет проверять наличие новой почты через каждые
20 минут.
Во втором случае отредактируйте пользовательский сгопГаЬ-фаЙл и вве-
дите новое задание:
$ сгоптаЬ -е
0,20,40 * * * * /иег/Ып/СеСсйшаП
14.4. Автоматическая сортировка входящей
почты — программа ргостаЛ
Лучше всего объяснять работу любой программы на практическом при-
мере. Допустим, в вашей организации три отдела, и их адреса Нер1@Г1ппа.
гп, бер2@бгта.го и берЗ@йгхпа.ги. У вас также есть пользователь тай,
на имя которого будет приходить вся почта. Вам нужно сортировать при-
ходящую почту по названию отдела: например, если в теле письма или
в одном из его заголовков упоминается название отдела, отправить это
сообщение одному из пользователей отдела. Кроме того, вы хотите, чтобы
рассылка проекта ЫпихКЗР отправлялась вам по адресу абт@Йгта.ги.
Создайте в домашнем каталоге пользователя тай файл .ргостаИтс,
примерное содержание которого показано в листинге 14.2.
Листинг 14.2. Файл .ргосгпаЛгс — правила сортировки почты
:0
* А3икоес±:. *йер!
! йер!
:0
* лЙиЬзесЬ: .*йер2
! дер2
:0
* лЗиЬ}есС.:. *йерЗ
! дерЗ
: О'
* лЗиЬ]ес±:.*Ь1пихЯЗР
’ авт
Правила означают следующее: если в теме (заголовок $иЬ)ёс1) присут-
ствует название отдела, то сообщение будет отправлено нужному пользо-
вателю, который должен быть зарегистрирован в системе. Вместо имени
пользователя можно указать адрес электронной почты.
Можно выполнить сортировку по любому другому полю. Например, по-
следнее правило могло бы выглядеть так:
:0
* ЛРгош:.* БиЬйсгтЬе.Ви
! авт
В этом случае, если кто-нибудь из пользователей вашей системы также
подпишется на другую рассылку на сервере ^иЬ.чспЪс.ки, то вся почта
попадет к пользователю авт.
А теперь создадим почтовый автоответчик. Существуют два типа автоот-
ветчиков. Первые посылают автоответ только на определенные сообще-
ния (например, отправляют клиенту прайс-лист вашей организации по
его требованию), а вторые — на все (например, сообщают, что вы сейчас
заняты, прочитаете письмо тогда-то). Автоответчик первого типа настра-
ивается при помощи правила
0;
* Л5нЬЗесС.*Рг1се
I (ЕогтаИ -г ; саР $НОМЕ/рг1се1. г!р) I вепйтаИ -с
А второй тип создается еще проще. Вы не определяете никаких условий,
поэтому файл того. г. содержащий ваш автоответ, будет послан лю-
бому отправителю:
0:
[ (!огта!1 -г; саС $НОМЕ/1г.!о. Гх!) I зепбтаЦ -к
Владельцем файла .ргостаИгс должен быть пользователь тай. Права
доступа следует установить «600».
Вызывать агент доставки ргостаП можно с помощью правил программы
кевйтаП, но сейчас мы рассмотрим другой способ. В этом же каталоге
($НОМЕ/таП) создайте файл . Еогиагд с такими же правами доступа, как
у . ргоста! 1гс. В файле .гогиагй задаются правила перенаправления
почты. Добавьте в него следующую строку:
11Г5-"-' ' && ехес /изг/Ып/ргоста.И УЗЕК= <та!1>
Используйте ргостаП с большой осторожностью, потому что если вы
неправильно укажете условия сортировки, почта будет просто утеряна
без возможности восстановления.
Строки файла конфигурации .ргостаИгс, которые начинаются с сим-
вола решетки (#) считаются комментариями.
Строки, начинающиеся с последовательности символов :0 или :0:, опреде-
ляют правила, на основании которых ргостаП выполнит действие над
сообщением. После символов ;0 можно указать опции поиска и испол-
няемый файл, которому будет передано сообщение, Общий синтаксис
такой:
;0 [опции] [: программа]
Опция Н (йеас!ег) означает, что условие будет применяться к заголовку
письма, а опция В — к телу. Опция О указывает программе различать
нижний и верхний регистры символов. По умолчанию используется опция
Н, то есть условие применяется только к заголовку, а верхний и нижний
регистры не различаются. Подробнее об опциях вы прочитаете на щап-
странице программы ргостаП.
Условие задается с помощью регулярных выражений. Каждое условие
начинается символом ♦ и записывается в отдельной строке. Регулярные
выражения задаются как обычно, а именно:
♦ Символ Л указывает на начало строки, а $ — на ее конец.
♦ Символ . обозначает любой символ, кроме СК (возврат каретки).
• Символы ? и * читаются как «ноль или более раз».
♦ Символ + — «один или более раз» .
♦ Символ ) обозначает логическую операцию ИЛИ : х|у — х ИЛИ у.
• [а-/.] определяет любой символ из диапазона а..2.
♦ [л а-/) задает любой символ вне диапазона а../.
После условия указывается одна команда. Если первый символ коман-
ды «’», то сообщение будет перенаправлено на все указанные почтовые
адреса, а если «|то сообщение будет передано исполняемому файлу
(программе), который указан после символа Вместо исполняемого
файла можно указать переменную окружения, в которую будет записан
результат.
Переменная окружения МА1ЕО1К. устанавливается в файле .ргостаПгс.
Обычно она имеет значение $НОМЕ/Май.
Кроме переменной окружения МА11.ГЛК вы можете указать переменные
окружения 8ЕХ0МА1Е и ЕОК.МА1Е. которые содержат полный путь к
программам зепбтай и ГогтаП (фильтр-преобразователь сообщений в
формат таНЬох). Переменная окружения ЕООНЕЕ содержит имя файла
протокола программы ргостаП, а переменная ГЭЕЕА1Л.Т — имя файла,
в который будут записываться сообщения, к которому ргостаП не может
применить ни одно из правил.
Для иллюстрации я приведу свой файл конфигурации ргостаП.
Листинг 14.3. Мой файл .ргостаПгс
РАТН=:$НОМЕ/Ып: /ивг/Ып-. /изг/еЬгп: /Ын; /инг71оса1/Ып:.
МА1ЬП1В=/Еоте/йеп/п1а.11
ПЕЕАПЬТ=$МА1Ь01Й/тЬох
ЬООЕ 1ЬЕ= $МА.1Ь01К / Г г от
ЬОСКР1ЬЕ=$НОМЕ/ . ТосктаП
: О
* л5иЬ^ес1: _*Рг1уеС
рг1уейй
:0
* . *ПоЬ
I (ХогтаП -г ; сак /ЪатеМеп/уакапсу. Схг) ( /иаг/зйп/
непдтаИ -Ь
Если в теме сообщения было найдено слово «Рте!», то все сообщения
будут сохраняться в файле /Ъоте/йеп/та±1/рг1уеС8. Если тема со*
общения содержит слово «1оЬ», то по адресу отправителя будет автома-
тически отправлен файл такапсу. Ухе. Файл уакапсу. кхь должен быть
текстовым — это не вложение.
Файл протокола, в который программа ргостаП запишет адрес отправи-
теля, тему и размер сообщения, называется (тот.
14.5. Создание списка рассылки
Обычно системы рассылки создаются специально предназначенными
для этого средствами: например, идеально подходят РНР в связке с
Му8О!..
Язык программирования РНР предназначен для создания веб-приложе-
ний и оснащен всеми необходимыми для этого функциями, а сервер баз
данных обеспечит поддержку базы данных адресов подписчиков
и параметры рассылки. Таким образом, если вы хотите создать собствен-
ный МаПХлзЕКи, воспользуйтесь готовыми решениями или напишите
собственное на РНР или Рег1.
Однако иногда бывает полезно создать небольшую рассылку внутри одной
организации. Приведенное далее решение не отличается оригинальнос-
тью и не претендует на звание лучшей системы рассылки. Это просто
пример, из которого вы узнаете также, как использовать стандартную
почтовую утилиту 1лпих — тай. Этот пользовательский агент входит в
состав практически каждой Ь’МХ-систе.мы.
Допустим, у вас есть три отдела: отдел маркетинга, производственный от-
дел и администрация. К первому отделу относятся пользователи вашей си-
стемы тагдпа и о1кд, ко второму — 1дог, йтдСгу, о1уа, а к третьему —
ртезтаепс, йтгессог, зесгесаг. Периодически вам нужно отправлять
сообщения в один из отделов. Число пользователей небольшое и, возмож-
но, отправить сообщение можно было бы с помощью групп пользователей
почтовой программы, которую вы используете. Однако сейчас я покажу,
как элегантно это можно сделать средствами ипих.
Создайте файл .таПгс в вашем домашнем каталоге и добавьте в него
строки псевдонимов (убедившись, что в вашей системе нет пользователей
с именами пагкеГ, рготгч и оЕггсе):
аИаз зпагкес тагхпа о1ед
а11аз ргоз.гу 1дог ДпйСгу о1уа
аИаз оСЕ1се йхгесбог зесгеСаг
В дальнейшем, чтобы отправить сообщение в производственный отдел,
просто введите команду:
$ паП ргог^у
Программа шаП попросит вас ввести тему, а затем текст сообщения. Для
окончания ввода нажмите СИ1+П, и тай отправит сообщения пользо-
вателям.
Если пользователей много, использовать механизм псевдонимов не очень
удобно. Гораздо удобнее, чтобы программа тай брала список подписчи-
ков из какого-нибудь файла. К сожалению, разработчики не предусмо-
трели такой возможности, однако с помошью небольшого сценария мы
можем эту возможность организовать.
Создайте сценарий зшаИег в своем домашнем каталоге (листинг 14.4).
Листинг 14.4. Сценарий зтайег
# I /Ып/ЬазЪ
есИо $ЙТ >> 1од
^ог изег 1п 'саС изегз'
йо
есИо "ЗепсИид тееваде со Зизег"
таИ $инег -в 5иЬзсг1Ье < тзд 2>> 1од
Йопе
Сообщение, которое вы хотите отправить, запишите в файл тзд, а список
подписчиков по одному в строке — в файл шзегв.
Программу тай можно использовать и для чтения почты. Для этого
просто введите команду гааИ. Если в вашем почтовом ящике есть новые
сообщения, программа выведет на экран нумерованный список, и вы смо-
жете ввести номер сообщения, которое хотите прочитать. Для удаления
сообщения используется команда <1 <номер> или д <диапазон>. Выйти
из программы можно, введя команду ц.
Программа тай — это исключительно пользовательский агент: она ра-
ботает только с вашим локальным ящиком. В другие почтовые клиенты
обычно встроен и агент доступа, забирающий сообщения с внешнего
сервера, например, рорлпаН.т. Я советую использовать в качестве по-
чтового клиента программу кшаЙ, входящую в состав КЭЕ.
Эта программа поддерживает несколько учетных записей электронной
почты, в том числе и локальный ящик, отправку сообщений с помощью
8МТР и локального транспортного агента, а также сообщения в формате
нтмь.
14.6. Защита программы аепдтаП.
Программа атгзЬ
Однажды неизвестный хакер может заставить ваш зепскпай выполнить
какую-нибудь программу. Какая это будет программа — зависит от его
фантазии: безобидная команда есйо или «гт -гГ/». О том, как это сделать,
я писать не буду — лучше разберемся, как этого не допустить.
По умолчанию для запуска внешних программ используется оболочка
/Ып/зЬ (или /Ып/ЬавЬ), которая позволяет запускать любые про-
граммы без ограничения. Вместо оболочки /Ып/зН рекомендуется ис-
пользовать защищенную оболочку втгзй, которая позволяет определить,
какие программы можно запускать, а какие — нет.
Определим список программ, которые можно запускать. В него войдут
пользовательские агенты (тай), агент доставки ргостаП и, может быть,
что-нибудь еще. Категорически нельзя разрешать запускать командные
оболочки ($11. ЬазЬ, <сзЬ и другие), потоковый редактор «ей, интерпрета-
торы рег1, рЬр и программу ниеисойе.
Создайте в каталоге /есс/зтгзб ссылки на программы, которые можно
запускать:
$ ей /еЬс/егагзЪ
$ ™з /Ып/та11 таП
$ 1п -в /изг/Ып/ргостаП ргостаП
Откройте файл вепс|та11. с € и замените строки:
Мргод, Р~/Ып/в11, Г=18ПЕМодеи9, 3=ЕпуРготЬ/НйгРгот11,
К=ЕэтТоЬ/нагТо.Ь,
т=х-ип1х/х-ип1х/х-ип1х,
А=зИ -с $н
строками:
Мргод, Р=/ийг/кЫп/втгзЪ, Р=±зЕ)РМодеи9, 8=Ё1ТУГготЬ/НйГ“
РтотЪ, К-ЕпмТоЬ/нагТоЬ, В₽$.г:/,
т=х-ип1х/х-«п1х/х-ип1х.,
А=зтгзИ -с $и
После этого перезапустите программу ьепбтаП:
# вегухсе вегнЗтаП гевСагС
Оава 15 НАСТРОЙКА
СЕРВЕРА РТР
<»--СЕРВЕР Ш-ЕТРО
о---СЕРВЕР РНОЕТР
УТИЛИТЫ ОБСЛУЖИВАНИЯ
' ЕТР-СЕРВЕРА
о---ВИРТУАЛЬНЫЙ УЗЕЛ ЕТР
о---ЗАЩИТА ЕТР
Е1И0Х ПОЛНОЕ РУКОВОДСТВО
ГТР (РПе ТгапвГег Рго1осо1) — один из старейших протоколов Интер-
нета — используется для обмена файлами между системами. Обычно
на ИТР-сервере разметают свободно распространяемое программное
обеспечение, документацию, обновления программ, драйверы и про-
чую публичную информацию. Примером ГТР-сервера может послужить
сервер ^ср;//Гср. гейЬа г.. сот; Наэтом сервере вы можете найти как
саму операционную систему Ыпих Кеб На:, так и обновления ее пакетов,
а также дополнительные программы.
Доступ к серверу ЕГР осуществляется с помощью ИТР-клиента. В любой
сетевой операционной системе есть простейший ИТР-клиент — про-
грамма Пр. Обычно для того, что бы начать работу с ГТР-сервером, вы
должны зарегистрироваться на нем, то есть ввести имя пользователя и
пароль. После регистрации вы получаете доступ к своему каталогу. Су-
ществуют также общедоступные (анонимные) серверы, к которым имеют
доступ все пользователи. Для регистрации на таких серверах обычно
нужно использовать имя пользователя апопутош, а в качестве пароля —
адрес электронной почты.
Над файлами и каталогами вы можете производить обычные операции:
создание, удаление, копирование, перемещение, переименование. Как
правило, при выполнении операции копирования вы либо копируете
файлы на сервер (команда рСТ) — загружаете на сервер, либо копируете
файлы с сервера на свою локальную машину (команда &е1) — скачиваете
с сервера. Работа с ИТР-клиентом рассмотрена в п.6.4.5.3, а в этой главе
я покажу, как создать ГТР-сервер.
15.1. Сервер МШ-ГГРО
Сервер ГТР тш-Йрб, разработанный в Вашингтонском университете,
очень широко распространен. Он устанавливается из пакета «и-ЙрД
входящего в состав практически каждого дистрибутива.
Демон 1п.Г1рб может быть либо постоянно загружён в память (режим
*1апс1а1опе), либо вызываться суперсервером х!пёШ (шёШ) по мере не-
обходимости. Режим к1ап(1а1опе и применяется, как правило, если ГТР-
серверу нужно часто обрабатывать запросы клиентов. Второй режим
используется в целях экономии памяти, когда нагрузка на ЁТР-сервер
не очень велика.
Чтобы запускать сервер РТР из-под супердемона, добавьте в файл 1пеЫ.
сопё следующую строку:
гср зЬгеат Сер поиа!С гооС,/цвг/еЪгв/Ссрб хп.ГЕрй -1 -а
Таким образом, РТР-сервер вызывается не напрямую, а через ТСР-тугар-
рег, чем обеспечивается дополнительная безопасность. Если вы исполь-
зуете супердемон хинчб, описание ГТР-сервера должно выглядеть так
(листинг 15.1).
Листинг 15.1. Фрагмент файла ЮпеГН.сопГ
негу!се ГТр
{
зоске^„Ьуре - зЬгеат
дахг = по
пзег = гоор
яегуег = /иег/еЬс/Тп. йрй
зегуег_агдб = -1
ТпвТапсев - 4
1од_оп_ецссевз += ЖНАТ10Ы ШЕН10
1од_оп_.Еа11иге 11НЕВ1В
ассезз_Ытпез = 2:00-8:59 12:00-23 :59
п1се = 10
}
Ключ -1 регистрирует все сеансы ЕТР в службе $у.ч1оц. Другие ключи, с
которыми можно запускать РТР-сервер, перечислены в таблице 15.1.
Ключи командной строки сервера тмц-Нрй Таблица 15,1
Ключ Назначении
-С Записывает отладочную информацию в журнал ауйод
Регистрирует асе РТР-сеансы в журнале куа(оя
-ь Регистрирует в журнале ауз(од асе команды, отправленные серверу РТР
-Тсекунды Устанавливает предел времени ожидания для пассивных клиентов (по умолчанию 15 минут). Если за этот промежуток времени от клиента не поступит ни одной команды, то РТР-сеанс ^сервером будет разорван
-Тсекунды Максимально допустимое время сеанса РТР (по умолчанию 2 часа)
-а Разрешает использование файла конфигурации (срассевв
-А Запрещает использование файла конфигурации Тсрас-сееа. Эта опция установлена по умолчанию
Д Регистрирует в журнале хЕегТод файлы, полученные сервером РТР
-0 Регистрирует в журнале файлы, переданные сервером во время сеанса
15.1.1. Настройка УУП-ЕТРО.
Конфигурационные файлы
Сервер и'и-Прд использует пять файлов конфигурации:
♦ /еЬс/Еьрассекз — основной файл конфигурации;
♦ /еСс/ССрЬоеСв — файл, позволяющий запретить доступ к хуи-Йрд с
определенных узлов или определенным пользователям;
♦ /еСс/ Ес ри зет а — этот файл содержит список локальных пользова-
телей (зарегистрированных на сервере), которым запрещается взаи-
модействовать с хуи-йрй;
♦ /еРс/ЕСрвехуег в — позволяет задавать и использовать различную
конфигурацию РТР-сервера для различных узлов;
* /еьс/Есрсопмегвйопв — определяет типы файлов архивов, ко-
торые будут использоваться при сжатии (архивировании) переда-
ваемых данные Само сжатие включается и выключается в файле
/еСс/ССрассеза.
Основной файл Нрассезз. Директивы сервера УУИ-РТРО
В этом файле содержатся директивы, которые управляют правами до-
ступа и регистрацией пользователей, задают параметры ТСР/1Р-взаи-
модействия, виды регистрируемых событий, используются для конфи-
гурирования анонимного доступа к РТР-серверу и т.п. Пример файла
/еСс/^рассезэ приведен в листинге 15,2.
Листинг 15.2. Примерный файл Мрассека
с1акз а11 геа1,диезЪ,апопутоиз
етаИ гооЬ@1оса1ЬовС
ХодхпЕаНв 3
геадше ЙЕАВМЕ* 1од1п
геасДпе НЕАВМЕ* сжЗ=*
тевэаде /иеХсойе.твд 1од1п
тензаде .тевзаде сив=*
сотргеэз уез а11
Саг уез а11
сЪйюй по диезС,апопутоиз
йеХеГ.е по диевс, апопутоиз
ауегвдг1Ье по дпезС,апопутоив
гепате по диевЬ,апопутоиз
1од ЪгапзГегв апопутоиз,геа1 ХпЬоипй,оиЕЬоипсЗ
впиСскжп /еЬс/вНиЬтвд
ракзнй-скеск г^с822 иагп
Директива с1з8$ определяет класс пользователей, которые будут иметь
доступ к серверу ЕГР. В примере 11.3 задан класс аН, который состоит
из следующих типов пользователей: настоящие (ге»1), гости (§иез1), ано-
нимные (апопутоиз). Под настоящими пользователями подразумеваются
те, которые зарегистрированы на сервере, то есть их учетные записи
хранятся в файле /еСс/развит!.
С помощью директивы етаП можно указать адрес администратора сер-
вера.
Директива 1о^1пГа 11к задает максимальное количество попыток регистра-
ции. Если это количество превышено, пользователь автоматически будет
отключен. Значение по умолчанию для этой директивы равно 5.
Директива теяяа^е определяет файл и событие, когда он должен быть
отображен. Например, можно создать несколько файлов, один из которых
будет отображаться при регистрации пользователя, а другой — при входе
его в определенный каталог.
Директивы с1ш1об и (1е1е1е определяют, могут ли пользователи исполь-
зовать одноименные команды ЕТР. А директивы отепйтйе или с!е!е1е
разрешают или запрещают определенным пользователям перезаписывать
или удалять файлы на сервере. В приведенном примере пользователи
классов и апопугпоиз не могут выполнять ни одну из упомянутых
операций.
Общий список директив сервера иц-Прй перечислен в таблице 15.2.
Директивы сервера уш-Нра Таблица 15.2
Директива Описание
аиГодгоир имя.группы имя_класса [...] Разрешает доступ анонимным пользователям определенных классов к файлам, которые принадлежат к указанной группе
айа* псевдоним каталог Создает псевдоним для каталога на РТР-сервере. Псевдоним позво- ляет быстро {указав только псевдоним) перейти в соответствующий ему каталог из любого другого каталога на сервере
впопутоиэ-гооТ каталог (имя_класса] Указывает каталог, который будет использоваться е качестве корнево- го для заданного класса пользователей. После успешной регистрации пользователя на РТР-се рее ре он автоматически попадет в соответ- ствующий его классу каталог. Если имя класса не указано, то данная директива будет задавать корневой каталог для анонимных пользова- телей, Для которых корневой каталог не определен явно
Продолжение табл, 15.2
Директива Описание
каплет /абсолютный/ путь/к/файлу Перед регистрацией клиента ему будет показано сообщение из ука- занного файла
ЬИ-Пт11 (гал] гп | ОЩ | то1а! макс_кол_байт [ и мя_ класса] Устанавливает ограничение на количество пересылаемой информа- ции в байтах для пользователей указанного класса. Если имя класса не указать, то данное ограничение будет применяться ко всем поль- зователям. для которых ограничение на указано явно. Необязатель- ный параметр га* позволяет ограничить весь объем пересылаемой информации (в том числе и служебной), а не только пересылаемых файлов Значения 1п,ои(. 1о*а1 указывают поток данных {на сервер, отсервера илиобаодновременно), подлежащий учету
с!аав имя_ класса тип ыпольэова телей адреса узлов Создает класспользователей с указанным именем, в качестве типа пользователей используются ключевые слова апопутпоиз (анонимные пользователи), диедТ (гостевые пользователи) И геа1 (зарегистрирован- ные пользоватепи).Если указывается несколько типов, то они перечис- ляются через запятую баз пробелов. В полеадреса_узлоа указываются адреса узлов, пользователи только с которых будут принадлежать данному классу. Символ зедадочка г* означает все узлы. Адреса узлов могут указываться в виде одного из следующих форматов: » |Р-адрвс. Отдельный 1Р-адрес. • (Р-адрес:маскалсети. • 1Р-адрее/сИг. 1Р-ВДР&Г. с маской С1ОЯ. • ТпатевогчвД. Указание этого идентификатора приводит к запрету до- ступа со всех узЛов, имена которых не удается получить от В№-еервера. • /имя файла. Указывается абсолютное имя текстового файла, а котором содержится список 1Р-адресов (по одному а строке)
сбраДт каталог Определяет для директивы сбраЖ выражение, с помощью которого задается путь поиска при переходе в указанный каталог
согпргеэд | по ймя_класса Разрешает или запрещает сжатие данных перед отправкой (команда сотргеаа) для указанного класса пользователей
йеТайКветует рНиате Запрещает анонимный доступ к серверу
йепу адреса_уалов /путь/«/файлсообщения Запрещает доступ к серверу для узлов с указанными адресами. При этом будет отображено сообщение из файл^сообщения. Адреса узлов могут указываться в виде одного из следующих форматов: * |Р-ядрес • 1Р-адрес:маскя_сети * 1Р-здрес/Фйг * (пагпезегуеД * /имя.файм
етай адрес почты Почтовый адрес администратора сервера
Ше-1М* [тал] ю | ои(| 1о1а1 количество_файлоа [имяк Лаоса] Устанавливает ограничение на количество пересылаемых файлов для пользователей указанно го класса. Параметр копичестеофайлов как раз и задает максимально допустимое количество файлов. Значение остальных параметров такое же. как и для директивы ЬН-бтН
диеМдгоир имя группы [имя группи . .] Всем пользователям, входящим в группу с указанным именем, будет разрешен гостевой доступ к серверу РТР
Ит11 имя _ класса максимум периоды фай л ее общения Ограничивает число одновременно работающих пользователей, при- надлежащих указанному классу, в определенное время суток. Параметр максимум задает максимально допустимое количество одновременно работающих пользователей. Параметр периоды задает временные ин- тервалы. Клиенту, которому запрещается доступ к ПР-седверу в резуль- тате действия данной директивы, будет показано сообщение из файла
1од|пТаНв количество Определяет максимальное число неудачных попыток регистрации пользователя, после которых он будет отключен. По умолчанию коли- чество попыток равно 5
(од согптапйв ти пыпол ьзователей Регистрирует в журнале команды, которые вводились пользователями указанных типов, В качестве типов пользователей указываются ключе- вые слова апопутпоиз, диев1, геа!
Продолжение табл. 15.2
Директива Описание
(од 1галя?егатип_полмо- ва гелей список направ- нений Регистрирует в журнале акты передачи файлов пользователями ука- занных типов. В качестве типов пользователей указываются ключевые слова апопутои», диевТ, геа). В поле список_иаправлений задается направление передачи, подлежащее протоколированию; (пЬоипД {входящие файлы), оШЬоипб (исходящие). Если указываются оба на- правления. то они должны быть разделены запятой без пробела
тевваде фай лесой Ще- цин действие Отображает файл_сообщейИЯ во время регистрации или при перехо- де в другой каталог. Соответственно значение в поле действие может быть либо 1ОЫМ (регистрация) или СЙЮ^каталог (переход 8 каталог). Запись сий*' задает любой каталог
логе«г1еее [с!аззвимя_ класса) список_файяо0 Запрещает получение указанных в списке файлов. Если указан пара- метр с!авв, то этот запрет распространяется только на пользователей заданного класса
геаокпе файл действие Во ареке) регистрации или при смене каталога пользователь получит сообщение о существовании и времени модификации указанного файла. Параметр действие определяется также, как и в директиве тевааде
уез | по имя_кяасса Разрешает или запрещает использование команды Таг дляуказанного класса пользователей, то есть разрешает или запрещает архивирова- ние файлов архиватором Тат перед их пересылкой
ч)гТиа! адрес Разрешает использование виртуального РТР-узла
Кроме общих директив, сервер ни-Йр<1 имеет директивы, которые управ-
ляют правами доступа. Директивы прав доступа определяют, какие опе-
рации могут выполнять пользователи того или иного типа. Эти директивы
перечислены в таблице 15.3.
Директивы прав доступа Таблица 15.3
Директива Назначение
сЩтюй уев | по т и пы польаователей Разрешает или запрещает выполнять команду сНпим! для пользова- телей указанных типо$. В качестве типов пользователей указываются ключевые слова апопутоиз, диеат, тел)
0е1е1в уев | по ти п ы_польэ ователе Й Разрешает или запрещает выполнять команду Йе1е1е для пользователей указанных типов
отегтепЩ уез | по типы пользователей Разрешает или запрещает пользователям указанных типов перезаписы- вать файлы на сервере
гепате уез | по типы_пользователей Разрешает или запрещает пользователям указанных типов переимено- вывать файлы на сервере
раззукогй-сНесУ гГс'822|1гМа!|попе еп)огсе|иагп Задает уровень проверки пароля. При атом < качестве первого параме- тр указывается метод проверки пароля): • попе отключает проверку паролей; * Тг)Иа1 — все пароли должны обязательно содержать символ ’®’; * < г1®922 — в качестве паролей должны указываться вдрера,,р^трон- ной почты, задаваемые согласностандарту НЕСа224рк<ШВДР' ис лользоватьимейноаго значение). Вторым параметром задается действие, которое должно произво- диться в тех случаях, когда пользователь введет неправильный пароль. Значение ткага говорит о том. что пользователь просто будет проин • формирован об ошибке в пароле и далее яму будет позволено заново зарегистрироваться на РТР-сервере. Если указать значение епТогсе. то пользователю будет выдано сообщение -о неправильном пароле и ему в дальнейшем будет запрещен доступ к серввру
ир!саб уев | по типьмтользователей Разрешает или запрещает закачку файлов на сервер пользователям указанных типов
Файл КрИозЩ — параметры доступа
для пользователей с указанных узлов
Файл ГкрЬозСз используется для разрешения или запрещения доступа
определенных пользователей с указанных узлов. Например, вы можете
разрешить доступ пользователю аЗтш только с компьютера айтЫ.
йогаатп. ги и запретить со всех остальных. А для других пользователей
разрешить доступ со всех компьютеров. Таким образом, в файле могут
быть записи двух видов: разрешающие и запрещающие. Формат записей
в файле ЕсрЪовСв следующий;
а11ои I белу пользователь узел [узел...]
Разрешающая запись аПон разрешает пользователю регистрироваться
с узлов, указанных в списке, но запрещает регистрацию со всех осталь-
ных. Запись йену, наоборот, запрещает доступ с определенных узлов, но
разрешает со всех остальных. В листинге 15.2 приведен пример файла
ЕРрИозЬз.
Листинг 15.2. Пример файла ПрЬоаТа
а!1он аМп 192.158.1.1
йену изег 192.16В.1.2 192.168.1.3
Файл Призере — список локальных пользователей, которым
запрещено пользоваться УУЦ-ЕТРО
Файл /ехс/^сризегз содержит список локальных пользователей, ко-
торым запрещается обращение к серверу ии-Прб. Эти пользователи не
могут зарегистрироваться на сервере. При попытке регистрации будет
выведено сообщение об ошибке Ьощп (псоггесР даже если пользователь
ввел правильный пароль.
Из соображений безопасности этот файл должен содержать хотя бы имена
пользователей гоо1, Ып, победу, <1аегпоп. пеик ииср. Пустые строки, а также
строки, начинающиеся с символа игнорируются. Полностью корректный
с точки зрения безопасности файл представлен в листинге 15.3.
Листинг 15.3. Файл Црикегй
гооЬ
Ып
а<±п
1р
зупс
зктсйоип
Ьа.1С
таИ
пеи$
ииср
орегасог
дате в
поЪобу
Файл Прзегуегз — разные настройки Йр-сервера
для различных узлов
По умолчанию настройки муи-Прс! применяются ко всем клиентам, под-
ключающимся к нему. Файл /еСс/^Ьраегуегэ позволяет задать режим,
в котором для определенных узлов будут применяться свои индивиду-
альные настройки.
Файл /еСс/^срзетуегз состоит из записей следующего вида:
1Р-адрес(или имя узла) Каталог
Если какой-либо пользователь подключится к йр-серверу с одного из
указанных в файле узлов, то для него будут применяться конфигураци-
онные файлы из соответствующего каталога. Например, если в файле
присутствует запись 192.168.1.2 /еЪс/ Есрд/изег34, то при обращении
клиента 192.168.1.2 для него будут использоваться конфигурационные
файлы из каталога /еСс/ССрй/изегЗ^.
Файл Крсоп7ег81оп5 — форматы сжатия
В Файле /еСс/Гьрсопуегвхопз задаются форматы сжатия, разрешен-
ные для использования во время сеанса РТР. Обращаю ваше внимание
на то, что само сжатие передаваемых данных включается и выключается
соответствующей директивой в файле Ирассеза. Стандартный файл
ЕСрсот/егатопБ представлен в листинге 15.4.
Листинг 15.4 Файл Нрсолуегвюпй
: .2: : :/Ьш/сшргеев -й -с %В ;Т„ВЕС I Т^АЗСП; 0„ШС®РЙЕ35 :ШСО№>ЙЕЗЗ
; : : .Х:/Ып/Сотрге38 -С %8:Т_ЙЕС:О_СОМРКЕ38:СОМРЙЕЗЗ
:.дК: : .-/Ып/д21р -ей %5;Т„КЕа|Т„АЯС11-.О_ШСОМРКЕЗЗ:СШ21Р
: г.дг:/Ып/дг!р -9 -с ^в:Т„ДЕС:0„С0МРДЕЗЗ-.621Р
; : :Лаг:/Ып/Саг -С :Т„КЕО|Т„ЩД-О„ТАВ;ТАЕ
: : .'.Сат.гг/Ып/Таг -С -2 - %э:Т_„К№^Т„01Н:0„СОМРКЕЗЗЮ_ТАК:ТАЕ+СС№ЙЕЗЗ
: г :Лаг.дг:/Ып/Саг -с -2 -I - %3:Т„КЕЙ|Т„01В:0„сдаРНЕЯЗЮ„ТАК:ТАК+Сг1Р
Каждая запись этого файла состоит из восьми полей. Поля разделяются с
помощью символа двоеточия. Эти поля содержат префиксы и постфиксы
удаления и добавления, внешнюю команду, тип операции и описание.
Например, сжатый программой файл должен иметь имя с суффик-
сом Чтобы к имени файла был добавлен суффикс , запись в файле
ЕсрсопмегЁТопз должна иметь постфикс
Файл х<ег!од — журнал ГТР-сервера
В файл хьег1од записываются все транзакции, которые были произве-
дены в ходе сеансов работы пользователей. С помощью ключей -о ил
сервера РТР можно выбрать тип транзакций, записываемых в журнал.
Рассмотрим листинг 11.7, в котором представлен фрагмент файла
X Сет 1.од.
Листинг 15.5. Фрагмент файла хТеНод
Мэб. Лал 9 11:49:35 2 002 1 1ос.а1Ь.оа1.. 1оса1<4ота1.П 149 0 /
Ъоте/сЗеп/Утиаге .пГт! а _ о г Деп гГр 0 * с
Ией ^ап 9 11:56:0'3 2002 1 1оса1Ноз1 . 1оса1аотахг1 281 /
Ноте/йеп/и. от а _ о г деп ГЧ'.р 0 * с
Мей Лап 9 11:50:15 2 0 02 1 1оса 1Т1оеч.. 1оса.1с.1ота1п 281 /
Ьоте/йеп/'л'.одс а _ ; г с!еп Пр 0 * с
Ией Чап 9 11:52 :08 2002 1 ХосаПюйС.. 1.оса1Йота1п 888 /
Ноте/йеп/ЮрбозГя .1)’с1п1 Ь „ 1 г йен Ир 0 * с
Из первой записи видно, что пользователь бел был зарегистрирован с
удаленного узла 1осаПю$1.1оса1с1отат. Начало передачи файла /йоте/
деп/утиаге. пгт! произошло в среду, 9 января 2002 года в 11:49. Общее
время передачи — одна секунда. Общий объем переданной информации
составляет 1490 байт.
Для передачи файла использовался режим А8С11 (а), не было произведено
никаких специальных операций (_). Файл умнате. Ъс.т1 пользователь
загружал с сервера, на что указывает направление передачи (о). Поль-
зователь йеп является зарегистрированным пользователем системы (г).
Символ § на этом месте означал бы гостевую регистрацию, а символ а —
анонимную. Название службы, которая производила операцию — Г(р.
Теперь рассмотрим четвертую запись. Тот же пользователь йен передал
на сервер файл гГрЪозтз . Игт1, Направление передачи — на сервер (1).
Режим передачи — двоичный (Ь). Вторая и третья записи сообщают о
загрузке с сервера и на сервер файла и . сш V. в текстовом (а) режиме.
Остается только отметить, что файл хгеггод используется обоими сер-
верами ЕТР — ми-Прй и РгоРТРО.
15.2. Сервер РгоГГР
15.2.1. Установка и запуск РгоГТРО
Альтернативой, и, на мой взгляд, достаточно хорошей, серверу тНТрс!
является сервер РгоЛГРВ. Он намного проще в конфигурировании, чем
сервер »'и-Прй. и обладает достаточно гибкими возможностями. Для его
установки достаточно установить пакет ргоИрФ Подобно серверу «и-
Пр<1, Рго1ТР1) может запускаться автоматически при запуске системы
или вызываться суперсервером при наличии запроса на установку со-
единения. Сервер РгоГТРЭ может вызываться с ключами, указанными
в табл. 15.4.
Параметры сервера РгоГТРО Таблица 15.4
Ключ Назначение
-Ь Справочная информация
-п Запускает сервер в автономном режиме. Для этого в файле конфигура- ции нужно указать режим запуска з1апйа|опе
-а уровень„отладки Устанавливает уровень отладки сервера (1 -5)
-с файя_конфигурации Задает исподьэовзине альтер нативного файла конфшурзнии я место гон- дартиогй /рго?1;р<3.
-роМ Запрещает (0) ИЛИ разрешает (1} использование постоянного пароля. Для получения более подробной информации смотрите документацию по серверу
-1 Выводит список всех модулей, откомпилированных для использования сервером РгоГГРС
Выводит версию
15.2.2. Настройка РгоГТРО. Файл /е1с/ргоЙрд.сопТ
Сервер РгоЕТР!) использует всего один файл конфигурации — /еес/
ргоЕсрс1.сс>п.Е.
В листинге 15.7 представлен простейший файл конфигурации сервера
РгоЕТРП.
Листинг 15.7. Пример файла конфигурации /Щс/ргоПрй.соЩ
# Этот файл устанавливает один сервер и одну учетную запись
ЗегуегКапие "Му РтоРТРП зетлег"
БеэгуегТуре вЬапйаХопе
ОеГаиХГЗеглег оп
# Используем стандартный порт
РогЪ 21
□таек 022
МахХпзСапсеа 30
# Пользователь и группа, обслуживающие сервер
бзег поЬобу
бгоир поЬоду
# Параметры корневого каталога. Блочная директива Оггесбогу
<В1гесбогу /*>
# Директива, определяющая параметр А11онОуегиг1Пе
АПоиОуепягзхе оп
</01гес(;огу>
Директивы конфигурации делятся на две группы: директивы, определяю-
щие параметры, и блочные директивы. Блочные директивы конфигуриро-
вания похожи на тэги языка НТМЕ: конечная директива имеет то же имя,
что и начальная, но с наклонной чертой в начале. Например, начальная
директива <О1гес1огу /*>, а конечная — </ В (гее готу > (листинг 15.7).
Действия каждой пары директив распространяются только на блок, рас-
положенный между ними. Директива <1)1ге<ч<)гу> определяет свойства
какого-нибудь каталога. В вышеприведенном листинге определяются
свойства корневого каталога.
В таблице 15.5 представлены все директивы файла конфигурации сервера
РгоЕГРВ
Директивы файла конфигурации сервера РгоРТРО
Таблица !4>.5
Директива Описание
АссеззйгаптМвд сообщение Ответное сообщение, которое будет отправлено пользова- телю а случае его регистрации или получении анонимного доступа» Символы %Р будут заменены на имя пользователи которое он ввел при регистрации
А1!о« (теш а!1 | Нос1 | пещ/огк [,Нозт | пелуогк[, Используется внутри блока ЦтН. Ограничивает доступ к серверу (а именно, разрешает доступ). По умолчанию а11о« Ьот а{|
АНфу/АН Разрешает доступ к блокам Ойестогу Апопутоов. МтК
А11о«Роге1днА(Ыгей5 оп | оЛ Разрешает клиенту указывать при установке соединения адрес, который не соответствует ему. По умолчанию оН Может использоваться в блоках У1гТия1Ноа(, Апопутоие, <СЬэЬа1>
АНоиЛЗгоир список групп Разрешает доступ определенным группам. Используется а блоке игпН
АЛФМУзег списокпользователей Разрешает доступ определенным пользователям. Использу- ется в блоке ЫтЦ
АпопЯецЩгеРаазНО'й орт | оЛ Требует пароль при анонимной регистрации. Пароль должен совпадать е паролем того пользователя, который запустил демон. По умолчанию данная опция выключена
<Аполутоив Фгес(огу> Создает анонимную учетную запись, сКгесгогу— корневой каталог анонимного сервера
АЩЬ<ЗгоирА1е путь Позволяет указать путь к альтернативному файлу дгоир. По умолчанию используется файл /еТс/дтоср
Продолжение табл, 15.5
Директива Описание
АиШОзегРНе путь Указывает альтернативный файл разной
В!пб (р-адрес Разрешает привязку дополнительного 1Р-адреса к основному или виртуальному хосту
ОейшИНощ каталог Задает корневой каталог по умолчанию
0епу1гата!1 | Ноз! | пекмогк Запрещает доступ к серверу. Используется в блоке 1бтН
ОепуАИ Запрещает анонимным пользователям доступ к объектам указанным в блоке 1бпп1(
ОепуОзег список^пользоватвлей Запрещает доступ определенным пользователям
<О!гес(огу> путь Используется в ЩгТиа!Ноа(, Апопутоиз для того, чтобы определить особенные параметры доступа к каталогу и его Подкаталогам
Р!5р1ауНтз1С1хИг файл_сообщения Указанный текстовый файл будет выводиться, когда поль- зователь впервые за время сеанса войдет в данный каталог. Используется в УЯтиа1Ноа1, ОЛесТогу, Апонушода
Р1зр|ау1_од1п файл_ссобщения Этот файл будет отображен^ когда пользо&атель зарегистри- руется
<(31оЬа1> Используется для задания параметров, которые будут использоваться как основным, так и всеми виртуальными серверами
<итЛ соттапб> Ограничение на выполнение данной РТР-команды. напри- мер, МХШ УУА1ТЕ, РЕАО, ЭТОЙ
МахС1|0П!з ситЬег | попе сообщение Ограничение на количество клиентов. Приведенное сообще- ние будет отображено, если пользователю будет отказано в доступе, блоки Апопутпоив, О1оЬа1
Мах1ад1пАйетр(з Максимальное количество попыток зарегистрироваться. По умолчанию 3. Блоки УггШаЩоз*, <31оЬа1
Отбег а|!ауу, белу | белу, аПочч Порядок выполнения директив А1|о« и Оепу в блоке 1ЛпЙ
Рег$1в1еп1Рав5мюгб он | ой При значении оп будут использованы системные файла /е(с/ ранзиб и /етс/дгоир, несмотря на то, что командой сЬгооТ корневой каталог был изменен
ЙедикеУаПбЗНеО оп | об Разрешает или запрещает регистрацию при использовании оболочек (зГ>е11з). которые не указаны в файле /етс/вПеНз
ЗегуегАбт1п вта<| Определяет етаН администратора сервера
ЗегчегТуро Определяет режим работы сервера з1апба1опе (по умолча- нию! или 1пе1б Э первом случае сервер будет запускаться автоматически из стартовых сценариев системы, во втором — его будет запускать сервер !пе(б при попытке соединения
"ПтеоиНФе секунды Время в секундах, в течение которого пользователь имеет право не проявить активности. По умолчанию 60 (1 минута!
1)та$к маска Определяет права доступа для созданного файла. Маска — число в восьмеричной системе, определяющее набор прав доступа (см. главу 2)
Реет имя_пользователя Имя пользователя, присвоенное демону РгоРТР
ИвегАИаз псевдоним пользователь Создает указанный псевдоним для указанного пользователя
<УНиа!Ноз1 аббгеззь Создает виртуальный сервер
15.2.3 . Разграничение доступа к серверу РгоЕТР
Я считаю необходимым подробно рассмотреть блочную директиву ЫшН.
Эта директива определяет вид и Параметры доступа к тому или иному
каталогу. Рассмотрим листинг 15.8.
Листинг 15.8. Пример использования директивы 1_»тгТ
<Б1гесСогу 1псот1пд
<1Агп1Г. ИН1ТЕ>
А11оиА11
< / Ь1 т 11; >
<Ыг!11Х ЙЕАВ>
ОепуАП
</Ыт1с>
</П1гесЬогу>
Директива 1йгес1огу определяет свойства каталога хпсотпд, а директива
1Лтй задает вид доступа к этому КЙТЙЛОгу. Команда ХУКГГЕ директивы
1ЛтЙ вместе с директивой АНонАН разрешает всем пользователям за-
писывать информацию в этот каталог. Команда 11ЕАЭ директивы ЕипИ
задает ограничение на чтение этого каталога. В рассматриваемом случае
чтение запрещено для всех пользователей.
Кроме команд \ЕШТЕ и ПЕАН. в директиве 1лпи1 можно задавать ко-
манды 8ТОК и ЕОО1\' (таблица 15.6),
Команды директивы Цтг, ограничивающие лрааадоступа Табл ида 15.6
Команда Назначение
Ш01И Ограничивает регистрацию
УУРНТЕ Ограничивает запись
ЙЕДО Ограничивает чтение
этой Ограничивает прием файлов
В блоке Е11Ш1 можно задавать директивы А1кт, АЛои'АП, АПомСгоир,
АПгтТАег. 1)епу, Пепу АП, ВепуЕхег. Например, в листинге 15.9 запре-
щается доступ всем пользователям, кроме йен. Пользователь беи может
регистрироваться со всех компьютеров, кроме компьютера с ТР-адресом
111,111.111.111. Также запрещена регистрация из сети 192.168.2.0
Листинг 15.9. Пример блок» МтИ
<Ыт1Ъ Ь0С1М>
ОепуАП
АНоиЦзег йеп
Пепу Егот 11.1.111,111.111
Пепу Егоп 192.168.2.
</Ыш1Е>
Для конфигурирования отдельного каталога может также использо-
ваться файл - Етрассезв, который расположен в этом каталоге. В нем
содержатся такие же директивы, что и в файле ргоЕьрв . сопЕ, но файл
. ЕНрассезз имеет приоритет перед файлом ргоЕЕрй. сопЕ.
Организация анонимного ГТР-сервера
Анонимный ГТР-сервер можно построить с помощью ии-Прф установив
пакет апопйр. Этот пакет нельзя использовать вместе с сервером РгоЕТРИ
Пакет апопйр поставляется в составе большинства дистрибутивов.
Сейчас рассмотрим, как организовать анонимный ГТР-сервер с помощью
сервера РгоГТРИ Для организации анонимного доступа сервер РгоГТР!)
имеет директиву Лпопушонт При этом в блок Апопушоик нужно по-
местить директивы, конфигурирующие анонимную службу. В самой же
директиве Апопупюнь необходимо указать каталог, который будет исполь-
зоваться в качестве корневого для анонимной службы. Сервер РгоЕТРО
выполнит для этого каталога команду сйпиН, превращая этот каталог
в корневой для удаленного пользователя. Перед тем, как сделать это,
сервер РгоЕТРП прочитает все необходимые ему файлы конфигурации
из реального каталога / еЕс.
При анонимной регистрации по умолчанию в качестве имени пользовате-
ля указывается апопутоик, а вместо пароля адрес электронной почты
пользователя. Вы же можете изменить параметры анонимного доступа,
добавив проверку пароля для анонимного пользователя с помощью
директивы АпопКедгпгеРакччогг] В следующем примере представлен
типичный блок А полутон»,, подходящий для большинства анонимных
серверов (см. листинг 15.10).
Листинг 15.10. Типичный блок Апопутоиз
<Апопутои.з /уаг/Ес.р>
Озег ЕЕр
Отоир ЕТр
ПзегАИаз апопугпоиз ЕЕр
ВесртгеУаИйЗкеП оЕЕ
<В1гесЬогу *>
<ЫяиХ Ж1ТЕ>
СепуАЫ
</Е1П11Е>
сЫтП 5ТОН>
АЫоиАН
</С1гесСогу>
</Апопутоиз>
Директивы Иаег и Сгоир задают имя пользователя для анонимного до-
ступа. В обоих случаях применяется имя Пр Для имени Пр определяется
псевдоним апопушоиз. Вместо пароля нужно указать адрес электронной
почты.
Директива КецшгеУаййЗйеП отключает проверку командного интер-
претатора пользователя. По умолчанию сервер РгоЕТР!) ищет список
допустимых интерпретаторов в файле /еСс/зЬеНв, Если используемый
пользователем интерпретатор не указан в файле /есс/зЪе118, то со-
единение будет разорвано. Директива Кеди1геУа1Ш8Ье11 оЯ отключает
такую проверку.
Директива <1)1гесСогу *> определяет свойства для всех каталогов. При
этом всем пользователям запрещено записывать файлы на сервер, но
разрешено скачивать файлы сервера на свой локальный компьютер.
Желательно также добавить в блок Апопутоиэ директиву МахСНепСя,
которая указывает максимальное число клиентов. Нужно учитывать на-
грузку на сервер и пропускной канад для определения максимального числа
анонимных клиентов. Настоящих пользователей сервера ЕТР по возмож-
ности не следует ограничивать, в отличие от анонимных. При медленном
канале связи, например, 33 Кбит/сек, установите максимальное количество
анонимных клиентов небольшим, например, 5 или даже 3. Конечно, число
клиентов также зависит от объема информации, расположенной на сервере.
Если размеры файлов невелики (например, это текстовые файлы), то число
клиентов можно установить несколько большим (10-15).
15.3. Утилиты обслуживания ЕТР-сервера
При работе с серверами нв-Прс! и РгоЕТР!) вы можете использовать
программы Нр$11и( (останавливает сервер), ЙрмЬо (выводит информацию
о пользователях), ПрсоигИ (сообщает о количестве установленных со-
единений). Инструментальные средства обоих серверов имеют похожие
опции, но вспомогательные программы для РгоЕТРВ выводят больше
полезной информации.
Я рекомендую использовать расширенный вывод утилиты Прнйо. В этом
режиме предоставляется больше информации (листинг 15,11).
Листинг 15.11. Результат работы программы ЛриЬо
# ЕСриЬо “V
МаеЬег рго:Еьрс1 ргосевв 759:
1113 2т55в рго!ЬрсН ГЬр - 1оса1Иоз1 . ТосаМотаХп:
апопутпоиз/йелйбеп. сот: 1ВЕЕ
(ИозЬ: 1осаПюйЬ . 1оса1бота1п [127.0.0.1])
(сий •. /)
1150 0т20й ргоЕСрб: Йен - 1оса1Ьов1.. 1оса1аота1п: 1ПЬЕ
(ИозТ : 1оса1Ьозт. 1оса1с1ота1п [127.0.0.1] )
(сиб: /Ъоте/йеп)
Зегутсе с1ввз 2 изегз
15.4. Виртуальный узел РТР
Виртуальный сервер — это сервер, не существующий физически, но
представляющийся пользователю как реальный сервер. ОС Стих может
поддерживать несколько 1Р-адресов, благодаря чему имеется возможность
создать виртуальные узлы. Если вы располагаете дополнительными 1Р-
адресами, то они как раз могут использоваться для создания виртуальных
узлов. При конфигурировании виртуальных ГТР-узлов каждому вирту-
альному узлу нужно присвоить отдельный 1Р-адрес.
Виртуальные ЕТР-узлы нужны, если вы, например, хотите организовать
несколько узлов РТР — например, для разных рабочих групп и для
анонимных пользователей. Обслуживать сразу несколько РТР-узлов по-
зволяет все тот же демон ргоЙрй.
Настройка виртуального ЕТР узла очень похожа на настройку виртуаль-
ного веб-сервера, которая будет рассмотрена в следующей главе. Даже
используется одна и та же директива У'птиаШом, содержащая ЕР-адрес
или доменное имя. прописанное в службе В1Ч8.ЕР-адрес должен указы-
вать на узел сети, на котором запущен РгоЕТРЕ) (см. листинг 15.12).
Листинг 15,12. Пример использований директивы У1г1иа1Нов1
<У1.гС,иа1НовЬ 1ср, ИЬгагу. сот>
ЗегуегЫате *Оп1.±ле ИЬгагу"
МахСИепСв 15
МахЬодгпАСТетрЬв 1
В<?Лег1те1соте оп
<Ыш1Г ЬОС1Н>
АНои 1гот 192.168.1
Пепу 1гот а!1
</Ыт1С>
<ЫтП ИН1ТЕ>
А1.1 оиУ з е.г 11 Ьайт1п
ОепуАН
<Апопутоиз /уаг/Гср/11Ьгагу/Ь.ооке>
□еег ИЫагу
Сгоир ИЪгагу
АпопКедиттеРаззтеогй оп
</Апопутоик>
<Апопутоиз /уа.г/11р/11Ьгагу>
Цвет ЁТр
С-попр 1Ср
Изе г А Паз апопущоиз 1 гр
</Апопутоиз>
</У1гРиа1НояР>
В примере 15Д2 также конфигурируются две анонимных учетных записи —
ПЬгагу и 11р. Причем учетная запись НЪгагу требует диода пароля при
регистрации. Пароль должен совпадать с паролем того пользователя,
который запустил демон. Доступ к виртуальному серверу разрешен толь-
ко для подсети 192.168.1.0. Записывать данные на сервер может только
пользователь ОЬайшш.
15.5. Защита РТР
Очень полезной, особенно, при организации виртуальных узлов, является
конфигурационная директива ВеГаиИКоо!, позволяющая указать каталог,
который представлялся бы пользователям как корневой. Например, значе-
ние Г)еГаиПКоо1 настраивает сервер так, чтобы корневым каталогом
каждого пользователя был его собственный домашний каталог.
А что делать, если нам нужно, чтобы пользователи видели все дерево
файловой системы? Например, чтобы каждый мог посмотреть, в каком
каталоге находится та или иная программа. В этом случае целесообразно
ограничить действия над файлами в корневом каталоге (точнее, во всех
каталогах, кроме домашнего каталога пользователя). Делается это так:
<91гесбогу /*>
<1ЛМ1Т ИК1ТЕ БЕАР 5ТОЙ>
ПепуА!1
</ЫМ1Т>
</01ге.сРйгу>
Пример файла конфигурации с использованием директивы ВеГаиИКооГ
приведен ниже (листинг 15.13):
Листинг 15.13. Пример использования директивы ОеТаеИПооТ
(/еТс/ргоПрй.сопТ)
БегуегЫате "Му РгоГТРО зегуег"
БегчегТуре зСашЗаХопе
Ре^аиИЗегуег оп
1? Корневым для пользователя будет -его домашний каталог
ПеГаиЗХЙооХ
# Используем стандартный порт
Роге 21
о’тазк 022
МахТгш Сапсез 3 0
1? Пользователь и труппа, обслуживающие сервер
ивег поЪоду
Сгоир поЬобу
4 Параметры корневого каталога. Блочная директива РггесСогу
<П1гесЬогу /*•>
# Директива, определяющая параметр АЫоиОтегигХЬе
А11оиОуегиг1Г.е ои
</В1гесбогту>
3 Чтобы избежать атаки на отказ, нужно установить
1 максимальное число клиентов, а также максимальное
# число Неудачных попыток регистрации:
МахСЫепбв 10
МахЬодХпАСбегорЬй 2
# Иногда для Взлома злоумышленник путается использовать
11 в качестве оболочки какую-нибудь программу, например,
Я "оболочку" гт -К /.
# Обычно эта брешь в защите закрыта, но все же желательно
# требовать использования только законных оболочек:
Иеои1геУа11йЗИе11 оп
Глава 16
НТТР-СЕРВЕР
АРАСНЕ
УСТАНОВКА, НАСТРОЙКА АРАСНЕ.
ФАЙЛЫ КОНФИГУРАЦИИ
ФАЙЛ РОТАЦИИ ЖУРНАЛОВ
/ЕТС/ШОНОТАТЕ.О/НТТРО
СИСТЕМНЫЙ ФАЙЛ КОНФИГУРАЦИИ
/ЕТС/ЗУЗСОИЕ1С/НТТРО
СЦЕНАРИЙ ЗАПУСКА СЕРВЕРА
АРАСНЕ /ЕТС/1М1Т.О/НТТРО
ГРАФИЧЕСКИЕ КОНФИГУРАТОРЫ
АРАСНЕ
0--- КАТАЛОГИ ПОЛЬЗОВАТЕЛЕЙ
о---ВИРТУАЛЬНЫЙ НТТР-СЕРВЕР
“---ЗЗЬ и АРАСНЕ
ПЕРЕКОДИРОВАНИЕ РУССКОЯЗЫЧНЫХ
ДОКУМЕНТОВ «НА ЛЕТУ»
СЕРВЕР КНТТРО — ВЕБ-СЕРВЕР
УРОВНЯ ЯДРА
ЫГШХ ПОЛНОЕ РУКОВОДСТВО
Эта глава посвящена популярному НТТР-серверу АрасЬе. Этот сервер
возник из веб-сервера ЫС8А, разработанного в Национальном центре
разработок суперкомпьютеров Иллинойского университета. В 1994 году из
проекта ХС8А ушел главный разработчик, оставив многих последователей
самостоятельно разбираться в своем сервере. Со временем начали появ-
ляться исправления и дополнения к серверу МС8А — заплатки (патчи).
А в апреле 1995 года вышла первая версия сервера АрасНе, основанного
на версии 1.3 сервера ХС8Л. которая просто вобрала в себя все известные
на тот момент исправления 1ЧС8А. Отсюда появилось и само название
АрасЬе — «А Ра1СНу». Позже АрасНе стал самостоятельной разработ-
кой, и сейчас он поддерживается группой программистов-добровольцев
АрасЬе Огоир.
Сервер АрасЬе разрабатывался для ОС Гчпих и СН1Х, но со временем
были выпущены его версии и для ОС Х'/тдо’^к и 08/2.
Хочу также отметить, что, кроме АрасЬе, для ОС Ыпих существуют и
другие веб-серверы: Ней На! 8есиге Яегтег, АрасЬе-88Ь, Хе^саре ЕгНе-
грпхе Кегтег и т.д.
16.1. Установка АрасНе
В зависимости от дистрибутива, пакет, из которого устанавливается веб-
сервер АрасЬе, может называться арасЬе или ЬНрб, а пакет с документа-
цией — арасЬе-йосз или ЬНрб-тапиа! соответственно. В первом случае
вам понадобится установить еще пакет арасЬе-с ошпоп, содержащий
необходимые файлы для запуска сервера.
После установки сервер конфигурируется для запуска в режиме «йапба-
1опе, то есть он будет постоянно находиться в памяти. Я не рекомендую
изменять этот режим. Для запуска и останова сервера АрасЬе вы можете
воспользоваться командами:
# /еСс/гс.б/тпХС.й/ЪССра збагС
# /еСс/гс.й/1п1С.й/ЬсСрб еСор
После успешной установки сервера отредактируйте файл /еЪс/ЪсЬрд/
соп Е1 ИI г ра . соп1. В нем исправьте всего одну директиву —
8егтег№те. Значением ее должно быть имя, зарегистрированное в службе
ПЬЕЗ вашей сети. После этого запустите сервер. Откройте любой браузер
и попробуйте обратиться к серверу с локального компьютера (пес з с аре
ЬССр; / / ЬсаТЬове), а потом с другого компьютера вашей сети
(песесаре НЕ Ер: //вегтег. Нгта.ги). Если в обоих случаях вы увиди-
те приветствие сервера (рис. 16.1), значит, ваш сервер Арасйе нормально
работает и можно приступать к его дальнейшему конфигурированию.
Если в первом случае у вас произошла ошибка, значит, искать ее нужно
на локальном уровне. При этом если сеть нормально работает, то, скорее
всего, вы просто забыли запустить сервер. Появление ошибки во вто-
ром случае может быть связано с неправильной установкой директивы
ЗегтегЙате (например, назначенное вами имя веб-сервера не прописано
в службе ЭМ8).
3. 4 'Ж М. ’
1 5й'.+- Рвдзги Кйэдй 'Нжг
л а - $ на
М-
рпгй
."НГ|- —
пв Яр кЬь 'А?*Ь ««км» ед Теи м'^'ля* тсй» Жив йиыигу рч$*.
»№ гпсЫ4|( тнЛ ЛяаЬшмв
М** <3 к $<П'И ИаЛЙопцбвйЙ&Л*м*к» кит, рклИв ЯИ-вР 1ддДВп-Мцйг*1к
р*гкзГГ|Ъ1Пе&
ТЬй июнь вГ Ар к к* Арм,ь* « ^йс1}д бг^^цсд ( Цр.'еа Маиуа^ВММЖв шиЕи Ж*,
Ьйр/,Егй4г».1), шльу ммилгу тйД«?Ььо1*1вхЗЗк пи4й«, 'КЯ31
вийМ», *пН **?ц*1?иЛ«Л|ИячЧ« &вфго*»кМ(Ш. 1?, и н!й1 йШувгФ&ДО, га4^кд> ин^и «е ***а1*Ыл Еврг+ '-сшр-ИлсЗ^пд^Е АЬ* ви-Д1Д14 н« *ре?и1
и/ шяы« рЕипйЧ^г. даЯ и-|^рр1мт;. Ьдзитг у« «мй ъ нцгиййи. «(адй ш и±вЫ< я
ОжЩмгь-сПдо а*1п± а*дий^11 Ау<нЬа евыЫ*м оЖм1 Ме1й4кД.
1Гк« к Ше АйтвпсЫ Езвгале! 5еттТ
Гг|4 АрьгЬл ««(гм и !ая№йэд АЛншеД ЕйЭДОИЗыч» ТЪи 1ц&у Ъ^Ыутв№9К1^ «Й •«!№ лйЙяйш «Йи*
*пОа«плг
• А^«и;с^За1рбп^О91 мп1.'0у*1пЙс«ЕММП
* С мим ш>&|<1ЗДВДЫ^аЪШнй^Сй01а
АЖгекгй Ц’нГ АвЙИаСйвЬЛ
Зпт'йяС^рсв^прЬуТж}'* тСспМкаН^ЯвКЕЕ
рдц?*. щосж жтД «кв 1 мш
Рис. 16.1. Приветствие сервере Арас^е
16.2. Настройка АрасЬе.
Файлы конфигурации
После установки АрасЬе следует отредактировать следующие файлы:
♦ /есс/иггра/сопг/кьсра.сопг — основной файл конфигурации.
Для АрасЬе 2.x.. этот файл может также называться ЬеЬрй2 .согИ;
♦ /еЕс/1одгоСа(:е. в/арасЪе или /еСс/ХсдгоСаСе .й/ИсЬрй (в вер-
сии 2.0) — файл ротации журналов;
• /йСс/зузсопГХд/Иььрй — системный, файл конфигурации;
* /е&с/1п1с. — файл инициализации АрасЬе,
Для старых версий АрасЬе (до версии 1.3) характерно наличие файлов
згт.сопЕ и ассезз.сопЕ. Обычно эти файлы находятся в каталоге
/есс/пССрд/сопЕ. В файле згт.сопЕ задаются параметры документов,
которые размещены на сервере. Файл ассезз. сопЕ содержит параметры
доступа к серверу. Начиная с версии 1.3 рекомендуется все директивы,
которые раньше находились в файлах вгш.сопЕ и ассевз.сопЕ, по-
мещать в файл ьлерй. сопЕ.
Файл Ис срд. сопЕ — это основной файл конфигурации сервера. В нем
содержится техническое описание работы сервера. Начиная с версии
1.3 появилось несколько дополнительных конфигурационных файлов:
арасйе-галпе. Еурез, мЬозЕз/уйозЕв.сопЕ, уЬозЕз/А1гЕиа1Ноп:еРадез.
сопЕ, лгИовЕв/Рупат±с\?Но8Ен . сопг . В файле арасНе-Мте. сурея
содержатся типы М1МЕ, поддерживаемые сервером АрасЬе. Файлы уЬозг. б .
сопЕ, У1гЬиа.1НотеРадез . сопЕ , ОупашЕсУНойЕз . сопЕ относятся к
конфшурированию виртуальных веб-серверов, о которых речь пойдет не-
много позже.
М1МЕ (МиЫршрово 1п1егпе! МаП ЕМепвюпв) — многоцелевое расширение
Я 1 электронной почты в сети Интернет, Используется не только при работе с
электронной почтой, нои служит для описания различных типов данных, например,
текстовых, графических. Описание типа М1МЕ включает в себя наименование типа,
подтипа и расширение (например, 1ех1/р!а!п 1x1),
16.3. Основные настройки.
Файл ЫТрсксопТ (ЫТрс12.соп1)
Как уже отмечалось ранее, этот файл содержит практически все дирек-
тивы, необходимые для работы сервера. Директивы конфигурационного
файла сервера АрасЬе можно условно разделить на такие группы:
1. Общие. К общим директивам относятся глобальные директивы,
влияющие на работу всего веб-сервера. Это директивы 8ег\'ег\’ате,
ЗегуегТуре, РоП. Озег и Сноир. ЗеглегАскнт. 8егуегКоо1, РШГйе,
Г)осптепГКоо1, ЕАегОи.
2. Директивы протоколирования; ЕггогКос. Тгап^егЕо^
НокШатеЕоокирз.
3. Директивы ограничения доступа: АПом'Отегпбе, Орбопя, 1л тй.
4. Директивы управления производительностью:
8!ап8егуегз, МахЗрагеЗегуегк, МшЗрагеЗегеегз, а также директива
СасЪе№е§оиа1еДОос8.
5. Директивы обеспечения постоянного соединения с клиентом:
"Птеош, КеерАИге, КеерАНтеПтеои!.
6. Директивы настройки отображения каталога. Оформить отображе-
ние каталогов можно с помощью директив настройки отображения
каталогов: 1)1гесЕогу1!н1ех. Еапсу1пбехтц и АскПсопВуТуре.
7. Директивы обработки ошибок. Директивой обработки ошибок
НТГР-сервера является директива ЕпогОоситегП. С ее помощью
можно установить реакцию на любую ошибку сервера, например,
на ошибку 404 (документ не найден).
8, Директивы перенаправления: ПесПгеЩ, АЛаа и Зспр^АПаа.
9. Директивы для работы с многоязычными документами: АбЛлп^иаце
и Еап$иа§еРпопГу,
10. Директивы обработки МТМЕ-типов. Настроить свой сервер для
обработки различных М1МЕ-типов можно с помощью директив
ОеГаиИТуре, АЗбЕпсхчНпе. АббТуре, АббНашПег и А сП он.
11. Директивы создания виртуальных узлов: УНнаШокг, Глзгеп,
ВшбАббге^.
Все эти директивы редактировать вам вряд ли придется — по умолчанию
они содержат вполне разумные значения. Нужно будет задать только
значения директив ЗепгегМате и ЗегуегАбтт. Далее приведено описание
директив, используемых в файле Ыгрб.сопЕ
16.3.1. Общие директивы
Общие директивы изменяют глобальные параметры сервера — его имя,
тип, порт, адрес администратора, Значения, указанные глобальными ди-
рективами, влияют на работу всего сервера,
« 8егхег\агпе — директива, которая определяет имя сервера АрасЬе.
Здесь должно быть указано официальное имя сервера в таком виде, в
котором появится в адресной строке браузера. Это имя должно быть
зарегистрировано в службе вашей сети.
♦ $егсегТуре — директива, которая определяет тип сервера. По умол-
чанию используется значение з(апба1опе. Если вы хотите достичь
максимальной производительности вашего веб-сервера, не изменяйте
это значение.
• ЗегуегАбшш — директива, которая задает электронный адрес
веб-мастера вашего веб-узла. Если возникнут какие-то проблемы,
связанные с работой сервера, то по этому адресу будет отправле-
но соответствующее сообщение. Обычно используется значение
вдеЬта51ег@Уоиг_Но8Г.соп1, Пользователь \уеЬта81ег, как правило,
не существует реально в системе. Для определения имени (псев-
донима) \меЬтаз1ег используется файл псевдонимов электрон-
ной почты /есс/а! 1азез. Формат этого файла следующий:
< псевдоним > :<регистрационное_имя>. После модификации этого
файла нужно ввести от имени суперпользователя команду пенайа^ек
В ХУшбомъ псевдонимы создаются с помощью программы настройки
установленного почтового сервера.
• Рог* — директива, задающая номер порта, который будет использоваться
для установки соединения. По умолчанию используется порт 80. Если
вы хотите запустить сервер АрасЬе с использованием этого или любого
другого порта, номер которого меньше 1024, вы должны обладать пра-
вами суперпользователя, Но даже если у вас нет таких прав, вы можете
запустить сервер для работы с портом, номер которого превышает зна-
чение 1024. Обычно используется номер 8080 или 8000.
• Пяег и Сгоир Директивы Ёзег и Сгоир определяют идентификато-
ры пользователя и группы, от имени которых будет работать сервер.
Данные идентификаторы присваиваются серверу, если он запущен в
автономном режиме. Можно использовать как имена пользователей,
так и их числовые эквиваленты — НГО. По умолчанию используется
имя пользователя поЬобу. Из соображений безопасности не рекомен-
дуется изменять это значение и указывать имя реального пользова-
теля. В этом случае веб-сервер получит доступ только к тем файлам,
которые разрешены для чтения всем пользователям. Нужно заметить,
что указанный пользователь и группа должны существовать в вашей
системе. Ни в коем случае не запускайте сервер от имени пользователя
гооН
• 8егУегКоо1 — в этой директиве указывается местонахождение файлов
конфигурации сервера АрасЬе. По умолчанию для этих целей исполь-
зуется каталог /ебс/ЬССрб.
• РШРИе — с помощью этой директивы указывается имя файла, в ко-
тором исходный процесс сервера будет регистрироваться. Этот файл
содержит свой идентификатор процесса (РЮ). Данную информацию
можно использовать для останова или перезапуска сервера при на-
писании собственных сценариев. Этот файл будет создан, только если
сервер АрасЬе запущен в автономном режиме.
• 1)осишеп1коо1 — директива, определяющая местонахождение корне-
вого каталога документов вашего сервера.
♦ 1ьег1)(г — эта директива задает названия подкаталога в домашнем
каталоге пользователя, из которого берутся документы. В этом слу-
чае вы активизируете возможность использования пользовательских
каталогов. Если вы не хотите включать эту возможность, укажите
ЕкегПгг Э18АВЕЕЭ. Более подробно эта директива будет рассмотрена
позже.
16.3.2. Директивы протокол и роввния
Директивы протоколирования управляют процессом протоколирования
работы сервера. С их помощью вы можете определить, что нужно запи-
сывать в журналы, а что — нет.
♦ НозйтшеЕоокиря оп | оП'.Сервер АрасЬе ведет журнал доступа дру-
гих компьютеров. Если вы включите данную опцию (он), то в журнал
будет записано доменное имя компьютера-клиента. Если эта опция
выключена (ой), в журнал будет записан 1Р-адрес клиента. Включение
данной опции замедляет работу сервера, так как требуется дополни-
тельное время на ожидание ответа от сервера ЭИБ.
• ЕггогЬо# и ТгапхГегкоц — эти директивы определяют расположе-
ние журналов сервера АрасЬе. Обычно для этих целей используется
каталог /есо/Ьехрб/зодв, который является ссылкой на каталог
/уаг/1од/Ьссрб или на любой другой. В журнале еггог.1од про-
токолируются диагностические сообщения, а также сообщения об
ошибках, которые порождают ССН-сценарии В журнале т гая РегТод
протоколируются запросы клиентов.
16.3.3. Директивы управления производительностью
Поэкспериментировав с этими директивами и выбрав оптимальные зна-
чения, можно добиться существенного повышения производительности
вашего сервера.
Сервер АрасЬе для каждого соединения запускает отдельную копию,
которая будет обрабатывать запросы клиента. Управлять запущенными
копиями позволяют директивы 81аг(8ег\ег5, МтЗрагеЗегуегз, Мах8раге-
Бегеегв.
♦ 81аК8егуегв, Мах8раге8егтегх, МтБрагеБегтегв. Для каждого но-
вого соединения создается новая копия процесса сервера. Дирек-
тива 81аг18егуегк задает количество копий, которые будут созданы
при запуске исходной копии сервера. При этом исходная копия
сервера получает запросы и передает их свободным копиям. Это
позволяет равномерно распределить нагрузку между отдельными
процессами и повысить производительность сервера, однако на
практике все не так хорошо, как хотелось бы. Существенного при-
роста производительности можно добиться только в случае большой
загрузки сервера. По умолчанию запускается пять копий сервера.
Если число поступающих запросов превышает количество запущен-
ных копий сервера, запускаются дополнительные процессы-серверы.
Эти процессы не завершаются после обработки своего запроса,
а продолжают находиться в памяти. Директива Мах8раге$егуег$
позволяет указать максимальное число таких процессов. Если
это количество превышено, то лишние процессы завершаются.
Если количество «серверов на подхвате» меньше, чем задано ди-
рективой Мш$раге$егуег$, запускаются дополнительные копии.
Для работы этих директив необходимо, чтобы сервер был запущен в
автономном режиме.
♦ СаскеХе^оНаийВося — эта директива позволяет прокси-серверу, на-
пример, 801ЛИ, не кэшировать документы, которые не генерируются
автоматически, то есть в процессе выполнения различных сценариев.
Согласно протоколу НТТР/1.0, сервер АрасЬе с каждым пакетом по-
сылает заголовок «Рга^та: по-сасЬе» прокси-серверу, что позволяет
отключить кэширование документов (в протоколе НТТР/1.1 вместо
Ргацтпа используется СасЬе-СопП'о!). Если вы включите данную ди-
рективу, то вы разрешите прокси-серверу кэшировать Документы. К
сожалению, далеко не все прокси-серверы отключают кэширование
после получения данного заголовка. При написании своего СС1-
сценария вам, скорее всего, придется самому выводить заголовок
Рга§ша (или СасЬе-Соп1го1) и мета-тэги, которые указывают на дату
последнего обновления документа.
16.3.4. Директивы обеспечения постоянного
соединения с клиентом
Эти директивы обеспечивают постоянное соединение с клиентом, а также
управляют параметрами установленного соединения.
♦ Т1шеои1 — задает промежуток времени в секундах, в течение кото-
рого сервер продолжает попытки возобновления приостановленной
передачи данных. Значение директивы Т1шеои1 распространяется не
только на передачу, но и на прием данных. Если вам нужно получать
большие файлы, рекомендую увеличить данное значение.
* КеерАПхе —• разрешает постоянные соединения, то есть такие соеди-
нения, в которых производится более одного запроса за сдан раз.
♦ КеерА1|уеТ1теОи1 — данная директива определяет таймаут для по-
стоянного соединения.
♦ МахСПепЬ. Иногда поступающих запросов настолько много, что
компьютеру не хватает ресурсов для загрузки новых копий сервера в
память и их выполнения. Директива МахСНеЫя (значение по умолча-
нию — 150) определяет максимальное число копий сервера, которые
могут выполняться одновременно.
♦ МахКециезЬРегСНЙс!. После обработки определенного количества
запросов, указанного в этой директиве, копия сервера завершается,
а вместо нее запускается новая.
16.3.5. Директивы создания виртуальных узлов
Довольно часто пользователь не может позволить себе такую роскошь, как
собственный физический веб-сервер, то есть отдельный компьютер, по-
стоянно подключенный к Интернет, на котором запущен сервер АрасЬе.
Поэтому современные веб-серверы поддерживают виртуальные узлы. У
вас будет собственное имя, например, улумлЛгшали, но в действительности
ваши файлы будут помещены не на отдельном компьютере хучту.йгта.гп,
а будут находиться на сервере провайдера (или хостера) — тгош.вр.ги.
Благодаря технологии виртуальных узлов один сервер хостинг-провайдера
обслуживает сотни или даже тысячи сайтов.
На своем домашнем веб-сервере вы также можете создать один или не-
сколько виртуальных узлов, если, конечно, вам это нужно.
1л81 еп — эта директива позволяет вам связывать АрасЬе с определенным
1Р-адресом и/или дополнительными портами.
ВтЙАббгезд — эта директива сообщает серверу, какой 1Р-адрес следует
прослушивать. Значением данной директивы может быть «*» (любой
адрес), 1Р-адрес или полное имя домена.
Блок директив У1Нца1Но8( будет рассмотрен позднее, при описании
создания и использования виртуальных узлов.
16,3.6. Директивы настройки
отображения каталогов
Эти директивы позволяют «украсить» ваш веб-сервер, например, сопо-
ставить значок типу файла или определить оформление каталога.
♦ В1гес1огу1ш1ех — позволяет задать название документа, который будет
возвращен по запросу, не содержащему имени документа. Например,
если вы введете в строке адреса броузера Нир://1оса1Ьоз1, то будет воз-
вращен один из указанных в директиве 1)|гес1огу1пбех документов.С
помощью данной директивы можно задать несколько имен файлов.
Значениями по умолчанию являются шдех.Ыт! тбех.рЬр тдех.Ыт
тскх.зЫт! тбех.с^ ЭеГаик.Ыт бейшй.йпп тдех.рЬр.
♦ Еапсу!пс1ех1П|’. При получении запроса, не содержащего имя докумен-
та, сервер передаст один из файлов, указанных в директиве В1гес1о-
гуТпбех. Если такой файл не существует, клиенту будет возвращено
оглавление каталога. При включении директивы Гансу 1пг1ехнщ в
оглавлении каталога будут использованы значки и описания файлов.
Если директива Еапсу1п<1ех1гщ выключена, оглавление будет пред-
ставлено в более простом виде.
* АйсПсопВуТуре (ТЕХТ, ИВЕ) тппечуре — сопоставляет значок типу
файла. Значок будет использоваться при выводе каталога, если вклю-
чена директива ЁапсуЕпйеюп^. Параметр ТЕХТ определяет текстовое
описание типа, которое увидят пользователи, использующие текстовый
браузер или пользователи, у которых отключено отображение рисунков.
Параметр СКЕ определяет адрес значка, а параметр пите-Суре — это
тип файла, с которым нужно сопоставить значок. Полный перечень
МЕМЕ-тип о в приведен в файле араспе--ишпе. бурее». В качестве имени
файла можно задать не только М1МЕ-тип, но и символы, которыми
заканчивается имя файла (см. листинг 16.1), но для этого нужно ис-
пользовать директиву АйсПсоп вместо АскИсопВуТуре
Листинг 16.1. Фрагмент файла ЫТрН.сопТ
АсЗйХсопВуТуре (УХБ, /хсопв/гаоуте. дзГ) У1.<3ео/*
АсХаХсоп /Хсопз/Ыпагу.дИ .Ып .ехе
Первая директива в листинге сопоставляет типу уМео значок Лсопв/
тоу1е.§И. Вторая директива сопоставляет бинарным файлам *.Ьт и
* .ехе значок /1соп8/Ыпагу.§1Е Значок по умолчанию задается директивой
ЭеГаиШсоп.
16.3.7 . Директивы обработки М1МЕ-тилов
Как вы помните, в существует такое понятие, как расширение
(или тип) файла. По расширению можно связать какую-либо программу
с определенным типом файла. Например, когда вы щелкаете на файле
с расширением .1x1, запускается Блокнот, а при щелчке на файле .бос
будет запушен АУогб. Точно такой же механизм реализован в АрасЬе.
Вы можете сопоставить типу файла программу-обработчик этого типа.
Когда не был разработан модуль пзоб_рЬр, программа рйр объявлялась
обработчиком файла с расширением .рЬр. Сервер запускал рЬр, пере-
давал ему файл, а потом возвращал пользователю результат.
♦ ПеГаиИТуре Если запрашиваемый клиентом тип не соответствует
ни одному из М1МЕ-ТИП0В, используется М1МЕ-тип, указанный в
директиве ВеГаиЙТуре.
• А<1(1Епсо(11П}». Для сокращения времени передачи файла клиентам ис-
пользуется сжатие данных. Браузеры имеют встроенные программы
для распаковки, запускаемые при получении архивов определенных
М1МЕ-ТИП0В. Именно эти М1МЕ-типы и указываются в директиве
АййЕпсосПп^.
♦ АййТуре — с помощью этой директивы можно добавить новый М1МЕ-
тип, который не указан в файле араспе-тдше.Сурез.
♦ АййНапШег и Асбоп. Директива АскШяпйкг позволяет сопоставить
определенному М1МЕ-типу какой-нибудь обработчик. А с помощью
директивы Асбоп можно определить какое-нибудь действие для об-
работчика. Использование этих директив, я думаю, лучше всего про-
демонстрировать на примере (листинг 16.2).
Листинг 36.2. Применение директив ДДДНзпсНег и АсПог>
Аск1НапсН.ег ТехС/иЗИТт! <:ШЬт1
АсГАоп СехС/гйЩт! /сд1~Ып/<Й1Тт1-рагве
16.3.8 . Директивы для работы
с многоязычными документами
Если ваш сайт имеет несколько языковых версий — например, русскую и
английскую, — целесообразно настроить директивы управления языком.
Тогда пользователю не нужно будет щелкать по ссылкам «1п Еп§1ЬЕ/На
Русском» — сервер, исходя из настроек браузера, сам определит, какой
язык предпочитает пользователь, и отобразит нужную страницу.
♦ Ай сП.а поваре. В большинстве браузеров можно задать предпочитае-
мый язык. Директива Аг1(11.априа«е сопоставляет расширение файла
аббревиатуре языка. Для русского языка используется аббревиатура
ги, для английского — еп. При этом в корневом каталоге вашего сер-
вера могут находиться несколько индексных файлов на разных языках.
Например, для русского языка нужно использовать имя файла шбех..
ЫшЕш, а для английского — шбех.Ыпй.еп.
♦ I .апщищеРпогйу. Если на вашем сервере размещены документы на разных
языках, то с помощью директивы ЕшщшщеРгнийу можно указать при-
оритеты различных языков. Клиент вводит в адресной строке 1п1р:/Мт
хег/ег.сот/. Если в свойствах браузера имеется возможность задать пред-
почитаемый язык, то возвращен будет файл на нужном языке, если такой
существует. Если же браузер клиента не поддерживает эту возможность,
будет возвращен файл на языке, имеющем наиболее высокий приоритет.
Дия того, чтобы сервер поддерживал нужный вам язык, предварительно
установите правильное значение директивы АДОЬав&ва&е.
16.3.9 . Директивы перенаправления
Довольно часто нужно перенаправить пользователя на другой ресурс:
например, вы сменили хостера и из-за этого изменилось имя вашего сай-
та. Обычно при таком «переезде» у вас есть определенное время, чтобы
сообщить вашим пользователям об этом. Проще всего установить на
старом сервере перенаправление на новый — во-первых, пользователи
узнают ваш новый адрес, а во-вторых, им не нужно будет вводить этот
адрес вручную — сервер сделает все автоматически.
Возможно, вы просто перенесли файлы в другой каталог — вам так
удобнее, но пользователи не знают об этом и по-прежнему обращаются
к старому каталогу. Тогда создайте редирект на новый каталог, и сервер
автоматически перенаправит пользователей на него.
* КечйгсчТ. Используйте эту директиву, когда нужно перенести доку-
менты в другой каталог или на другой сервер. Например, вам нужно
перенести данные из каталога /ияегШеп в каталог /йен. Если при этом
старый ЦЯТ-адрес был йНрЕулу^ЛтоЕсот/изегв/деп, то новый станет
> ИПр.77'л-л'*.йо51.сопУс1еп/. Используйте для этого следующую директиву:
йей±гесь /нзегз/аеп /Теп. Можно также перенаправить запрос
на другой сервер: НесИгесТ. /цвета/Теп/ тти .Теп.Тотали . сот.
При этом допускается использование как нового, так и старого
ПКЬ-адреса.
* АНаз — с помощью директивы АНав можно предоставить доступ не
только к файлам, находязнимся в каталоге, указанном директивой
ОосшпепГЙоог. и его подкаталогах, но и в других каталогах. По умол-
чанию определен только псевдоним для каталога /1сопб.
* $спрШ1ак — аналогична директиве АЙа», но позволяет задать место-
расположение каталога для СП I-сценариев.
16.3.10 . Директивы обработки ошибок
Такая директива всего одна, но она очень полезна. Например, произо-
шла ошибка 404 (файл не найден). Вы можете сопоставить этой ошибке
ОКЕ. на который будет перенаправлен браузер пользователя. Обычно
перенаправление устанавливают на документ, содержащий логотип сайта
и сообщение об ошибке.
ЕггогВоснтегП — директива, сопоставляющая коды ошибок сервера
иКЬ-адресам на этом же сервере.
16.3.11 . Директивы управления доступом
к отдельным каталогам
Вы можете определить отдельные параметры для каждого каталога
вашего сервера — оформление каталога, параметры доступа к этому
каталогу.
Блок директив В1гес1огу
Блок директив 1)|гес1огу определяет свойства каталога (см. листинг
16.3).
Листинг 16.3. Директива ОДесЯогу
<01тесСогу />
Ор11ств Тпйехен Iпс.1и<1ев ?о 11 смЗутЫпкз
АНомШ'еггЗйе Иопе
</П1гесСоту>
Свойства каталога можно указывать в директиве В1гес(огу или в файле
.ИСассекв, который находится в ТОМ каталоге, для которого необходимо
установить нужные параметры.
В блоке 1)1гее(огу могут находиться директивы управления доступом. К
ним относятся директивы АПонОхегпбе, ОрНопх, ЫгаИ. Рассмотрим по
порядку все эти директивы. Директива АШтОуегпбе может принимать
значения, указанные в таблице 16.1.
Значения директивы АНонЮюгтМе Таблица 16.1
Значение Описание
Мопа Сервер АрасЫ будет игнорировать файлы .Ыассезк. Рекомендую установить данную опцию, ток как ото повысит производительность сервера
АВ Пользователи имеют праве переопределять а файлах Ыассезз глобальные параметры доступа. Из соображений безопасности лучше не использовать этот режим
ОрЙопз Разрешает использовать директиву ОрВопз
ОтЯ Разрешает использовать директиву Цпй»
АиЙтСопйд Разрешает использование директив АиТЬВате, АиЙтТуре, Аитьивег А1е и АоТВСгоорРНе
й!е1(1(о Разрешает использовать в файлах Ыассезз директивы АВйТуре и АйВЕпсотЙпд
С помощью директивы ОрНопз можно определить функции сервера,
которые будут доступны для использования в определяемом каталоге.
Данную директиву можно использовать как в файле ИтЬрд. сопг, так и
в файлах .ЬтассезЁ. Допустимые опции для директивы ОрПопх пред-
ставлены в таблице 16.2.
Значениядаректи0ыОр*1опв Таблица 16.2
Значение Описание
Моне Не разрешается использование каких-либо функций
А!! Разрешаются асе функции
Разрешается использовать символические ссылки. С точки зрения безопасности Не рекомендуется использовать этот режим
БупЮпкйЮюпегМатсЬ Разрешается использование символических ссылок, если они указывают наобъекты, которые принадлежат тому же пользователю, что и сами ссылки
ЕхесСй! Разрешается выполнение СС!-сценариев
1пйехез Если эта опция выключена, сервер не будет передавать содержимое каталога при отсутствии файла 1пйех,ЬТт1
1псШйев Разрешено использование серверных включений, Рекомендую отключить эту опцию, поскольку это сильно нагружает сервер
тсШйевМоЕхес Разрешает использование серверных включений, но запрещает запуск из них внешних программ
Директива Ышй ограничивает доступ к файлам в определенном ката-
логе:
Ыт1Ь метод
Параметр «метод» определяет метод передачи: СгЕТ или РО8Т. Дирек-
тиву 1лпм1 можно использовать внутри блоков ШгесЮгу. ЬосаИоп или в
файле .Иьасссезн.
Блок директив Мтй
В блоке 1ДшИ можно использовать такие директивы: а11ои (разрешить),
йену (запретить), огбег (порядок), гечшге (требуется). После директивы
аНоуг следует слово (тот, после которого можно указать 1Р-адрес, адрес
сети, домен или просто имя компьютера. Слово а11 обозначает все компью-
теры. Директива отбег определяет порядок выполнения директив а11о\*
и белу. Например, вам требуется запретить доступ всем компьютерам,
кроме компьютеров, которые входят в домен ги (см. листинг 16.4).
Листинг 16.4. Директивы аИоуу, бепу
отбег йену, аПои
белу Сгот а11
а11он Егогп г и
Следующий пример показывает, как разрешить доступ компьютерам
только из вашей сети.
Листинг 16.5. Разрешение доступа подсети 192.168.1,0
отбег бепу, аЦом
йену Г гот а!1
аНом 1'гоп! 192.168.1.
Кроме значений аПонДепу и (1епу,а11ом\ директива отбег может содержать
значение тиШа1~ГаПиге. В этом случае в доступе будет отказано всем
компьютерам, которые явно не указаны в списке аПон.
Директиву гецшге можно использовать для защиты каталога паролем.
После названия директивы должен следовать список элементов: име-
на пользователей, групп, которые заданы в директивах АиННкегЕйе и
АщЬСгоирЕйе. Можно использовать параметр такб-и$ег, который укажет
серверу предоставить доступ любому пользователю, имя которого имеется
в директиве АиШИкегЕЙе, если ой Введет правильный пароль. Пример
использования приведен в листинге 16.6.
Листинг 16.6. Использование директивы гедшге
<01гесСогу *>
АиеЬХГзегЕИе /уаг/евсйгёг/ ЙЬраззмД
АиСЫате Зесигтку
АиЬЪТуре Вая1с
<Ыт1с СЕТ>
отбег бепу,а11ои
Йену Еогт а11
аПоы ^гогп. щуйотатп-.ги
гедигге чаИЙ-изег
</Б1гесСогу>
В листинге 16.6 для аутентификации используется файл паролей
. Мразяий, который можно создать с помощью программы Ыраккттй.
Директивы блока 1лпн( разрешают доступ к любому каталогу сервера
только пользователям домена туйртатп. ги.
Кроме параметра таМй-икег допускается использование параметра нкегз
или §гоирк. Данные параметры разрешают доступ только определенным
пользователям или группам пользователей. Пример использования пара-
метра икегв приведен в листинге 16.7.
Листинг 16.7, Применения параметра иаегз
<01гессогу /ивегз>
АиСкТуре Вав1с
АдСИПзегРИе ,^аг/изега/. ИЬраззтлгй
ДиЫяЫате ОвегвВдг
<1дгл.и СЕТ РО8Т>
гефп.ге изетн йептв 1дог еVд
</.Е1т1С>
</С:1гесГогу>
Блок директив Ьосайоп
С помощью директив, расположенных в блоке ЬосаНоп, можно задать
определенный ПКЬ-адрес, предназначенный для обозначения каталогов,
файлов или групп файлов. Обозначить группу файлов можно с помощью
шаблонов, напрцмер, шаблон *.Ыш1 определяет все файлы, имена кото-
рых заканчиваются на .Шпй. В ЦКЕ-адрес не включается протокол и имя
сервера. Пример описания блока Ьосабоп представлен в листинге 16.8.
Листинг 16.8, Блок коссПюп
сЬосаЫстп "ЖС>
директивы управления доступом
</ЬосаС1оп>
16.4. Файл ротации журналов
/е1с/1одго!а1е.с1/Ы1рЦ
Файл /еРс/ХодгооаЬе. д/Иь Ьрй (или /еСсЛодггоСаСе. й/арасИе —
для версий АрасЬе до 2.0) задает параметры ротации журналов веб-
сервера, что позволяет поддерживать порядок в журнальном хозяйстве.
Пример этого файла приведен в листинге 16.9.
Листинг 16.9. Файл /еТсДодгоТаТе.й/йПрд (АрасЬе 2.0)
/таг/1од/Ь.1ср<1/*..Дод {
щТаз'шдак
поСИетрСу
В1гагедпст1ргз
розЬгоЬаСе
/ивг/Ьш/ШЬЦ -НОР ЫХрй
епавсттрС
}
Убедитесь, что режим доступа к файлу /е1сДо^оШО№Крб равен 0640
и владельцем этого файла является пользователь гооб
16.5. Системный файл конфигурации
/е1с/5у8сопТ|дД111рс1
Этот файл позволяет передать серверу АрасЬе системную информацию,
например, параметры запуска.
Предположим, что вы хотите запустить сервер АрасЬе с включенной
поддержкой 88Ь. Для этого в файл /еСс/зуесопМд/Ыгерд добавьте
строку:
Вам нужно только добавить нужные параметры в директиву ОРТЮХ8, а
обо всем остальном позаботится сценарий запуска /еьс/1п1т. .а/ььера.
Нужно отметить, что файл /еЪс/зувсопеТд/ЬЬьра появился в версии
АрасЬе 2.0,
16.6. Сценарий запуска сервера
АрасКе /е1с/!пН.с!/№рс!
Стандартный сценарий запуска веб-сервера АрасЬе устанавливается из
того же пакета, что и сам сервер. В версии АрасЬе 2.0 можно вызывать
сценарий запуска со следующими параметрами:
• 51аг1 — запуск сервера;
♦ «1ор — завершение работы сервера;
♦ геяСагС — перезапуск сервера;
♦ яШиз — информация о работе сервера;
♦ сопЙгезЩН — перезапуск сервера при наличии файла /уаг/гцп/
МЬрс1.р1а. Этот файл создается при запуске сервера и удаляется
при его останове. Если файл ЪЬХра .р1а не удален, значит, сервер не
был остановлен корректно: например, произошел сбой системы или
банальное отключение питания.
Что же касается более старых версий АрасЬе, то сценарии запуска по-
зволяют указывать куда больше параметров, чем во второй версии:
♦ 51аг1 — запуск сервера;
• $1ор — завершение работы сервера;
• ге&аН — перезапуск сервера;
♦ ге!оай — перезагрузка сервера. В отличие от перезапуска, когда сервер
сначала останавливается командой к})1 (то есть, просто «убивается»), а
потом запускается, при перезагрузке серверу передается сигнал Н13Р.
Перезагрузка может понадобиться при изменении файла конфигура-
ции сервера, чтобы изменения вступили в силу;
♦ сопбге81аг1 — то же, что и одноименный параметр, описанный
выше;
♦ кГаГия — информация о работе сервера;
♦ Ги11$1а1и$ — более подробная информация о работе сервера;
♦ Ье1р — подсказка;
♦ сопПё1еа< — проверка файла конфигурации.
16.7. Графические конфигураторы АрасКе
Практически все параметры веб-сервера Арасйе можно установить,
используя конфигуратор пеГсопГ (п. 14,1.1). Запустите псЧсопГ от имени
суперпользователя и выберите 8егсег Тазкк, а затем АрасЬе УУеЬяегтег
С помощью пе!сопГ вы легко можете определить виртуальные узлы, на-
значить параметры подкаталогов, определить спецификацию каталогов
и модулей, а также установить параметры модуля гп<н1_<4 (см. рис. 16.2),
настройка которого рассмотрена далее в этой главе.
Рис. Тб. 2. Конфигурирование модуля тод зз!
В дистрибутив Рейога Соге включен более удобный конфигуратор вуя1ет
еопЛе-ЬНрс! (рис. 16.3).
| и !] к
рсноанса Виртуальный узлы Сервер }и«п ройла быстродействия
Файл блокировок:
^а(Лоск/И(грйЛаА
Просмотреть...
/««иМлУМр&рИ
Файл РЮ:
Просмотреть.
Каталог файловСоге: [мс/Титрй
V. Просмотреть..
Пользователь:
арасЬе
Группа
[арасЬе
П*3&раака
<^ЙК :
М Отменить
Рис. 16.3. вуз1ет-соп/1д.^прд
16.8. Каталоги пользователей
Директива 1«т1)1г включает поддержку пользовательских каталогов. Эта
директива определяет общее название подкаталога в домашних каталогах
всех пользователей. По умолчаний используется каталог риЫ|с_11Г.'п1.
Данная возможность очень удобна при использовании ее в большой кор-
порации, где каждый сотрудник имеет собственную страничку. Раньше
эта возможность часто использовалась на серверах, предоставляющих
бесплатный хостинг. Может быть, помните адреса вида ЬИр:/Лумг\у.сЪа(.
1Т1/~-щура§е?
Сейчас же все чаще используется технология виртуальных серверов, ко-
торую мы рассмотрим в следующем пункте, но знать, что такое каталоги
пользователей и как с ними работать, тоже не помешает. Тем более что
домашние каталоги настраиваются намного быстрее и проще, чем вир-
туальный сервер — нужно всего лини, определить директиву ЪчегВи и
указать местоположение домашних каталогов.
Доступ к файлам, расположенным в этих каталогах, производится с по-
мощью указания регистрационного имени пользователя после имени
сервера через тильду-слэш. Например, пусть имя сервера х^тт.зегуег.
сот, имя пользователя — <1ет^, тогда иКЬ-адрсс будет выглядеть так:
Иг. гр: //иии. еегуег. сот/~с1еп1в:. При этом сервер самостоятельно
определит, где именно расположен домашний каталог пользователя. Вели
это каталог /Ъоме/йеп. то сервер передаст клиенту файл /Ь.рще/аеп/
риЫ1с„ЬДЫ./1пйех . ЪЩп1.
16.9. Виртуальный НТТР-сервер
Концепция виртуальных узлов позволяет одному серверу АрасЬе под-
держивать несколько сайтов. Пользователи видят отдельные веб-узлы, и
получается, что один веб-сервер заменяет несколько. Это очень удобно,
если нужно организовать персональные веб-сайты пользователей или
собственные узлы подразделений компании, например, 4еуе1ор.тусот-
рапу.сот.
Сервер АрасЬе можно настроить несколькими способами: либо так, чтобы
запускался один сервер, который будет прослушивать все обращения к
виртуальным серверам (такой вариант настраивается при помощи ди-
рективы У1гШа1Но8Г), либо запускать отдельный процесс для каждого
виртуального сервера (в этом случае применяются директивы Ы$1еп и
В этом параграфе я буду рассматривать первый вариант.
Внутри блока директивы УпТиа1Но81 можно использовать любые директи-
вы. кроме ЗегтегТуре, ВшйАсМгезз, 1лч1еп. \ап1еУ1г1иа1Но*й, ХегтегКооб
ГуревСопй^, Р*<№1е, МтКецие^РегСЫШ, МахЗрагеЗегуеге, М1п8раге-
Кегтегв, так как некоторые из них относятся к основному НТТР-серверу
(например, БегтегТуре), а некоторые — ко второму варианту настрой-
ки виртуальных серверов и здесь неприемлемы. Обязательно должны
присутствовать директивы ВегтегМате, 1)оситеп1Коо1, ЯегуегАйпнп и
ЕггогЬо§.
В зависимости от версии и от настроек АрасЬе виртуальные узлы могут
прописываться либо в файле Ъссра. сопЕ, либо в файле уЬоеСз .сопг.
Виртуальные серверы можно идентифицировать по имени или по 1Р-
адресу.
16.9.1. Виртуальные серверы
с идентификацией по имени
Идентификация по имени имеет существенное преимущество перед иден-
тификацией по 1Р-адресу: вы не ограничены количеством адресов, имею-
щимся в вашем распоряжении. Вы можете использовать любое количество
виртуальных серверов* и при этом вам не потребуются дополнительные
адреса. Такое возможно благодаря использованию протокола НТТР/1Д.
Данный протокол поддерживается всеми современными браузерами.
Поддержка виртуальных узлов обеспечивается директивами УлНиаШо^
и ХатеУнгТОаНЬнД. Если ваша система имеет только один 1Р-адрес, его
нужно указать в директиве ИатеУ(г1иаШов1. Все блоки У1г1иа1Но$1 будут
использовать этот 1Р-адрес.
Внутри блока У|г1иа1Во$Л записывается директива Зегте^ате, задающая
доменное имя для создаваемого виртуального сервера. Ее обязательно
нужно записать, чтобы избежать поиска службой — вы же не хоти-
те, чтобы при неудачном поиске виртуальный сервер был заблокирован?
Другие директивы в блоках Уи1иа1Но81 описывают параметры каждого
виртуального сервера в отдельности (листинг 16.10).
Листинг 16.10. Два виртуальных сервера — мм и ВЬ
ЗегуегЫате <3ей .аЬвЫаЬз .сой
<Ыате71гЬпа1Но8Е 192.168.1.1>
<^1гГиа1НовС 192.168.1.1>
ЗегуегЫате иииг.бЬвИаЬв.сош
Зегуегй<±п1п теЬтавСегЭбеп.йЬзЦаЬв. сот
поситёпгкоос /уаг/йЬЕр4/даю/1Шй1
ЕггогЬод /уаг/ИССрз/мии/1одя/еггог.Ход
ТгапвХегЕод Ходн/ассезй.1од
<тг1иа1Ноя1>
<У1.г±иа1НозЕ 192..168.1.1>
Зет^егЫате 1 ХЬ.сЙгвИаЬз. сот
5®гуегА<±п1п иеЬтавСегвДеи.бЪвИаЬв. сот
ОоситепЕНооЕ ^аг/11Егра/11Ъ/Ьт1
ЕггогЕод /уаг/ЪГЕрв/11Ь/1одв/еггог.1од
ТгапзХегЪод Ходе/ассеяз.1од
</’7Хгсиа1Нозс>
Если ваша система имеет только один 1₽-адрес, доступ к основному сер-
веру напрямую будет невозможен: нужно включить его имя (в примере
тул-и'.дЬкЙабз.сот) в число виртуальных. Эти имена должны быть пропи-
саны в службе 1ЭМ8. При наличии двух 1Р-адресов можно один присвоить
основному серверу, а другой — виртуальному.
Сервер АрасЬе позволяет использовать, несколько доменных имен для
доступа к одному серверу, например:
ЗегуегАИаз ^уту'Л'.дИзПаЫ.согп мг^у/ЗЛЬкЛаЬк.сот
При этом запросы, посланные по (Р адресам. которые присвоены вашим
виртуальным узлам, должны соответствовать одному из указанных домен-
ных имен. Чтобы зафиксировать запросы, не соответствующие ни одному
из этих имен, нужно с помощью опции сЗеГапЬ:* создать виртуальный
узел, который будет обслуживать такие запросы:
сУггСиаХНовС _й®Гаи1Ъ__: *>
16.9.2. Виртуальные серверы
с идентификацией по 1Р-адресу
В директиве \Чг1иа1Но$1 в качестве адресов можно использовать домен-
ные имена, но лучше указывать 1Р-адрес, причем действительный, а не
виртуальный. В этом случае вы не будете зависеть от при разрешении
имени. Также потребуется один 1Р-адрес для вашего основного сервера.
Если же распределить все адреса между виртуальными серверами, то
нельзя будет получить доступ к основному серверу.
Листинг 16.11. Идентификация по 1Р-адресу
<У1гхиа1Новс 192.1б8.1.2>
Зегуегйате . сот
БегуегАскпгп иеЪтав'Сег@йе.п. ДЕзНаЬз .сот
ПоситепГКооС /^аг/РЬГрд/изди/Нст!
ЕттогЬод /уа.г/ИЬСрз/тл\г/1одз/егго.г. Ход
</71гЬиа1НозЪ>
<У1г6иа1.Ноз6 ИЬ.<311з11аЬа.сот>
ЗегтегЫате ИЬ.сЬвИаЬв.сот
БегуегАйтп иеЬтазЬегбйеп. йбаИаЬв. сот
ПосшпепГКооГ. /уаг/НССрй/ИЬ/Игт!
ЕггогЬод /уаг/Ыгре/ИЬ/ 1одэ/еггог. Ход
</У1гСиа1НояЬ>
При конфигурировании виртуальных серверов можно использовать
опцию ЕхееССЛ, которая разрешает выполнение ССМ-сценариев на
виртуальном сервере. Листинги 16.12 и 16.13 демонстрируют настройку
почтового веб-интерфейса.
Листинг 16.12. Файл КПрй.сопТ
<01тесГ-огу /1тоте/Мбр<3/таИ.>
отбег бепу.аИои
йену Е гот а11
аПои 1гот ЗосаИлозе
аПсм Ггот 192.168
аИои Мот 123.123.123.123
0р1;1опв ЕхесСО!
</01гес1;огу>
Листинг 16.13. Файл чЬовТа.сопТ
<У1ггиа1НовР 12:3.123.123.12В-
ЗегуегАсЫп вгеЬиазеегйаеп-^фзИаЬз. сот
Ооситепсйоос /Иоте/Ыхрб/та.11
Зег^егРаМ /та!1
5 егV© гИате ииита-11. ЗИз 11 аЬз. сот
Еггогбос 1ода/еггог__1од
ТгапзъегЬод 1 од.е / ас :с о к 5„1од
4 Еггог 403 - ошибка доступа извне, то есть почтовый
# интерфейс будет доступен только из локальной сети
Егтогбоситегй; 403 пй-р://>Л‘М.<Зтя11а}эз.сст/п!<эззадез/еггог403.Ршгй
</У1гбиа1Но8'Д>
16.10. 88Ц и АрасЬе
16.10.1. Установка $8к
88Ь (8еснге Зоскетх Ьауег) является методом шифрования, разработанным
компанией \е1.чсаре для обеспечения безопасности передачи данных.
Этот метод поддерживает несколько методов шифрования и обеспечи-
вает аутентификацию как на уровне клиента, так и на уровне сервера.
88Ь работает на транспортном уровне и поэтому обеспечивает надежное
шифрование всех типов данных. Более подробно о реализации 88Е мож-
но прочитать на сайте компании №еТ$саре — Мер : //боте. песвсаре.
сот / 1пго / ес‘сц.г1бу~йос . Нбт1.
Протокол 8-НТТР является еще одним «безопасным» интернет-про-
токолом. Он был разработан для предоставления конфиденциальности
данных, передаваемых через соединение. Конфиденциальность нужна,
например, при передаче номеров кредитных карточек и прочей важной
информации.
Модуль тоб^вв! реализует в сервере Араске слой 88Е, который осущест-
вляет шифрование всего потока данных между клиентом и сервером. Для
всех остальных частей веб-сервера модуль тос1_5$1 является прозрачным.
Для работы в этом режиме требуется браузер, поддерживающий меха-
низм 88Е (этому условию удовлетворяют все распространенные сегодня
браузеры).
Что касается установки, товам необходим пакет Ореп88Е (ЬСбр:.//шлг.
ореияе.1 . отд), хотя, возможно, у вас в системе уже установлен этот пакет
(в современных дистрибутивах он устанавливается по умолчанию). Если
вы будете собирать Ореп88Ъ из исходных текстов, то последовательность
ваших действий такая:
# Саг орепкйХ-х.у. з . Саг .дг # х.у.х ~ номер версии
№ сб орепбв1-х.у.х
# ./еопЕ1д.
# так®
# тако хпеСаИ
# 1йсоп:С
Перед выполнением команды (бсопПе убедитесь, что в файле
/еьс/ха.ео.сопЕ прописан путь к библиотекам Ореп$8Е (по умолча-
нию' эш./цежДоеа! /яа1.Л1Ь).
16.10.2. Подключение 58ЕкАрас11е
Версия пюс1_581, которую вам нужно установить, должна быть совместима
с вашей версией Арасйе, иначе модуль тоб_851 будет некорректно рабо-
тать или вообще откажется что-либо делать. Последние цифры в названии
модуля указывают на совместимость с определенной версией Арасйе.
Например, для Арасйе 1.3.14 нужен файл тоб__881-2.7.1-1.3.14лаг.цх.
Для сборки июй-851 из исходных текстов выполните команду:
#./сспГ1диге —вд!Нт~арасЬе='. ./арасЪе_Ъ3.14 —таГ.Ъ~881=. ./срепвзХ-О.Э.э
В данном примере я использую Ореп88Ь 0.9.5, Теперь перейдите в каталог
с Арасйе, откомпилируйте его и установите сертификат:
# ей ../араске-1.3.14
# таке
# таке сегСЧГтсаСе
# таке 1пеСа11
Таким образом вы установите АрасЬе в каталог, указанный в опции
-ргейх (по умолчанию /ивг/1оса.1/араске).
Теперь попробуйте запустить АрасЬе. Это можно сделать с помощью
команды:
# изг/ХосаХ/арасЬе/ЬХп/арасЬе.сЫ ЕГагСзэХ
Параметр Жат.ч! необходим для включения 88Ь. Сервер АрасЬе уже
функционирует, однако обратиться по протоколу НТТР8 вы еще не
можете. Для этого вам нужно сконфигурировать виртуальные узлы, ко-
торые будут использовать протокол НТТР8. Но для начала необходимо
настроить АрасЬе для прослушивания порта 443 (это стандартный порт
для протокола НТТР8). Добавьте в файл /еСс/ЪьЬрй/сопТ/ЪССрй.
со::*' следующие строки:
ЫяЬеп 443
ЫатеУХгГ-иаХНозС х.х.х.х:443
Теперь непосредственно приступите к созданию виртуального сервера,
работающего по протоколу НТТР8, для чего продолжите редактирование
файла / еСс/ъгьрд/согШйгсра.сопЕ. Пример того, что необходимо при
этом ввести, приведен в листинге 16.14. После этих обязательных директив
вы можете конфигурировать свой виртуальный узел как обычно.
Листинг 16.14. Виртуальный НТТРЗ-сервер
<У1гСиа1НозС х.х.х.х:443>
# Эти строки нужны для поддержки 35Ь
ЗЗЬЕпдГпе оп
55Х.ЕодЬеме1 иагп
бВЕОрСХопв +5са.ЕотУагз
ЗЗЬСегЫИсаСеРИе /ивг/Хоса!/арасЬе/сопЕ/ев!. сгС/эегуег.
сгС
35ЬСегГ.И1саСеКеуР11е /изг/ХрсаХ/арасЬе/сопЕ/взХ.кёу/зегуег.кеу
ЗЕЬЬод /изх-/1оса]./арасЬе/Ходе/8з1_епд1п.е„1од
# ----------------------------------------
ЗегуегЫате мии. ДЪзИаЬа. сот
ЗегуегАйтГп «еЪтазЬегЙйеп . сЗЪзИаЬб . сот
РоситепСЕооС. /уаг/ЪгСрсЗ/ида/ИЬт!
ЕггогЬод /уаг/МкреЛгн^/Ходз/еггог'. 1од
< /"УггГиаХНоес >
Теперь нужно перезапустить сервер ЬНрй. При запуске АрасЬе потребует
ввести пароль. Если вы не хотите вводить его при каждом запуске систе-
мы, то перейдите в каталог, где находится файл звХ.кеу, и выполните
следующие команды:
Л ср вегуег.кеу зегуег.кеу.огд
5г орепзз! гза -1п зегуег.кеу.огд -оис нагуег.кеу
# сИлюй 400 зегуег.кеу
Почти все готово! Теперь сервер не должен запрашивать пароль и будет
работать в нормальном режиме.
Чтобы АрасКе по умолчанию стартовал с поддержкой 88Ь, исправьте
в файле арасИесС1 (он устанавливается в каталог /Ып, /зЫп или
/изг/вЫп, см. грт -д! <пакет_Араске>) условие 8(аг1 на 81ат1оИ,
а 81аг1881 на просто кГап. Затем, находясь в каталоге /ивг/1оса1/Ып,
установите ссылку орепкз!:
# 1п -в /цвг/1оса1/891/Ъ1п/орепз81 орепве1
16.10.3. Генерирование сертификатов
Сертификат гарантирует безопасное подключение к веб-серверам и/или
удостоверяет личность владельца. Идентификация обеспечивается путем
применения личного ключа, известного только пользователю данной
системы. Когда пользователь посещает защищенный узел для передачи
секретной информации (например, номеров кредитных карточек) по
протоколу НТТР8, узел автоматически посылает ему сертификат.
Итак, давайте приступим к генерированию сертификатов. Для этого
сначала выполните команду:
# орепзз! депгва -йезЗ -оик зегуег.кеу 1024
Она создаст файл вегуег.кеу. После этого вы должны подать запрос
в службу верификации:
орепзз! гед -пек -кеу зегуег.кеу -оиС зегуег.сзг
Здесь вам придется ответить на вопросы. Если вы ошибетесь — ничего
страшного, все можно будет повторить заново. В том случае, если запрос
сгенерирован правильно, вы должны получить такую надпись:
Уои пом йауе Со зепй сЫз СетСзЕгсаСе Й1дп4пд КедиезЬ (С8К)
Со а СегЫГухпд АиСНохАСу (СА) Ёог в!дп1пд
Отвечая на вопросы, будьте очень внимательны — ваши ответы увидит
весь мир.
По всем правилам вы сейчас должны подписать сертификат у серти-
фицирующей организации. Это услуга платная, и оказывает ее ком-
пания ТЬаадТе («ыи . скаисе .сот), которую в России представляет
ыи«. 8о1иС1опз . гЬс .гы. Бесплатно вы можете получить только «са-
моподписанный» сертификат. Скопируйте з!дп . зй из пакета то<1$81в
каталог с ключами и подпишите себя сами:
# орепвз! гед -пек -х509 -йаув 365 -кеу зегуег.ке/ -оиб зеп/ег.свг
# ./з1дп.вН зеплег-Сйг
Если на экране появится надпись
Мои уоц Нате Шо Ш.ев: вегуед.кёу апб легоег.сгг.
ТЪезе по» сап Ь.е ивей аз Го11ой1пд
то это означает, что все собрано правильно. Затем скопируйте новые
файлы зегуег. кеу и ветг. сгь на место старых. Выполните команду
такс в каталоге с .сы-файлом.
В итоге вы получите полностью работающий АрасЬе, защищенный 88Ь.
Для сбора полной информации о работе 88Ь введите:
# орепвз! з„с11епб -соппесЬ 1оса1ЬозЬ:443 -вСа^е -йеЬид
16.11. Пример файла ЬИрб.сопТ
В этом параграфе приведен пример стандартной конфигурации сервера
АрасЬе. Каждому блоку листинга 16.15 сопутствуют комментарии, кото-
рые помогут вам разобраться с различными настройками сервера.
Листинг 16.15, Пример файла И.ССрй« соп^
##
И Ишрй.соп? -- файл конфигурации сервера НТТР АрасЬе
О
# _____----------------------------------------------
# Установите имя сервера
ЗегУегЫате имм.фзз-ИаЬз.сой,
В.е войте еСап^тд /Деч/пиИ
АссезвСопПд /йеу/пиИ
# Поддержка динамических разделяемых объектов (Вупалас
# ЗЬагей ОЬ^есЬ — Р20)
# Для более подробной информации о ПВО прочтите Файл
й Й.ЕАВМЕ ..020.,
# входящий в' дистрибутив АрасИе.
& Модуль расширяет возможности сервера Араспе,
И добавляет в его состав новые функции.
# Подключить модуль, можно так
# ЬоаДМобиХе Еоо_пю<3и1е 11Ьехес/то<1._Еоо.во
& Вы можете найти документацию по модулям в файле
# " Ш-аг/^л^/тапиаХ/жхР
#1юа<ЗМо<Зи1е ттар_ебаС1с_тпойи1е тойи1ез/той_ипар_збаб1с.8о
Ьо асМоби 1 е еп^_то <3и 1 е той и1ев/ тоЙ_епУ.зо
# ## ТЬе 1?1гб1: тойи1е асЫчаСез ЬиЕ^егей 1одз.
# Первый модуль обеспечивает протоколирование.
# Он запишет информацию
# в протокол ассезв_1од, когда буфер объемом 4К
# переполнится.
#ЬоайМо.йи1е сопЕ 1д_ЬиИегед_1од„тойи1е тойи1ез/пюй_.1од_
сопЕ1д„Ьи!^егей.во
ЬоасМо<Зи1е сопС±д_1од_тойи1е тойи1ев/то(а„1од„соп^1д.ео
ЬоасМосЫе адепь_1од_тойи!е тойи1ев/1по<1„1од_адепб.во
ЪоайМосЫе ге1егег„1од_тойи1е тос!и1ей/тоб„1с>д_геЕегег.зо
# Ь о а йМо йи 1 е т 1 те„тад 1с_тоби1е тойи 1 е в / той_т 1 те_тад 1с , а о
ЬоайМо<Зи1е щ1те„тойи1е тойи1ез/тоб_пйте.во
ЬоайМойи1е педоЬ.1аЫоп_тоби1е тойи1ев/’тос1„педоЫа1:1оп.ао
ЬоайМоЙиТе 8ба1и8„_тоЙи1 е тойи1е8/то<3_зЬабив..8о
ЪоабМобиХе 1п1о„тоди1е. тойи1ей/той.__.1п:Ес1. во
4 Вы должны выбрать директиву тод„1пс1ийе
# или тоб_1пс1ийе„Х8й1,
# но не обе одновременно! Директива той_1пс’1ис1е более
# безопасна, но ххз! содержит больше функций.
иоайМойиТе 1пс1иде5_тосЗи1е тпойи1еБ/той_1пс1и<Зе. зо
#ЬоайМоби1е 1.пс1ибез_тоби1е то<3и1ез/тоб._1пс1иде—хвз1. во
ЬоайМойиТе аиЬо1п<Зех_тойи1е
ЬоайМоби1е Й1г_тойи1е
ЬоайМойиХе сд1_тойи1е
Доа«ЗМойи1е ав1з_то<1и1е
ЪоайМойиДе 1тар_1лойц1е
ьоайМойиЗе асЫоп_тойи1е
#ЬоабМойи1е 5ре11пд_тойи1е
ьоайМойи!е ивегс11г_тойи1е
иоайМойиХе ргоху_тойи1е
ьоайМойи1е аИаБ_тойи1е
то<3и1ев./тоб„аи1:о1пйем.80
тойи1е87той„й1г.во
тойц1е.8/тос1_сд1. во
тойи1ез/п1об_аз1Б. во
тойи1е8./той_11пар. зо
тоби1е8/той_асб1опв.во
то<3и1ез/той„бре11пд, зо
тоби1ез/1пой_иэегй1г. во
тойи1еа/11Ъргоху.во
тоби1ев/той„а11а8. во
# Модуль тоб_]зегу должен
<1Г0еПпе }^Е_ДЗЕК7>
ЬоайМобиХе звегу_тоди1е
</1Г0еЕ1пе>
быть объявлен до тос1_геиг1Ье.
тойц1ез/то<3__уБегу. во
йоайМоЙи1е геиг1&е„тойи1е
ЬоайМо<Зц1е ассевв_гпод.и1е
ЪоасЕИойиТе аиСЬ_тоби1е
тойи1е8/1йоЙ.„геиг1ее. 80
тойи1ез/той„ассе88.во
то<Ди1ев/тоЙтаибЬ. во
э-вет[в~рош «[продеру
□•Ахопбдеош а/продеру
о•щтрлазп-рош э[проде>ру
л•битуэйз-рош э[продеру#
о • зиотуовдеюш эупродеру
□Дешт-рош эрпродеру
О’втве"рош Э[Продеру
з*тбо—рош а[продеру
о*лтр~рощ а [продеру
а хэрипоуп©-рош эрпродеру
утнйх-эрпроРт-рощ э/продору#
о•эрпроит-рош эупродеру
оодцт-рощ аупродеру
, о•задеув-рош арпродеру
э,иотзвтзо6аи’"рош атпродеру
УЭШТШ-рОШ ЭХПродеру
Э'ЭТБрш-аштш-рош этпродеру#
□^элэ}е^“бох~рош «[продеру
□ уиэбв-бо[—рош э х продери
о • рэяэ53.пч~Вт [иоо-бо[-рощ эрпродеру#
э,5тзиоэ~бот’“рош «[продеру
□ ’лпэ~~рот э[продеру
о зрДцД—рош/ з а [ прош а [ прош~у Дц Д э / про дев оу #
ое*^ДцД-рош/за/прош врпроиГ'Е^Ч^ эрпродепоу #
ов"ДцсГрош/йарпрОШ эрпрош-ск[с! э/продееоу #
у деэсПрош «[продеру #
у ^ДчсГрош э[продеру #
□рЗЧСГроЩ аупродеру #
э-ЙцЙГрсад а/продеру #
о’отуруз-ДйШш-рош «[продеру #
унтуэ[продевв[э
кииэииоинн эхНв&ОП ионуцинпДи я #
(аниэыгай’евД иии ®И5(э.эыы,ехэ ) жгЛйои ©шшлшоой #
эон янаиэиьабап яупд ннжиоа мниАйон амэинэ нонпоц д #
оэ- уулиэуэй-рош/ээупрощ врпрош-утлиерэз эруроде©оу
оз рр-апЬтип—рош/вэргрош арпрош-рт~апЬтип ерпродееоу#
оз * эуйигехв-рош/Бэрирош а[ПроиГ"Э[бшйха эрпродеаоу#
оз‘деЕДЭдазп^рош/ээрпрош эупрощ-уоЕЩрдэзп эрпродееоу
оз•вщэрЕац-рош/зэрпрош э[Т1рош“йУЭрЕэр эрпродероу
оз‘зэутсЬо^рош/зэрпрощ арпрош-дэщуйхэ эрпрсдееоу
оз-еуаш-ихао-рош/з9[прош -а^прош^зШ^йЛао эрпродепоу#
ов * узэбтр—рош/зэрпрош эрпрош“зва5тр эрпродееоу
О8’ЧР~ч4п«“рош/зэтпрощ. арпроиГцупе-ур арпродевоу#
ое•щдр“ЧЗНв"рбш/вэ[проаг Э1прош“ччпр~шчр эрпродееоу#
ов-иоие-цуГ1Р—рош/еэрпроШ эрпрощ-цупв-иоие эрпродееоу
# Модуль тос^зеегу должен быть объявлен до той_геиг1бе.
<1Н)еГ1пе науе_ззейу>
АЙЙМоЙиХе пто<3_зеету. с
</1ЮеСХпе>
АйдМойиХе тоб_геиг1бе.с
АдЙМоЙиХе тоЙ„ассезз.с
АсИМойи1е тосСаибк.с
АскЗМодиХе тосЦаибЪ_апоп. с
#А<ЗйМойиХе тод_аибк_йЬт.с
#АбЙМобиХе пюсЗ_аибИ_<ХЬ. с
АйЙМобиХе тод^ОХдееб.с
#А<ИМойи1е той_сегп_те(:а. с
АйЙМоЙиХе той„ехр1гев.с
АйЙМоЙиХе тоб_Ьеайегз.с
АйЙМоЙиХе тоб„иаегсгаск. с
#АЙЙМойи1е той_ехатр1е.с
#АйЙМойи1е тод_ип1дие_1Д.с
АйЙМодиХе тоЙ_во.с
АдбМойиХе тпой_зебепУ1б. с
# Мате Зрасе апй Бегуег ЗеббХпдз-------------------------
# Настройки пространства имен и сервера
# В этом разделе вы определяете, какие имена будут видеть
# пользователи вашего НТТР-сервера. Этот файл также
4 определяет настройки сервера,
# которые раньше содержались в отдельном файле вгт.сопД.
# Теперь этот файл входит в состав ЫХрй.сопХ
# Директива ПоситепЬКооС определяет местонахождение
# корневого каталога документов вашего сервера.
РоситпепСВоос /уаг/мми/Ыт!
# Директива бзегОхг задает названия подкаталога в домашнем
# каталоге пользователя, из которого берутся документы в
# том случае, когда вы активизируете возможность
# использования пользовательских каталогов.
изегП1г риЫ1с__Нбт1
Директива П1гесЬогу1пбех позволяет задать название
$ документа, который будет
# возвращен по запросу, который не содержит имя документа.
Е>1гесбогу1пйех 1пйех.ИЬт1 Хпбех.рИр хпйех.Игт ФпЙех.зНбт!
гпйех.сд! СебапХб.ДРт беСаи1С.Ъбт Хпйех.рЬрЗ
# Директива ГансуТпаехГпд определяет оформление
# каталога - стандартное или индексируете..
РапсуХпйехтпд ст.
# Директивы АдсИсоп* указывают серверу,, какие пиктограммы:
1 использовать для показа различных типов- файлов
АйсЦсопВуЕпсоохпд (СМР,/1сап&/сштргезяе4.д1Г) х-сошргезз х~дг!р
МЛсопВуТуре
АРаТсопВуТуре
АааIсопВуТуре
АДаТсопВуТуре
(ТХТ./Ыопа/РехЫдХЕ) ЬехР/*
(ХМ6, /1сопв/алваде2 .д! Г) 1таде/*
(5М0,/хсопз/еоипаг.д!Г) аиД1о/*
(VII),/1сопа/тоУ1е.д1 Л У14ео/* .
даахсоп
даахсоп
даахсоп
даахсоп
АйаХсоп
даахсоп
даахсоп
АйдХсоп
даахсоп
АйдIсов
даахсоп
даахсоп
даахсоп
даахсоп
даахсоп
даахсоп
даахсоп
даахсоп
даахсоп
даахсоп
/ 1сопз/Ы.пагу.д!Г .Ып .ехе
/ Хсопз/ЫпЪех. дЦ .Ьдх
/1сопв/Гат.д1Г .Ьаг
/1сопз/адог1Р2.д!1 .«х! .нг1.дг ,угт1 .7гт .IV
/ХсопБ/сошргензеа.дИ .2 .г . Ьдк .дг . Ыр
/ 1сопз/а..д1Х .ра .а! .ерз
/Хсопз/ХауоиЛ-д1Г .Ынп1 .зЫтХ .№т .рйХ
)1сопз/РехР.д1Х .РхР
/Хсопа/с-.дК .с
/Хсопз/р.дФЕ .р! ,ру
/1сопа/Е»д1Г .Гог
/1соп е/471.д1Г .1
/1Соп9/:ииепсо4еа,д1Г .ии
/ Хсопэ/вягтрИ. д1.Г .сопЕ . кИ .зЬаг .сяЪ .КзИ .0с1
/1сопа/Рех.д!Г .Рех
/ 1сопз/Ъй1пЬ. д!Г соге
/хсопэ/Ьаск.д!Е ..
/1сопз/Ьапа.г1дпс,д!С КЕАРМЕ
/1сопз./Гр1аег .д!1 ''ЛО1НЕСТОКУ-'”'
/1СОП5/Ъ1апк.д1е ЛАВЬАЖХССЖГ'
# Директива Зс-гаиК Тсап определяет пиктограмму
# по умолчанию.
ПеГаиХЫсоп / 1сопя/ипкпоип.д1Е
# Директива дааЬезсгХрЫоп задает описание файла
# Формат: Ааах)езсг1р1-1оп “описание" Шенаше
# Директива ЗеайжеКатпе определяет имя файла ЕЕАВМЕ
# по умолчанию
# Формат: ЙеаскпеМате пате
КеайтКаше йЕАОМЕ
НеайегКате НЕАЙЕй
# Директива 1пйех1дпоге определяет набор файлов, которые
# будут проигнорированы при индексировании
# Формат: 1п<3ех1дпоге пате! пате2 ...
ТпйёхХдпоге .??* *~ *# неайее* ееаше* все
# Директива АссекяШеМате определяет имя файла, содержащего
# директивы управления доступом
АссеввЕИеМате .Ьбадсееа
# Директива ТуревСопИд задает местонахождение
# файла т!те.бурев
ТуревСоиЛд /ебс/Иббрй/сопб/арасЬе-пшпе. бурее
# С помощью директивы йебацХДТуре можно указать
# М1МЕ-ТИП по умолчанию для документов., тип которых
$ сервер определить не может
РеГаиХбТуре бехб/р1а!п
# Директива АййЕпсой1пд разрешает браузеру распаковывать
# информацию "на лету"
АййЕпсасНпд х-сотргезя 2
АайЕпсосЦпд х-дагр дз
8 АсЙЕапдиаде разрешает определять язык документа АййЪапдиаде еп .еп АйЙЕапдиаде бг .бг АййЕапдиаде <3е . Йе А-ййЕапдиаде йа .йа АййЬапдиаде е! ,е1 АййЬапдиаде 16 .16
# Директива ЕапдиадеРгбогхбу определяет приоритет языков
Ьапдиаде₽г1ог1бу еп бг йе
Директива Ней!гееб позволяет перенаправить клиента
# на другой НЕЕ. Вы можете перенаправить клиента
# на другой узел или на ОВЕ., который находится в. вашем
# пространстве имен, то есть на документ*,
# который находится я одном из подкаталогов каталога
# ОоситепбКооб. Вы не можете, например, перенаправить
# клиента к каталогу /ебс, потому что он не
# находится в вашем пространстве имен.
# ЦДЬ - это идентификатор ресурса, поэтому вы должны
# его указывать в виде
# протокол;//адрес.домен, например, НсЪр://«т. Ипих.ги.
# Если вы укажете просто каталог, например, /йпадев, этот
# каталог должен быть подкаталогом каталога РоситепбКооб,
# а не корневого каталога вашей основной файловой
# системы. Формат: Кебггесб несуществующий_иг1 нг1
# С помощью директивы А11ав можно предоставить доступ
# не только к файлам, находящимся в каталоге, указанном
# директивой СосигаепСКооР, и его подкаталогах, но и в
# других каталогах. Формат;
# А11аз несуществуйтее_имя нормалън0е_имя
АИав /1СОПВ/ /уаг/тт/Хсопв/
# ЗсгхрбАИаз определяет расположение каталога сценариев СС1
# Формат: 5сг1рЬА11аз под.ставное_имя настоящее_имя
5сг1рСАИаз /сд!-Ып/ /уаг/«им/сд!-Ып/
5сг1рГА11аэ /ргобесбеб-сдХ-Ып/ /уаг/ии»/ргббесбед~сд1~Ып/
# С помощью директивы АМТуре можно добавить новый
# тип М1МЕ, который не указан в файле арасИе-тгте.бурее.
# Формат-. АбйТуре буре/зиЬбуре ехб!
# Обычно для модуля РНР4 (он не является частью Араске)
# директива АйсГГуре используется так:
Ад.аТу ре арр11саб1оп/х-кббрД-рИр4 .рИрЗ .ркбт1 .ркр . рЬр4
# АскЗТуре аррИсабтоп/х-Ьббрб-рИрЗ-воигсе .ркрз
# Для РНР/Е1 (РНР2):
# АЙДТуре арр11саб1оп/х-Ьббрб-рИр .ркбт!
# 6сг1рС.АИай /_рИр/ /ивг/Ып/ркр
# Ассгоп аррИсаЫоп/х-ЬЬбрй-рйр /ивг/Ып/рпр
# АсЫоп арр11саС1оп/х-ЬЬСрб-рЬрЗ /ивг/Ып/рИр
# АсбДоп арр11саб1оп/х-кббрб~ркр4 .
й Директива АйбНапйХег позволяет сопоставить
# определенному типу М1МЕ какой-нибудь обработчик.
# Формат: АбйНапйТег ас'Ыоп-пате ехб1
# Для использования сценариев СС1:
АбЙНапсЦег сд1-всг1рб .сд!
# Для использования генерируемых сервером файлов НТМЬ
АбйТуре С.ехб/ЪЫп1 .зНЪпй
АсМНапсНег вегуег-рагвед . вЫлп!
# Раскомментируйте нижерасположенную строку,
# чтобы включить функцию
# АрасИе "отправь-как-есть" {вегкЗ-ав-хв)
#Айс1Напй1ег зепб-ае-гз аз!з
# Если вы хотите использовать карты изображений:
АскЗНапсЦег 1тар-^Ие тар
# Для включения карт типов используйте:
0А<ЗйНапб1ег Суре-тар уаг
# С помощью директивы Асбгоп можно определить
# какое-нибудь действие для обработчика. Например, вы
# можете запустить какую-нибудь программу
# для обработки файла данного типа.
# Формат: АсГ1оп тесНа/Ьуре /сд1-всг1рЬ/1осаС1оп
# Формат: АсС1оп Ъап<31ег~пате /сд1-всг1р!:/1осаЫоп
# Директива МебаОбг определяет имя каталога, в котором
# сервер Араске может найти информационные файлы теба.
# Эти файлы содержат дополнительные заголовки НТТР,
# которые будут добавлены к документу
# перед его передачей клиенту.
# МебаЭ1г . иеЬ
# Директива МебаЗи^Лх определяет имя суффикса файла,
# который содержит
# теба-тэги.
# Меба8иГЕ1.х . теба
# Здесь можно определить сообщения об ошибках.
# Это можно сделать тремя способами:
# 1) обыкновенный текст. Символ "кавычка* обозначает текст
# и клиенту не посылается
# ЕггогОоситепб 500 “Ошибка сервера.
# 2) локальное перенаправление на документ или сценарий
# Еггогйоснгпепб 404 /пйввхад.ИЬт1
# ЕггогВосимепЬ 404 /сд1-Ып/т1381пд_Ьапб1ег,р1
#
# 3) внешнее перенаправление
# ЕггогРосишейЬ 402 НССр;//зоте.оЬйег„8егуёг.сот/
# зиЬзсг1рС1оп_1пХо.ИГт1
#
# Модуль тос1_т1те_тад1с позволяет серверу использовать
# различные подсказки из файла для определения его типа.
# МгтеМадгсЕИе /еЬс/ЪДЬр4/сопС/тад1с
# Следующие директивы необходимы для браузеров МеСзсаре 2.x и
# ТпСегпеС ЕхрХогег 4.0Ь2
ВгоизетМабей "Мог111а/2В шэкеераИче
ВгоызегМаХсИ “М31Е 4\.0Ь2;" покеераИче довдпдгайе-1.0
^огсе-гезропяе-1.0
# Следующие директивы отключают ответы НТТР/1.1 для браузеров,
# которые не поддерживают Протокол НТГР/1.1
ВгонзегМаЬсЬ вНеа1Р1ауег 4:\.О* ^огсе-гезропве-1.0
ВгоизегМабсЪ ^ауа/1\.0* {рг^етгевропве-!.О
ВгоызегМаСсИ . 0" грдс^-гевропае-! . 0
# Настройки доступа
# В этом разделе определяются настройки сервера,
# которые управляют доступом К серверу. Раньше эти
# настройки находились в файле ассезк.соп^.
# Каждый каталог, к которому АрасЬе может получить
# доступ, может быть сконфигурирован определенным образом.
# Можно запретить выполнение некоторых операций, доступ
% определенных пользователей или узлов сети..
# Установки доступа распространяются на весь каталог
# и на все его подкаталоги.
# Прежде всего конфигурируем корневой каталог
# для установки полномочий доступа.
<Р1гесЬогу />
ОрШопз Хпбехев 1пс1и<3ев РоИоиЗутЫпка
АИоиОуеггМе Мойе
</Р1гесГогу>
<П1гесбогу /Иоте>
# Здесь должны быть определены директивы я1пс1пйевя,
# "РоИомЗутЫпкв", "ЕхесССТ", "МиХЫУгеиз" или любая
# комбинация “ТгЛехея"
ОрНопз Тйбехез 1пс1ибез РоПоиЙутЫпкз
АПоыОУеггМе АН
# Разрешает доступ всём
отбег а.11ои,сЗепу
аИот Нога а11
</Р1гесЬогу>
# Каталоги /таг/иии/сд1-Ып 'И /таг/мми/ргоЬесьеб-сдб-Ып.
# должны, быть определены с помощью, директивы• •8ёг$рбА11авеб.
<В1гесботу /уаг/иии/сдгА-Мй.»
А11оиОуегг1сЗе АН
ОрШопв ЕхесСОХ
</01гёссогу>
<ЕыгесЬогу /уаг/тг»/.ргббесЬе4-сд1“Ып>
отбег ЙёНу,а11ои
Йену бгогп ЙН
а11ои Нот 1оса1ИозЬ
# а11.оиг Нот .уоиг_бота1п.сот
АНоиОУеггхбе Ноле
ОрЫопй ЕхесССЗХ
</01гесбогу>.
# Разрешает отчеты о состоянии сервера
<ЬосаПоп /8егуег*8Ьабие>
5еГ,Напй1ег зегчег-^&йаЬиз
ог<3.ег <1епу,а11ои
бепу б гот аЦ
аНоы ^гот 1оса1Ьозб, 127.0.0.1
# Установите здесь, имя вашего домена
# аПок Гго.т. . уоиг_дота!.п. сот
</Ьосаб1ой>
# Разрешает доступ к файлам документации,;:для локальной, машины.
АНав /бос /изт/зЬаге/бос
<О1гесСогу /ивг/зИаге/боо
отбег бепу,аПои
йену тгот а11
а11ою 1гош 1оса1ИовЬ, 127.0.0.1
# а11ои Ёгога .уоиг_с1ота1п.сот
ОрИопа Хпбехев Ро11ои5утЫпка
</Р1гесЬогу>
--------------Конфигурация сервера
# Тип сервера: 1пеЫ или ябапбаХопе.
ЗегчегТуре зЬапйаТопе
# Если вы используете тип 1пебд, перейдите
# к директиве ”ЗегчегАйлин"
# Директива Рог! - только для вСапйаХопе-сервера.
# Если вы хотите запустить
# сервер АрасИе с использованием этого или любого
# другого порта, номер
# которого меньше 1024, вы должны обладать правами
# суперпользователя. Но
# даже если у вас нет таких прав, вы можете запустить
# сервер для работы с портом., номер которого превышает
# значение 1024. Обычно используется
# номер 8080 или 8000.
Рог! 80
# Сервер АрасЬе ведет журнал доступа других компьютеров.
# Если вы включите следующую .опцию, то а журнал будет
# записано доменное имя компьютера-клиента. Если эта
# опция выключена, то в журнал будет записан 1Р-адрес
# клиента. Включение данной опции замедляет работу
# сервера, так как ему требуется дополнительное время
# на ожидание ответа от сервера ВМ5.
НовСпатеЬоокирв о!Х
# Директивы Цвет и (Згоир определяют идентификаторы
# пользователя и группы, от имени которых запускается
# сервер в автономном режиме. Можно использовать как
# регистрационные имена, так и (Ш>. По умолчанию
# используется имя пользователя поЬойу или арасЬе. Из
# соображений безопасности не рекомендуется, изменять
# это значение и присваивать имя реального пользователя.
□зег арасЪе
Згоир араске
# Директива бегчегАбпйп задает электронный адрес веб-
# мастера вашего веб-узла. В случае возникновения ошибок
# именно по этому адресу будет отправлено сообщение.
ЗеТчегАбшгп гооб@1оса1ко5к
# В директиве БегуегНоос указывается местонахождение
# файлов конфигурации сервера АрасЪе. По умолчанию
# используется каталог /ебс/Ьбгрй.
ЗегчегНооб /егс/кббрй
# Следующая директива используется для компьютеров,
# которые имеют несколько 1₽-адресов. Обычно данная
# директива используется для конфигурирования
# виртуальных узлов.
# В1п<1М<1гевз *
# Прослушивать порт 80
Ызбеп 80
# Директивы ЕггогЬод и Тгапе!егЬод определяют расположение
4 журналов сервера АрасЬе. Обычно используется каталог
# /ебс/Ьббрб/1одя, который является ссылкой на каталог
# /чаг/1од/Ьеср<1 или на любой другой.
ЕтготЬод 1одв/еггог„1од
# ЬодЬеуе!: устанавливает уровень протоколирования.
# Протоколируются предупреждающие сообщения сервера (иагп)
# и ошибки. Если вы хотите протоколировать только ошибки,
# установите еггог
Ъодкече! иагп
# Определяет формат файлов протокола, то есть информацию,
# которая будет протоколироваться. Обычно изменять эти
# значения не нужно.
ЬодГоггааб %1 %и %Ь \и%г\в %>з %Ь \яМйебегег}1\и
\*%[иаег-Адёп&}1\** сотЫпеб
ЬодЕоТшаб- "%й %1 %и %С \*%г\* %>я %Ь" согатоп
ЕодРоппаС *%{Ке1гегег} 1 -> %0н гебегег
ЬодРогтаС ”%{Озег-адепИ}I" адепЬ
# Можно определить тип протокола
# Если вы хотите протоколировать общую информацию
#СинсотЬод 1одз/ассевз„1од сопитоп
# Если вы хотите протоколировать ге^егег
# СивбошЬод 1одз/теСегег„1одте^егег
# Если вы хотите протоколировать название пользовательских
# агентов (браузеров)
# СивботЬод 1одз/адепб_1од адепб
# По умолчанию используется комбинированный тип
# протоколирования, то есть
# будет протоколироваться вся информация
СпзботЬод 1одз/ассез5„1од сотЫпей
# С помощью директивы Р1йЕ11е указывается имя файла, в
# котором исходный
# процесс сервера будет регистрироваться.
РШПе /уаг/гип/кббрй.р1й
# БсотеВоагйЕНе: Этот файл используется для сохранения
# внутренней информации процесса сервера.
ЗсогеВоагйРЫе /ёбс/ЪббрЙ/Мбрй. всогеЬоагй
# Директива ЬбскЕИе определяет файл блокировки, который
# используется сервером, Ссрпер должен быть скомпилирован
# с опцией
# ИЗЕ~ЕСМТЬ_5ЕН1АЬ12ЕП„АССЕРТ или
# и5Е„РЪОСК_5ЕЙ1АЬ1гЕО_АССЁРТ. Файл блокировки должен быть
# сохранен НА ЛОКАЛЬНОМ ДИСКЕ.
ЬоскРИе /ебс/Иббрй /ИСбрЙ. 1оск
Зегуег^ате пек.Новб.паше
# Директива ОзеСапопхсаДКаще появилась в версии
О Араске 1.3. Она разрешает
# использовать каноническое имя для сервера узла.
□зеСапоп1са1Кате оп
# Следующая директива позволяет прокси-серверу, например
# ЕОбЮ, не кэшировать документы, которые не генерируются
# автоматически, то есть в процессе выполнения различных
# сценариев.
СаспеЫедоЫаЬейВос з
# Директива Т1гпеоиЬ задает промежуток времени в секундах,
# в течение которого сервер продолжает попытки
# возобновления приостановленной передачи данных.
# Значение директивы Т1теоиЬ распространяется не только
# на передачу, но и на прием данных.
ТхтеоиЬ 300
# Директива КеерАЦуе разрешает постоянные соединения,
# то есть такие соединения, в которых производится более
# одного запроса за один раз.
КеерАИче о€(
# МахКеерАЦуеВедиевбв: Максимальное количество запросов,
# разрешенное в течение постоянного соединения. Установите
# 0 для снятия ограничения.
МахКеерА11уеКедиев Ь в 100
# Директива КеерАНУеТттеоиб определяет таймаут для
# постоянного соединения.
Ке ерА11УеТ1теоиV 15
# Минимальное и максимальное число серверов в очереди
МтпЗрагеЗегУегз 8
МахЗрагеЗегчегз 20
ЗСагГЗегуетв 10
# Ограничивает общее количество клиентов.. Когда это число
# будет превышено,новые клиенты получат отказ, поэтому это
# число не должно быть слишком маленьким.
МахСИепСз 150
После обработки определенного количества запросов,
# указанного в директиве МахКедиезРеРегСЬНа, копия
# сервера завершается, а вместо нее запускается новая.
МахНедиевСзРегСЫМ 500
# Директивы конфигурации прокси-сервера
# РгохуЙедлевЬа Оп
# Для включения кэширования раскомментируйте строки ниже:
# СасЪейооЬ /уаг/сасНе/НЬЬрй
# СасИеЗтке 5
# - СасНеСс1пбегУа1 4
# СасИеМахЕхрхге 24
# СасВеЬавЬМойХ^тейРасСог 0.1
# СасЬеРеЕаиХбЕхрхге 1
# ИоСасНе а_дота1п.сот апосЪег_йота1п.еби зоез.дагаде_за1е.сот
#ШНШШШЖ*№ШтЙЙНН
# Настройки производительности. 201 #
ШННШШЙНШШНШШШЙ
$
# Для использования этой функции раскомментируйте модуль
# той_шп1ар_8СаЬ1с в разделе описания модулей*
< .1 ^Мойи 1.е той_йй1ар_зсаЫс. с>
ОЗС он
</1СМо<1и1е>
# Если вы хотите использовать буферизированное
# протоколирование, раскомментируйте модуль
# тод_1од„сопГ1д_Ьи^гегей в разделе описания модулей.
# Для использования карты памяти раскомментируйте эту строку:
# штар/Не /уаг/иии/йРп11/Е41е„Ро_тар_1п_тетогу
# Если вы хотите настроить процессы-потомки, пожалуйста,
# прочитайте документацию на вашем сервере
# ИсЬр: //1оса1ЬоБР/тапиа1/т18С/регЕ~тЗа.кС.т1 •
# Эта страница объясняет, как привязать определенный
# 1Р~адрес или порт к другому процессору.
# й1пд1еЫзбеп Оп
нншннттшншшшшн
# Виртуальные серверы #
#
# Поддержка модуля рег!
# Замечание: не удаляйте расположенные далее строки,
# иначе это может разрушить вашу конфигурацию.
<И0еГ1пе РЕКЬРВ0Х1Е0>
РгохуРавв /рег1/ Ьббр://127.0.0.1:8200/
РгохуРаззВе'/егзе /рег1/ ЬбЬр; //127.0.0.1: 8200 /
</ИПеШе>
# Файл, в котором находятся директивы конфигурирования
# виртуальных узлов.
±пс1н<3е сопЕ/уИозСз/УИовСз.сопЕ
# Для поддержки динамических виртуальных узлов и
$ виртуальных домашних каталогов, раскомментируйте
# следующие строки:
# ЬоабМскЗи1е уИозГ._а11ав_1тосйз1е!тос1и1ез/тоб_уЬозЬ„а11а8 .но
АФ.дМос1и1е то<1_уЬов1:_а11а.й .с
1пс1ийе сопЕ/уЬоеСз/ВупатгсУЬозСз. сопЕ
# 1 1пс1ийе сопЕ/убовЕз/УзгЕиаХНотеРадеа. сопЕ
Директивы конфигурирования РНР
±пс!ийе сопЕ/айфон-гпойн!ев/рНр. сопЕ
16.12. Перекодирование русскоязычных
документов «на лету»
С тех пор, когда в русском языке появилось слово «кодировка», появилась
и проблема перекодировки. Стандартной кодировкой русского языка для
большинства С'АЧХ-серверов является КОИ8-К. Для применения в 008
компания М1СГ08ОЙ разработала альтернативную кодировку (А1.Т). из-
вестную также под названием СР-866.
Потом та же МктовоЙ создала кодировку \Уш<к>-лю1251 (А\'81), чем обс-
еменила проблемы с перекодировкой уже на локальном уровне: файлы,
созданные в 008, без предварительного перекодирования нельзя было
прочитать в У»'1П(.1оу^, и наоборот. Заметьте, об Интернете и АрасЬе я
еще не сказал ни слова.
Кроме М1СГО8ОЙ, «облегчили» нам жизнь также компании Арр1е и 8ип,
разработав соответственно кодировки Арр1е и 1808859-5. Компания 1ВМ
не отстала от них, разработав собственную кодировку русского языка.
В Интернете все эти кодировки смешались. Возникает задача: настро-
ить автоматическое перекодирование документов из одной кодировки
в другую. Для начала необходимо настроить хотя бы перекодирование
«на лету» из К018 в \У1пс!о1л,к-1251, так как большинство клиентов в
Сети используют именно эту кодировку (от \Ут<1о\те, как от смерти, не
уйдешь).
16.12.1. Риз5«ап АрасЬе: установка, настройка,
использование
Обыкновенный англоязычный Арасйе, входящий в состав большинства
дистрибутивов, не поможет вам решить эту проблему. Для корректных
операций по перекодированию нужно загрузить и установить сервер
Ки$ыап Арасйе или модуль АрасЬе-КИ8. Скачать как модуль, так и готовый
сервер можно по адресу: Яр: //арасЪе. ,1.еха .ги/риЬ/арасЪе-гиз.
При этом старшая часть версии соответствует оригинальному серверу
Арасйе, младшая — версии модуля АрасЬе-Йих.
Рассматривать процесс установки и настройки я буду на примере не очень
новой версии сервера— 1.3.3/РЕ27.3, это не принципиально. Последова-
тельность действий для сборки сервера из исходных кодов стандартная:
# Саг ХУ2Г араспе„1.3.ЗгизРЬЗ?.3 Л.аг.да
4 ей арасИе_1.3 . ЗгокРТ.,27.3
. /сопИднге
4 таке
# гпаке 1П8Са11
Настройка Км.чмап Арасйе не отличается от настройки оригинального
АрасЬе за исключением настройки модуля перекодирования.
16.12.2. НастрцЙка перекодировки
русскоязычных документов
Директивы перекодирования (они находятся в файле Мдрй. сопг) можно
разделить на три группы.
Первые указывают, в какой кодировке хранятся файлы на диске. Их
можно включать в блок косаКоп или в файлы .йхассаяк:
4 все файлы, кроме . СхЛ, хранятся в кодировке ко.18-т
СЬагзеГЗоигсеЕпс ко18~т
4 все файлы .СхС. хранятся в кодировке и1пйоив-1251
Скагзе1.ВуЕхсепв1оп И1пДб№-1251 . 1x1
Вторые определяют названия (СЬагвеЮес!) и псевдонимы (СЬаг§е-
1АНа8) кодировок и таблиц символов (СЬагкеГЯесобеТаЫе и СЬагкек
У^беЯесобеТаЫе). Они находятся в блоке <1ГМоби1е шод_сЬаг$екс> ...
<ДГМоби1е> и не требуют изменений. Название языка (ги) должно быть
определено в директивах АсИЕап§ш§е и I.шнцкщеРгюгНу.
СИаг$еГ.Оес1 51 ги
СЪагвеСАИаз ийпЗонв -12 51 к!п х-ср1251 ср!251 ср-1251
С помощью третьей, самой многочисленной, группы вы можете настро-
ить сервер для автоматической перекодировки символов на основании
информации о клиенте. Например, определив, что клиент работает в
операционной системе и кодировкой браузера по умолчанию
является ЮТпсклУ8-1251, сервер самостоятельно перекодирует файлы в
нужную кодировку. Если сервер сделает выбор неправильно, пользователь
всегда сможет сам изменить кодировку вручную.
Существует три способа выбора кодировки:
* по каталогу:
Ъббр: //иик.зегуег. ги/кот/^Не.ЙзшХ
ИСТр: //иад.зегуег. ги/и1п/ СНе.Ъкш!
* по имени сервера:
Ъббр: //ко! .итеи.эегуег .ги/СНе.ЬСш!
Ьббр: //и!п .ыниьвегуег. ги/Ше ,ЪТпй
♦ по порту:
МЬр; //ими. зегуег. ги:8000 /ЕНе.Ьбт!
МСр: //дам.зегуег. ги:8001 /€11е.1хбт1
Для перекодирования по каталогу (точнее, по его префиксу) нужно до-
бавить в блоке У1Ниа1Но<й псевдоним, например:
АНаз /ко! /шдаЛЛосз
Иди же просто создать в нужном каталоге ссылку на самого себя:
4г ей /иын/йосз
4г 1.п -з . ко!
Несмотря на свою простоту, этот способ имеет множество недостатков.
Если у вас небольшой сервер, вы можете использовать перекодировку по
каталогу. В другом случае лучше используйте перекодировку по имени
сервера или по порту.
При использовании перекодировки по имени сервера следует обратить
внимание на то, чтобы указанный вами сервер был прописан на сервере
ОИ8. После регистрации поддомена (в качестве имени которого нужно
использовать один из псевдонимов кодировки, указанный с помощью ди-
рективы СЬагкеТАНай, например, ко! или уоп) внесите следующие строки
в ваш файл Ъьера. соп^:
44 Естественно, укажите здесь свой 1Р-адрес
<1/1гбиа1НозС 111,111.111.1>
ЗегуегНате и™. зегуег. ги
ЗегуетАИаз * .тпда. яетуег. ги
# далее следует обычная конфигурация
</У1гСиа1Нозг
Если сервер администрируете не вы и возможности прописать новый
поддомен у вас нет, то используйте перекодировку по порту. Для этого
закомментируйте директиву РоН в файле ИСТрй. сопЕ и вместо нее
бавьте следующие директивы;
Ь15Реп 80
ЫзСеп 8000
ИзСеп 8001
ЫнЕ.еп 8002
ЫзС-еп 8003
СЪагзеСВуРогС ко18~г 8000
СИагкеСВуРогС м1пс1оив-1251 8001
СИагзеСВуРогР тЬтббб 8002
СпагвеЬВуРогТ 180-8859-5 8003
Номера портов при этом не очень важны. Правда, есть одна неприят-
ность: если сеть клиента защищена брандмауэром, не позволяющим
обращаться к выбранному вами порту, клиент не сможет установить со-
единение с вашим сервером.
Схема (порядок) выбора кодировки определяется директивой СйагкеГ-
8е1есбопОгбег:
♦ Сйаг8е13е1ес11опОгс1ег Ошргебх Схегацеп! РогГпшпЬег Но^гпате
СпНоЫпате — для выбора по каталогу;
• СЬагзе(8е1есбопОгдег Номпате ИпНозШате С'хега^ет РогГпцтЬег
ИйргсПх — для выбора по имени домена;
♦ СЬаг8е13е1есбопОг(1ег РогйштЬег Пзега^еп! НоМпате СпНо^патс
ОиргеП.х — для выбора по порту.
16.13. Защита сервера АрасЬе
По окончании настройки сервера запретим изменение и удаление файла
конфигурации;
[гооС@меЬвегуег].# сИаСЫ +1 /еСС/ИССрд/соп1:/ИЬЬрй.сопЕ
После этого вы (и никто другой) не сможете изменить этот файл даже с
помощью конфигуратора.
Желательно также установить права 511 для исполняемого файла сервера
йпрб:
сЫпой 511 /нзг/кЫп/ЪТЛрд.
Далее, не нужно, чтобы посторонние глаза смогли посмотреть, а руки —
изменить (и выполнить) файлы, находящиеся в каталогах /етс/ЫЬрд/
сопЕи /уаг/1од/пссрд:
# сЬтой 700 /еСс/ИЕЬра/соп!/
I! сЬтоЙ 700 ^аг/1од/МЬ.р<3 /
16.14. Сервер кНТТРд -
веб-сервер уровня ядра
В операционной системе все процессы можно разделить на два типа:
процессы уровня ядра и пользовательские процессы. Процесс уровня
ядра запускается и работает очень быстро по сравнению с относительно
неповоротливым пользовательским процессом. Однако пользовательские
процессы безопаснее для здоровья системы, нежели процессы уровня
ядра. Если произойдет ошибка в пользовательском процессе, то на работе
системы это обстоятельство никак не отразится. А ошибка в процессе
уровня ядра чревата «крахом» системы, который вам обойдется во много
раз дороже, чем выигрыш на быстродействии процесса уровня ядра.
Процессы уровня ядра позволяют существенно повысить производитель-
ность веб-сервера, то есть скорость обработки НТТР-запросов. Начиная
с версии ядра 2.4, в состав ядра входит веб-сервер кНТТРб. Скорость
его работы значительно выше скорости веб-сервера АрасЬе, который
выполняется как пользовательский процесс.
16.14.1. Настройка кНТТРс!
Так как кНТТРс! является процессом уровня ядра, его настройка вы-
полняется путем записи информации в файлы, хранящиеся в каталоге
/ргос/вуе/пеС/кИССрв.
Сначала нужно перекомпилировать ядро (этому процессу посвящена от-
дельная глава), включив в его состав кНТТРсГ Для этого включите опцию
Кегле! НТТРс! Лссе1егаНоп в меню .\'е1могк ОрНопв.
После этого нужно настроить веб-сервер АрасЬе для работы по порту
8080 (директива Рог* в файле пьсрб. соп^) и перезапустить его:
# аег‘л/1се пЬЬрй гез^агг.
Загрузите модуль ядра кЬНрб:
& тпзтоа кМЬрд
Укажите серверу кНТТРс!, что запросы клиентов нужно обрабатывать
через порт 80, а те запросы, с которыми он не может справиться, пере-
давать АрасЬе:
# еспо 80 > /ргос/иуя/пеС/кЬССрб/аегуегрогС
# есНо 8080 > /ргре/Еуз/.Пй1;/С:11епСрогЕ.
Какие запросы не может обработать кНПРй' Ему «не по зубам» запро-
сы, предполагающие запуск сценария. Все такие запросы будут перена-
правлены АрасЬе. Поэтому, если ващ веб-сервер предполагает в основном
запуск С61-сценариев (в том числе и РНР спенариев), использовать
кИТТРб нецелесообразно. Вместо повышения производительности вы
добьетесь обратного.
Сообщите серверу кНТТРб. где нужно искать веб-страницы (в том же
каталоге, который указан в директиве 1)оситеп1Коо1 сервера АрасЬе);
# есЬо /маг/иик/Ы:.т1 > /ргас/эуй/пеб/кЬбСрй/йосптепСгооЪ
Если на вашем сервере установлен РНР, укажите каталог, в котором
хранятся РНР-сценарии:
# есЬо /уаг/№№?/ЬСп11/зсг1рСй > /ргос/Був/пеС/ИлсСрй/бупапггс
Для запуска к Н'ГТРб введите следующую команду:
# есИо 1 > /ргос/вуз/пеб/кИССрЙ/вГагб
Всю эту работу можно автоматизировать, написав сценарий кйЩкЕмаг!
(листинг 16.16):
Листинг 12.16. Сценарий автоматического запуска ИНТТРд
# ! /Ып/ЬаяИ.
& Загружаем модуль кНТТРсЕ
гпзтой кЬССрй
# Указываем порт кНТТРй
есбо 80 > /ргос/вуз/леС/кЬССрй/вегуе.грогС.
# Указываем порт АрасЬе
есНо 8080 > /ргос/ву5/пеС/с11епгрогС
# Корневой каталог веб-сервера и каталог
# для хранения сценариев
есЬо /уаг/вдда/М®! > /ргас/цуз/пеГ/кЫ срй/йоситепСгооГ
есЪо /уаг/йШ?/ЬСл11/эсг1рС8 > /ргос/зув/пег. /кпгЬрй/йупапыс
# Запускаем кНТТРй
есйо 1 > /ргос/зув/пеС/кИСсрй/яСаг!:
Так как кНТТРб — это процесс уровня ядра, к тому же эксперименталь-
ный, его использование может отрицательно повлиять на надежность
работы системы. Помните, что сервер кНТТРс! не может обеспечить такой
же уровень надежности, как АрасНе. кНТТРб следует применять только
в том случае, если АрасЬе не справляется с нагрузкой и на веб-сервере
не часто запускаются ССИ-сценарии.
Глава 17
УСТАНОВКА
И НАСТРОЙКА
МУ801..
СВЯЗКА АРАСНЕ+
РНР+МУЗОЬ
<*---УСТАНОВКА МУЗОЬ
КЛИЕНТСКАЯ ЧАСТЬ МУЗОЬ
УСТАНОВКА РНР И НАСТРОЙКА СВЯЗ-
КИ АРАСНЕ+РНР+МУЗОЬ
л----ЗАЩИТА СЕРВЕРА МУЗОЬ
«— ВВЕДЕНИЕ В ЯЗЫК 30Ь
1Л1М0Х ПОЛНОЕ РУКОВОДСТВО
Ни один серьезный интернет-проект нельзя построить без использования
баз данных. Большинство провайдеров предоставляет хостинг вместе с
одним из серверов баз данных. Самым популярным из таких серверов счи-
тается Му$ОЬ, получивший широкое распространение благодаря своей
простоте. Здесь я не буду ни рассматривать технические характеристики
Му$ОЬ, ни сравнивать его с другими серверами баз данных (ШегВазе
5егуег, 1ВМ ОВ/2, Огас1е) — достаточно сказать, что ТгйегВазе Зегуег или
Огас1е более масштабируемы и поэтому лучше подходят для организа-
ции распределенной системы обработки информации, но для обычного
интернет-проекта МуБОЬ подходит практически идеально. В этой главе
я опишу его установку, настройку и использование.
17.1. Установка Му80Ь
Прежде всего нужно установить пакеты, необходимые для работы МуЭДЕ.
У меня Му 801. версии 4.0.15, поэтому я установил такие пакеты (номера
версий у вас, возможно, будут другими, и я их обозначил символами «х»):
* Му.801. 6РЕ-4.Х.Х
♦ Му8ОЕ_О₽Е-сЙепЕ4.х.х
• Му8ОЕт6РЕ-!Жаге<Н;Ъ5-4.х
♦ Му$0Е_6РЕ-ЬепсЬ-4.х.х
♦ Му80Е_6РЕ-геяо1уе1р-4.х.х
После установки пакетов нужно создать системную базу данных шузц!,
содержащую таблицы ЙЬ, Коз! и идет. Скорее всего, она уже создана, но,
чтобы окончательно убедиться в этом, введите команду:
17.1.1 . Назначение пароля суперпользователя
Учетные записи и пароли всех пользователей, которые имеют право ра-
ботать с сервером, содержатся в таблице нзег. Сразу же после создания
базы тум)! в эту таблицу внесен только один пользователь — гоо(. По
умолчанию он не имеет пароля. Этот пароль нужно установить немед-
ленно: не нужно объяснять, как это важно для безопасности системы.
Для изменения пароля запустите сервер командой:
# 8аЕе_ту8д1с1 &
Эта команда запустит сервер в режиме демона и освободит консоль. Если
все пакеты были установлены правильно, вы увидите сообщение:
тувд!: геайу Гог соппесСтопв
Затем введите команду:
$ тузд! -и гооС шувд!
Эта команда запускает клиент Му8(Д. (МуЗОЬ-монитор) и соединяется с
сервером от имени пользователя гоо1, даже если вы работаете под другой
учетной записью. Последний аргумент указывает базу данных, которую
требуется открыть.
8ОЬ-запросы можно набирать в строке приглашения МуЗОТ-монитора,
заканчивая ввод точкой с запятой или командой (й°)> а можно редак-
тировать в текстовом редакторе, введя команду \е (ебй). Список команд
МуЗОЬ-монитора можно получить по команде \Ь (Ье1р).
Измените пароль суперпользователя с помощью следующего запроса:
ЕРВАТЕ изег НЕТ Рав8Иог<1=₽А55НОВС('новый_пароль') -ИНЕНЕ
изег= ' гооС '
Как вы заметили, это обычный 8ОЪ~запрос, обновляющий поле Ра^чм/огс]
таблицы иаег для пользователя гоо1. При вводе запроса обратите внима-
ние на регистр названий полей: сервер Му801. различает прописные и
строчные буквы!
Теперь нужно, чтобы Му801. принял изменения. Для этого выполните
еще один запрос 801л
ГШ5Н РКТ’УТЬЕйЕЗ;
Завершите сеанс работы с Му8О1. -монигором, введя команду (срл( ). В
следующий раз зарегистрироваться на сервере без пароля вы уже не смо-
жете. Теперь нужно запускать Му801.-монитор следующей командой:
$ туяд! -и гооГ -р тукд!
Ключ -р запросит при регистрации пароль. Имейте в виду: забытый па-
роль нельзя восстановить. Единственный выход из этого положения —
удалить каталог /уаг/ИЬ/туедХ/шуед! и создать базу гпухгр заново
командой п1у$ч1_1п<йа11_бЬ.
Для принятия изменений можно также использовать программу
ту«]1а<1тш с аргументом ге!оас1. Вызвать программу можно так:
$ туадХайтзп ~р геХоад
Параметр -р вам обязательно нужно использовать, так как вы только что
установили пароль для пользователя гост.
Установите права доступа к сценарию /еьс/гс. а/1шх - а/туздЫ:
# сЬтод +х /еСс/гс.б/1п1Ь.й/тузд1й
Теперь можете перезапустить сервер командой
# /еТс/гс .а/йпС.,б/тунд1й гезСагТ.
17.1.2 . Автозапуск сервера МуЗОЬ
Последнее, что вам осталось сделать — это добавить сервер МуЗОЬ в
автозапуск. Сотой целью перейдите в каталог /еСс/кс.а/гсЗ .йи соз-
дайте символическую ссылку на файл /еСе/гс.а/1п1& .й/тувд1:
# 1п -з 314гаузд1 /еТс/гс.й/1п1Т.й/тузд!
Префикс 814 определяет очередность запуска сервера тумрй. В данном
случае он запустится после сервисов пеоуогк (810)и роПтар (811). У вас
эти значения могут быть другими.
17.1.3 . Пользователи сервере МуЗСН. и их права
После установки сервера нужно завести пользователей, которые имеют
право работать с сервером баз данных. Введите следующий запрос:
ОКАНТ АН, РНХУШЕОЕЗ ОН *.* ТО абтТпа 1оса1ЙозТ 1ОЕМТ1Г1ЕО
ВУ 'пароль' Н1ТН ОЕАНТ ОРТ1СЖ;
Введенный вами запрос создаст пользователя адгпт, который будет
иметь право выполнять любые операции со всеми базами данных. Этот
пользователь будет иметь право подключаться к серверу с компьютера
1оса1Нод, используя пароль.
Маска *.* определяет, к каким базам данных и таблицам имеет право
подключаться тот или иной пользователь. Первая звездочка определяет
базу, а вторая — таблицу. Если вам нужно, чтобы пользователь асйшп
имел право подключаться с любого узла, используйте знак процента
вместо имени компьютера:
ОКАЫТ АЫ, РМУТЬЕСЕЗ ОК *. * ТО айт1п@"%'' ТОЕКТГР1ЕО ВУ
'пароль' ИГТН СЕАМТ ОРИОН;
Вместо ведах полномочий вы можете определить, какие действия может
выполнять с базой тот или иной пользователь. Если вы являетесь хостинг-
провайдером и предоставляете доступ пользователю к его базе данных,
то вы можете использовать следующий запрос:
СКАМТ СКЕАТЕ,ЭН.0Р,5ЕЬЕСТ, 1№ЕКТ,иРРА^Й,0ЕЬЕТЕ,1Ж)ЕХ ОМ
сзег.* ТО изег@%- ЮЕМТ1Е1Е0 ВУ 'пароль';
Этот запрос позволяет пользователю изег выполнять все операции с его
базой данных.
Полный список полномочий представлен в таблице 17.1.
Полномочия пользователей сервера МуЗОС Таблица 17.1
Полномочия Описание
зегест, )Мзеят, мроате, песете Право просматривать, добавлять, модифицировать, удалять данные в таблица* бары дайны*
1К0ЕХ Право производить операций р индексами таблиц
АЕРЕЯ^СЕЗ Право работать со ссылками а базах данных и таблицах
САЕАТЕ, ОЙОР Право создавать и удалять таблицы и бааы данных
СЯАНТ, А1ТЕА Право определять полномочия
«а.ОАО, ЗНУТОСЖ РАОСЕЗЗ Право перезагружать, останавливать сервер и просматривать все процессы (подключений)
Если запрос ОКАИТ у вас не работает, то вы можете внести пользователя
непосредственно в таблицу цвет базы данных йвукц!. Структура таблицы
изег выглядит следующим образом:
НоеГ: Пкег разздагй Зе1есЬ_рг1у 1пйег&__рг1^ 11р<1аСе_рг1у
Эе1еСе„рг1у СтеаЬе„рг1у Сгор2рг1м Ке1оаа_рт1м 31та7йомп„рг1У'
Ргосезз_рг1у РПе_р:г1У
Поля Нов!, Скег, Ра^могб — это, соответственно, узел, из которого
пользователь может получить доступ, имя и пароль пользователя. Все
остальные поля задают полномочия. Если выполнение какой-нибудь
операции разрешено пользователю, значение поля должно быть равным
«V», в противном случае — «Ы».
Например, нам нужно создать пользователя аётш, который должен иметь
все полномочия. Это можно сделать с помощью такого запроса 80Ь:
1ЖЕЙТ 1НТ0 нй-ег (НовЬ, Озег, Ра^яиогй,8е1есС_рг1у, 1.пвегС_
ргз.у, УрбаСе_рг1У, □е1еСе„_рг1лг, Сгеа1:е„дгг±у, Огор„рг1у,
Ке1оаб„рг1у, 8НиЫоип_рг1у, Ргосевз__рг1ч, Р11е_рг1У)
УАШЕЗ (' 1оса1ЬойС' , 'айттп', разяжзгсГ!' 4СЁ1561912') ,
'У', 'У', 'У', 'У','У' ,'У',‘У','У ' , ' У','У ' } ;
Для создания обыкновенного пользователя используйте следующий за-
прос:
1М5ЕКТ ЮТО изег(Нонс, Озег, Раззиотд, 8е1есС_рг1у,
1п5егС_рг1у, Прс1аСе„_рг1и, 0е1еСе_рг^} УАЬПЕЙ('%',
'пзег', раззиогсК ' 12 3456'),'У','У','У','У');
17.2. Клиентская часть МуЗОЬ
Удобной программой для просмотра структуры базы данных является
ту^цШнт. Введите следующую команду:
$ гпувсДЩтои' -р тувд!
В ответ вы увидите список таблиц, которые находятся в базе данных
шухц1.
Программа тутщЫюн' может вызываться с дополнительными ключами,
перечисленными в таблице 17.2.
Ключи программы тувр&Ъсж Таблица 17.2
Ключ Назначение
* -Ьоа1=-м мяуэла Задает имя узла, где работает сервер Му801, к которому вы хотите подключиться
*-рот*=номер порта Определяет номер порта для сервера Му5О1
—•шске1=сокет Указывает сокет
••иВВГ^МЯ^ПОЛЬЗСВЕГГйЛЙ Указывает, под каким именем зарегистрироваться на сервере МуЗОГ
-р Запрашивает ввод пароля
Для самих же операций с данными используется программа тумД Она
понимает те же ключи, что и тузцЬЬом', и много других, среди которых
очень полезный ключ «з. Я рекомендую вам всегда его использовать.
Этот ключ подавляет большинство ненужных сообщений, выводимых
Му8ОЬ-клиентом, что существенно повышает производительность на
медленных линиях связи.
17.3. Установка РНР и настройка связки
Арас1пе+РНР+Му8С|и
Сейчас мы произведем не только установку РНР, которая не вызывает
особых проблем, но «настройку связки Арас!1е+РНР+Му$ОЬ. Эту связ-
ку, очень полезную при создании веб-проектов, можно настроить двумя
способами. Первый — использование программ, которые входят в состав
дистрибутива и, как правило, устанавливаются из пакетов КРМ.
Второй способ заключается в загрузке последних версий АрасЬе,
Му80Ь и РНР и в самостоятельной их сборке из исходных текстов. Пер-
вый способ я могу порекомендовать начинающим пользователям, так как
он проще. Если же вы чувствуете уверенность в своих силах, приступайте
сразу к чтению второго способа.
17,3.1. Первый способ: из пакетов АРМ
Первую часть связки в дистрибутивах Кеб На1 выше 7.2 и Мапбгаке
выше 8.1 настраивать не нужно: все настраивается во время установки
системы. Поэтому вы можете сразу приступить к тестированию связки
АрасЬе+РНР (листинг 17.1).
Убедитесь, что сервер АрасЬе установлен и корректно функционирует:
$ 1упх ЬССр://1оса1ИовС
Текстовый браузер 1упх должен отобразить стартовую страницу АрасЬе.
После успешной проверки работы сервера остановите его командой:
# /еКс/1п1б .д/М.Ьрй зСор
Проверьте наличие библиотеки §6 — она необходима для работы с гра-
фикой в РНР:
$ гртп -да I дгер дб
$ грт -1Ъу дб-,1 . 8.4-4.1386 . грга
Загрузить последнюю версию РНР 5 можно по адресу ЬНр:/Л^м'.рЬр.
пе{/боууп1оаЙ5.рЬр.
Скачайте (шгег.рЬр. пес/боипХоабв .рИр) и установите пакет рЬр, если
вы его еще не установили. Вам также понадобится пакет рЬр-тукц!, обе-
спечивающий Поддержку сервера Му8ОТ языком РНР, и модуль АрасЬе,
обеспечивающий поддержку РНР (пакет тоб_рЬр).
Затем в файле Ъгхрб . сопГ раскомментируйте следующую строчку. По-
сле этого файлы с расширением .рЬр будут правильно обрабатываться
сервером:
АббТуре арр11саЫоп/х-ЪССрб~рЬр4 -рНр
Теперь можно проверять правильность настройки двух компонент связки:
АрасЬе и РНР.
Напомню, что в большинстве современных серверных дистрибутивов
сервер АрасЬе уже установлен вместе с модулем тобрИр. поэтому вы-
полнять вышеизложенные шаги совсем необязательно, достаточно только
проверить корректность работы модуля пюс1_р11р.
Для проверки работы модуля то<1_рЬр создайте тестовый файл
севе .рър с таким содержимым:
Листинг 17,1. Файл ГееСрКр
рНрТПЁ'о ( } ;
Этот файл сохраните в каталоге ИоситсчНКоо! сервера АрасЬе. Обычно
это каталог /уагДе^/Ыт!. Затем запустите любой браузер и введите адрес
Ы1р://1оса1Ьо81Ле51,рЬр. Вы должны увидеть в окне браузера сведения о
РНР, сервере АрасЬе и других компонентах и библиотеках (рис. 17.1).
Функция рЬртГо() очень информативна: внимательно изучив информацию,
которую она предоставляет, вы много узнаете о своем веб-сервере.
Теперь немного настроим РНР. С помощью функции рЬршГо() узнайте,
где расположен инициал и за ционный файл РНР. Обычно он называется
р’зр. 1п1 и находится в каталоге /еСс. Откройте этот файл в любом
текстовом редакторе и раскомментируйте следующую строку, убедив-
шись, что в вашей системе есть файл туво! . во (он устанавливается при
установке рЬр-птц!):
ехЬйпз1оп=туБд1.эо
Рве УИУЛ. Ё9 ЦоокгпаНй; Та$к5 Не»
|йч>ИтГяО - магма (В»иа I»: 2да»-»!!П)
Зу$Щп
Арт 15,2Ш
ВиМШа:
ОтПдигв:
Соттапй
”-айао1г-»Ли-г/8йш‘
(|Ьай,*/и»Л|Ь' мк«й|и^ияОД|йае ,
:-да<аЬ1в-дад-»(1а№<1' '“'Ш>-4Ьд»рйй!е»,,'-ёпай(е-р|г’ -ФбвМв-грай*
'^впаЫмпипе-орОпагаВва' мотьШ' ’-аЛт-йва’
^ММГ МИЙ-8Л1* *”мЖГ1-деП1Ю<Г •-чт-псдами' '
МйШмРр' '~МЦмсап*‘ ’—аНи^)рв9->11г»/из('' *-.млл-тт* “едФ-ореляГ *—уйй-рий’
М0Йл5чЙ(Г’М^»«йв>ЙУ4*М»' '^М^^-екрй-^!^мЛ)^^, М>Ч&-1№к
‘4иВ^1т>Л«СШ‘'С-ёп<»Ые-±1етЖ:—яШЕе-аваиддвГ <-апда1в-аМ1 -ааайимм
I
Рис. 17.1. Функция р!чр1п/о()
После этого перейдите в секцию Му80Е файла рЪр. 1п1 и установите
параметры сервера Му 801. по умолчанию:
тузд! - бе |:аи1 Сороге ~
гпунд!, аеЕаи1е._8ОскеС =
лтуед! .<3.еЕаи1С_ЬозС =1оса1ЬоеС
тувд!~
;пузд! .с1еГашс_раз8иогс! -
Эти параметры будут использоваться при установлении соединения с
сервером, если в функциях РНР они не будут явно указаны. Никогда не
указывайте пользователя гоо( (а тем более его пароль) в качестве поль-
зователя по умолчанию!
Теперь можно приступить к настройке сервера Му80Е. Имеет смысл
использовать версию Му 8 01. не ниже 3.23, поскольку в этой версии
появилась нормальная поддержка транзакций. Если вы устанавливаете
Му80Ь версии 3.23 или выше, то установите еще пакет тос1_аи(Ь_ту8ц1,
обеспечивающий базовую аутентификацию для сервера АрасЬе с исполь-
зованием таблиц Му80Е.
При добавлении сервера Му80Ь в сценарии загрузки (/еГс/гс.б/) обра-
тите внимание на то, что сервер Му80Е должен быть запущен ПЕРЕД
сервером АрасЬе.
17.3.2. Тестируем созданную конфигурацию
Теперь можно проверить работу всей связки АрасЬе+РНР+Му 80 Ь.
С этой целью создайте небольшой тестовый файл тузд1_ьевс . рНр в
каталоге Посшпеп1Коо1 (^аг/иим/Ъст1):
Листинг 17.2. Файл гпуац1 ГевГрйр
<?
// Используется имя пользователя гоог и пароль равниогс!
1Г(!туйд1_согтесС("1оса1ЬойЬ“,"гооЬ","раззиогй"))
(
есЬо "Не могу соединиться с сервером\пя;
есИо туэд!_еггогО;
ехаЬ;
}
есйо "Работает’"
?>
Как вы уже успели догадаться, если в окне браузера вы увидите слово
«Работает!», значит, вы все сделали правильно.
17.3.3. Второй способ: из исходных текстов
У этого способа есть свои преимущества. Во-первых, у вас появится
возможность использовать самые последние версии серверов АрасЬе,
МуЗОЬ и интерпретатора ВНР, которых нет в составе даже самого но-
вого дистрибутива Ипих. Во-вторых, вы сами сможете контролировать
процесс сборки и включать поддержку необходимых вам функций, ис-
ключив такую ситуацию, когда, например, разработчики пакетов КРМ
при сборке интерпретатора РНР забыли включить поддержку сервера
Му5ОЬ. Мне попадался такой пакет рЬр: функции ту.‘>ц1_соппес(0 в нем
просто не было.
Скачайте из Интернета последние версии АрасЬе, Му8(}Ъ и РНР. Предва-
рительно удалите из системы старые версии, если они были установлены.
После загрузки распакуйте исходные тексты в каталог /кгс.
Сначала установите сервер Му8О1_. С этой целью перейдите в каталог
с исходными текстами .Му.ЧОЁ и введите следующие команды (первая
команда включает поддержку по умолчанию кодировки ко!8-г):
# . /сопЛ.диге ”-и1Сп~сИагзйС=ко18„гц
# таке
# та.ке зпзСаИ
Затем аналогично установите АрасЬе. Для получения информации
обо всех возможных ключах сценария сопб^иге введите команду
соп^гдиге --Ье1р.
После этого распакуйте РНР и соберите его следующим образом:
# . /соп^1ди.ге “-ктСИ-гпуад! —к1Г.п-арас>1е=. . /арасИе_2.0.0
--и1Ш-то<1__сЬаг&еТ
# така
# така тпзСаИ
Первая команда конфигурирует интерпретатор ₽НР для работы с серве-
ром баз данных Му.ЧОЬ и веб-сервером АрасЬе. Естественно, вы должны
правильно указать путь к исходным текстам АрасЬе с помощью ключа
-и/Шт-арасНе.
Затем вернитесь в каталог, содержащий исходные тексты АрасЬе, и вве-
дите команду:
$ . /сог^тдиге --асС1Уа!:е-1пойи1е=8гс/тойи1ез/рЬр4 /11ЬрИр4 . а
Перед этим нужно убедиться в существовании файла ПЬрЬр4.а (если
рЬр собрался успешно, этот файл должен существовать). Если сценарий
сопй&иге успешно завершил свою работу, введите команды таке и таке
тпзСаИ.
Проверить, подключился ли модуль НЬрЬр. вы можете после установки
сервера с помощью команды:
# ЬЪЬрй ”1
В списке модулей должен быть модуль ИЬрЬр4.с, а также модуль
тос1_с11агхе!.с — его вы подключили при первой сборке. После этого
можно отредактировать файл /ейс/рИр.1п1 и установить пароль для
пользователя гоо1 сервера Му801. (не путайте пользователя гооГ всей
системы с пользователем гоо( сервера МуЗОЕ!).
Теперь только остается добавить запуск серверов в сценарии автозагрузки
системы- Напомню, что сервер Му501. должен запускаться до сервера
АрасЬе.
17.4. Защита сервера Му$Ок
По умолчанию для файла сокетатпуед1. зоск, который используется
соединениями сервера МуЗОЬ, установлены права доступа 0777. Это
означает, что кто угодно может удалить этот файл. Если данный файл
будет удален во время работы сервера, то ни один пользователь не смо-
жет подключиться к серверу МуЗО!.. Установите «бит прилипчивости»
(зйску-бит) для каталога /маг/11Ь/тузч1, чтобы предотвратить удале-
ние файлов из этого каталога:
# сИто'й +С /уаг/ИЪ/туад!
Из соображений безопасности рекомендуется удалить базу данных (еяЕ
которая создается при установке сервера и используется для его про-
верки:
# тукд1а<3ш!п йгор'ЬезС -р
Не забудьте также удалить запись, соответствующую базе данных 1ей, из
таблицы <1Ь базы данных ту8д1:
# тувд1 -и гоос тузд! ~р
ПЕТ.ЕТЕ * РЯОМ ПЪ ИНРРЕ ПЬ="1:.йЗГя ;
тпувд1> БЕЪЕТЕ * ГНОМ ОЬ ИНЕКЕ ОЬ=яГей(:\_%я;
тузд1> ди!.Ь
17.5. Введение в язык 801-
17.5.1. Общие понятия
Если вы раньше работали с какой-нибудь СУБД (Система Управления
Базой Данных), вы смело можете пропустить этот пункт — ничего нового
для себя вы не прочитаете. Но если вы сталкиваетесь с СУБД впервые,
без основных терминов вам не обойтись.
♦ Поле (бе!б) — это неделимый элемент данных в БД. Поле имеет имя
и тип. Подробнее о типах полей мы поговорим чуть позже.
• Запись (гесогс!) — набор полей, содержащих связанную информацию.
Например, запись с палями С_Мо, С_Иате и С^Аббгезз содержит
информацию о клиенте — его номер, имя и адрес.
♦ Таблица (1аЫе) — это набор записей одинаковой структуры. Если у
нас есть запись структуры С_Ыо, С .Уате. С_Ас1(1ге^, то все записи
в таблице СПеп1х будут иметь такую структуру.
♦ База данных (байбаке) — это совокупность связанных таблиц. На-
пример, в одной таблице может храниться информация о клиенте, а
в другой — информация о заказе, который сделал клиент.
♦ Индекс (шбех) — используется для быстрого поиска нужной записи
в базе данных. Обычно поиск производится по значению одного поля
или по значению нескольких полей.
• Первичный индекс (щбех) — управляет порядком отображения за-
писей в таблице. Поле первичного индекса должно быть уникальным,
то есть в одной таблице не должно быть двух записей, в которых это
поле принимает одно и то же значение. В нашей таблице СНепК
очевидно, первичный индекс должен строиться по полю СЫо — по
номеру клиента, который должен быть уникален.
• Вторичный индекс (зесопбату ш(1ех) — в отличие от первичного ин-
декса может строиться по нескольким полям и не обязан быть уни-
кальным. Вторичные индексы используются для связывания таблиц.
Индексы также называются ключами.
• Запрос (циегу) — оператор, выбирающий записи и поля, удовлетво-
ряющий заданному условию, из одной или нескольких таблиц.
17.5.2. Краткий практический курс 801-
Как работает сервер 801.? Клиент посылает запрос, в котором указывает,
какую информацию хочет получить от сервера или какую операцию с
данными собирается выполнить. В ответ сервер посылает клиенту ответ,
в котором указывает, выполнил ли сервер его запрос, и, если выполнил,
сообщает результат запроса.
Для описания запросов клиента был разработан целый язык — 80Ь
(8Егис1игес1 Онегу 1.ап§ьа"е, Структурированный язык запросов). С по-
мощью запросов 801. вы можете:
♦ Создавать базы данных и таблицы.
♦ Добавлять информацию в таблицы.
* Удалять информацию,
• Модифицировать информацию.
♦ Получать нужные вам данные.
В этой книге мы не будем подробно рассматривать язык 801- — ему по-
священы отдельные книги, в два раза толще этой, в которых описываются
различные варианты языка 8ОЕ.
Перед началом работы с 801. вам нужно интуитивно понимать, что такое
база данных. Если вы имеете представление о ней, можете смело про-
пустить этот абзац. База данных состоит из таблиц, как книга М8 Ехсе!
состоит из листов. Каждая таблица состоит из записей, а каждая запись —
из полей. Каждое поле имеет свой домен, то есть тип данных, которые
можно записать в это поле. Поле типа 1МГ может содержать только целые
числа, а поле типа СНАК — строки.
Вот теперь можно приступать к созданию новой базы данных. Для соз-
дания баз данных и таблиц в языке 801. обычно используется запрос
СКЕАТЕ. В случае с Му 801. для создания базы нужно использовать
программу тукчЬйпйп:
$ -и а.<3т1п -р сгеабе
Естественно, пользователь абпнп должен существовать и обладать соот-
ветствующими правами. Откройте созданную базу:
$ гпувд1 -и асЕпйп -р зк1а<3
Каждый запрос Му801. должен заканчиваться точкой с запятой. Если
вы введете 8Е1.ЕС Г * РКОМ (Ш, клиент гпу<щ1 будет ждать ввода точки
с запятой:
Давайте договоримся, что будем писать запросы согласно стандарту 80Ь,
то есть для улучшения восприятия будем разбивать их на части. Про-
грамма тумр допускает ввод запроса во всю строчку. Например, запрос,
записанный в стандарте 801..
ЗЕЬЕСТ *
ЕНОМ 5
ИНЕВЕ 0 > 10
в программе птц! можно записать так:
ЗЕЬЕСТ * РЕОМ 3 ИНЕНЕ <2 > 10
Теперь создадим три таблицы — Товар, Клиенты и Заказы.
СЕЕАТЕ ТАВЬЕ СЫЕМТЗ
С_МО 1пС МОТ МОТА,
по сЬаг(40) МОТ МЛЕВ,
АООЙЕЗЗ с Наг(30) кот йота,
С1 ТУ сИаг{15) КОТ ШЛА,
РНОЫЕ сИаг(11) МОТ 1ТОЕЕ
Таблица СЫЕМТ8 содержит поля С_\О (номер клиента), ЕЮ (Фамилия,
Имя, Отчество), Адрес. Город и Телефон. Все эти подя не могут содержать
пустого значения (КОТ КОТЕ).
Большинство серверов нв требуют явного указания НОТ МОП., но при этом
значение по умолчанию может быть .разным: одни сервер инициализируют столбцы
значением М1Я1, а другие — МОТ МУИ. Поэтому лучше явно указать МОТ М11Ц..
СЕЕАТЕ ТАВЕЕ ТОУАЕ
(
т„ко 1га кот тгоъъ,
ОЗЕС с!таг(40) МОТ ИЛЬЕ,
РК1СЕ питег1с(9,2) МОТ КШХ,
ОТУ питег1с(9,2) МОТ ШЛА
) ;
Эта таблица будет содержать данные о товарах. Тип питепс (9,2) означа-
ет, что 9 знаков отводятся под целую часть и два — под дробную. ОТТ —
это количество товара на складе.
СЕЕАТЕ ТАВЬЕ ОЕЕЕЕ5
к о_ыо 1п1; КОТ ШЕЕ,
ЛАТЕ дате КрТ МЕЛЕ,
с„ыо 1тА МОТ КЕЬЕ,
Т.ИО 1пЕ КОТ Ш.1,
(20А1ШТУ питег1с(9,2) КОТ №Ш
АМОПИТ пшпез Ас(9,2) НОТ ЖЕЬ
Эта таблица содержит сведения о заказах — номер заказа (О_Ж)), дату
заказа (ВАТЕ), номер клиента (СИ9О), номер товара (Т_КО), количество
(ООАКТ1ТТ) и стоимость заказа АМОСМ'.
Теперь добавим данные в наши таблицы. Добавить данные можно с по-
мощью оператора Ж8ЕЯТ:
1МЗЕК.Т 1Ш0 СЫЕМТ5
ЖЦЕЗ (1, 'Иванов И. И. 'Ленина 6’, 'Кировоград', '80522111111');
Добавляемые значения должны соответствовать тому порядку, в кото-
ром поля перечислены в операторе СНЕ АТЕ. Если вы хотите добавлять
информацию в другом порядке, то вы должны указать этот порядок в
операторе Ш8ЕКТ:
,1№ЕНТ ЮТО СЫЕЫТ5 (ПО, АПИНЕ55 , СДЮ, РНСЖЕ, С1ТУ)
ТАШЕЙ ('Петров' , ’Пушкина 9 ' , 2 , ' -','Кировоград') ;
С помощью Ж8ЕКТ мы можем устанавливать значения только некото-
рых полей:
1МЙЕВТ ЮТО СЫЕИТБ (С_ИО, ЕГО}
ТАШЕЙ (1, 'Петров') ;
В нашем примере этот запрос выполнен не будет, поскольку все остальные
поля равны МБЬЬ (пустое значение), а наша таблица пустых значений
не допускает.
Добавим данные в таблицу ТОУАК:
1.№ЕКТ 1КТО ТОУАК
ТАШЕ5 (1,'Монитор ЕС',550.74);
Обратите внимание, что мы пока еще не указали первичные ключи та-
блицы, поэтому нам никто не мешает добавить в таблицу одинаковые
записи.
Добавить дату в поле БАТЕ можно с помощью функции ТОБАТЕ:
1И5ЕЕТ 1№ГО 0МЖЙ5
ТАШЕ5 (1, ТОДМТЕ ( '01/01/02, ’ВВ/ММ/УУ' 1,1,1,1,550.74);
Данная запись означает, что первого января 2002 года Иванов И.П.
(СУ’О==1) заказал один (ОБ АМИТУ = 1) монитор ЬО
Предположим, что нам нужно обновить запись, например, клиент Иванов
переехал в другой город. Это делается так:
ПРйАТЕ шиш
ЗЕТ С1ТУ = 'Киев*
МИЕНЕ С„НО = 1;
Теперь удалим всех клиентов, номера которых превышают 10:
ОЕЕЕТЕ РВОМ СЫЕМТЕ
МИЕНЕ С_МО > 10;
Если вторая часть запроса ОЕЕЩЪг— \\Т1ЕКЕ— не указана, значит,
действие оператора распространяется на все записи указанной таблицы.
Добавление, изменение и удаление записей — это, безусловно, очень
важные команды, но чаще всего вы будете использовать запрос 8ЕЕЕСТ.
который выбирает из таблицы данные, удовлетворяющие условию.
Например, для вывода всех записей из таблицы СЫЕМТ8, введите:
ЗЕЬЕСТ * ГЙОМ СЫЕШ'З;
В результате вы получите такой ответ от сервера:
с„йо РЮ АПОКЕЕЗ С1ТУ РНОКЕ
1 Иванов И.Л. Ленина б Кировоград 80522111111
1 Иванов И>П. Ленина 6 Кировоград 80522111111
2 Петров В.К. Пушкина 9 Кировоград 80522112111
Обратите внимание на первые две записи — они одинаковые. Теорети-
чески добавление одинаковых записей возможно — мы ведь не указали
первичный ключ таблицы. Если вы хотите исключить одинаковые записи
из ответа сервера (но не из таблицы’), введите запрос:
ЕЕЬЕСТ ШЭТ1МСТ *
ЕНОМ С1Л.ЕНТЗ;
Если вы хотите вывести только некоторые поля, то запрос должен вы-
глядеть так:
5ЕЕЕСТ П15ТЖТ РЮ, РНОЫЕ
РВОМ СШЕЙТЕ;
Теперь займемся усложнением наших запросов. Выведем все товары,
цена которых превышает 500 рублей.
ЗЕЪЕСТ *
РВОМ ТОУАЙ
КИЕВЕ РН1СЕ > 500;
Вы можете использовать другие операторы отношений: <,>,=,<>,
Если ваша компания обслуживает несколько однофамильцев и вы хотите
вывести информацию обо всех Ивановых, используйте шаблон ИКЕ:
5ЕЛЕСТ *
ЕНОМ СШЕЙТЕ
КИЕВЕ ЕЮ ЫКЕ '%Ива.НОВ%';
Запрос читается так: вывести всю информацию о клиентах, фамилия
которых похожа на ‘Иванов’.
Следующие два оператора эквивалентны:
ЗЕЪЕСТ *
ЕНОМ ТОУАК
«ЙЕНЕ (Ш1СЕ > 100) АМП (РК1СЕ < 200);
и оператор
ЗЕЬЕСТ *
Г1 КОМ ТОУАК
КНЕКЕ РЙ1СЕ ЭЕТКЕЕЙ 100 АМО 200;
!:с.ш вы хотите выбрать данные из разных таблиц, перед именем поля
нужно указывать имя таблицы. Следующий запрос выведет имена всех
клиентов, которые хотя бы раз покупали у нас товар:
ЯЕЕЕСТ П13Т1МСТ СЫЕМТ8.Е1О
ГНОМ С1ЯЕШЗ, ОЕФЕК5
МИЕНЕ СЬ1ЕМТЗ.С„ЙО = ООКЕОЗ.С_КО;
При работе с оператором 8ЕЕЕСТ вам доступно несколько полезных
функций, вычисляющих количество элементов (СОСЪ'Т). сумму эле-
ментов (8О.М), максимальное и минимальное значение (МАХ и М1М), а
также среднее значение (АУО).
Следующие операторы выведут, соответственно, количество записей в
таблице С1ЛЕЫТ8 и самый дорогой товар на складе:
ЗЕЬЕСТ СОПМТО
ЕНОМ СЫШ5;
ЗЕЬЕСТ МАХ.(РЕ1СЕ)
ЕЙ.ОМ ТОУАК;
Оператор 5ЕЕЕСТ позволяет группировать возвращаемые значения.
Например, клиент Иванов (С_№О=1) несколько раз заказывал у нас
какой-то товар. Значит, его номер встречается в таблице ОКОЕК8 не-
сколько раз.
Выведем имена всех клиентов, а также сумму заказа каждого клиента.
ЗЕЬЕСТ СЫЕЫТ5.Р1О, 8ПМ(ОКПЕКЗ.АМООТТ) АЗ ТОТАЬЗШ
г ЙОМ СЫЕКТ8 , ОВИЕКЗ
ЖЕНЕ СКТЕМТЗ.СЛО •=• ОНВЕКЗ
ОЙОПР ВУ ОКОЕР.Й.С„КО;
Группировку выполняет оператор СЖОСР ВУГ который является частью
оператора 8ЕЕЕСТ. Оператор СЖОСР ВУ можно ограничить с помощью
ИДУТ У О. Этот оператор используется для отбора строк, возвращаемых
ОКСИД? ВУ. НАУШО можно считать аналогом \УНЕКЕ, но только для
ОКОИР ВУ;
НАУТМСЗ <условие>
Например, нас интересуют только клиенты, которые заказали товаров на
общую сумму, превышающую 1000.
5Е1.ЕСТ СЫЕИТЕ.ЕЮ, ЕПМ (0ЖЖК.З . АМОПЫТ} АЗ ТОТАЬВПМ
ЕНОМ СЫЕЫТЗ, ОЙОЕЙЗ
«НЕНЕ С1ЛЕМТЙ.С„МО = ОНБЕЙ5.С„ТО
скоте ВУ ОКОЕКЗ.С„МО
НАУТМС ТОТАЬЗЕМ > 1000;
Примечание
8 этом запросе мы использовали псевдоним столбца ТОТА1_8КМ. В некоторых
вариантах 5ОС для определения псевдонима не нужно писать служебное слово
А8, а другие требуют применение знака равенства:
50М (ОНОЕНЗ. Айошт ТОТАЬИЖ ИЛИ
ТОТАЬЗПМ * ЗОЩОЯВЕНЗ.АМОШИ'.
Пока мы не установили первичный ключ, сортировка нашей таблицы не
выполняется. Записи будут отображены в порядке их занесения в таблицу.
Для сортировки по полю С \:О результата вывода таблицы СЫЕКТ8 ис-
пользуется следующий запрос (сама таблица при этом не сортируется):
5ЕЕЕСТ *
ЕКОМ СЫЕ№ГЗ
ОЙОЕК ВУ С_КЮ;
Предположим, что кто-то добавил в таблицу СИЕКТ5 запись
1 Сидоров Егорова 11 Кировоград80522345111
У нас получилось, что один и тот же номер сопоставлен разным клиентам.
Тогда как определить, кто из них заказал монитор ПЭ? Чтобы избежать
подобной путаницы, нужно использовать первичные ключи:
АЕТЕК. ТАВЬЕ С05ТОМЕК
АОБ РК1МАЙУ КЕУ (СДЮ) ;
После этого запроса поле С_ЬЮ может содержать только уникальные
значения. В качестве первичного ключа нельзя использовать поле, до-
пускающее значение М1Л.Х.
Создать первичный ключ можно проще — при создании таблицы. Это
делается так:
СВЕАТЕ ТАВЕЕ СЫЕКТ5
(
С„Ю 1ПС кот млл
ПО сЬаг(40) ЫОТ КГЦЪЕ,
А0ПВЕ55 спаг(ЗО) НОТ ШЬЕ,
С1ТУ сИаг(15) ЫОТ НОЬЬ,
РНОИЕ сЬаг(И) НОТ №М,
РК1МАКУ КЕУ (СЛО) ;
) ;
Таблица ОК.ЭЕК.8 содержит сведения о заказах. По нолю С_МО этой
таблицы идентифицируется заказчик. Предположим, что в таблицу ОК.-
ОЕК.8 кто-то ввел значение, которого нет в таблице СЕ1ЕМТ5. Кто же
заказал товар? Нам нужно не допустить подобной ситуации, поэтому
введите следующий запрос на создание внешнего ключа:
АЬТЕВ ТАВЕЕ ОЕОЕНЗ
АОВ Р0КЕ1ЙЯ КЕУ(СЛО) НЕРЕКЕЫСЕЗ СЕ1ЕМТ8;
Введенные ₽ таблицу 01ФЕК.8 номера клиентов С_\:О должны существо-
вать в таблице СЕ1ЕМТ8. Аналогично нужно добавить внешний ключ по
полю Т_МО. Эта возможность называется декларативной целостностью.
Команда АЬТЕК используется не только для добавления ключей. Она
предназначена для реорганизации таблицы в целом. Вы хотите добавить
еще одно поле? Или установить список допустимых значений для каждого
из полей? Все это можно сделать с помощью команды АЕТЕК.:
АЬТЕК ТАВЕЕ СЕ1ЕКТ5
АЗВ 21Р сЬаг(б) МчЕЕ;
Этот запрос добавляет в таблицу С1ДЕЫТ8 новое поле 71Р типа сЬаг.
Обратите внимание, что вы не можете добавить новое поле со значением
МОТ ЬЮЕЕ в таблицу, в которой уже есть данные.
Наша компания работает с клиентами только из Киева и Кировограда,
поэтому целесообразно ввести список допустимых значений для таблицы
СХ1ЕМТ8:
ДЕТЕЙ ТАВЕЕ СЫЕНТ5
АЭЭ С0М5ТВАЮТ 1МУАЕ1В„ЗТАТЕ ЗНЕСК (С1ТУ
('Кировоград','Киев'));
Вам уже надоело работать с этой базой данных? Тогда с помощью запроса
ГЖСОМ'МЕСТ отключитесь от нее, и, используя запрос СОМЪ'ЕСТ, подключи-
тесь к другой базе данных. В некоторых вариантах 80Ь запрос 1Э18СОММЕСТ
не работает, а вместо СОММ ЕСГ нужно использовать оператор Е’8Е.
Теперь, когда вы уже знакомы с основами 80Ь, немного углубимся. Мы
уже знаем, как добавлять первичный ключ, теперь добавим внешний
ключ при создании таблицы:
СЙЕАТЕ ТАВЪЕ Т
(
/* Описания попей таблицы */
ГОВЕЮТ КЕТ КЕУ_ЫАМЕ (ЫЙТ)
КЕЕЕКЕМСЕЙ АИОТНЕВ^ТАВЬЕ ЦЫЙТ2)!
Ют ОЕЪЕТЕ ОРТЮТ]
[ОК ОРОАТЕ ОРТЮТ)
Здесь КЕУ_КАМЕ — это имя ключа. Оно не является обязательным, но
я очень рекомендую его указывать: если вы не укажете имя ключа, то
потом не сможете его удалить.
Е18Т — это список полей, входящих во внешний ключ. Список разделя-
ется запятыми.
А\ГО'ГНЕК_ТАВ1.Е — это другая таблица, по которой устанавливается
внешний ключ, а необязательный элемент Е13Т2 — это список полей этой
другой таблицы. Типы полей в списке 1ЛЗТ должны совпадать с типами
полей в списке 1Л8Т2.
Необязательные параметры ОК ПЕСЕТЕ и О\’ С РИАТЕ определяют дей-
ствия, которые нужно произвести при удалении информации из таблицы
и при ее обновлении. Например, нельзя так просто удалить клиента из
таблицы клиентов, если в таблице заказов присутствуют записи его за-
казов: нарушится целостность базы. С помощью параметра ОК ПЕСЕТЕ
мы можем указать серверу реакцию на удаление таких данных;
ОН ПЕЬЕТЕ ОРТЮТ
Параметр ОРТIО^ может принимать одно их четырех значений:
С АЗС АВЕ, КО АСПОЫ, ЗЕТ ПЕГАС ЕГ. ЗЕТ \СЕЕ.
Значение СА8САВЕ означает, что номер удаляемого клиента будет
удален из всех связанных таблиц. Например, если вы удалите клиента с
номером 10 из таблицы клиентов, то из таблицы заказов будут удалены
все заказы этого клиента.
Опция КО АСТЮМ не разрешает удаление клиента до тех пор, пока его
номер присутствует в связанной таблице. В нашем случае это означает,
что сначала должны быть удалены все заказы клиента с номером 10.
С помощью опции ЗЕТ ПЕРАОЕТ вы можете указать значение по умол-
чанию. Например, если вы укажете ЗЕТ ПЕЕАЕ'ЕТ 1, то при удалении
клиента с любым номером его заказы будут приписываться клиенту с
номером 1, который, разумеется, всегда есть в таблице СЕ1Е\’ТЗ.
Опция ЗЕТ \ЕЕЕ устанавливает значение Ы1ЕЕ в качестве номера
клиента, если тот удален из таблицы С1ЛЕМТ8. В нашем примере это
значение не допускается.
Две страницы назад мы добавили поле 7.1Р. А как его удалить? Стандар-
том не предусмотрено удаление столбцов, но в МуБОЬ мы все же
можем это сделать:
АЬТЕЙ ТАВЕЕ СЫЕИТ5
ШОР 21Р;
Как удалить все записи? Очень просто:
□БЬЕТЕ *
ГНОМ ОТШЕЙ.Й;
Удалить таблицу еще проще:
СБОР ОЙПЕЙЗ;
В первом случае вы не удаляете таблицу: файл таблицы все еще остается
на диске. Вы удалили только содержимое таблицы. Во втором случае вы
полностью удаляете таблицу.
Естественно, удалить таблицу можно только при наличии соответству-
ющих прав.
Напоследок рассмотрим два полезных примера. Предположим, что нам
нужно установить ограничение на количество товара, которое можно
продать клиенту. Допустим, в данный момент у нас нет такого количества
товара на складе, следовательно, мы не можем оформить заказ. Ограни-
чение данного типа можно определить с помощью запроса:
СК.ЕАТЕ АЗЗЕКТЮМ ЫМ1Т
СНЕСК (ОКОЕЙЕ.ОЬАЫТГРУ ТОРАЕЗ.ОТУ);
Установить минимальное количество для заказа можно так:
СЕЕАТЕ ТАБЬЕ 0КПЕЙ5
(
/* Определение полей
Р0ЙЕ10Ы КЕУ КЕУ1 (СДЖ>)
ЙЕЕЕНЕЫСЕЗ СШЕЙТЕ
ОН ОЕЬЕТЕ № А.СТТОК
СНЕСК (0ЕАМТ.1ТУ >= 1)
Следующий запрос устанавливает минимальный размер заказа, если
таблица уже существует:
СЯЕАТЕ АЗЗЕВТЮЬ' ЬХШТ
СНЕСК (ОИАИТТТТ >= 1};
Глава 18
ПРОКСИ-СЕРВЕРЫ,
вайю И 50СК5
----ЧТО ТАКОЕ ПРОКСИ-СЕРВЕР?
---УСТАНОВКА зоию
”---НАСТРОЙКА 80010
0---ЗАПУСК 801110
о---СПИСКИ АСЬ
ОТКАЗ ОТ РЕКЛАМЫ.
БАННЕРНЫЙ ФИЛЬТР
РАЗДЕЛЕНИЕ КАНАЛА
С ПОМОЩЬЮ 801110
НАСТРОЙКА ПОДДЕРЖКИ
ПРОКСИ У КЛИЕНТОВ
ТЕХНОЛОГИЯ 8ОСК85,
ИЛИ КАК ИСПОЛЬЗОВАТЬ
АСЬКУ ИЗ ЛОКАЛЬНОЙ СЕТИ
имих ПОЛНОЕ РУКОВОДСТВО
18.1- Что такое прокси-сервер?
Прокси-сервер (сервер-посредник) — это программа, которая выполня-
ет НТТР/ЕТР-запросы от имени клиентов. Применение прокси-сервера
дает возможность использовать фиктивные 1Р-адреса во внутренней сети
(1Р-маскарадинг), увеличивает скорость обработки запроса при повтор-
ном обращении (кэширование), а также обеспечивает дополнительную
безопасность.
Нет смысла устанавливать прокси на своей домашней машине, так как
функции кэширования выполняет сам браузер. Прокси-сервер стоит при-
менять лишь в том случае, если в вашей сети есть несколько компьютеров,
которым нужен выход в Интернет. Если один из них уже запрашивал
какой-то интернет-ресурс, то следующий пользователь, обратившийся
за этим же ресурсом, получит ответ не из Интернета, а из кэша прокси-
сервера, то есть значительно быстрее.
8О1ЛП — это нечто большее, чем просто посредник. Это своеобразный
стандарт кэширования информации в сети Интернет. В силу повсеместной
распространенности 8О1.ЛЙ. в книге я уделил его конфигурированию
большое внимание.
Прокси-сервер 8ОПГО образуют несколько программ, в числе которых
сам демон а также программа йпяяегтег — программа обработки
Г) 188-запросов. Когда запускается чцтнс!, то сначала он запускает заданное
количество процессов впкяегтег, каждый из которых работает самостоя-
тельно и может осуществлять только один поиск в системе 1)88. За счет
этого уменьшается общее время ожидания ответа Г) 8 8.
18.2. Установка 80УЮ
Я использую версию вдшб 2.5. Пакет вцшб входит в состав современных
дистрибутивов, а если его у вас почему-то нет, то скачать можно с .
зди!<3~сасИё. огд.
При сборке 801Л Г) из исходных кодов первым шагом должна быть ко-
манда
# . /сопПдиге --ргеС1х=/изг/1оса1/здл1Й
80010 будет установлен в каталог, заданный ключом ргебх. Другие ключи
сценария сообщите перечислены в таблице 18.1,
Ключи сценария сопбдиге Таблица 18.1
Ключ Назначение
--епаЫенстр Измерять путь до каждого НИР-сервера при запросах с помощью (СМР
--епаЫе-зпыр Включить ЗММР-мониторинг
--епаЫе-йе1ау-роо1» Управление трафиком
--р|гаЫе-1и/сср Отключить УУйб СасНе СоогйюаРоп Ргатосо!
—епаЫе кШ-ратепТ-Ьаек Борее коррвКтнЫЙзПиЙоутп
- - епаЬ|е-зр1ау®гее Позволяет увеличить скорость обработки АС1
18.3. Настройка 80УЮ
Сервер 800'10 использует файл конфигурации зди 1а. со- г, который обыч-
но располагается в каталоге /еСс/зди1<1.(или /цйг/1оса.1/зди1д/еГс—
более ранние версии), Подробнее на отдельных настройках мы остановим-
ся чуть позже. А сейчас просто по шагам произведем настройку 801)1 Г).
Отредактируйте в этом файле следующие строки.
Укажите прокси-провайдера (тот сервер, который станет вашим «сосе-
дом» (пефйЬоиг. реет)):
с.асЬе_реег ргоху. 1зр. ги
Установите объем памяти, разрешенный для кэша ядиМ, в байтах, и ка-
талог для дискового кэша:
сасре_те!п 65536
сасре_а1т иЕз /изг/ГосаГ/здиМ/сасНе 1024 16 256
где 1024 — количество мегабайтов, отводимое под кэш в указанном ка-
талоге. В этом каталоге будут храниться кэшированные файлы. Стоит
ли говорить, что если у вас несколько жестких дисков, то кэш нужно
разместить на самом быстром из них.
Укажите узлы, которым разрешен доступ к прокси-серверу:
ас1 аПовдесСЪоБЬз вгс 192.168.1.0/255.255.255.0
ас! ХосаПюзС зге 127.0.0.1/255.255.255.255
Укажите разрешенные 58Ь-порты:
ас! ЗйЬ_рог,.'.: рогС 443 563
Запретите метод СОИИЕСТ для всех портов, кроме указанных в ас!
88Е_рог1.ч:
йГСр^ассезв йену СОКМЕСТ !ЗБ.1,_рогСв
Запретите доступ всем, кроме тех, кому можно:
ИЬЬр_ассезз а11он ХосаХТюеС.
ИкЬр_ассезз а11ои а11сдаеск_ЪозГз
ИЬСр_ассеэз а! Хон ЗЗЬ-йрогЕ® ХЛЬр_ассезз йену аХХ
Пропишите пользователей, которым разрешено пользоваться 801ШЭ (в
рассматриваемом примере это с1еп, айппп и с1еуе1орег):
1йепГ„1оокир он
ас! а11оией_изег8 изег бел айтп ДеуеХорег
ЫХр_ассева аХХои а11оиес1_изегз
йЬСр^асс.ез.8 Делу аХХ
Тэги тах1тип1_оЬ)ес1:_м7.е и тах1гвип1оЬ]ес! устанавливают ограничения
на размер передаваемых объектов.
Ниже приведен пример запрета доступа к любому ПЯЕ, который соот-
ветствует шаблону §атев, и разрешения доступа ко всем остальным:
ас1 СаМЗ иг1_гедех датей
Мср_ассева Йену (ЗаМ8
Икср„ассеб8 аИокг а!1
18.4. Запуск 80010
Первый раз эдш<1 нужно запускать с ключом -ж, чтобы создать и очистить
каталог кэша;
# /иЗг/ХоеаХ/зфИй/Ып/здиХй. -г
Еще несколько полезных ключей, с которыми можно запускать ядиШ,
перечислены в таблице 18.2.
Ключи запуска адиМ Таблица 18.2
Ключ Назначение
-а порт Задает альтернативный порт для входящих НТТР-запросоя
Включает режим вывода отладочной информации в стандартный поток ошибок
-Г файл Задает альтернативный файл конфигурации, который должен будет использоваться вместо стандартного лршй.сопГ
Выдает справочную информацию
-к гесо1ТПдога Посылает сигнал ШЯ чгсприэодигк тому, что ЕОСЮ заново прочитает свой конфигурационный файл
-к ЗРинкдап Завершение работы прокси-сервера. При атом он подождет, пока будут завершены асе соединения
-к йнеггарт Немедленно завершить работу прокси-сервера, без ожидания завершения соединений
ЧсШ Завершение без закрытия журналов
*ц порт Задает альтернативный порт для входящих ЮР-запросов
-5 Включает журналирование о помощью зуз1од
Выдает информацию о версии ЗОНЮ
-г Очищает каталог кэша
-0 Запрещает С№-тест при запуске
К Запрещает становиться демоном (фоновым процессом)
V Более быстрое восстановление после сбоев
18.5. Расширенные настройки 801110.
Конфигурационный файл 5цшс1.соп1
18.5.1 . Параметры сети
В файле зцикТсогФ могут быть заданы следующие параметры сети:
♦ ЬЦр_рог1 — порт для запросов клиентов. С этого порта прокси-сер-
вер будет ожидать и обрабатывать запросы клиентов. Значение по
умолчанию равно 3128;
• кр_рог1 — порт для общения с соседями через 1СР. Если «соседей»
(реег) нет, то установите 1ср_рог10. По умолчанию используется зна-
чение 3130, При использовании этого параметра нужно установить
ключ -епаЫе-йГср для директивы Ыср^роП 4827;
• — при отправлении информации указанный
адрес будет использован в качестве исходного. Значение по умолча-
нию: Гср_оЩ§ош§_ад<1ге$8 255.255.255.255;
♦ 1и1р_о1Нд<.н!Щ_аск1ге!« •— то же самсе, что и предыдущая директива —
но только для 1СР. Значение по умолчанию: ибр_ои1§о1п§^аббге88
255.255.255.255 . То же, но для 1СР при приеме — директива п<1р_1п-
сопип§тагШге88 со значением по умолчанию 0.0.0.0;
* ра$мте_ГЕр оп | оЕЕ — по умолчанию этот режим включен, но если
прокси-сервер находится за брандмауэром, то параметр рахм\-е_ Пр
нужно выключить.
18.5.2 . Параметры соседей
«Соседи» — это другие кэширующие серверы, в кэшах которых 8С?ЕЧГ)
ищет запрошенный ресурс перед тем, как обратиться к нему напрямую.
Так, ЗОСПЭ-еервер локальной сети может обратиться к серверу провай-
дера, региона и т.д. в расчете на то, что чем больше пользователей, тем
больше шанс найти копию запрошенных данных ближе, чем по ориги-
нальному адресу. Существует два типа «соседей»:
♦ рагепЕ (старший): если запрошенных данных не оказалось в кэше у
рагепЕ тот пересылает запрос дальше и возвращает подчиненному
готовый ответ. Если 8ОСЮ получает отказ (ТСРОЕМЕЮ) от рагепЕ,
то обращается к ресурсу напрямую;
♦ ыЫш§ (равный): если запрошенных данных не оказалось в кэше у
мЫ1п& то ом просто возвращает сообщение об этом, не предпринимая
никаких дальнейших действий.
Каждый «сосед» прописывается отдельной строкой следующего формата:
сёсЬе_дэеег НовЬпате Суре ргоху-рогЬ тср-рогС орЫопя
где: Ио^пате — имя узла-«соседа»;
Еуре — тип соседа: рагепЕ — старший, 51’Ыш& — одного уровня;
ргоху-рог! — порт прокси-сервера;
Ёср-рогЕ — порт 1СР;
орбопз — параметры.
18.5.3 . Управление кэшем
За управление кэшем отвечают следующие директивы:
♦ сасйе теп! < число —задает размер оперативной памяти, отводимой
под кэш. Размер этот указывается в байтах, килобайтах, мегабайтах (МВ)
или гигабайтах (СВ). По умолчанию используется значение 8 МВ;
♦ сас1н?_(1и <тип> <каталог> <размер> <1уровня_кат> <2уров-
ня_кат> — задает местоположение кэша на диске и его параметры:
• тан — тип Хранения. Практически всегда используется значение ий;
• каталог — задает имя каталога, в котором будет храниться кэш;
* размер — размер (в мегабайтах) отводимого под кэш пространства
на жестком диске;
♦ 1уровня_кат — максимальное число подкаталогов 1 уровня, которое
может быть в указанном каталоге кэша;
♦ 2уровня_кат — .максимальное количество подкаталогов, которое мо-
жет быть в каждом из подкаталогов 1 уровня.
Значение по умолчанию: сасЬе_сНг ц& /изгЛосаШдшЙ/сасЪе 100 16 256.
Допускается использование нескольких записей с директивой сасйе_Шг
для определения нескольких каталогов для размещения кэша;
• саске_5«ар_1118Ь < число > — процент заполнения кэша, по дости-
жении которого начинается ускоренный процесс удаления старых
объектов. Значение по умолчанию равно 95;
♦ сасйе хиар кт <число> ~~~ процент заполнения кэша, по достиже-
нии которого прекращается удаление старых объектов. Значение по
умолчанию равно 90;
* таютип1_оЬ)ес1_’Й2е <число> КВ — максимальный размер кэширу-
емого объекта. Значение по умолчанию равно 4096 КВ;
♦ п1пптигп_оЬ)ес1_8ые — файлы меньшего размера не кэшируются.
Значение по умолчанию: 0 КВ.
18.5.4 . Протоколирование
Ниже перечислены режимы протоколирования 5СДЛГ) с указанием соот-
ветствующих журналов. Если какой-то журнал вам не нужен, установите
попе вместо имени файла.
• сасйе_ассе58_1о§ /изгДося1^яш4До^/ассе«ио8 — протоколирование
запросов к 8О1Л1):
♦ сасйе_1од /иягЛоса^цшсИо^сасйеДо^ — протоколирование запусков
процессов;
• сасЬе_.81оге_1од /и5гЛоса1/5ЧШф1оё8Моге.1о§ — протоколирование за-
писи объектов в кэш.
18.5.5 . Параметры внешних программ
В конфигурационном файле адитсЕ сопб могут быть заданы следующие
параметры внешних программ и сервисов;
• Пр_и8ег етай-алрес — этот етай-адрес будет использоваться вместо
пароля при анонимном доступе к йр-серверам;
• 6п8_пате8егтег8 список ГР-адресов — этот список используется
вместо того списка 1Э№8*сернерои. который определен в файле
/ерс/гезоГу. сопГ; значение по умолчанию — попе;
• еас1ц\_(1п.у_рг(д»гат /'и^гДосархцшёДйп/бп^^егуег — указывает програм-
му разрешения имен (сервер Г>№»);
♦ аи1Ьеп11са»е_ргойгаш попе — позволяет производить аутентификацию
клиентов, делающих запросы. При этом должен быть определен АСЕ
ргоху_ашй;
• аи1Ьепбса1е_ргодгат /ичг/!оса!/.«|ш'с1;'Ь1П/пс<;а_аи(И /и^г/1оса1/кци1с1/еГс/
разлад! — традиционная программа аутентификации. Определена в
,./аигЬ_п1оёи1е$/\С^А.
18.5.6 . Параметры администрирования
Параметры администрирования, которые можно задать в файле едите!.
сопГ, таковы:
♦ сасНе_пщт ешай — почтовый адрес, на который будет послано письмо,
если 8001 Г) перестанет фракционировать;
♦ сасйе еГГесНте и.чег поЬобу — при запуске 8(ДЛ Г) от имени гоей из-
менить 1ЛЭ на указанный в параметре сас11е_еП'есНуе_и$ег;
♦ сас11е_еП’есНуе_йгоир по^гоир — при запуске 80010 от имени гоо1
изменить ОЮ на указанный в параметре сасйе еЛесПУе_«гоир;
♦ У1К1Ые_Ьоя1пате имя_узла — это имя будет упоминаться в сообщениях
об ошибках;
• ко$1патепа1ш$е5 имя — этот параметр задает список синонимов для
имени узла.
18.6. Списки АСЬ
АСЬ (Ассезя СоШго! 1.1к1к) — списки контроля доступа. Довольно часто
возникает необходимость группировки однотипных параметров в единое
целое для их последующей обработки. Для эффективного решения этой
задачи используются списки АСЬ. Например:
ас! 55Ь_рогЬз роге 443 563
Эта запись означает, что создается список 88Ь_рог1$ типа рогГ Элемен-
тами списка являются номера портов 443 и 563.
Добавить новый элемент к уже существующему списку можно так:
ас1 ай<2 рогЕ 999
Удалить ненужный элемент можно с помощью операции бе!:
ас1 <3е1 35Ь_рогСв 999
Переименовать список позволяет операция геп:
ас1 геп ЙЗЕ-ДэогСз А11оие<3_рогСз
Удалить все списки вместе с их содержимым позволяет операция ПикЬ:
ас! ЫизИ
Стандарт АСЬ требует, чтобы перед именем списка обязательно был
указан символ $. Строго говоря, все перечисленные выше примеры без
этого символа неправильны. Однако большинство фильтров, например
ЗОСГО, пренебрегают этим требованием, и вы можете указывать имена
списков без знака доллара,
Итак, АСЬ — это определение списка доступа, имеющее следующий
формат:
ас.1 <имя> <тип> <регулярное_В|Ыражение>
Типы, которые можно использовать при составлении списков АСЬ, пере-
числены в таблице 183,
Типы АС С Таблица 18.3
Тип Назначение
5(с 1Р-адрес7маска !Р-адрес клиентов
Егс (Р1-1Р2/маска Диапазон адресов
1Р-адрес/маска 1Ж узлов
Т1те [день] !Ч1:М1-Ч2:М2] Время, где день — это одна буква из 5М7УУНРА
Ром Списокпортов
Роп рог! I - рои2 Диапазон портов
РГ0!О Протокол - НТТР или РТР
МвШой Метод ^Ш(Ии::ЯО8Т
Вгоизег (-Ц рег^выражение Заголовок браузера клиента. (-!( — игнорируется регистр Букв
18.6.1. Параметры доступа
Параметры доступа в файле вди!<3 ~ сопЕ задаются следующими дирек-
тивами:
♦ 1Шр_ассе$5 а11о\у | белу ас!пате — разрешать доступ к прокси по
НТТР;
• 1ср_ассе8« аНсну ) бепу ас1пагпе — разрешать доступ к прокси по
1СР;
♦ пн58_ассе88 а!1о\у ( белу ас1паше — разрешать получать ответ М188
(«не найден») от вас;
♦ сасйе_реег_ассек8 сасЬе-ЬоЫ эНоху | белу ас1пате — ограничить за-
просы к данному соседу — расширение для сасЬе^реег боташ;
♦ ргоху_аиН1_геа1т 8цшб ргоху-сасЫп^ \\еЬ зеггег — строка текста,
которая будет выдана на экран клиента при запросе имени/пароля
доступа к кэшу.
18.7. Отказ от рекламы. Баннерный фильтр
Вам не хочется тратить лишнее время на загрузку рекламных баннеров?
Мне тоже. К счастью, 5001 Г) позволяет достаточно просто решить
эту проблему. Просто вставьте следующие строки в свой файл здиХб.
соп ?!
ас! доой_иг1 иг!_гедех "/изг/1оса1/е1с/зди1б/ас1/доо<3_иг1и
ас1 Ьай_иг1раоЬ иг1раСЪ„гедех "/ивг/1оса1/еес/зди1&/ас1/
Ьа.а_иг 1раСЬ" ,
ас1 Ьаб_иг1 иг1_гедех "/ивг/1оса1/еСс/здц1й/ас1/Ьад_иг1"
ИсЬр„ассезз йену Ьад_иг1раЫ*1 ’доос!_иг1
ЬЪСр_ассевв белу Ьаб_иг11доо<а_иг1
Соответственно, нужно будет создать три файла: дооа_нг1, Ьаа_иг1_
рае И И Ьай_иг1. В файл Ьай_иг1 следует поместить СВЬ с плохой
репутацией, например:
"'ЬЬЪр: // . МоиЫесИск.
ЛЬССр: // . *-ай. ±1усазЬ, сот/вегуег/шд/
: //1000. ябагз. ги./сд1-Ып/100С>. сд!
лЫХр: //12.16.1.10/~ьгеЬ_ап1/
А в файл Ьас1_иг!_р;И11 — «плохие» пути, например, такие, которые часто
бывают у баннеров:
88x31. *дИ
88x31.*С1Г
100x80.*д!Е
100x80.*С1Г
100x100.*д!Е
100x100. *<ЗХР
120x60.*д! I
120x60.*С1Р
179x69.*дИ
193x72 . *дП
469x60.*д1Е
Примеры файлов &ооб_ш'1, Ьас1_иг1_ра1Ь и Ьас1_иг1 можно взять на моей
домашней страничке МХрз //йкив .пагой . ги.
18.8. Разделение канала с помощью 5О111О
Допустим, вам нужно настроить прокси-сервер таким образом, чтобы одна
группа компьютеров работала в Интернете с одной скоростью, а другая —
с другой. Это может потребоваться, например, для разграничения поль-
зователей, которые используют канал для работы, и пользователей. ко-
торые используют ресурсы канала в личных целях. Естественно, первым
пропускная способность канала важнее, чем вторым. С помощью прокси-
сервера БОШИ можно разделить канал.
Для начала в файле конфигурации здиЮ. сопГ укажите, сколько пулов,
то есть групп пользователей, у вас будет:
<3е1ау__роо1й 2.
Затем определите классы пулов. Всего существует три класса:
• Используется одно ограничение пропускной способности канала на
всех.
♦ Одно общее ограничение и 255 отдельных для каждого узла сети
класса С.
♦ Для каждой подсети класса В будет использовано собственное огра-
ничение и отдельное ограничение для каждого узла.
В файл вди . сопГ <Зе1ау„с1аБ$ 1 1 добавьте следующие директивы: # определяет первый пул класса 1 для # домашних пользователей
с!е1ау__с1а.Б5 2 2 4 определяет второй пул класса 2 для # служащих
Теперь задайте узлы, которые будут относиться к пулам:
ас! Ноте яге адреса
ас1 моткегв вге адреса
де1ау„ассе55 1 а!.1си йоте
г1е1ау_ассевБ 1 йену аЦ
с1е1ау_ассейэ 2 а11от кгогке.гв
<3е1ау„ассезв 2 йену а!1
Затем укажите ограничения:
йе1ау_рага1ГгеТегв 1 14400/.14400
с1е1ау„рагатеСеГ5 2 33600/33600 16800/33600
Для пула класса 1 используется одно ограничение для всех компьютеров,
входящих в пул —14400 байт. Первое число задает скорость заполнения
для всего пула (байт/сек). Второе — максимальное ограничение.
Для пула класса 2 используются ограничения на всю подсеть и отдельно
на каждого пользователя. Если бы у нас был определен пул класса 3, то
для него ограничения выглядели бы примерна так:
ае1ау_^рагатеТегз 3 128000/128000 64000/128000 12800/64000
Первые два числа задают соответственно скорость заполнения и мак-
симальное ограничение для всех. Следующая пара чисел определяет
скорость заполнения для каждой подсети и максимальное ограничение,
а третья — скорость заполнения и максимальное ограничение для инди-
видуального пользователя.
18.9. Настройка поддержки
прокси у клиентов
После того, как вы настроили прокси-сервер, осталось напомнить проце-
дуру настройки использования прокси для некоторых распространенных
браузеров.
Настройка 1п1егпе1 Ехр1огег под использование прокси-сервера произ-
водится следующим образом: в окне Сервис -> Свойства обозревателя -н*
Подключение -> Настройка сети установите необходимые параметры, то
есть имя прокси-сервера и его порт.
Если вам нужно настроить использование прокси-сервера для \еб»саре Со-
тгтшшсаЩг, то выберите из меню Е<Ш —> РгеГегелсет - > Абтапсей Ргох1е$
—> Мапиа! Ргоху СопГщигабоп У1е» (рис. 18.1). В появившемся окне уста-
новите необходимые параметры, то есть имя прокси-сервера и его порт.
" Уоитау.сшТгдда а ргоху дайрой псДгЬегТог еайт ’оТфв»
ряйостй? 1Ьа1 КеЪсаре зиррайз.
РТР Ргоху Т
(ЭорМг Ргоху;
НТТР Иску
ргоху сошрапу.г\|
Зесуйу I
М/А18 Ргоху: |
Уоитаургоййе а МоТйотап? 1ба1 ^еГзсаре ассезз йгесПу.
гатьог Фал «а ,,,___________________
? I
ЗОСКВНовН
Рой: р080
Салс!01|
Рис. 18.1: Настройка Не1зсаре Соттип(са1ог
Теперь посмотрим, как настроить использование прокси-сервера для по-
пулярного Етих-браузера Копциегог. Выберите в строке меню команду
Настройка Настроить Копциегог Прокси (рис. 18.2). Нажмите
кнопку Настроить и укажите имя прокси-сервера и его порт.
Рис. 18.2. Настройка Копдиегог
18.10. Технология 8ОСК85, или как
использовать аську из локальной сети
18.10.1. Введение в 5ОСК5. Прокси-сервер 8ОСК55
Технология 8ОСК8 основывается на использовании одноименных про-
токола и прокси-сервера. Может возникнуть вопрос: «Зачем нам еще
один прокси-сервер, если мы уже рассмотрели 8О1Л1Э?». А дело в том,
что прокси-сервер 5СЦЛВ работает на протоколах верхнего уровня
(НТТР, РТР) и жестко к ним привязан. Однако существуют приложения,
работающие непосредственно на транспортных протоколах ТСР и ЕТЭР
и испытывающие проблемы при взаимодействии. Для решения этих про-
блем и был разработан протокол 8ОСК5. Он позволяет приложениям,
работающим по ТСР и ПОР, использовать ресурсы сети, доступ к которым
ограничен в силу архитектуры или настроек сети.
Классическим и основным примером является использование интернет-
пейджера 1СО из локальной сети, защищенной брандмауэром (межсе-
тевым экраном). У локального пользователя нет реального ТР-адреса
и прямого выхода в Интернет, а весь трафик направляется через сер-
вер-шлюз сети, на котором установлен брандмауэр, не пропускающий
трафика от 1СО.
Решает проблему пересечения межсетевых экранов клиент/серверными
приложениями, работающими по протоколам ТСР и СОР, установка
сервера 8ОСК8 на шлюзе. При этом через сервер 8ОСК8 будет осу-
ществляться перенаправление запросов на удаленную машину, а также
прозрачная передача трафика после установки соединения.
Нужно отметить, что оба прокси-сервера (8ОСК85 и 8О1ЛО) могут быть
установлены на одном сервере и функционировать одновременно, не
мешая друг другу.
пр
Теоретически для решения проблемы пересечения бастиона можно было бы
в > ш использовать 1Р-маскарадинг. При этом ТСР/ЦИР-пакеты паковались бы в НТТР-
^4» сообщения (или другие протоколы верхнего уровня) И шлюз записывал бы в них
свои заголовки (свой 1Р-адрес), 8 результате казалось бы, что эти пакеты исходят от
него самого. Но такое решение имеет много минусов, обусловленных протоколами
верхнего уровня и связанными с ними заморочками. Кроме того, в какой-то
степени теряется анонимность: ведь при использовании 5ОСК5 информация
об [Р вообще не передается (это не предусмотрено самой технологией). А еще,
поскольку в ЗОСКЗ заголовков НТТР нет совсем, никто не сможет определит ь, что
вы использовали прокси-сервер.
Прежде чем мы перейдем непосредственно к рассмотрению установки
и настройки сервера 8ОСК8, стоит отметить еще одно его достоинство.
Оно заключаются в том, что $ОСК8-серверы могут без проблем вы-
страиваться в цепочку, позволяя вам еще эффективнее замести следы:
направьте свой трафик через несколько прокси-серверов, и ваше со-
общение уже никто не выследит. Некоторые прокси-серверы НТТР тоже
могут выстраиваться в цепь, но это сопряжено с большими сложностями
и проблемами. Кроме того, браузерами официально не предусмотрена
поддержка таких цепочек.
Что касается версий протокола, то они отличаются следующим:
♦ 8ОСК84 — основывается на ТСР;
♦ 8ОСК85 — работает как с ТСР, так и с СОР. Кроме того, в нем рас-
ширена система адресации, поддерживается авторизация и удаленные
ЭИЗ-запросы.
Клиентами сервера 8ОСК85 являются популярные клиенты 1С0 и йсц.
клиентская версия оболочки якЬ, а также другие программы.
18.10.2. Настройка сервера 8ОСК85
Популярный прокси-сервер, работающий по протоколу 8ОСК85, под-
держивает компания Регтео (упш. эоскз . регтео. сот). Я пользуюсь
аоскаЗ у1.0 ге1еазе 11 и настройку рассмотрю на его примере. Этот
сервер не в полной мере некоммерческий (лицензия — не СтРЬ), по-
этому вам может быть удобнее использовать альтернативы — 1>е1еСа1е
(и«м. йе!едаСе. огд) или ОапСе (иииг.тлес .поМаиСе). О последнем
я скажу в п.18.10.4.
Все настройки сервера м)ск$5 содержатся в конфигурационном файле
/ег.с/яоскзЗ . сопё. В большинстве случаев параметры по умолчанию
вполне приемлемы. Сейчас мы рассмотрим пример конфигурационного
файла (листинг 18.1), а потом разберемся, что все это означает.
Листинг 18.1. Файл /е1с/8оске5.соп?
эеТ 5ОСК55„ЫОНЕ7ЕН5ЕМАР
вес 5ОСК55„ЫО5ЕК71СЕНАМЕ
вее ЗОСК55.ЫО1ВЕКТ
зер ЗОСКЗЭ^МАХСНТЪП 128
зеЬ 5ОСК55_Т1МЕОЕТ 10
аиЫа - - и
реггпъС и ----- -
1пГег^асе 192.168.0. - еЫ10
В первой строке мы отменяем обратное разрешение адресов, благодаря
чему сервер будет работать заметно быстрее. Вторая строка означает,
что мы будем протоколировать номера портов вместо имен сервисов.
Теоретически это тоже должно повысить эффективность работы сервера.
Параметр 8ОСК85 \ОЮЕ\Т запрещает рассылку клиентам ИепЬза-
просов. Четвертая строка устанавливает максимально допустимое число
потомков сервера — не жадничайте. Пятая строка, как вы уже успели
догадаться, устанавливает тайм-аут (10 секунд).
Вся остальная настройка сервера выполняется с помощью директив аий*
и регтй. Первая устанавливает тип аутентификации, а вторая разрешает
доступ определенным узлам и пользователям. Полный формат директивы
аы1й такой:
аиЬИ <исходный~узел> <исходный„порт> <метод_аутенти:фи.кации>
В приведенном примере мы будем запрашивать пароль у всех клиентов.
Формат директивы рений:
реппхС <аутентификация> <команда> <исх_узел> <узел_
н.азначения> <исх_порт> <порт„назнач> [список„
пользователей)
В примере я разрешаю доступ всём и отовсюду с использованием ау-
тентификации. Следующий пример использования директивы регтй
демонстрирует гибкость этого прокси-сервера:
реипФС и сриЪЬ 192-168. - - [100,1000] Йен
В этом примере мы разрешаем доступ пользователю беп (с использо-
ванием пароля, конечно). Пользователь йеп имеег право использовать
СоппесС Р1П& С1)Р. В1М) и ТгасегоиГе (сриЬф с адресов 192,168.*.*.
Диапазон входящих (первый «-») и исходящих (второй «-») портов — от
100 до 1000.
В дополнение к директиве регшй можно использовать директиву деву та-
кого же формата, но противоположного назначения (запрет доступа).
Директива шГегГасе в приведенном примере разрешает все соединений
от компьютеров с адресами 192.168.0.* (наша внутренняя сеть) ко всем
портам интерфейса есМ.
Имена и пароли пользователей сервера хоскх? содержатся в файле /еЬс/
Боскз5. ракзид в формате <имя> <незашифрованный.„пароль>. После
создания этого файла настройку $оскв5 можно считать законченной.
18.10.3. Запуск сервера воск$5
Запускается сервер следующей командой:
# /ивг/1оса1/Ь1п/8Оск85 -1 -а
При запуске с этими ключами демон должен перейти в фоновый режим
и выводить диагностические сообщения на стандартный вывод (в нашем
случае это экран). Если сервер сконфигурирован правильно, вы должны
увидеть примерно следующее:
11410: Зоскз5 вСагПпд аЬ Моп Маг 4 19:13:55 2002 1п Поппа! тоде
После удачного запуска остановите сервер (к111а11 зоскзб) и добавьте
его запуск в сценарий автозагрузки системы.
18.10.4. Оап1е — еще один сервер 8ОСК85
Этот сервер считается более простым в настройке. Он использует файл
конфигурации /еСс/зоска.соп^ (листинг 18.2).
Листинг 18.2. Примерный файл /еЕс/зоскО.сопГ
1пкегпа1: 192.168.0.1 рогк = 1080
ехкегпа!: 111.111.111.111
сИеп! разз {
1гот: 192.168.0.0/16 Со: 0.0.0.0/0
}
раза {
Гготп: 0.0.0.0/0 то: 192.168.0.0/16
соптпапй: ЫпйгерХу ис1ргер1у
1од: соппеск еггог
}
Директива ййегпа! определяет ваш внутренний интерфейс (точнее, внутрен-
ний 1Р-адрес), а ехГегпа! — ваш настоящий 1Р (111.111.111.111). В блоке сИегй
разе указываются возможные клиенты вашего сервера (сеть 192.168.0.0), а в
блоке рач8 — имена узлов, которые могут «общаться» с вашими клиентами. В
приведенном примере разрешается отвечать клиентам со всех узлов (0.0.0.0).
Протоколироваться будут только ошибки соединения.
18.10.5. Настройка клиентов 8ОСК85 (1СО и Нез)
Настройку клиентов будем рассматривать на примере двух самых, на-
верное, популярных 8ОСК8-КЛИЙНТОВ. Сначала рассмотрим настройку
программы 1СО для ХУгпбоч'з, а потом Нед — ГСО-клиента для 1дпих.
Запустите программу 1СО и нажмите на кнопку 1С(). Из появившегося
меню выберите команду РгеГегепсев и перейдите в раздел СоппесЦопк
на вкладку Зегтег (рис. 18.3). Включите режим использования прокси-
сервера и установите тип прокси-сервера — 8ОСК.85. Потом перейдите
на вкладку 1чгема11 и установите параметры прокси-сервера: имя, порт,
тип (косккЭ), имя пользователя и пароль (рис. 18.4).
С программой Мед будет немножко сложнее. Во-первых, нужно установить
на компьютере пользователя программу гипзоекк, входящую в состав
пакета прокси-сервера (эту программу можно также найти в Интернете
отдельно), и перекомпилировать Нец, включив поддержку 8ОСК85. Для
этого перейдите в каталог, содержащий исходные тексты Нсц, и запустите
сценарий соп Идите с параметром —епаЫе-коекяЗ:
$ ./сопЛдиге --епаЫе-'Зоскзй
Рис. 18.4. Параметры прокси-сервера
После этого выполните привычные команды: таке; тгкке 1пвСа11.
Теперь нужно создать файл /есс /1. ГЬзоскрь . соп!:' и добавить в него
строку:
зоскйб
192 .168 . О . 1;рОГ1
192.168.0.1 — это адрес вашего $ОСК55-сервера, рог( — порт, необходи-
мый клиенту (обычно 1080).
Глава 19
МАРШРУТИЗАЦИЯ
И МЕЖСЕТЕВЫЕ
ЭКРАНЫ
о--ВВЕДЕНИЕ В МАРШРУТИЗАЦИЮ
ПРОГРАММЫ МАРШРУТИЗАЦИИ
в и них
РАСШИРЕННЫЕ СРЕДСТВА
МАРШРУТИЗАЦИИ.
КОМПЛЕКС 1РНООТЕ2
о---ЧТО ТАКОЕ БРАНДМАУЭР
о-- ЦЕПОЧКИ ПРАВИЛ
ЫЫУХ ПОЛНОЕ РУКОВОДСТВО
19.1. Введение в маршрутизацию
Маршрутизация является очень ответственным механизмом, отвечаю-
щим за то, как будет происходить обмен данными, как будут пролегать
информационные потоки. Скорость и эффективность обмена данными
во многом зависят от того пути, по которому они следуют от одного
компьютера сети к другому.
Маршрутизация имеет смысл в сильно разветвленных сетях и основыва-
ется на использовании таблиц маршрутизации. Такая таблица имеется на
каждом узле, выступающем в роли маршрутизатора. В ней содержится
информация об окружающих узлах и известных маршрутах, на основе
которой маршрутизатор будет выбирать оптимальный путь для передачи
данных.
При оценке и выборе маршрута используются так называемые метрики
стоимости. В качестве такой метрики выступают какие-либо критерии, по
которым можно оценить маршрут. Различные протоколы маршрутизации
могут использовать различные метрики, то есть выбирать оптимальный
маршрут, основываясь на анализе разных параметров. Рассмотрим основ-
ные протоколы маршрутизации:
♦ ШР — один из старейших протоколов маршрутизации, разработанный
компанией Хегох. Метрикой стоимости у этого протокола является
количество переходов, которое должен совершить пакет данных от
отправителя к получателю. Этот протокол разрабатывался во време-
на небольших сетей, поэтому все узлы, находящиеся на расстоянии
больше 15 переходов, он воспринимает как недосягаемые. Это значит,
что в сетях, в которых в одну цепочку могут быть выстроены более
15 маршрутизаторов, использовать протокол Я1Р нельзя. Данный
протокол использует в своей работе демон гоп!ей, который будет
рассмотрен чуть позднее
♦ ШР-2 представляет собой улучшенную версию протокола Я1Р. Одно
из основных улучшений заключается в том, что вместе с адресом
следующего перехода передается сетевая маска. Благодаря этому
упрощается управление сетями, в которых есть подсета.
• О8ГР является самым популярным и широко используемым протоко-
лом маршрутизации. В его основе лежит специальный математический
алгоритм, который позволяет высчитывать оптимальные маршруты.
Этот протокол является топологическим, то есть учитывающим со-
стояние канала. По сравнению с ШР он обладает следующими до-
стоинствами: возможностью управления несколькими маршрутами и
возможностью разделения сети на сегменты, которые будут предо-
ставлять друг другу только высокоуровневые данные маршрутизации.
Этот протокол рекомендуется использовать в сетях с разветвленной
структурой, в которой может возникать большое количество дубли-
рующихся маршрутов.
Следует понимать разницу между маршрутизацией и перенаправлением
трафика. Маршрутизация представляет собой сложный процесс просчета
и выбора наилучшего на данный момент маршрута. При этом использу-
ется большое количество входной информации, основывающейся как на
предыдущем опыте работы маршрутизатора, так и на текущем состоянии
сети. Значительная часть этой информации предоставляется соседними
узлами, поэтому синхронизация таблиц маршрутизации у соседних узлов
представляет собой существенную проблему.
Перенаправление трафика же является простой операций, направляю-
щей пакеты данных в соответствии с определенным условием. Никакого
выбора и расчета при этом не производится. Можно сказать, что перена-
правление — это простейший (статический) метод маршрутизации. Мы
рассмотрим его в параграфе, посвященном брандмауэрам.
19.2. Программы маршрутизации в Мпих
19.2.1. Демон гои1е<1
Стандартной программой маршрутизации в Ыгшх является демон гои1е<1.
Этот демон, как правило, настраивается сам (динамически) и не требует
конфигурирования. Обнаруженные маршруты он заносит в маршрутную
таблицу ядра.
В своей работе демон гоШсч! использует протокол ШР. Чтобы восполь-
зоваться преимуществами протоколов Ч1Р 2 или ОЗЕР, вы должны ис-
пользовать другой демон — Демон гоиЧч! может работать либо в
режиме сервера (-8), либо в режиме подавления сообщений. Во втором
режиме он будет только получать от соседей маршрутную информацию,
но сам ее отсылать не будет.
Для добавления статических маршрутов вручную служит команда
гоисе. Рассмотрим пример такого маршрута. Пусть у нас есть две сетевые
платы еН10 и е!Ы:
# т^сопНд еЬИО 192.168.1.1 пр
# 1€сопЕ1д еСМ 192.168.2.1 ир
и нам нужно обеспечить маршрутизацию между подсетями 19X168.1.0 и
192.168.2.0, С этой целью объявляем, что машины, которые находятся в
вашем локальном сегменте 192.168.1.*, «сидят» на первом интерфейсе и
общаться с ними нужно напрямую:
# гоиСе а<3й пес 192.168.1.0 192.168.1.1 пеШазк 255.255.255.0 0
А с машинами с адресами 192.168.2.* будем разговаривать через е(Ы:
# гоике а<М пег. 192.168.2.0 192.168.2.1 пеШазк 255.2.55.255.0 0
Последний аргумент команды гои ее — это метрика. Ее можно понимать
как «расстояние до шлюза назначения» или «сколько пересадок между
шлюзами придется сделать пакету по пути туда и обратно». Т.к. адреса
192.168.1.1 и 192.168.2.1 являются нашими собственными адресами, то
это расстояние равно нулю.
Сетевые пакеты для 1Р-адресов, которые не лежат в нашей локальной
сети, будем отправлять на машину 192.168.1.11, а она сама будет разби-
раться, что с ними делать:
# гонге айй <1еГаи1с 192.168.1.11 1
Таким образом мы объявили маршрут по умолчанию со значением ме-
трики, равным 1.
Не забудьте только добавить вызовы команды гайке в загрузочный
сценарий, потому что при перезагрузке правила маршрутизации ядра
теряются.
Забегая несколько вперед, замечу, что такой статический маршрут
представляет собой обычное правило перенаправления трафика,
поэтому его можно реализовать и средствами пакетного фильтра
1РТаЫе8:
# тркаЫев ~Р РОЙЖНО ЖОР
♦ кркаЫев -А ГОВИАКО -е 192.168.1.0/24 -й 192.168.2.0/24 -д АССЕРТ
# АрЬаЫев “А РОВИАКО -з 192.168.2.0/24 -с! 192-168.1-0/24 -1 АССЕРТ
А вот белее сложный пример, приведенный в документации по 1РТаЫея.
Пусть у нас имеется одно-единственное соединение с Интернетом и мы
не хотим, чтобы кто-либо вошел в нашу сеть извне:
# # Загрузим модули для отслеживания соединений
# (не нужно, если они встроены в ядро)
# 1пзтоа 1р_соппЬкж:к
# Хпепюй 1р_.соппЬх'аск_Еир
О Создадим цепь Ыоск, которая будет блокировать
# соединения извне.
# 1рг.аЫев ~Ы Ыоск
II ХрСаЫез -А Ыоск -т ЗСаСе --зСа&е ЕЗТАВЫБНЕП.КЕЬАТЕП
-3 АССЕРТ
# 1рбаЫев -А Ыоск -т нкабе —;йСаСе КЕИ -1 ! рррО АССЕРТ
# ХрбаЫез -А Ыоск -д ОПОР
О Весь входящий и маршрутизированный трафик будет
# проходить через Ыоск
И трбаЫез -А ТЫРИТ -] Ыоск
# трСаЫее -А ЕОКИАНЙ ~з Ыоск
19.2.2. Демон да1еб — правильный выбор
В последнее время демон ^а<ед используется чаще, чем стандартный
гтИей. Объясняется это тем, что §а1ес! более гибок в конфигурировании
и обладает большими возможностями, в частности, им поддерживаются
протоколы К1Р-2 и ОЗЕР.
Программа ца1её была разработана группой американских университе-
тов для работы сети МЕ8ИЕТ. Она позволяет организовать многофунк-
циональный шлюз, обслуживающий как внутреннюю, так и внешнюю
маршрутизацию. На данный момент }>а1е<1 поддерживает следующие
протоколы маршрутизации:
• ШР версий 1 и 2
* НЕЫ,О
• О8РЕ версии 2
♦ БОР версии 2
♦ ВОР версии 2, 3 и 4.
Таблица 19.1 поможет вам сравнить возможности демонов гоикеб и
$»а1ей.
Протоколы, поддерживаемые да(еД и тои1ес!
Таблица 19.1
Демон Протоколы внутренних маршрутизаторов Протоколы внешних маршрутизаторов
ШР нено О5РР вор ЕВР
гои!е<1 VI - - - *
дачей, версий 2 VI + - VI +
да^ей, версия 3 VI ,У2 4* У2 У2,УЗ +
Рассмотрим классическое подключение локальной сети к Интернету.
Пусть адрес нашей локальной сети 143.100.100Д а на шлюзе установле-
ны две сетевые платы с 1Р-адресами 143.100.100.1 и 143.100.200.1. Пусть
в нашей сети есть машина с 1Р-адресом 143.100.100.5, на которой также
установлен ^а!ей. Настроим &а1ей сначала на этой рабочей станции, а
потом — на сервере. Для настройки может использоваться утилита ^йс,
поставляемая вместе с самим ^а1ей.
Настройка ^а!ей осуществляется путем редактирования файла конфигу-
рации /еСс/даСей. сопЕ. Содержимое этого файла для рабочей станции
приведено в листинге 19.1, а для сервера — в листинге 19.2.
Листинг 19.1. Файл конфигурации /е<с/да1ей.сопТ для рабочей станции
# эф© 1р-адр»е рабочей станции
гпсегЕасе 143.100.100.5 райвтУе;
# используем протокол Й1Р (йоиЬе Хп^ете! РгоЬосо!)
г!р уез;
Листинг 19.2. Файл конфигурации /е1с/даГес1.согИ для сервера
# Описываем интерфейсы и протокол
1пСегСасе 143.100.100.1 развое;
1пЬегЕасе. 143.100.200.1 развое;
г!р уев,-
ехрогС ргоЬо г!р 1пСегГасе 143.100.100.1
рго&о <31гесЕ
{
аппоипсе .143.100.200.0 те1г1с 0 ;
} ;
} ;
ехрог1 ргоЬо г!р 1пЬегГасе 143.100.200.1
{
ргоЬо г!р 1пЪегСасе 143.100.100.1
{
аппоипсе а!1 ,*
} ;
) ;
Первая директива ехрог! объявляет подсеть 143.100.100.0 (наша сеть)
через интерфейс 143.100.100.1, который объявляется шлюзом в данную
подсеть, то есть считается, что интерфейс 143.100.100.1 принадлежит узлу,
входящему в эту сеть. Директива рго1о й>гес1 говорит о том, что пакеты
для подсети нужно посылать непосредственно на интерфейс, а нулевая
метрика означает, что интерфейс стоит на шлюзе в подсеть.
Вторая директива ехрог! сообщает всем узлам подсети через интерфейс
143.100.200.1 все маршруты, которые данный шлюз получает из подсети
143.100.100.0 через интерфейс 143.100.100.1.
При написании директив ехроК внешняя конструкция всегда определяет
интерфейс, через который сообщается информация, а внутренняя — ис-
точник, через который эту информацию будет получать &а1е<1.
Рассмотрим пример из документации по ^а(ей, в котором нашу сеть через
подсеть подключают к Интернету (листинг 19.3).
Листинг 19,3. Подключение через подсеть
г!р уев;
ехрогс ргосо г!р тпЪегГасе 136.66.12.3 гаеРгхс 3
{
ргоЬо г!р тпЬег^асе 136.66,1,5
аппоипсе а11 ,*
} ;
} ;
ехрогЬ ргоСо г!р тпЬег^асе 136,66.1.5
{
ртоСо гтр 1пЬег^асе 136.66.12.3
{
аппоипсе 0.0.0.0 ;
} ;
} ;
Первая директива ехрогС говорит о том, что §акт1 получает все, что
передается в подсеть, связывающую данную сеть с Интернетом, через
интерфейс 136.66.12.3 (речь идет о маршрутах, а не о самих данных).
Вторая директива ехроП определяет место назначения — куда по умолча-
нию нужно отправлять информацию из сети, чтобы она достигла адресата,
который расположен за пределами локальной сети. Адрес 0.0.0.0, соот-
ветствующий любой машине за интерфейсом 136.66.12.3, определяется
через интерфейс 136.66.1.5 для всей локальной сети.
После настройки нужно перезапустить:
# зегузсе даСе<3 гевСагС
19.3. Расширенные средства
маршрутизации. Комплекс 1ргои1е2
19.3.1. Пакет 1ргои1е2
Начиная с версии ядра 2.2, сетевая подсистема 1лпих была значительно
переработана, в нее было добавлено много новых возможностей — управ-
ление трафиком, маршрутизация на основе правил и т.п. Доступ к этим
возможностям предоставляется пакетом |ргои1е2, входящим в состав
большинства современных дистрибутивов.
В случае необходимости можно скачать этот пакет с сайта
ССр: / /ЁЕр. дпг. ас. ги. /хр-гои^Дпд.
19.3.2. Утилита !р
Утилита 1р. входящая в состав пакета 1ргоЩе2, объединяет в себе все воз-
можности команд ИсопГщ, агр и гов1е. Формат ее вызова такой:
1р [ключи]' объект [ команда [аргументы команды] ]
Ключи можно указывать следующие:
♦ -я — вывод статистической информации;
♦ ЧГ— выбор протокола:
♦ -Г ше1 — протокол 1Ру4;
♦ -€ шеТб — протокол 1Ру6;
♦ -( 1шк — сетевое устройство;
♦ -г — разрешать 1Р-адреса в имена узлов;
♦ -V — печать версии программы.
Аргумент Объект позволяет выбрать объект, с которым будем работать:
♦ адрес — 1Ру4 или 1Ру6 адрес устройства;
♦ Ппк — устройство;
♦ пещИЬоиг — АКР-адрес;
♦ гои1е — маршрутизация;
♦ ги!е — база данных правил маршрутизации;
♦ та<1ге$8 — широковещательный адрес;
♦ 1иппе1 — туннель через 1Р.
Аргумент Команда описывает действие над Объектом:
♦ 1р Ипк — конфигурация сетевого устройства;
♦ 1р Ник зеЧ — изменение параметров сетевого устройства;
• 1р Ник $йон — просмотр параметров сетевого устройства.
При изменении параметров сетевого устройства вы можете задать сле-
дующие аргументы:
• и р — включить;
♦ йоип — выключить;
♦ агр оп или агр оГГ — изменение флага К'ОАКР на устройстве;
♦ йупапнс оп или (ёупапнс оГГ — изменяет флаг ПУКАМ1С на устрой-
стве;
• шиШсаа! оп или тпИёсав! оГГ — изменяет флаг МПЕПСА8Т на
устройстве;
♦ пате — изменяет имя устройства;
♦ пНи < Числа > — изменяет значение МТ 17 на устройстве;
♦ аййгеяя < Адрес > — изменяет адрес на устройстве;
♦ Ьгоасёсак! <Адрес> ~ изменяет широковещательный адрес на
устройстве.
15.3.3. Просмотр параметров сетевого устройства
Команду 1р Нпк $Ном лучше всего рассматривать на примерах. Для по-
лучения информации о состоянии устройства егЪО введите команду;
# 1р Нп.к 1.в еСЪО
еСИО: тки 1500 дй1ес сЬд д1еп 100
Ипк/еЫ1ег 00:44 :67 :91;-31: 1Й Ьгб 1ЫЕ: 1ЫЫ1:11
Получить статистику устройства еЬИО можно командой:
#1р -н Илк 1а йеу
2: ©1110: шёл 1500 дсИзс сЪд д1еп 100
Ипк/есИег 00:44:67 :91:31 Ьгс! 11:11:11:11:11:11
Й.Х: ЬуСез раскеСз еггогз дгорре<3 оуёггип тсаэС
хххххххх хххххх 0000
ТХ: Ьу1ез раскеСв еггог» йгоррей саггтег соИвпз
хххххххх хххххх 0 0 0 132934
Вместо хххххххх хххххх вы увидите количество принятых(ЕХ)/передан-
ных(ТХ) байтов и пакетов.
15.3.4. Операции над адресами: команда 1р асШгевв
Команда ёр асШгеза управляет адресами на устройстве. Объект для нее —
это 1Ру4 или П’у6 адрес. Эта команда показывает адреса и их свойства, а
также добавляет новые адреса.
Чтобы добавить адрес 192.168.0.1/24 с маской подсети 255.255.255.0 со
стандартным широковещательным адресом и именем еШОтАНав, введите
команду
й хр асИг айб 192.168.0.1/24 Ъгс! +:йеу екпО 1аЬе1 есИ0:А11ак
Используются еще следующие варианты команды:
1р жШгезд Йе1е1е предназначена для удаления адресов. Для удаления
адреса 192.168.0.1/24 с устройства е1Ь0 введите команду 1р аййг йе1
192.168.0.1/24 йву екЬО.
1р шШгевз яЬои' выводит информацию об адресе.
19.3.5. Управление таблицей маршрутизации
Команда 1р гоиГе управляет таблицей маршрутизации:
р гои1е абб — добавить новый маршрут;
1р гонге сНап&е ~ изменить маршрут;
1р гоЩе гер1асе — заменить маршрут.
Добавим маршрут к сети 192.168.0.0/24 через 192.168.1.1:
# 1р гонке абй 192.168.0.0/24 у!а 192.168.1.1
19.3.6. Динамическая маршрутизация
Команда 1р гшйе позволяет добавить динамический маршрут; шлюз будет
выбираться в зависимости от текущей нагрузки на него. Всегда будет вы-
бираться шлюз с минимальной нагрузкой.
Пусть у нас есть два устройства — рррО и ррр1. Маршрут по умолчанию —
через устройство рррО, но если этот маршрут недоступен, будет исполь-
зоваться ррр1:
# 1р гонке айв йеканИ эсере д.1оЬа1 пехкИор \
с!еу рррО пех/Ьор с!еу ррр!
Для удаления маршрута используйте команду ф гоп1е Йе1е1е:
# 1р гонке ве1 веканХк зсоре д!оЬа1 пехкЬор \
0 <1еу рррО пехккюр с1еу ррр!
19.3.7. Управление правилами маршрутизации
Для решения этой задачи предназначена команда 4р ги!е Маршрутизация
производится в зависимости от:
• адреса получателя;
♦ адреса отправителя;
♦ 1Р-протокола;
♦ транспортного протокола.
По умолчанию используются три таблицы правил маршрутизации:
* Еоса! — содержит таблицы для локальных и широковещательных
адресов;
♦ Мат — самая обыкновенная таблица маршрутизации;
• ГМаок — пустая таблица по умолчанию.
Аргументы команды 1р ги!е:
1. адрес отправителя;
2. адрес назначения;
3. имя интерфейса, с которого подучен пакет;
4. метка пакета, которая устанавливается брандмауэром;
5. идентификатор таблицы маршрутизации: им может быть номер или
строка из файла /еЬс/1ргоиСе2/гС_!:аЫее;
6. приоритет таблицы (число).
Вот несколько примеров. Требование пересылать пакеты с сети
192.168.0.0/24 согласно таблице Маги:
# 1р ги!е адд Егот 192.203.80.0/24 СаЫе татп ргто 100
Теперь допустим, что у нас есть два канала в Интернет (два провайдера):
ррр! с адресом 193.168.99.99, который связан с 193.168.99.100, и ррр2 с
адресом 193.168.100.99, связанныйё 195.1.1.1. Пользователь капоу хочет,
чтобы мы его пакеты отправляли через ррр2 (второго провайдера):
# есИо 200 туапоу >> /еСс/1рго.иёе2/гЬ_ЬаЫе8
# 1р ги1е ада ^гот 192.168.0.10 СаЫе туапоу
# 1р ги!е
0: ^гот а11 1оокир 1оса.1
32765; ?гот 192.168.0.10 1оокцр тузлоу
32766: С гот а!1 1оокир та!п
32767: 1гот а!1 1оокир деСаиЗЛ
Теперь для этого пользователя назначим маршрут по умолчанию и очи-
стим кэш-таблины маршрутизации, чтобы наши изменения вступили в
силу:
# 1р гоике ада ЙеЕаи1С и!а 195.1.1.1 деу ррр2 ГаЫе туэпоу
# 1р гоиЬе НизН сасИе
Рассмотрим еще один практический пример. Направим весь трафик на
порт 21 через устройство егЫ:
# ХрСаЫез -А РК8Й00Т1Ж -I еСЕО -С тапдХе -р Сер —драге
21 -д МАКК --кеС-тагк 2
Теперь нужно создать правила для помеченных пакетов
# есЬо 202 21.РЫ >> /еСс/ 1ргоиГе2/гГ._СаЫев
4 1р ги.1е айй Хвдпагк 2 ЬаЫе 21.СЫ
# 1р гоцЬе аа<2 ДегаиХЕ уха 192.168.0.10 йеу еЬИХ СаЪХе
21. ЬЫ
# 1р гоиХе Е1цйИ сасЪе
19.4. Что такое брандмауэр
Брандмауэр (межсетевой экран, бастион, Пге^аП) — это компонент систе-
мы, обеспечивающий защиту сети от несанкционированного доступа.
Как известно, весь трафик в сети состоит из пакетов. Каждый пакет
состоит из двух частей; заголовка и тела. В заголовке пакета находит-
ся информация об источнике, адресате, типе пакета, а также прочая
информация, которая характерна для пакетов определенных типов. В
теле пакета находится собственно передаваемая информация. Так вот,
брандмауэр представляет собой пакетный фильтр: он просматривает за-
головок каждого проходящего через него пакета, а потом решает, что с
этим пакетом делать: принять, игнорировать или отказать с уведомлением
отправителя.
Обычно брандмауэр используется на шлюзах, соединяющих две сети.
Например, на шлюзе между локальной сетью и Интернетом можно запре-
тить передавать или принимать пакеты некоторых категорий, отграничив
таким образом свою хорошо организованную сеть от всемирного хаоса.
Фильтрация пакетов встроена в ядро ОС ХЛпих. в старых дистрибутивах
(ядро 2.2 и ниже) стандартным брандмауэром служит ТРСЬашз. в новых
(ядро 2.4 и выше) — 1РТаЫев. Оба они позволяют защититься от таких
распространенных атак, как пинг смерти, атака на отказ, 1Р-спуфинг,
фрагментация пакетов. Возможности пакетного фильтра П’ТаЫез значи-
тельно шире, чем у 1РСйа1п$, но на практике дополнительные возмож-
ности используются редко — в основном применяются средства, при-
сутствовавшие уже в 1РСйатк Поэтому я начну изложение принципов
и приемов настройки брандмауэра с этого устаревшего фильтра.
19.5. Цепочки правил
Ядро стартует с тремя списками правил: шри1, Гогнагф оЩрЩ. Эти прави-
ла называются ПгелаП-цепочками или просто цепочками. Цепочка — это
набор правил вида «заголовок пакета: действие». Если заголовок пакета
соответствует заголовку, указанному в правиле, выполняется заданное в
правиле действие. Если первое правило к этому пакету неприменимо, то
рассматривается следующее правило в цепочке. Если ни одно правило
не применимо к пакету, то пакет, скорее всего, будет отвергнут. Если
какой-нибудь пакет отвергается, то сообщение об этом протоколируется
службой яу51о§.
Паке!', поступающий извне, сначала проходит предварительную проверку.
Она включает в себя сверку контрольной суммы (не поврежден ли пакет
при пересылке) и «санитарную проверку» (не нарушит ли некорректный
пакет работу кода проверки правил). Поврежденные и некорректные
пакеты отвергаются.
Принятый пакет поступает на входной фильтр (цепочка 1при<). Если
входной фильтр пропускает пакет, то код маршрутизации проверяет адрес
получателя, после чего пакет либо передается локальному процессу,
либо маршрутизируется на другую машину. Пакет, предназначенный для
другой машины, должен пройти через цепочку перенаправления Готагб.
Если правила этой цепочки разрешают пакет, он будет маршрутизирован,
в противном случае — отвергнут. Йакет также будет отвергнут, если ядро
не поддерживает маршрутизации.
Прежде чем пакет выйдет из сетевого интерфейса, он должен пройти
цепочку <)1ПриТ Любая программа может отправить пакет, который будет
направлен в эту цепочку. Если она пропускает пакет, то он попадет в сеть
— станет исходящим пакетом. Отвергнутый пакет не выйдет за пределы
компьютера — он будет уничтожен.
Пакет, предназначенный для интерфейса 1о (обратная петля или шлейфо-
вый интерфейс), сначала проходит выходную цепочку, а потом попадает
во входную цепочку интерфейса 1о. Прохождение пакета через цепочки
правил схематично представлено на рис. 19.1.
Рис. 19.1. Принцип работы пакетного фильтра
19.6.1 РТаЫез — пакетный фильтр
для ядер 2.4.x. и 2.6.x
Фильтр 1РТаЫех, очень похожий на ВРСйашз, называется так потому, что
хранит цепочки правил в таблицах. Главной таблицей, в которой хранятся
правила обработки всех стандартных типов трафика, является таблица
(Шег. Именно с ней мы и будем работать. К стандартным таблицам от-
носятся также:
♦ таблица па! — используется для построения МАТ-преобразова-
телей;
♦ таблица тап^1е — задает типы преобразования некоторых пакетов.
Для просмотра содержимого таблицы служит следующая команда:
1рСаЫ.ев -Ь -I: <имя_табдицы>
19.6.1. Что изменилось в 1РТаЫез
по сравнению с 1РСИа1па
♦ Имена стандартных цепочек ШРСТ, ОСТРСТ и Е'ОКАУАКИ теперь пи-
шутся в верхнем регистре. Имена пользовательских цепочек по соглаше-
нию пишутся строчными буквами и могут иметь длину до 31 символа.
• Действие «отклонить пакет» теперь называется не 1)Е\У. а 1ЖОР.
* Действие МА80 называется МА8О15ЕКАИЕ.
♦ Для перенаправления пакетов на пользовательское устройство исполь-
зуется цель СПЕЦЕ (раньше для этого использовалась опция -о).
• Опция -1 теперь означает входящий интерфейс и работает' только в
цепочках 1МРИТ и ЕОК^АГЮ. Правила в цепочках РОК^АКЛ и
ОСТРИТ, которые использовали опцию -1. следует переписать с ис-
пользованием опции -о.
• Если обнулить встроенную (стандартную) цепочку, то очистятся также
и счетчики политик.
• Правила для протоколов ТСР и ИЛР должны использоваться вместе
с флагами —зонгсе-роП и --с1е$ипа1юп-рог1 (-зрой и -<1роП). Эти флаги
должны использоваться только с указанием протокола, шпример, -р 1ср.
♦ Опция -у теперь называется ~«уп и должна указываться после флага -р.
♦ Действия КЕЭЕСТ и ИОО реализованы отдельными модулями ядра.
19.6.2. Настройка ядра 1лпих для поддержки 1РТаЫеа
Новые параметры конфигурации ядра, включающие поддержку 1РТаЫе$,
я представил в таблице 19.3. Возможно, в вашем дистрибутиве некоторые
из них отключены, тогда вам придется пересобрать ядро. Следующая
глава подробно рассказывает о том, как это сделать.
Параметры конфигурации адэа Таблица 19.3
Параметр Назначение
СОМНО„1Р_Ь1МРТАВЕЕ8 Необходим для работы 1РТаЫез, Не включив этот параметр, вы вообще не сможете использовать 1РТаЫаз
СОМРЮ^РАСКЕТ Позволяет использовать, программы, которые работают непосредственно с сетевым устройством. Примером такой программы может послужить (срсЫтр
СОМРЮМЕГЯ1ТЕЙ Включите этот параметр, вели вы собираетесь использовать ваш компьютер В качестве шлюза.
СОЫПО 1РМРСОЫМТЯАСК Позволяет отслеживать соединения. Этот параметр необходим для работы функций МАТ или |Р-маскарадинга. На компьютере-шлюзе включите этот параметр
соппа!Р.ирОТР Из-за большого количества ГГР-эапросоа модуль 1Р ЧР СОМИТНАСК не в состоянии проследить все РТР-соедине- ния, поэтому в помощь ему добавлен модуль СОМГЮ_1Р_ЫР_РТР, отслеживающий только ГГР-соединения. Включите этот параметр, если на вашем компьютере установлен РТР-сереер
сонР1адр_МР_МАТсн_цмп Необязательный параметр. Позволяет ограничить количество пакетов, передаваемых/принимаемых за определенный промежуток времени
СОМР1С!Р_МЕ_МАТСН_МАС Позволяет блокировать ракеты, используя МАС-адрес (а не !Р-адрес)
Все остальные опции, связанные с ХРТаЫея, содержат в своем названии
слово МАТСН, например, СО^П6_П’_ХЕ'_МАТСН_МАВК. Эти опции
разрешают выполнять над пакетами определенные действия.
Фильтр ТРТаЫеч может загружаться как модуль при первом запуске
1р1аЫе$, а может быть встроен в ядро постоянно (что рекомендуется).
Модуль фильтра ПНег называется ф(аЫе_Ш(ег.о.
У вас может быть установлен модуль 1рс1за1П8.о и соответствующий ему
сервис — (рсйайпз. Этот модуль несовместим с 1р(аЫе$, поэтому вы долж-
ны выбрать, какой из них вы будете использовать.
19.6.3. Первичная настройке 1РТаЫез.
Задание политики по умолчанию
Если к пакету не может быть применено ни одно правило из стандартной
цепочки, то судьбу этого пакета определяет политика цепочки действие
по умолчанию. Значением политики может быть либо АССЕРТ (принять),
либо ОЯОР (отклонить), либо КЕ1ЕСТ (отклонить с уведомлением ис-
точника). Первоначально встроенные цепочки не содержат ни одного
правила, а политикой имеют АССЕРТ, поэтому первое, что нужно сде-
лать, — это установить в целях безопасности действие ОНОР.
# трЬаЫев ~Р 1НРОТ ШЮР
# грГа.Ыеэ -Р ООТРОТ 1Ж0Р
# 1рГ_аЫез -Р РОКИАКО ПР.ОР
19,6.4. Действия над цепочками
Рекомендуется создавать отдельные цепочки для различных объектов
фильтрации. Это позволяет логически группировать правила. Для созда-
ния новой цепочки используется опция -И, за которой следует имя новой
цепочки (напоминаю, что имена пользовательских цепочек пишутся
строчными буквами):
1рСаЫез -К имя^цепочки
Ключи программы 1риЫея, предназначенные для манипуляций с це-
почками и правилами в них, точно такие же, как у программы 1рсНа!п$
(таблица 19.2).
19.6.5. Правила фильтрации
Задание правил фильтрации 1РТаЫеа похоже на задание правил в
1РСЬа1П‘>. Для создания правила используется опция --аррепс! (или -А).
После этой опции указывается имя цепочки и критерий выбора пакетов
в этой цепочке. Затем указывается опция --фнпр (или -]), значением ко-
торой служит действие (АССЕРТ, ИК ОР и т.п.):
1рЪаЫев -А ЮТОТ критерий_выбора действие
В качестве критерия выбора обычно указываются либо порты, либо 1Р-
адреса, либо МАС-адрес. По этим параметрам и будет «вылавливаться»
пакеты из цепочки. Можно задать сразу несколько критериев выбора,
перечислив их друг за другом.
Фильтрация по портам, 1Р-адресу и МАС-адресу в 1РТаЫе$ задается с
помощью следующих критериев выбора:
• -р протокол — задает протокол, по которому будет производиться
отбор пакетов. Может принимать значение а!1, что означает «все про-
токолы»;
♦ -я адрес (или -яоигсе адрес) — задает исходный 1Р-адрес, по которо-
му будет производиться отбор пакетов. В качестве значения может
указываться сетевая маска или порт;
♦ -й адрес (или — беяЦпабоп адрес) — задает 1Р-адрес получателя, по
которому будет производиться отбор пакетов. В качестве значения
может указываться сетевая маска или порт;
♦ -1 интерфейс —’ задает входной интерфейс (е1Ь0, рррО и т.п.), с ко-
торого будет производиться отбор пакетов. Этот критерий работает
только в цепочках ШР1ЛГ и ГОВУУАКО. При задании интерфейса
может использоваться знак «+», означающий «все интерфейсы за-
данного типа». Например, запись ррр-ь означает все интерфейсы ррр
(рррО-рррК);
♦ -о интерфейс — задает выходкой интерфейс (е(Ь0, рррО и т.п.), с
которого будет производиться отбор пакетов. Способ задания такой
же, что и для предыдущего случая. Этот критерий работает только в
выходных цепочках (ОШРСТ);
• -хрогТ порт [:порт] (или -аоигсе-рог! порт [:порт]) — задает исходный
порт или диапазон исходных портов, по которому будет производиться
отбор пакетов. Эта опция может использоваться только после опций
-р (ср или -р ибр. Диапазон портов задается номером первого и ко*
нечного портов, разделенных двоеточием;
♦ -брог1 порт [шорт] (или -бех(1па11оп-рог1 порт [:порт]) — задает порт
назначения или диапазон портов назначения, по которому будет про-
изводиться отбор пакетов. Эта опция может использоваться только
после опций -р (ср или -р ибр. Диапазон портов задается номером
первого и конечного портов, разделенных двоеточием;
• - рог1 порт [.порт] — позволяет задать порты, которые будут воспри-
ниматься и как порты источника, и как порты назначения. Исполь-
зование этого критерия возможно только после использования -р (ср
или -р ибр и опции -т тиШрог(;
♦ -т состояние — задает состояние соединения. В качестве состояния
возможно указание большого количества вариантов. За подробной ин-
формацией обращайтесь к справочной системе. Некоторые варианты
использования данного критерия приведены ниже, на практических
примерах;
♦ -тас-яоигсе мак_адрес—задает МАС-алрес, по которому будет про-
изводиться отбор пакетов. Возможно только после использования
критерия -т тас.
Рассмотрим теперь практические примеры. Выделить пакеты, приходящие
от узла с МАС-адресом 11:12:13:14:15:16, можно с помощью правила:
1рг.аЫея -А ШЕШТ --тас-зоигсе 11:12:13:14:15:16 -у .........
Потом вы уже сами определите действие после опции Если же нам
нужно выделить все пакеты, кроме тех, которые присылает узел с этим
МАС-адресом, то нужно использовать символ инверсии «!».
ГРТаЫех позволяет указывать несколько портов (не больше 15) через
запятую, например:
ХрСаЫей -А ТМРТ.7Г -р Г.ср -т ГшХНрогС --зрогс 22,53,80,110 ___
Вместо портов источника вы можете указать порты назначения, используя
опцию -*брог(,
Если вы хотите одновременно указать как порты источника, так и порты
назначения, используйте опцию —рой:
1рГ:.аЫез -А ИРИТ -р Сер -т ппЯПроге --роге 22,53,80,110
19.6.6. Фильтрация по отдельным пользователям
Если ХРСйатв умел отфильтровывать только пакеты, исходящие от
определенного компьютера, то теперь мы можем выделять пакеты от-
дельных пользователей. Для этого предназначены следующие критерии,
которые могут использоваться только для исходящих пакетов в цепочке
ОСТРОТ:
♦ --иИ-оттег СГО — отбор пакетов по СГО пользователя;
* —й^й-ом'пег ОШ — отбор по группе (ОГО);
♦ “ргй-оипег РГО — отбор по идентификатору процесса;
♦ --мй-оииег 8ГО — отбор по идентификатору сеанса.
Например, выделить все пакеты, исходящие от пользователя с ЦГО 500,
можно так:
трСаЫез -А ОУТРПТ -т овдиег --иЮ-омпег 500
Аналогично мы можем ограничивать исходящие пакеты группы или
процесса:
трбаЫев -А ОПТ РУТ одаег --дЮ-оипег О
хрСаЫёз -А сиТРОТ -т сдапег --рХб-оийег 78
Естественно, мы можем сделать это только для исходящих пакетов, по-
скольку «ййе знаем, какой НГО имеет пользователь другой системы:
информация об этом не передается по протоколу ТСР.
ГлЕ>ва 20 НАСТРОЙКА ЯДРА
---МНОГООБРАЗИЕ ЯДЕР ЦМОХ
1»--ЗАЧЕМ НАСТРАИВАТЬ ЯДРО?
ДИНАМИЧЕСКИЕ ПАРАМЕТРЫ ЯДРА
---ЗАГРУЗОЧНЫЕ ПАРАМЕТРЫ ЯДРА
о---КОМПИЛЯЦИЯ ЯДРА
имох полное РУКОВОДСТВО
20.1. Многообразие ядер Моих
В дереве развития ядер 1,ших достаточно много веток. И хотя в большин-
стве случаев придерживаются официальных версий ядер (ветка 2.6.x),
упускать из внимания все остальные ни в коем случае нельзя.
2.6.x
Это главная ветка ядер Глпих на настоящий момент, которую принято
считать официальной и которая поддерживается самим Линусом Торваль-
дсом. Политика этой ветки более либеральна по сравнению с политикой
ветки 2.4: в нее включаются не только исправления багов, но и такие из-
менения, для которых раньше заводили отдельную, экспериментальную,
ветку. Все ядра этой ветки можно найти на сайте ыии. кегле! . огд.
2.4.x
В свое время ядра 2.4.x были основными — они встраивались во все
дистрибутивы. Однако им на смену пришли ядра 2.6.x, и о ядрах клас-
сической ветки не стоило бы говорить, если бы не их исключительная
стабильность (по сравнению с ядрами 2.6.x). И хотя они не обладают
многими достоинствами и качествами 2.6.x, для тех, кому важна стабиль-
ность — они еще служат хорошую службу,
Более того, даже в некоторые современные дистрибутивы еще встраива-
ется эти ядра (например, в 81ас1отаге 10.1). На сегодняшний момент эта
ветка по прежнему очень активно поддерживается, а руководит данным
процессом Марсело Тосатти, очень молодой программист бразильской
компании Сопесбуа.
В качестве обновлений выступают исправления обнаруженных ошибок,
ну и периодически — новые драйвера.
Так же как и ядра 2.6.x, ядра ветки 2,4.x. можно получить на сайте мми.
кегле!.огд.
2-б.х.у
Выше было сказано, что ядра ветки 2.6.x не отличаются особой стабиль-
ностью по сравнению с теми же 2.4.x. Даже были намерения сменить схему
именования новых ядер. Однако этого не произошло, просто создали
дополнительную ветку, которая выступает под грифом «$1аЫе» (то бишь
стабильная), и которая известна под именем 2.6.х.у.
Ведут ветку -МаЫе товарищи по имени Грег Кроа-Хартман и Крис Райт.
В ней появляются только те обновления, которые непосредственно ка-
саются повышения стабильности ядра и решают конкретные проблемы.
Никакие обновления с новыми функциональными возможностями и т.п.
в ядра этой ветки не вносятся.
2.6.х-гпт
Если в предыдущем разделе мы рассмотрели наиболее стабильную ветку
ядер Ыпих поколения 2.6, ветку 2.6.х-пип можно считать наименее ста-
бильной. Она включает в себя все возможные патчи ядра, которые были
выпущены.
Данная ветка является скорее экспериментальной, нежели имеющей
практическое значение. Очень многое к Линусу в его ветку 2.6.x по-
падает именно через фильтр 2.6.Х-ШШ. В частности сейчас в этих ядрах
уже имеется поддержка файловой системы КедаегЗ» которая с легкос-
тью выигрывает все тесты по производительности, и технологии ГЕ18Е
(йИр^/ГикелоигсеЬг^е.пег), реализующей поддержку файловых систем в
пользовательском пространстве.
Ведет ветку Эндрю Мортон, а патчн ветки доступны в двух видах:
♦ «все в одном» — единый мегапатч;
♦ «каждый сам по себе» —архив патчей, которые можно применять по
отдельности.
Скачать их можно по адресу 11Пр://кегпе1.ог§/ра1сШурев/тт.Ьпп1.
2.6.х-тт-|е<Й
Ветка 2.6.х-пнп-]е<Й является, как это можно понять из названия, ответ-
влением 2.6.Х-ПНП. И по сути считается 81аЫе-версией последней. Здесь
собираются самые критичные исправления по различным версиям ядер
2.6.х-пнп.
Доступ к данным патчам можно получить по адресу йр://Йр.с9х.ог§/рнЬ/
Нпнх-кегпе1.
2.6. х-рге и 2.6.x-гс
Ядра этих веток представляют собой предварительные версии ядер,
которые впоследствии должны стать официальными. При этом принято
считать, что ядра -рге являются наиболее «сырыми» и в них могут быть
привнесены существенные изменения, а ядра -гс — уже более-менее
стабильными.
2.6.х-ипу
Автор и ведущий данной ветки, Мэтт Мэколл, поставил себе задачу ми-
нимизировать занимаемые ядром дисковое пространство и объем памяти.
Ав тор утверждает, что его ядро может быть запущено даже на машине
с 2 Мб памяти.
Детально ознакомиться с этим направлением и получить само ядро
можно на сайте Ьпр:№е1еп11с.сот/Нпу.
2.6-х-ас
Эта ветка, ведомая Аланом Коксом, призвана аккумулировать все ис-
правления и патчи, касающиеся в основном драйверов. Кстати говоря
именно это ядро используется в дистрибутивах Рейога Соге.
Проект доступен по адресу Ьир://кегпе1.ог^раГсШурез/ас.Ь1пй
Прочие
Среди прочих следует также отметить:
• 2.6.х-ск — в этой ветке аккумулируются патчи к диспетчерам ввода/
вывода, а также направленные на общее повышение отзывчивости
системы. Адрес: Ьир-.//ск..ко11Уа^.огд/ра1сНе5/2.6.
♦ 2.6.Х-КТ — данная ветка направлена на обеспечение использования
Стих в системах реального времени (мягкого и жесткого), насколько
это вообще возможно сделать применительно к Ыгшх.
20.2. Зачем настраивать ядро?
В главе 7 я уже говорил о том, что в обязанности ядра ОС Еших входит
не только реализация концепций процессов, виртуальной памяти, фай-
ловой системы и тому подобных составляющих ОМХ, но и организация
взаимодействия с оборудованием компьютера. Это взаимодействие
осуществляют драйверы устройств, которые в современных (выше 2.0)
ядрах могут как встраиваться в ядро статически, так и подключаться в
виде модулей.
Хорошо известно, как многочисленно и разнообразно оборудование пер-
сональных компьютеров, на которых и работает ОС Ыпих. Ядро должно
уметь адаптироваться к любой аппаратной среде. Этой цели служат па-
раметры ядра — динамические или сообщаемые ему при загрузке — и
механизм динамического подключения модулей.
Производители дистрибутивов поставляют ядро в некоторой базовой
конфигурации, работающей на множестве вариантов оборудования, но
не оптимизированной ни под один из них. Переконфигурировав ядро
именно под свою аппаратную среду и задачи, можно существенно повы-
сить производительность и увеличить надежность системы.
В этой главе я рассмотрю три основных способа настройки ядра:
* модификация динамических параметров ядра через псевдофайловую
систему /ргос;
» использование загрузчика для передачи ядру параметров на этапе
начальной загрузки;
* пересборка ядра из исходных кодов.
20.3. Динамические параметры ядра
Файлы в каталоге /ргос — это на самом деле информационные каналы,
реализующие интерфейс между ядром и прикладными программами.
Они разработаны для повышения гибкости ядра, позволяя системному
администратору корректировать его поведение «на лету», без переза-
грузки. Файловая система ргосГя называется виртуальной, потому что в
действительности это карта работающей системы в иерархическом виде,
создаваемая ядром и присоединяемая к обычной файловой системе. Не-
которые команды (например, рх) извлекают информацию о состоянии
системы, не прибегая к системным вызовам, а читая непосредственно
из /ргос.
Хотя часть виртуальных файлов содержит текстовые данные, для их
просмотра и изменения обычный А8СП~редактор неприменим: ведь они
мало того что не существуют физически, так еще и ядро может в любое
время внести в них изменения. Читать такие файлы нужно командой са1.
а записывать — перенаправляя вывод команды еско. Например, чтобы
увидеть максимальное количество файлов, которые можно открыть в
одном процессе, введите команду
$ саЬ /ргос/зуз/Ез/ЕПе-тах
Большинство параметров ядра, предназначенных для динамической
настройки на работающей системе, представлены файлами в каталоге
/ргос/вув. Эти файлы доступны для записи суперпользователю. На-
пример, если у вас обычный домашний компьютер, подключенный к Ин-
тернету по или локальной сети, то производительность сети можно
повысить, выключив некоторые параметры:
# есИо "О" > /р.гос/зун/пеС/1ру4/еср_Баск
# есИо "О" > /ргос/аук/пеС/ 1ру4/ьср-ХйпевЬатрв
Особый интерес с точки зрения повышения производительности систе-
мы представляет коэффициент подкачки, находящийся в псевдофайле
/ргос/вуе/чт/зиарртпевз. Этот коэффициент, значение которого
может быть от 0 до 100, указывает ядру, как часто следует выгружать
страницы памяти на диск (сводить). Высокий коэффициент подкачки
уместен в том случае, если вы работаете с несколькими громоздкими при-
ложениями и переключаетесь между ними нечасто: каждое приложение
будет работать быстрее, но переключение займет больше времени, ведь
приложение, которое вы оставили без внимания на несколько минут,
давно выгружено в своп-раздел. Например, если вы дизайнер и с утра
до вечера не выходите из СИМР. то установите значение коэффициента
равным 100:
# есЬо "100" > /ргос/зув/шп/зиаррхпене
Производительность вашего основного приложения (СИМР) станет макси-
мальной. Если же вы целый день работаете с небольшими программками,
между которыми часто переключаетесь, то установите коэффициент под-
качки около 20. Значение по умолчанию равно 70. Возможно, вам больше
всего подойдет именно это значение.
Значения динамических параметров ядра при перезагрузке не сохра-
няются. Чтобы сделать их постоянными, нужно вписать строки вида
<параметр> = <зкачение> в файл /епс/зузсЫ. сопС, откуда их в ходе
начальной загрузки прочитает утилита жухс/Л
Имя параметра — это имя виртуального файла относительно каталога
/ргос/куа, в котором символ слэша заменяется наточку: ут.5\саррте88.
Команда зузсЪ! -а выводит список всех параметров, доступных для
изменения.
20.4. Загрузочные параметры ядра
Полное описание параметров, которые можно передать ядру в ходе
начальной загрузки, занимает достаточно много места, поэтому в этом
параграфе я рассмотрю только основные из них. За более подробным их
описанием вам следует обратиться к документу Воо1Рготр1-НОУ/ТО или
к справочной системе (таи Ьоограгат). Большинство этих параметров
предназначено для того, чтобы сообщить ядру характеристики устройств,
которые оно не может или не должно определить само.
Если ядро загружается средствами ВЮ8 (например, с дискеты), то пере-
дать ему параметры невозможно: нужно использовать какой-либо загруз-
чик Ыпих. В главе 9 описано применение диспетчеров загрузки ЕНО и
СВиВ, то есть вы уже знаете, как указывать параметры в командной
строке загрузчика или в его конфигурационном файле. Осталось разо-
браться с тем, какие это могут быть параметры.
Напоминаю, что синтаксис строки параметров следующий:
имя[=эначение11 [,значение2...] [имя2{=значение2.1] [, значение2.2...1 ]
Значения разделяются запятой без пробелов, а параметры — пробелами.
Пример строки параметров:
.^оо^: = /<ЗеV/^1йа1 еСйег=9,0x360, ОхйОООО , 0х(34000 , еЬЪО
20.4.1. Параметры корневой фвйловой системы
♦ го<Н=устройство: указывает устройство, на котором находится корне-
вая файловая система. В качестве устройства допустимо указывать:
скс/ЪскХ ... /<к'у/1кк1Х — для ГОЕ-дисков;
/с1еу/ьс1аМ ... /Зеу/мкХ — для 8С81-дисков;
/Зеу/хбаЫ ... /Йеу/хбЫЧ — ;тля ХТ-совместамых дисков;
/беу/ШМ — флоппи-дисковод, где Х!~0 соответствует
диску А;, а Ы~1 — диску В:
/беу/пГк — псевдоустройство, указывающее ядру,
что нужно загружаться по сети;
♦ го: требует монтировать корневую файловую систему в режиме «толь-
ко чтение». Используется по умолчанию;
♦ ги-: задает монтирование корневой файловой системы в режиме «чте-
ние/занись». При использовании этого параметра нельзя запускать
программы типа^сЛ. Перед запуском программы /зек нужно пере-
монтировать корневую файловую систему в режиме го.
20.4.2. Объем памяти
Иногда нужно указать объем ОЗУ, отличный от того, который имеется
на самом деле. Например, у вас чипсет 1п1е1 810 с интегрированной
видеоплатой, тогда вам нужно указать объем ОЗУ на 1 Мб меньше (а
иногда даже на 2 Мб). Это связано с аппаратной особенностью чипсе-
та. Более подробно об этом вы можете узнать на сайте Компании 1п1е1
(иии. 1пЬе1. сот).
Объем установленной памяти можно указать с помощью параметра
теги:
тет= <число>
Число определяет объем памяти, установленной в компьютере, например,
тет = 16384К или тет = 16М.
20.4.3. Управление ЯАМО18К
При создании загрузочных дискет для ОС Ыпих необходимо, чтобы на
эти дискеты было помещено нужное программное обеспечение и чтобы
для этого программного обеспечения хватило места. Обычно посту-
пают следующим образом; создают сжатый архив всего необходимого
программного обеспечения и помещают его на загрузочный диск. При
загрузке системы в памяти создается виртуальный диск, на который это
программное обеспечение распаковывается и записывается. Этот вирту-
альный диск называется ВАМ-диском.
Ядро не может быть включено в сжатый образ файловой системы ВАМ-
диска, так как оно должно быть записано начиная с нулевого сектора,
чтобы В1О8 могло загрузить загрузочный сектор и ядро могло продол-
жить загрузку.
Если вы используете несжатый образ ВАМ-диска. то ядро может быть
частью образа файловой системы. Такая дискета может быть загружена
с помощью ЫЬО.
В том случае, если вы для загрузки используете две дискеты (первая
содержит ядро — Ьоо1, на второй находится образ файловой системы —
гоог), образ файловой системы должен начинаться с нулевого сектора
(смещение = 0).
Описываемые далее параметры задают режимы работы с КАМ-диском.
♦ 1оа<1_гапн1Вк-.\': указывает, использовать ВАМ-диск (К=1) или нет
(Н=0). Значение по умолчанию равно 0.
♦ рготр(_гат(1Вк=.\': сообщает ядру, нужно ж запрашивать дискету,
которая содержит образ файловой системы (Ы =4). Значение по умол-
чанию равно 1 (запрашивать).
• гатбВк .чТагТ = <смеодение> : разрешает ядру находиться на дискете
вместе со сжатым образом ВАМ-диска и указывает номер блока, с
которого начинается ВАМ-диск.
• гаппЙ8к_$гге=М: указывает максимальный размер (в Кб) ВАМ-диска.
Начиная с версии ядра 1,3.48, память под виртуальный диск выделя-
ется динамически. Значение по умолчанию равно 4096; (4 Мб).
♦ потИпЕ загружаться без использования йн(гс1 (см. п. 9.1.1.1).
20.4.4. Управление планировщиком ввода/вывода
Каждой программе, работающей под Опих. время от времени необходим
доступ к диску. Ядро Ыпих решает, когда именно программа получит
этот доступ. Часть ядра, отвечающая за планирование ввода/вывода, на-
зывается планировщиком ввода/вывода. Параметр ектаСрг предназначен
для указания планировщику алгоритма работы. Существует четыре раз-
личных алгоритма работы планировщика:
♦ Режим по умолчанию (гюор) — для настольного компьютера он не
подходит, и мы его даже рассматривать не будем.
♦ Упреждающее планирование (АпИараЮгу 5сНе4иИп^) — при чтении
программой данных с диска ядро пытается предугадать, какие данные
программа будет читать при следующей операции чтения. Если ядро
правильно угадало «мысли» программы, этот алгоритм позволяет
существенно повысить производительность системы. Кроме всего
прочего, эффективность этого алгоритма сильно зависит и от логики
программы.
е].еуаЬог=ав
♦ «Справедливая» очередь (Сотр1е1е Гептен — равные права
для всех программ. Ядро равномерно планирует операции ввода/вы-
вода для каждой программы, здесь нет каких-либо программ, которые
могут монополизировать доступ к диску. Если несколько программ
одновременно запросят доступ к диску, все программы получат ответ,
Данный метод в некоторых случаях позволяет повысить производи-
тельность системы, а в других, наоборот, снижает общую производи-
тельность — все зависит от набора задач, решаемых на конкретной
системе.
е.1.еуаЬог~с^д
• ВеаШше-планнрование или планирование крайних сроков (ОеасНте
(^иешп#) — все приложения, запросившие доступ к диску, ставятся
в очередь. Из очереди извлекается одна программа, которая и полу-
чает практически монопольный доступ к диску. Пока эта программа
работают, все остальные ожидают в очереди. По истечении опреде-
ленного времени планировщик переводит эту программу в состояние
ожидания и переключается на другую программу — следующую в
очереди. Теперь вторая программа получает доминирующий доступ
к диску. Потом третья, четвертая и т.д. Этот метод хорош для сервера
баз данных, но не для рабочей станции.
е.1еуаГог=<аеааИпе
У каждого алгоритма есть свои преимущества и недостатки, Но только
два из них подходят для настольного компьютера (рабочей станции) —
второй и третий. В Интернете вы можете найти данные о том, что для
настольного компьютера более подходит второй алгоритм.
Для выбора нужного режима перезагрузите компьютер и при загрузке
ядра Ьпшх передайте ему параметр е1ета1ог с одним из перечисленных
выше значений.
20.4.5. Другие параметры ядра
• веЬи^: сообщения ядра (важные и не очень) передаются через
функцию рпп1к(). Если сообщение очень важно, то его копия будет
передана на консоль, а также функции Ыо$д() для его регистрации
на жестком диске. Сообщения передаются на консоль, потому что
иногда невозможно запротоколировать сообщение на жестком диске
(например, отказ самого диска). Предел того, что будет отображать-
ся на консоли, задается переменной соп5о1е_1о§1еуе1. По умолчанию
на консоли отображается все, что выше уровня ОГ.ВСО (7). Список
уровней можно найти в файле кегпе1.й.
• 1пй=/путь: по умолчанию ядро пытается запустить демон 1пН, который
продолжит загрузку согласно стартовым сценариям. Если программа
тИ повреждена, то для аварийно-восстановительньЕХ работ вы можете
запустить вместо нее командный интерпретатор (1пй-/Ъ1п^Ь). в ко-
тором и будете ремонтировать систему.
♦ по-йй: процессоры 386 (и выше) имеют инструкцию ИК, которая
переводит процессор в режим пониженного потребления энергии,
где он ожидает прерывания от устройства. Параметр по-ЬН отклю-
чает использование инструкции ЬИ. Существование этого параметра
обусловлено тем, что некоторые чипы 48617Х-100 имеют проблемы с
этой инструкцией. Кроме того, параметр по-НИ позволяет использо-
вать Гдпих на бракованных процессорах.
♦ по387: отключает использование математического сопроцессора.
• по-5сгоП: отключает функцию прокрутки экрана во время загрузки.
♦ геЬоо1=<режим>: параметр, задающий режим перезагрузки. Воз-
можные значения: со!й и я/агш, то есть «холодная» или «горячая»
перезагрузка. Поддерживается ядрами версии 2.0 и выше.
♦ !Й1щ1е: загружает систему в однопользовательском режиме — напри-
мер, для ремонта.
20.5. Компиляция ядра
20.5.1. Зачем обновлять ядро?
1лпих развивается быстрее любой другой операционной системы. Ре-
гулярно появляются новые версии ядра, реализующие новые функции.
Например, едва успел выйти дистрибутив Гебога Соге 4 на ядре 2.6.11, а
на ими. кегле! .огд уже лежит стабильная версия 2.6.12.2. Еще чаще
появляются драйверы к новым устройствам и заплатки с исправлением
обнаруженных ошибок (например, прорех в системе зашиты).
Допустим, новое ядро целиком еще можно установить из бинарного КРМ -
пакета (см. п.7.4.2). Но для подключения нового драйвера недостаточно
просто скопировать его в каталог ядра: нужно интегрировать его код в
структуры данных и таблицы ядра, для чего ядро придется строить за-
ново из исходного кода. Исходные коды тем более необходимы для при-
кладывания заплатки (см. п. 7.4.3).
Пакет исходных текстов ядра может быть включен в ваш дистрибу-
тив. Если это не так, скачайте архив с Еср: //СЬр. кегпе! . огд/риЬ/
Ипих/кегле! (его размер 30-40 Мб в зависимости от версии) и распа-
куйте его в тот каталог, в котором будете производить сборку (обычно
/из г / вгс/11пих-сверсия>).
20.5.2. Конфигурирование ядра
Когда вы строите из исходников прикладную программу, первым шагом
сборки обычно бывает выполнение сценария сопГцщге. Ядро тоже нужно
конфигурировать. Его настройки находятся в текстовом файле ,сопЕ1д
в каталоге исходных кодов. Этот файл можно редактировать вручную, но
это крайне неудобно, поэтому предусмотрены диалоговые конфигураторы
(п.7.2.3, рис. 7.2).
Если вы работаете в среде О№ОМЕ, выполните команду таке дсоп ! 1д,
и вы увидите диалоговое окно, в котором можно выбрать нужные функции
и драйверы устройств (У) и отключить ненужные (Ы), а также указать,
как следует включать в ядро выбранные устройства: статически или в
виде модулей (М).
Осталось перечислить модули, доступные для конфигурирования, и дать
рекомендации по их включению и отключению. Я расскажу об этом на
примере современного ядра 2.6. О настройке ядра версии 2.4 рассказано
в третьем издании моей книги «Самоучитель Ейшх», вышедшем в 2004 г.
в издательстве «Наука и Техника», а если вы все еще используете ядро
версии 2.2, то вам нужно первое издание этой книги.
20.5.2.1. Сойе гпаГигПу 1ечеЕ орйопв
Этот раздел позволяет включить в ядро экспериментальные модули, на-
ходящиеся еще в стадии разработки и предназначенные не для широкой
публики, а для тестеров.
20.5.2.2. Сепега! зеХир
ЗирроП Тог радтд оТапопутоия тетогу
Грозно звучит, не так ли? Я сначала даже не понял, что это. Оказывается,
это просто поддержка свопа — своп-устройств и своп-файлов. Настоя-
тельно рекомендуется не отключать эту опцию — сколько бы ни было
оперативной памяти, а своп все равно пригодится.
ЗузТет V1РС
Поддержка средств межпроцессного взаимодействия (1п&гРгосез$ Со-
ттип1саНоп) 8у$1ет V: очередей сообщений, семафоров, разделяемой
памяти и т.д. Отключать не нужно, иначе процессы не смогут «общаться»
друг с другом.
ВЗО Ргосезз АссоипНпд
Учет процессов. С помощью специального системного вызова пользо-
вательская программа может попросить ядро записать в специальный
файл системную информацию: время создания процесса, идентификатор
владельца, командную строку, использование ресурсов, например, памяти
и терминалов и т.д. Чтобы все работало как нужно, не отключайте эту
опцию.
ЗузсЧ зиррогТ
Включает поддержку программы 8у$с(1, позволяющей изменять параме-
тры ядра без перекомпилирования во время загрузки. Поддержка 8узсН
увеличивает размер ядра на 8Кб. Если ядро, которое вы компилируете,
не предназначено для дисков загрузки/восстановления, включите эту
опцию.
Кете! 1од ЬиНег я/ге
Задает размер буфера протокола ядра в зависимости от значения, ука-
занного в программе конфигурирования ядра:
♦ 17 — 128 Кб (по умолчанию)
* 16 — 64 Кб
• 15 — 32 Кб (рекомендуется для 8МР)
♦ 14 — 16 Кб
• 13 —8 Кб
• 12 — 4 Кб.
Кете! .соп&д зиррогТ
Поддержка файлов . сопНд, содержащих конфигурацию ядра.
20.5.2.3. коабаЫе тоби1е виррогГ
Если вы планируете использовать загружаемые модули, включите все
функции. Можно создать компактную версию ядра, которая вообще не
использует модули, при этом поддержка всех необходимых устройств бу-
дет включена непосредственно в ядро. В этом случае можно отключить
все функции в этом разделе.
ЕпаЫе 1оас1аЫе то<1и1е зирроП
Вкл ючить поддержку загружаемых модулей. Рекомендуется не отключать
эту опцию, если вы собираете обычное ядро для настольной системы или
сервера, Если же вы собираете компактное ядро, можно эту опцию вы-
ключить, а все необходимые модули включить в состав ядра.
Мос1и1е ипкзасНпд
Разрешить удаление модулей из ядра. Если эта опция выключена, вы не
сможете удалить модуль из ядра после того, как он был загружен.
ГогсеН тосЩ/е ип!оасИпд
Принудительное удаление. Модуль будет удален из ядра, даже если ка-
кой-то процесс его использует. Такое удаление может быть опасным —
ведь в результате удаления модуля устройства, которое в данный момент
используется процессом, очень велика вероятность потери данных, по-
этому лучше эту опцию не включать. Наоборот, когда вы занимаетесь
программированием модулей, то есть созданием своих модулей, эта оп-
ция очень полезна, поскольку помогает сразу же выгрузить некорректно
работающий модуль.
Мос/и/е Уегз1оптд зиррог1
Экспериментальная поддержка версий модулей. Включение данной опции
позволяет использовать модули, откомпилированные для другой версии
ядра. Нет никакой гарантии, что модуль, откомпилированный под другую
версию ядра, будет работать стабильно с вашей версией, поэтому лучше
выключите эту опцию.
АиТотаНс кегпе! тоди!е 1оасНпд
Обычно некоторые части ядра выполнены в виде модулей ядра. Когда
ядру нужен тот или иной модуль, перед использованием модуля оно
должно загрузить его (команда швтос!). Если данная опция включена,
ядро сможет автоматически загружать необходимые модули. Поэтому
рекомендуется включить эту опцию.
20.5.2.4. Ргосесзог Гуре апО ТеаШгез
Здесь можно указать тип процессора и его функции, например, под-
держка памяти более 1 Гб, МТКК, эмулирование математического со-
процессора.
ЗиЬагскИесТиге 1уре
Тип архитектуры процессора:
♦ РС-сошрабЫе — РС-совместимьш процессор, то есть процессор, ис-
пользующий систему команд х86;
♦ Уоуа§ег (ТЧСВ) — 8МР-архитектура, разработанная компанией МСР
Согр;
• ^Т'М АО — позволяет запускать 1.1 них на архитектуре МИМА (1ВМ/
ЗециегН);
♦ 801 320/540 — графические станции 801.
Ргосеязог /атИу
Эта функция используется для оптимизации работы процессора. Очень
важно правильно указать тип процессора: после того, как я это сделал,
производительность системы повысилась примерно в полтора раза, что
стало заметно при загрузке системы. Если вы укажете тип процессора,
например 486, 586, Репбиш, РРго, ядро не обязательно будет запускаться
на более ранней архитектуре. Так, если вы укажете РепПит, ядро будет
работать на РРго (хотя и медленнее), но нет никакой гарантии, что оно
запустится на 486. В табл. 20.1 приведены типы процессоров, которые
рекомендуются для получения наибольшей производительности.
Типы процессоров Таблица 20.1
Тип Процессоры
386 Процессоры производства АМО/Супх/Ь1е1 386ОХ/ОХ1/51/51С/5Х, Суг|х 4Й601С/ЙС02, ОМС 4865Х-5
186/0x486 АМ0/Супх/1те1/1ВМ 0X4, 4860Х/ПХ2/Е1/5Х/ЗХ2 ДМО/Субх 5x86 ЫехСеп Мх586. 0МС 050 или 053
586/К5/5х86/6х86/6х86МХ Обычные (самые первые) процессоры РепЬит, АМЭ К5. Нй используются инструкции В0Т5С (Неай Т1те бтатр Соип1ег)
Реп:1ит-С1ааз1С Классические процессоры Репвит — вез поддержки ММХ. Используются инструкции К0Т8С
Продолжению табл. 20.1
Тип Процессоры
РепЬот-ММХ Процессоры Репбит споддержкой ММХ
РесИшт Рго Процессоры РепУит Рго/Св1егоп/Реп(|ит II
РепПют !|/Се1егап (рее-Сооре ппше) Процессоры РепЧит II и Са1егап (версия, которая была до Соорегггнпе)
РвгИЮт 111/Се(егоп (Соорегтюе)/ Рептшт III Хлоп Процессоры РелЧит !1| и Св1вгсп (Соорегтте)
Реп!!мт М Мобильная версия процессора РепШт с пониженным энергопотреблением для ноутбуков
РвпЪрт 4Г- Се!егоп (Р4 Ьазей) / Репорт 4 М / Хеоп Процессоры РепЧиш 4, включая версию РепЧот 4 М
Кб,'Кб ||/К? III Процессоры АМО Кб, Кб-11, Кб-111
АТЫ & п/Оцгоп/К7 Процессоры АМР АТЫоп/Оугоп
Орегон/АПМ оп 64/ Няттрг /КЯ 64-разрядные процессоры фирмы АМО
К1ап/Сгиэое Процессоры Вал/Сгисое
(МпСЖр-Сб Процессоры УйпСЫр С6
УИпСЫр 2А/УЛпсК1р-3 Процессоры 1МпСП1р 2АМ1пс1т1р-3
Оуггх 1Ц/СЗ Процессоры 1ВМ Супх Ш/СЗ
В моем случае ядро было оптимизировано под 586/К5, После того, как я
установил Л1111оп/Ьигоп/К7. Еших заработала быстрее (для справки: тогда
у меня был Л МП Пигоп 1.6 ГГц). Выбирайте именно ваш процессор —
ваш классический РеШшт не заработает быстрее и у него не появится
поддержки ММХ, если вы выберете Рер^ит ММХ. Если вы попытаетесь
таким образом ввести систему в заблуждение, она вообще может завис-
нуть, поскольку будет пытаться использовать ММХ-инструкции, которые
не поддерживаются процессором.
Оелел'с хбб зиррог*
Базовая поддержка команд х86.
НРЕТ Птег ЗиррогГ
НРЕТ — это следующее поколение таймеров, пришедшее на смену
классическому таймеру 8254, Просто включите эту опцию. Даже если
ваша В1О8 не поддерживает НРЕТ, будет активизирована поддержка
классического таймера 8254.
ЗуттеЫс тиШ-ргосеззтд зиррогГ
Скорее всего, у вас установлен один процессор. Тогда эту опцию вам
нужно отключить — зачем включать лишний код в ядро? Если же вы
счастливый обладатель мультипроцессорной машины, включите данную
опцию. При включении 8МР укажите правильный тип процессора. Вы
должны указать хотя бы 586. Ядро не запустится, если у вас выбран тип
процессора 486, Также ядро не будет работать, если ваш компьютер осна-
щен процессором РепЙит, а вы установили тип процессора РРго. Если
у вас мультипроцессорная машина, вы должны также включить опцию
Епйапсей Кеа! Типе С1оск 8иррог1. Опция Абтапсеб Ргтег Мапа^атеп!
у вас будет отключена при использовании 8.МР.
РгеетрНЫе кегпе!
Данную опцию следует включить, если вам нужно ядро для Кеа!Т1те-
системы.
коса/ АР1С яиррогТ Гог ип1ргосеззог5
Поддержка внутреннего контроллера прерываний процессора (АДюпсеД
Рго^гаттаЫе 1п1еггир1 СоШгоИег}. Если у вас однопроцессорная система
с процессором, оснащенным АР1С, включите эту опцию. Если ваш про-
цессор не поддерживает АР1С, включение данной опции существенно
снизит производительность системы,
У вас многопроцессорная система? Тогда АР1С будет использоваться по
умолчанию вне зависимости от значения этой опции.
МасЫпе СЬеск ЕхсерПоп
Позволяет процессору сообщать ядру о внутренних проблемах, напри-
мер, о сбое.
ТояЫЬа, ОЕИ1арИор яиррогГ:
Поддержка ноутбуков фирм То5б1Ьа и ЭЕЕЕ.
/йеи/срц/ппсгосойе
Включив эту опцию, вы сможете обновлять микрокод процессоров
Р Рго/ Р II/ Р III/ Р4/ Хеоп с помощью устройства /беу/сри. Для рабо-
ты этой опции нужно включить файловую систему /беу в разделе Ебе
$у$1етз. Информацию о микрокоде вы можете получить по адресу:
НЬср:/ /иии.игЬапп^Сп.огд/т1сгособе. Если вы откомпилировали
эту опцию как модуль, для его загрузки нужно прописать в вашем файле
/е&с/то&ргоЬё. сопС строку:
а11аз сйаг-та^ог-10-18’4 т1.сгособе
/йеу/сри/*/твг
Поддержка регистров М8К.. Может понадобиться в некоторых случаях
для 8МР-систем. Вы можете ее со спокойной совестью выключить или
хотя бы откомпилировать как модуль.
/4еи/сро/*/сршс/
Поддержка информации о процессоре. Рекомендуется включить эту оп-
цию. Загляните в файл /беу/срн/О/сршд — вы узнаете много интересного
о своем первом (0) процессоре.
Н1дЬ Метогу 5иррог(
Поддержка памяти более 1Гб.
Ма1Н ети1аИоп
Включите эту опцию, если вы используете один из следующих процессо-
ров: 3868Х/ОХ/8Е/8ЕС без 80387, 4868Е/8Х/8Х2.
МТЯЯ
В семействе процессоров 1п1е1 Р6 (РепПиш Рго, Репиит Ц и выше) исполь-
зуются специальные регистры — Метогу Туре Кап§е К.е§181егк (МТКК).
Они задействуются для управления доступом процессора к различным
диапазонам памяти. Включение этой опции может существенно повысить
производительность системы, особенно если вы используете видеокарту
РС1 или АИР. Данную возможность поддерживают процессоры и посто-
ронних производителей: Суп'х 6x86, 6х86МХ, МП, АМБ К6-2 (зЩррщ^ 8
и выше), Кб-3, СепГанг С6. Некоторые ВЮ8 устанавливают МТКК для
первого процессора, но отключают для второго. Активизация данной
опции решает также и эту проблему. Если вы не уверены, поддерживает
ли ваш процессор МТК.К, все равно включите эту опцию. Поддержка
МТК.К увеличит объем ядра всего лишь на 3Кб.
20.5.2.5. Рошег МападетегИ ОрНопв
В этом разделе вы найдете все опции, касающиеся управления питани-
ем. В принципе, с опциями Р О'Лег Мапацешеп: разобраться несложно и
самому, в крайнем случае можно все оставить по умолчанию — опции
вполне приемлемы. Но есть одна очень интересная экспериментальная (!)
опция — 8оПмаге 8и$репс! Если она включена, вы можете приостановить
машину, а при следующей загрузке сразу же восстановить систему до того
состояния, в котором она находилась до приостановки. Работает это так:
вы вводите команду или «йвйЗомт -г <время>, система записыва-
ет образ содержимого памяти на своп-раздел (или в своп-файл). Затем,
при загрузке, вы вводите параметр ядра ге^ите:=/аеV/своп-раздел,
и система восстанавливается до исходного состояния. Если вы не ввели
данный параметр, то будет невозможно задействовать своп-раздел, кото-
рый использовался для приостановки системы (создания образа памяти).
Опция Биврепй (о <Няк позволяет записывать образ памяти на диск, а не
только на своп-раздел.
В этом же разделе можно включить опцию Айуапсей Роууег МапацетегИ.
Если вам нужно отключить функцию АРМ во время загрузки, введите в
качестве параметра ядра арт=оЯ.
При возникновении проблем (на старых компьютерах) попробуйте сле-
дующее:
1. Убедитесь, что раздел подкачки включен, а размер его достаточен.
2. Передайте ядру инструкцию по-НН.
3. Попробуйте отключить поддержку сопроцессора (инструкция
по387).
4. Передайте ядру инструкцию Порру-пойша.
5. Убедитесь, что процессор не «разогнан».
6. Установите новый вентилятор для процессора.
Что же касается АРМ, следует обратить внимание на следующие опции
(таблица 20.2):
Опции АРМ Таблица 20.2
Опция Описание
ЕпаЫе РМ а! Ьоо1 Йте Включает АРМ во время загрузки системы. Если эта опция отключена, 8103 не будет управлять питанием устройств, входить в режимы ЗТапбЬу и Зоврепб, а также не будет производить никаких действий в ответ на вызовы процессора СРО Ы1е Если ваш компьютер зависает во время загрузки, выключите эту опцию
Маке СРУ 1Ше сайз игЬеп 1Д1в Во время цикла простоя ядра разрешает вызовы к АРМ. Включение данной опции может привести к зависанию компьютера во время за- грузки! Если компьютер использует несколько процессоров, эта опция игнорируется. Заметьте, речь идет о том, сколько процессоров именно использует компьютер, а не сколько их в нем установлено. Если у вас два процессора, а вы используете только один и поддержка ЗМР у вас отключена, данная опция игнорироваться не будет!
ЕпаЫе сопзо!е Ыапктд изшд АРМ Очищает текстовую консоль (не графическую!) при использовании АРМ. Некоторые ноутбуки могут использовать эту опцию для того, чтобы от- ключить подсветку ГСО-экрана когда активизирован хранитель экрана на одной из виртуальных консолей Цпок.
АТС 5(огв5 Вше 1п СМТ Если ваш аппаратный таймер сохраняет время в формате ОМТ, включи- те эту опцию, в противном случае отключите ее. Если опция выключена, сохраняется локальное время
А!|о« 1пТ0тгр!з биг!пд АРМ В1О5 са||з Обычно прерывания внешних устройств запрещены во время выполне- ния процедур АРМ, В103 некоторых ноутбуков разрешает прерывания внешних устройств, например, 1ВМ ТЫпкРа<± По умолчанию данная опция выключена. Если аы не уверены, не включайте ее
20.5,2.6. ВизОрПопз
В этом разделе описываются опции, касающиеся поддержки различных
шин РС1,15А, МСА. Конфигуратор ядра 2.4 держал их в разделе Сепега!
8е1ир, а сейчас они вынесены в собственный раздел. Отключайте все,
кроме шины РС1 — не думаю, что у вас есть 18А или МСА-устройства.
" Примечание ]
МСА — шина передачи данных, разработанная 1ВМ, которая использовалась в
системах Р51/Р82. Она давно снята с производства, современные устройства с
ней не работают.
РС1 ассезз гпос/е
Данная опция определяет режим доступа к РС1-устройствам. Если значение
этой опции равно В 10.8, значит, Цпнх будет использовать ВЮ8 для опре-
деления РСТ-устройств и их конфигураций. Однако на некоторых старых
материнских платах ВЮ8 не может корректно определить конфигурацию
РС1-устройств. В этом случае нужно выбрать значение О1гес(. и Еших будет
работать с РСГ устройствами напрямую, без ВЮ5. Если вы выберете Ану,
то Еших сначала попытается работать напрямую (так быстрее), а потом,
если напрямую не получится, уже использовать ВЮ8.
20.5.2.7. ЕхесыТаЫе П1е ГоггпаГк
В этом разделе вы сможете включить поддержку различных форматов
исполняемых файлов. Обычно это нужно, если вы хотите запускать в
эмуляторах программы других операционных систем, например, 008-
или \У1пск1'Л-,х-про граммы.
20.5.2.8. 0еч1се йпуегз
В этом разделе находятся опции, касающиеся драйверов устройств. Тут
вы можете определить, какие устройства у вас установлены и какие вы
хотите использовать в дальнейшем. По сравнению с программой на-
стройки ядра 2.4 многие отдельные разделы «переехали» в этот раздел,
например, Рага11е1 рог1 вирроН, МТЬ, РпР вцрроН и т.п.
Метту ТесЬпо!оду Оеу(сез (МТО)
В этом подразделе вы можете включить поддержку МТИ-устройств. Са-
мым ярким примером такого устройства может послужить Йаяй-диск.
РагаНе! рог! зиррог!
Поддержка параллельного портам
РпР яиррог!
Поддержка устройств Р1и§ апб Р1ау.
В1оск с/еу/сед
В этом подразделе вы можете настроить блочные устройства, то есть
такие устройства, обмен данными с которыми выполняется поблочно
(передаются целые блоки информации), а не посимвольно (за одну опе-
рацию ввода/вывода передается один байт). Ярким примером блочных
устройств выступают дисковые накопители — дисковод для гибких дис-
ков, жесткие диски и т.п.
Ыогта/ Лорру сИяк яиррог!
Поддержка обычного дисковода для гибких дисков. Обычно поддержка
данного устройства требуется, но если вы собираете ядро для сервера
или ноутбука, то «флоппик» ему не нужен, поэтому можете эту опцию
выключить.
ХТНагЛ сНзк яиррог!
Поддержка старых жестких дисков, которые устанавливались на компью-
теры типа 1ВМ ХТ. Отключите эту опцию — она вам не нужна, модуль
тоже вам не нужен. Даже если вы где-то и найдете такой диск, вряд ли
вы станете его подключать к современному компьютеру.
Рага11е1 рог! 1ОЕ ЛеуФсе зиррог!
Поддержка ШЕ-устройств, которые подключаются к компьютеру по
параллельному порту. Очень часто к ноутбукам подключаются внешние
ЮЕ-устройства. Было время, когда шины О ЗВ не существовало, тогда был
разработан интерфейс для подключения ГОЕ-устройств по параллельному
порту (по последовательному порту обмен информацией занимает много
времени).
Сотрад 5МАРТ2 зиррог!
Поддержка контроллеров 8МАЯТ2 фирмы Сотрац. Вряд ли этот пара-
метр вам понадобится.
Сотрад ЗтагГАггау 5ххх зиррог!
То же самое, что и предыдущая опция, но здесь включается поддержка
контроллеров 5ххх.
Му1ех ОАС960/ОАС1100 РС1 ПАЮ Соп1го11ег яирроП
Поддержка КАГО-контроллера фирмы Му1ех.
М1сго Метогу ММ5415 ВаПегу Васкед ПАМ зиррог!
(ЕХРЕН1МЕЫТА1.)
Поддержка специальных карт памяти. Честно говоря, я эти карты и в
глаза не видел, и в руках не держал. Если кому-то интересна информация
о них, посетите сайт: ЬКр:/Л?м^.ите1П.соп1/.
ЬоорЬаск с1еУ1се зиррог!
Вот эту опцию я отключать не советую — многие задачи требуют на-
личия устройства обратной петли. Поэтому, если хотите сделать ядро
компактнее, включите эту опцию хотя бы в виде модуля. Модуль будет
называться 1оор.
ЫеМогк Моск йемсе зиррог!
Поддержка сетевых блочных устройств. Просто включите эту опцию в
виде модуля. Модуль называется пМ.
НАМ сНяк зиррог!
Это очень полезная опция, позволяющая часть информации, находящейся
на жестком диске, перенести в оперативную память для ускорения до-
ступа к ней. Особенно данная опция полезна при создании загрузочных
дисков, которые используются для восстановления системы. Если вы
включите эту опцию в виде модуля, он будет называться гс1.
1пШа1 НАМ (Мяк (тИгс!) зиррог!
Инициализирующий КАМ-диск — это КАМ-диск, который загружается
загрузчиком системы (ИЬО, ОКОВ, 1оаШш) и монтируется как корневая
файловая система перед нормальной загрузкой. Он используется для
загрузки модулей перед монтированием нормальной корневой системы.
Включите эту опцию. Если же вы создаете загрузочный диск, то ее от-
ключение недопустимо вообще!
Зиррог/ /ог Сагде В1оск 0еу1сез
Поддержка больших блочных устройств — с размером более 2Т6. От-
ключайте эту опцию — жестких дисков на 2Т6 в ближайшее время в
продаже не предвидится.
АТА/АТАР1/МГМ/НИ. зирроП
В этом подразделе вы можете включить/выключить поддержку АТА-
устройств. Тут уж смотрите сами, Какие устройства у вас есть и какие вы
планируете использовать. Ненужные следует сразу отключать — нечего
память забивать. Что нужно? Обыкновенный привод СО-КОМ есть у
всех. Даже если у вас в данный момент его нет, вы рано или поздно его
подключите к своему компьютеру. Не будете же вы из-за этого переком-
пилировать ядро? Поэтому опция 1пс1ш1е ЮЕ/АТАР1 С1ЖОМ яиррог!
(В1.К_Г)Еу_1Г)ЕСВ) относится к категории нужных. А вот поддержка
8Л1СОП 1та^е сЫрае! совершенно не нужна, хоть и встроена в ядро по
умолчанию. Поддержку всех АТА-устроЙств следует отключить, если у вас
сервер и все устройства — 8С81 (только не забудьте 8С81 включить!)
ЗСЗ/ с/еу/се зиррог/
Поддержка 8С81-устройств. Все комментарии аналогичны предыдущему
пункту — все ненужное отключаем, оставляем самое необходимое. Вот
почему мне нравится Стих — можно явно указать, что мне нужно, а
что — нет. Ни в одной ХУтбоия такое сделать нельзя. Можно, конечно,
удалить всю базу с драйверами, но я же сказал «явно».
ОМ СО-ЯОМ (Муегз (по1 5С51, по/ ЮЕ)
В этом разделе вы можете включить поддержку старых (я бы сказал,
древних) приводов СП-КОМ, но, скорее всего, это вам не нужно, поэтому
смело отключайте целый подраздел — сэкономим место на диске.
МиШ-с/еу/се зирроП (НАЮ ап// СУМ)
Поддержка КАГО-массивов и ЕУМ-томов (Со$1са1 Уо1ите Мапа^ег). Если
планируете использовать КАТО, включите некоторые опции этого раз-
дела. Вы можете указать, какие уровни КАЮ вам нужны, а какие нет.
1ЕЕЕ 1394 (Яге\Мге) зиррог/
Поддержка последовательной высокоскоростной шины 1ЕЕЕ 1394. Если у
вас есть 1ЕЕЕ-адаптер, включите эту опцию. Внимание: поддержка 1ЕЕЕ
экспериментальна (для ядра 2.6)!
ОоЗ апй/ог 1а}г диеие!пд
В этом подразделе можно включить поддержку Оо8 (Ооа1йу о! 8ег\-1се).
1гОА (т/гагес!) зиррог!
Поддержка кВАустройств.
В1ие(оо1Ь зиррог1
Поддержка В1ие1ооШ. Обычно требует включения на современных но-
утбуках.
180М зиЬзузТет
Поддержка технологии 18ПИ (ЪйецгаСес! 8егУ1се5 ЕМ&йа! ИеЕтогкк, во
Франции — ПМ8). Технология 18ОМ постепенно уходит в прошлое ~
вместо нее используется АО8к. Если у вас есть возможность перейти на
А1)$к сделайте это.
Те1ер(юпу Зиррог!
Если у вас есть специальная карта, позволяющая подключить обыкно-
венный телефон для использования голосовых 1Р-прИложений, включите
поддержку телефонии. Вам не нужно включать поддержку телефонии
для использования обычного модема.
1при{ Цейсе зиррог!
Поддержка различных устройств ввода — джойстиков, мышей, сенсорных
панелей, клавиатур.
СЬагас1ег Деу/сез
Поддержка символьных устройств, например, стримеров.
МиШтесИа с/еи/сез
Поддержка ТУ- и радиотюнеров.
СгарЫсз зиррог!
Поддержка графических адаптеров. Выберите только те драйверы,
которые необходимы для поддержки ваших видеокарт, а остальные от-
ключите.
5оиПС1
Поддержка систем А 1.8 А (АсК'апсес! Стих 8оипс1 Агсййесшге) и 088
(Ореп 8оипб 8у51еш). Тут же драйверы звуковых плат.
Ц$В зиррог?
Поддержка ОЧВ.
ЫеРмогк/пд зиррог?
Это довольно большой подраздел раздела Ветке Вптегк, в котором мож-
но включить поддержку как самой сети, так и отдельных ее компонентов.
Поддержка сети нужна обязательно, даже если у вас нет сетевой платы
или других сетевых устройств. Функции печати, а также графическая под-
система X требуют поддержки сети, а это значит, что, если сеть
у вас отключена, вы не сможете ни документ распечатать, ни работать в
графическом интерфейсе.
Сетевых опций довольно много, поэтому для их установки воспользуемся
таблицей 20.3.
Опции сети Таблица 20-3
Опция Назначение
Мейтк рейсе етШаПоп Опция обратной совместимости. Скоро будет удалена, но пока она нужна.
Игах Цота1П зосквГй Поддержка 1)М!Х-сокетов. Не отключайте эту опцию
1РМ! зоске1а Поддержка 1РМ1 -сокетов. Обычно не нужна
РГКВ'зоскшз Требуется Для поэтому лучше не отключать ее или включить в виде модуля
ТСР/1Р птугогйпд Поддержка ТСР/1Р обязательно должна быть включена!!!
>Р: тнШсазПпд Позволяет адресовать сразу несколько компьютеров. Данная опция по- лезна, если вы используете МВОЫЕ или другую магистраль для широко- вещательной передачи аудио- и видеоинформации
1Р: -айуапсей гоцТег Включите, если предполагаете использовать данный компьютер в виде маршрутизатора, а заодно нужно включить И все ее компоненты, напри- мер, 1Р: ройсу тоибпр — довольно интересная функция маршрутизатора. В двух словах ее не опишешь, а прочитать о ней можно по адресу: Пр: //юш сотрепфит .сот. аг/ро|!су- гоцрпдЛХ!
|Р: кегле! 1ауе| аитосопРдигаПоп Включает автоматическую конфигурацию 1Р-адреса сетевых устройств и таблицы маршрутизации во время загрузки ядра на основании информа- ции, переданной ядру е командной строка или по протоколам ВООТР или ПАРР. Данную опцию имеет смысл включать только на бездисковых маши- нах, поскольку на обычных системах конфигурация сети задается в загрузочных сценариях
1Р: шлпвйпд Данная опция понадобится вам, если вы будете настраивать виртуальную частную сеть — УРЫ (У1гП1а! Ринате Кащвдк)
1Р; ОВЕ шппе!з счет !Р Данная опция полезна при использовании маршрутизаторов С!зсо. Дая ее работы необходимо включить предыдущую опцию
(Р: тЫРсазт гогшпд Данная опция позволяет настроить работу маршрутизатора так, чтобы он отправлял 1Р-пакеты по нескольким адресам. Очень полезно для широко- вещания аудио-видеоинформации по Интернету
Продолжение табл. 20.3
Опция Назначение
1Р: АЙР дзетой зирроп (ЕХРЕА8МЕИТА1) Поддержка АНР-демона. Можно включить на маршрутизаторе/шлюзе небольшой сети
!Р: ТОР зупсооИе зиррои (сПзаЫед ре,' дЫзиП) Вот эту опцию я бы включил из соображений безопасности, она поможет защитить вашу систему от так называемых ЗУЫ-наводнаний, точнее, сообщит вам адрес атакующего хоста
!Р: АН {гапзТогтабоп Поддержка АН-преобразования для !РЗес. Если не уверены в том, что вы делаете, не отключайте эту опцию!
!Р: Е5Р 1гапйШта1юп Поддержка ЕЗР-преобразования для (РЗес. Если не уверены в том, что вы делаете, не отключайте ату опцию!
!Р: 1РСотр [гаизТогтабоп Поддержка 1РСотр-преобразования (сжатие данных, описано в ЙЁС3173) для |Р5ес. Если не уверены в том, что вы делаете, не отключайте ату опцию!
1Р Инид! зегхег вирроН (ЕХРЕН8МЕИТА1) Включение данной опции позволит вам построить виртуальный сервер, который будет использовать ресурсы нескольких физических серверов. Попросту говоря, данная опция позволяет собрать кластер. Раньше для создания кластеров использовались программные продукты посторон- них разработчиков, а сейчас поддержка кластеров встроена в ядро. Если заинтересовались, посетите сайт: ЬЦр://шш№.1!пиху!пиа|вегуег.огр/
ТЬе |Ру6 ргоГосо! (ЕХРЕ- ЩМЕЫТАЦ Поддержка протокола 5Ру6. Пока он практически не используется, поэтому можно згу опцию смело отключить
ОЕСпе! Зиррон Данную опцию на просторах бывшего СССР вряд ли кто-то будет включать, точнее, вряд ли она кому-то понадобится
802.16 ЕШете! 8г1ддтд Если вы включите эту опцию, ваш компьютер превратится в Е1Ьегпе1-мост. который будет соединять различные сегменты вашей локальной сети
МеТлгогк раске: Шеппд (гер1асез |рсИащз) Поддержка нового поколения бастиона ИеТЯЙег, пришедшего на замену 1РСПа!пз. Если вы настраиваете маршрутизатор, включите эту опцию. Для обыкновенных систем ее нужно выключить
1Рзес извг сопбдцгабоп (гцегГасе Поддержка 1Р5ес. Если не уверены, просто включите эту опцию
АзупсНгопо^з Тгапэ1ег Мойа (АтМ) Поддержка АТМ
ТЬе 1РХ ргоЮсо! (1РХ) Поддержка протокола 1РХ (компания Ыоке!1>
Арр|еса1к ргоюсо! зирроЛ Поддержка протокола компании Арр!е. Если в вашей сети есть хотя бы один МасшТовЬ, включите эту опцию
СС(ТТ Х.25 Раске( Еауег (ЕХРЕЙ1МЕЫТАЦ (Х25), 1ЛРВ Васа 1!пк Опуяг (ЕХРЕЙ1МЕ1ЧТА1) (1АР8) Данные опции нужно включать, только если вам это действительно необходимо. Если вы не знаете, что они собой представляют, лучше их не трогать!
УУАЫ гои1ег Данная опция превращает ваш компьютер е маршрутизатор глобальной сети. Обычные маршрутизаторы не требуют включения этой опции. В случае включения данной опции в виде модуля модуль будет называться шапгоитег
Раз! анМсЫпд Перед включением этой опции настоятельно рекомендую прочитать документацию. Данная опция выбирает самый быстрый сетевой интерфейс для передачи данных. Внимание! Эта опция несовместима с опцией Метшогк раскеТ ЯйеНпд
Гогшагсйлд Ье^/ееп йреед <Мег(асез Не включайте эту опцию!
20.5.2.9. ГПезузГегпз
В разделе Ейезуаитз вы можете включить поддержку следующих фай-
ловых систем:
• Зесопй ехщпйей & (ех!2), до недавнего времени бывшей основной
файловой системой 15пих:
* Ех13 )оита!1т§ П1е 8у§1ет — журналируемой версии ехГ2, используе-
мой многими дистрибутивами в качестве основной файловой систе-
мы;
♦ К.е18егР8 — файловой системы Ке!кег;
♦ Л:8 Шевуйет — файловой системы ЗР8;
* ХГ8 — файловой системы ХР8;
♦ Мш1х Р8 — файловой системы М1шх;
• С1)-К.О.М/ОУ1) РПену&етз 180 9660 — файловой системы, использу-
емой для записи информации на СО-КОМ.
Что включить, а что выключить? Первые две файловые системы, а также
файловую систему 150 9660 включите обязательно. Думаю, не нужно
объяснять, почему. Файловую систему Минх можно сразу отключить —
она давно устарела и не используется. Файловые системы Ке^ег, ЗР8,
ХР8 относятся к разряду новых, но редко использующихся. В принци-
пе, их нужно включить — вдруг кто-то принесет винчестер, на котором
разделы будут содержать одну из этих файловых систем? Или просто вы
захотите поэкспериментировать и отформатировать раздел в одной из
этих систем.
Не забудьте включить средство автоматического монтирования сменных
носителей — Кегле! аШотоцЩег зиррог!, особенно для рабочей станции!
А вот поддержка квот (Оло!а виррог!) окажется полезной, если вы на-
страиваете сервер.
В подразделе ВО8/ЕАТЖТ ЕПеху’Иетз вы можете включить поддержку
следующих систем:
♦ Файловая система М8 008. Включить ее нужно обязательно — в
странах бывшего СССР до сих пор встречаются дискеты, записанные
в этой файловой системе.
• УРАТ (ХУ1пйо'Л’8-95): это основная файловая система операционных
систем ХУшйоте 95 и 98.
• 1ЧТР8 — файловая система ОС УУтёоуга ХТ, 2000, ХР. Здесь же можно
включить поддержку записи на раздел МТР8, которая по умолчанию
отключена.
В разделе Рзеийо Шезуаитк вы можете включить так называемые псев-
досистемы— файловые системы /ртос и /деу.
В разделе МЬсеИалеоиз ШевуаСетх находятся опции включения под-
держки других, редко используемых файловых систем, например, НРЕ8
(Нцф РегГоппапсе Гйе ЗуМет), которая используется по умолчанию ОС
1ВМ 08/2.
Включить поддержку файловых систем 1ЧГ8 и 8МВ (используется для
монтирования удаленных ХУ1п4ож-разделов, читайте «общих дисков и
папок») можно в разделе !ЧеЬнэгк ЕПе Будете.
Раздел \аЮе Ьап^иа^е 8иррог1 позволяет включить поддержку раз-
личных кодировок, в которых могут быть представлены имена файлов.
Например, отключив кодировку ср-1251, при просмотре содержимого
\Ушс!орге-раздела вы увидите иероглифы вместо русских букв.
20.5.2.10 .Кегле! Каск!пд
В этом разделе для вас найдутся две полезные опции, даже если вы не
занимаетесь разработкой модулей ядра Ыпих. Опция РгеГег ягпаП о\ег
Гам! со(1е позволяет сделать ядро более маленьким, но более медленным.
Маленький, но медленный код может пригодит ься для создания загрузоч-
ной дискеты — там важен каждый байт. Вторую опцию Кегле! беЬи^т§
также можно отключить, если вы создаете системную дискету.
20.5.2.11 .Сгур1одгарЫс орйопз
Различные опции, касающиеся криптографии.
В разделах ЫЬгагу гоийпе» и ИлоШсга! Згй раг1у кегле! а<й1Шоп$ я не
нашел для себя ничего интересного.
20.5.3.Сборка ядра
Теперь, когда все устройства сконфигурированы, нужно сохранить файл
конфигурации ядра и перейти непосредственно к этапу сборки ядра.
Для сборки вам понадобится программное обеспечение, необходимые
версии которого перечислены в таблице 20.4.
Необходимое программное обеспечение Таблица 20.4
Программа/ библиотека Минимально допустимая версия Где ваять
Опи С Сотрйег 2.95.3 М1р://дсс.дпи.огд
Опи Мака 3.78 Др: //Пр.дли.огд/дпи/таке/
ЫлЫНз 2.12 Йр://Йр.кегпе1.огд/риЬ/|!лих/йеуе1/ЫпиШз/
иШ-Ипих 2.1 Со Пр: //Яр .кегле!. огд/риЬ/Ипих/иМг/иШ-Йпих/
тоЛЛе-!пгМоо!з 0.9.9 1тйр: / /ялмм. квте!.огд/риЬ/Нпих/кета1/реор|е/ш глу/тос! и!ее/
Продолжение габл. 20.4
Программа/ библиотека Минимально допустимая версия Где взять
ргосрз 2.0.9 Ы1р://ргосрв. зосгсвГогда, пы/
е2Гзргодз (’} 1.29 ИНрУ/ейаргодь .вой гсЫогде.пЫ/
|(бо1йз (’) 1.0.14 Нпр://*уй«* 124 Лхп. сот/^5/
гегзвИзргаде {*) 2,1.0 Ипр: //*уй«. патезуз. сот/
Ыь-иШз 1.0.5 Ы!р://Ыв. роигсеТогде.пеУ
рстаЗ’СЗ 3.1.21 М1р://рстс1а-св. зсшгсе1огде,пе1/
риота. тоо(з 3.09 ННр: //аоигсеЬгде .пет/ргсфша/Нп ихдиой/
РРР 2.4,0 Лр://Нр. ватЬа .огд/риЬ/ррр/
1йс!п4к-и111в 3.1 рте 1 1Шр://*уйК|5<3п41тих.с!е/$ч/ра1 .Ыт)
органе 0.5.3 ИНр://ор№Й)е. кожсеГогде ,пе!/
(*) Данное программное обеспечение зависит от используемой файловой системы. Если вы используете
только вх12, обновите только е2?зртод5. если ЗГЗ—то Если же вы используете все перечисленные
файловые системы ех12, ЗРЗ, йе!8вгГ5, вам нужно обновить все программы, отмеченные звездочкой.
Ваше старое ядро пока работает и, чтобы не сделать ничего непоправи-
мого, нужно собирать новое ядро пол новым именем. Найдите в МакеП1е
(в самом начале файла) строчки:
УЕН51ОЫ=2
РАТСНЕЕТЕЪ-б
5О0ЪЕУЕЬ=<третьяшцифра_версии_.вашего_ядра>
ЕХТНА7ЕК810№
Г-'ХТК,АУЕК.Ч1ОХ — это суффикс, которым будет отличаться имя нового
ядра. Дайте ему значение вроде «псу/» или «1е<й». Это приведет к тому,
что собранное вами ядро будет называться Ипих-2.6.х-пем/. Старое ядро
никуда не денется, и при загрузке можно будет выбрать нужный вариант
ядра.
Команда таке йер, которая вводилась после конфигурирования ядер
2.4 и ниже, при сборке ядра 2.6 не используется. Вместо нее выполните
следующую последовательность команд:
$ таке ЬгТтаде
$ таке то<5и1еа
Эти пара команд соберет ядро и те модули, которые вы включили в него
на этапе конфигурирования. Процесс сборки займет не меньше 20 минут,
а то и значительно больше — в зависимости от быстродействия вашей
системы и количества выбранных модулей.
Можно выполнять эти команды от имени непривилегированного пользо-
вателя. Даже нужно, поскольку идеологически правильнее работать под
рутом только тогда, когда иначе нельзя. Без привилегий суперпользова-
теля нельзя обойтись только на этапе установки ядра и модулей:
# гааке п1о<Зи1ез_1П8Са11
# гааке ишСаИ
Результатом успешной сборки и установки станут следующие файлы и
каталоги:
/ЪооС/уп111пиг-2.6 .х-пеи
/ЬооЬ/5у5Т.епитар-2.6. х~пеи
/Ьоок/1п1Ьга-2.6.х-певд. 1гад
/ИЬ/тос1и1е5/2.6 .х-певд
Осталось добавить в конфигурационный файл вашего загрузчика (п.9.1.1)
вариант загрузки с новым ядром. Если вы используете ОКОВ, впишите
в /Ьоот/дгнЬ/дгиЬ.сопе следующие строки:
Ск1е Ыпих Меи Кегпе1
кетпе! /утИпиг-2.6.х-пеэд гооС=/йеу/Наа5 го
1п1Сгй / 1пгИ1'сЕ2.6 .х-пеи. 1тд
Если вы вкомпилировали все драйверы, необходимые для загрузки си-
стемы, в ядро и поэтому не используете шйт<1, то строчку шйгс1 можно
удалить.
В случае, если ваш загрузчик — ЫЕО. впишите в /еЬс/Шо.ссп^
строки:
1таде=/ЬооЬ/ут11пиг-2.б.х-певд
1аЬе1~'' Ыпих 1Яеи Кегпе!"
гооС=/йеу/Ма5
1п1Сгй=/ЬооС/1п1Ьг<1"-2.6.х-пеи. 1тд
геасЬогПу
И занесите изменения в загрузочную запись:
# 111о
Теперь перезагрузите систему и попробуйте загрузиться с новым ядром.
При появлении каких-либо ошибок вы всегда сможете загрузить старую
версию.
Глава 21
СОЗДАЕМ
КОНСОЛЬНОЕ
ПРИЛОЖЕНИЕ
---компилятор осс
--- СБОРОЧНАЯ УТИЛИТА МАКЕ
0 ПАКЕТ В1ГЮТ11.8 И ДРУГИЕ
ПОЛЕЗНЫЕ ПРОГРАММЫ
Г.1Ы11Х ПОЛНОЕ РУКОВОДСТВО
21.1. Компилятор дсс
В 8 главе вы познакомились с языком командного интерпретатора и убе-
дились, что на нем можно писать полезные сценарии. Но если вы раньше
программировали под ХУтбозта, то интерпретатора вам маловато будет —
понадобятся более мощные средства разработки. Разумеется, они в ОС
Ыпих есть.
Основным С-компилятором в 1дпих служит §сс (ОИО С СотрПег). Если
вы не установили средства разработки при установке дистрибутива, са-
мое время сделать это сейчас. Запустите менеджер пакетов (рис. 21.1) и
установите следующие пакеты:
♦ цсс — сам компилятор ёс'с;
♦ ^сс-с++ — поддержка С+ + ;
♦ дсс-бос — документация по §сс (очень рекомендую установить);
♦ сотраЬ^сс — пакет, содержащий средства §сс для обратной совме-
стимости. Данный пакет вам нужен, если вы планируете писать про-
граммы для более старых систем, чем ваша;
♦ сотра1-&сс-с-$-+ — то же, что и сотра!-§сс, только с поддержкой
С+ +;
* сотраьсрр — препроцессор срр для обратной совместимости;
• ЫпийЬ — набор вспомогательных утилит, о которых мы поговорим
в последнем пункте этой главы;
♦ ^ПЬс-йете! — содержит библиотеки для разработки С-программ;
♦ КЬЬМ — библиотека дескриптора двоичного файла (Втагу ЕПе Ое-
кспрюг ИЬгагу);
• НЬяШс+ + -(1еуе1 — заголовочные файлы и библиотеки для програм-
мирования на С++;
♦ таке — утилита, упрощающая процесс сборки больших проектов.
Управление пакетами
Устаноака/удаление пакетов
Эти пакеты включает серверы таких устаревай»
протоколов, как ген и те)пет.
Программирование
0 Средстве разработки
[54/65]
•>,
Эти срахктаа включают осноэные представ
ш разработки, такие как ак!атаке, дес, ре«1. ругНоп н
отладчики.
03 Р*»рабог** ПО для X
Эти пакеты позволяют разрабатывать приложения
даяХШй&жЗуМет.
Р8 Резреботка е исполчэоеаиием СМ ОМЕ
[30/Л]
лДУ Установите эти пакеты для разработки графических
’В припожеияй СТК+ и СМОМЕ.
СйДО объем установки: 4218 Мегабайт
[1&21]
® ЭмЙти : '
Ййгавигь
Рис. 21.1. Менеджер пакетов Гедога Соте — зуз!ет-сопЯд-рас:кадез
21.1.1 . Вызов дсс
Формат вызова компилятора такой:
дсс [опции] ЬеИоугогТд.с
Вы написали свою программу на С + + ? Нет проблем: компиляторы С
и С 4-4- являются интегрированными. Чтобы сообщить компилятору, на
каком языке вы писали свою программу, нужно указать определенную
опцию при вызове компилятора. Но можно поступить проще: по умол-
чанию компилятор считает, что файлы с расширением ,с написаны на
языке С, файлы с одним из расширений .С, .сс, .сХХ — на языке С4-4-,
а файлы с расширением л — на языке ассемблера.
Как правило, перед компиляцией вызывается программа ерр — пре-
процессор языка С- Препроцессор создаст файл с расширением л, если
ваша программа написана на языке С, и файл с расширением .п, если
ваша программа написана на С4-4-. Если ваша программа уже прошла
препропессорную подготовку, вы можете передать компилятору ^сс файл
с расширением з или п и цес уже не будет вызывать препроцессор для
подготовки исходного текста. Как правило, программу ерр редко кто
вызывает вручную.
Если не указывать никаких опций, то компилятор создаст в текущем
каталоге файл а.он1, содержащий исполняемый код. Для тех, кто изучал
другой язык, я на всякий случай приведу текст первой программы на С
(листинг 21.1).
Листинг 21.1. Файл ИеПоууогЩ.с
# 1пс Т.ийе <зСс11о . И>
та1г> ()
{
рг!пТЕ ( “НеНо Иог1<3! \п" ) ;
)
А сейчас рассмотрим основные опции компилятора. Обо всех остальных
опциях вы сможете узнать по команде тап дсс.
21.1.2 . Общие опции
Из общих опций наиболее интересны три: -х, -с и -о.
С помощью опции -х можно указать язык, на котором написан исходный
код, например,
дсс -х с ке11ож)г1й.с
В качестве языка программы вы можете указать:
♦ с, если ваша программа написана на С;
♦ <>Ь)есН\е_с, если ваша программа написана на ОЬ]есИ'уе С;
♦ с-йеаскт, если ваша программа является заголовком С;
♦ с++, если вы написали программу на С++;
♦ аьхетЫег, если вы написали программу на ассемблере.
Существуют и другие варианты, но они не столь важны.
Опция -с используется, если вы хотите только откомпилировать вашу
программу, но не вызвать компоновщик. В результате будет создан объ-
ектный файл с расширением . о.
Опция -о позволяет указать имя результирующего файла. Это очень по-
лезная опция, потому что имя а.онс мало кого устраивает:
дсс -а Ие11О1УОГ1Й Ие11оиог1с!.С
Очень полезна опция -V, которая выводит различную информацию о
стадиях компиляции. Кроме того, эта опция выводит версию компиля-
тора.
21.1.3 . Опции языка
Из всех опций языка мне пригодилась лишь опция АН81, которая вы-
ключает все функции ОКИ С, несовместимые со стандартом АК51. К
таким функциям относятся авт, тЕте, 1уреоГ и другие.
21.1.4 . Опции препроцессора
Эти опции задают режим предварительной обработки исходного кода
(до собственно компиляции).
Очень важной является опция -тс1ис1е <файл>. Она позволяет «про-
гнать» через препроцессор сперва содержимое указанного файла, а
только после этого файл, который передан препроцессору. В результате
указанный файл будет1 откомпилирован раньше, чем все остальные.
Опция -по'ЛсНпс запрещает использование системного каталога, содер-
жащего файлы заголовков. При ее включении компилятор будет искать
заголовки в каталогах, указанных в опции -I и в текущем каталоге.
Опция -тю5(Шпс+ + запрещает использование стандартных файлов за-
головков для языка С+4-.
21.1.5 . Опции компоновщика
Опция компоновщика -1 позволяет явно указать имя библиотеки, которая
будет использоваться при сборке вашей программы. Например,
дсс ~1ту11Ьгату туЕНе.с
Компоновщик будет использовать файл ИЬтпуИЪгагу. а, который он
попытается найти в системных каталогах библиотек и каталогах, которые
вы укажете с помощью опции
Опция -ги)$(с11|Ь запрещает использовать все системные библиотеки. При
этом будут использованы библиотеки только из тех каталогов, которые
вы укажете с помощью опции -Е.
Опция лйаНс означает, что будет использована статическая линковка.
21.1.6 . Опции каталогов
Две важнейшие опции каталогов: -I и -Е Первая позволяет указать путь
для поиска заголовков (файлов с расширением Ж), а вторая — библио-
тек. Например, если вы хотите, чтобы компилятор использовал файлы
заголовков, которые находятся в каталоге/гооЬ/1пс1иае, тогда укажите
опцию -1тоо1,'1пс1и<:1е. Обратите внимание на отсутствие пробела между
буквой I и первым символом пути.
Если вы укажете опцию -1-, то в каталогах, которые вы укажете в объ-
явленной до этого опции -I, будет производиться поиск только поль-
зовательских заголовков, то есть заголовков, указанных в директиве
#тс1ибе «файл». Пути для поиска системных заголовков, которые указы-
ваются директивой #1пс1ис!е <файл>, останутся неизменными.
21.1.7 . Опции отладки
Если вы хотите использовать отладчик, например ддЬ, для отладки своей
программы, укажите опцию -§ при вызове компилятора. Эта опция по-
мещает в откомпилированный файл отладочную информацию, вследствие
чего существенно увеличивается объем файла. Поэтому никогда не ис-
пользуйте эту опцию для окончательной версии продукта.
21.1.8 . Опции оптимизации
Компилятор |>сс позволяет оптимизировать код вашей программы. Дру-
гими словами, цсс сделает все для того, чтобы ваша программа была
как можно меньше по размеру и как можно быстрее запускалась. Для
включения режима оптимизации используйте опцию -О1. Вы можете по-
экспериментировать с опциями -02 и -03, которые еще больше пытаются
оптимизировать вашу программу, однако не перестарайтесь. Если ваша
программа после такой оптимизации работает еще медленнее, чем до нее,
или же некорректно работает, используйте опцию -ОО для отключения
оптимизации.
Обо всех остальных опциях вы сможете прочитать в справочной системе.
21.2. Сборочная утилита таке
Если вы уже собирали прикладную программу из исходных кодов, то
обратили внимание на стандартную последовательность команд: таке;
таке 1г;эса11.
Без утилиты такс не обходится создание ни одного серьезного про-
екта. Эта утилита управляет сборкой большого проекта, состоящего из
десятков и сотен файлов. Программа таке может работать не только с
компилятором §сс, но и с любым компилятором для любого языка про-
граммирования, способным запускаться из командной строки.
Директивы утилиты таке служат для определения зависимостей между
файлами проекта и находятся в файле по имени МакеД1е, расположенном
в каталоге сборки.
Разберемся, как пишутся шаке-файлы. Общий формат таке-файла вы*
глядит так:
цель!: список„необходимых_файлов
последовательность_команд
цальЮ список_необходимых_файлов
последовательность^команд
Цель— это метка для некоторой последовательности команд (например,
!П81а11) или результирующий файл, который нужно «построить» — ском-
пилировать или скомпоновать.
Цели должны отделяться друг от друга хотя бы одной пустой строкой.
Список необходимых файлов — это перечень файлов или других целей,
которые нужны для достижения данной цели; он может быть и пустым.
Последовательность команд — это команды, которые нужно выполнить
для достижения цели. Последовательность команд должна отделяться от
начала строки символом табуляции, иначе вы получите ошибку «гшккт^
керагаЮг» (нет разделителя).
Маке-файл можег содержать комментарии — они начинаются символом
В таке-файлах вы можете использовать макроопределения:
СОдсс
РАТН~/изг/1пс1ибе /инг/зге/Моих/ 1.пс1и<3е
МОПРЬАСЗ:= -03 -Иа11 -СЫ№Х -1${РАТН)
${СС) $(КОПГЬАО2) -с ргода.с
Чтобы обратиться к макроопределению в команде или в другом макроо-
пределении, нужно использовать конструкцию $(имя). Макроопределение
может включать в себя другое, ранее определенное, макроопределение.
Формат запуска утилиты такс:
таке файл] [ключи] [цель]
Ключ -Г указывает файл инструкций, который нужно использовать вместо
МакеШе. Если этот ключ не указан, то таке ищет в текущем каталоге
файл МакеГйе и начинает собирать указанную цель. Если цель не указана,
то выполняется первая встреченная в шаке-файле. Сборка выполняется
рекурсивно: таке сначала выполняет все цели, от которых зависит теку-
щая цель. Если зависимость представляет собой файл, то таке сравнивает
ИЫиХ: полное руководство
его время последней модификации со временем целевого файла: если
целевой файл старше или отсутствует, то будет выполнена указанная по-
следовательность команд. Если целевой файл моложе, то текущая цель
считается достигнутой.
ШШШ
Если нужно избежать пересборки какого-то из файлов проекта, то можно
искусственно «омолодить» его командой 1оисН, которая присвоит ему в качестве
времени последней модификации текущее время. Если нужно, наоборот,
принудительно пересобрать цель, то следует «омолодить» один из файлов, от
которых она зависит.
Работа программы таке заканчивается, когда достигнута цель, указанная
в командной строке. Обычно это цель аП, собирающая все результиру-
ющие файлы проекта. Другими распространенными целями являются
шд1а1| (установить собранную программу) и с!еап (удалить ненужные
файлы, созданные в процессе сборки).
В листинге 21.2 представлен таке-файл, собирающий небольшой проект
из двух программ сйсчй и зегуег, каждая из которых компилируется из
одного файла исходного кода.
Листинг 21.2. Примерный таке-файл
СС=дсс
СРЪАС5=-0
а11: с11егХ вегуег
сИепС : с11епГ . с
$(СС) сНепХ.с -о с11епС
вегуег: вегчгег.с
$(СС) вегуег.с -о вегч/ег
Обычно при вызове утилиты таке не нужно задавать никаких ключей.
Но иногда использование ключей бывает очень кстати (таблица 21.1),
Ключи команды таке
Таблица 21.1
Ключ Назначение
-С каталог Перейти в указанный каталог перед началом работы
Вывод отладочной информации
Приоритет переменным окружения. Если у нас установлена переменная окружения СС и в Макайа есть переменная с таким же именем, то будет использована переменная окружения
-5 файл Использовать указанный файл вместо Макеб1е
ч Игнорировать ошибки компилятора
-1 каталог В указанном каталоге будет производиться поиск файлов, включаемых в МаКеГ)|в
-и Запускать не более п команд одновременно
-к Продолжить работу после ошибки, если это возможно
Вывести команда, которые должны были выполниться, нс не выполнять их
о файл Пропустить данный файл, даже если в МакаЭДе указано, что ом должен быть создан заново
*г Не использовать встроенные правила
Не выводить команды перед их выполнением
Вывод текущего каталога до и после выполнения команда
21.3. Пакет ЫпиН18
и другие полезные программы
Пакет ЫпиЫ1з содержит утилиты для работы с бинарными файлами:
* 1<1 — компоновщик: программа, связывающая объектные файлы и
библиотеки в исполняемый файл;
♦ аг — работа с архивами (создания, модификация и извлечение);
♦ пт — вывод названий идентификаторов из двоичных файлов;
♦ <>Ь|сору — копирование и трансляция двоичных файлов;
* оЬ)(1111пр — вывод информации из двоичных файлов;
♦ гапПЬ — генерирование индекса оглавления архива;
♦ В12е — вывод размеров секций архива или двоичного файла;
♦ — вывод строк, которые возможно прочитать, из двоичных
файлов;
♦ а<Мг2Нпе — конвертирование адресов в памяти в строку в файле;
♦ п1тсопз — конвертирует объектный код в МЕМ.
А теперь перечислим несколько полезных вспомогательных программ.
21.3.1. ап$|2кпг
Утилита ап$!2кпг предназначена для преобразования текстов программ,
написанных в соответствии со стандартом А\81 С, в программы на «клас-
сическом» С Кернигана и Ричи, Формат вызова:
апв12кпг оМЕНе.с пеиШе.с
21.3.2. аз
Программа аа — это ПМП-версия ассемблера, предназначенная для соз-
дания объектных файлов из программ, написанных на языке ассемблера.
Формат вызова:
аз [ключи] файл! [файл2 ... фаЙлЫ]
Таблица 2 Т2
Ключи программы аа
Ключ Назначение
-а Вывод листинга
-аН Не выводить отладочные сообщения
-ай Включение в листинг текста программы, написанной на языке высокого уровня, если компиляция проводилась с ключом
-а! Вывод листинга на ассемблере
ал Не обрабатывать ферм
Вывод списка символов программы
афайл Вывести листинг ^указанный файл
-( Быстрый режим. Директивы препроцессора не обрабатываются
Добавить указанный путь к 1пс1ийе-пути
Обеспечить МН1- совместимость
-о файл Создание объектного файла с указанным именем
Й Поместить сегмент данных в сегмент кода
-V Вывод версии
-ад Не выводить предупреждения
21.3.3. Ы$оп
Программа Ьй>оп — это грамматический разборщик (парсер): она создает
С-программу, предназначенную для разбора определенной грамматики.
Данная программа вам не понадобится до тех пор, пока вы не захотите
написать собственный компилятор. Ключи программы представлены в
таблице 21.3. Формат вызова:
Ыкоп [ключи] файл
Ключи программы Ыаоп
Таблица 21.3
Ключ Назначение
Ь префикс Использовать указанный префикс дли имени входящего файла
-а Создать заголовочный файл, содержащий информацию о типах грамматических образцов (токенов), которые определены в вашей грамматике
Не вставлять код в существующие файлы
-о файл Установить файл результата
1 Включить отладочную информацию
-V Записать созданную программу в файл у.ощрщ
21.3.4. Лех
Лех [параметры] файл
Это еще одна программа, которая пишет код за нас. Лех может написать
программу на языке С, которая будет искать заданные образцы текста в
текстовых файлах и выполнять определенные действия, заданные про-
граммистом. Если вам нужна эта программа, тогда самое время прочитать
страницы руководства тан Пех.
21.3.5. дргоГ
Программы вроде цргоГ называются профайлерами. Они предназначены
для определения быстродействия вашей программы. Для каждого вызова
функции вашей программы профайлер выводит время ее выполнения. Вы
как программист анализируете полученную информацию и, если нужно,
оптимизируете исходный код вашей программы.
21.3.6. 81пр
Утилита в1пр удаляет таблицу символов из объектного файла.
21.4. Пример программы на С
В и. 9.2.3 я сказал о состояниях процесса и перечислил среди них со-
стояние «зомби». Зомби — это процесс, который уже завершился, но
его родитель еще не получил сигнала о его завершении и не удалил его
структуру из таблицы процессов. Такое может произойти, когда про-
цесс-родитель почему-либо не готов к завершению потомка. Сейчас мы
искусственно создадим такого зомби. Процесс-родитель породит потомка
и уснет на 10 секунд. Потомок завершится через 2 секунды, а в течение 8
секунд он будет находиться в состоянии зомби. Напоминаю, что состояние
процесса можно увидеть по команде Сор.
Листинг 21.3. Файл готЫе.с
#1.пс1ийе <ип1еЬд.11>
НпсХийе <81дпа1.И>
#1пс1шЗе <8ГЛ11Ь.И>
#1пс1шЗе <зуз/ма1С.Ь>
#1пс1ийе <зС11о.1т>
1пс. таа.п {) {
1пС рИ;
1пс зСаЬиз, Ней;
р!<3=1огк() ;
зи!Ьс1 (рхЙ) {
сане -1: рг!гЛЕ("ошибка ^огк\пя);
ех!С(-1);
сазе 0 : ргтпбП" Я потомок процесса М\п", дебррЫО);
рг1пМ:(* Мой Р1Р %1\п", деСртсЦ));
// Ждем 2 секунды и завершаемся
в1еер(2);
ехдХ (0) ;
йе^анТЬ: рг1пЫЕ(*Я родитель.\п");
ргхпЬ^ ("Мой РЮ %&\п" , деСрхсЦ));
// Ждем завершения дочернего процесса
// через 10 секунд, а потом убиваем его
з!еер(10);
1Е (р1а & 1)
кШ (р1а,ЭТСК1ЫЛ ;
а1ей= иа1Ь(йвбасиа);
Скомпилируйте файл гошЫе. с и запустите исполняемый файл готпЫе:
$ дсс -о хопЫе хотЫе.с
$ ./гошЫе
Я родитель.
Мой РТО 1147
Я потомок процесса 1147
Мой РТО 1148
Запомните последний номер и быстро переключитесь на другую консоль,
где введите команду сор -р 1148:
16:04:22 цр 2 аТд, 3 игегз, 1оаВ авегаде: 0,10, 0,10, 0,04
1 ргосеззез: 0 С₽С зга1еа: 4,5% аяег. , 0 гцппГад, 1 хошЫе, 0 з1орре<1 7,6% зузгеи, 0,0% гЦсе, 0,0% 1о»аЗг, 07,8% 1<Пе
Кея: 127560* «▼, 76992* изей, 5056В* Ткее, О* зЫВ, 3672* ЬиГГ
24280* асГ1<е# 3*ар *. 152576к алг. 19328* 1пас**ув О* пзе<1, 152576* Тгее 39704* сасИеВ
РЮ ОЗЕЯ РК1 Ы1 1148 йен 17 0 312Е пзз ашшв зат %сбс %мкм тгне соинаж> 0 0 0 а 0 0 0,0 0:00 гопЫе <веТипс*>
Мы видим, что в списке процессов появился один зомби (8ТАТ=Х),
который «проживет» в таком состоянии целых 8 секунд.
Глава 22
ОТЛАДКА,
ТРАССИРОВКА
И ОПТИМИЗАЦИЯ
ПРОГРАММ
--- ОШИБКИ И ОТЛАДКА
о--ОТЛАДЧИК 60В
"--ПРИМЕР ОТЛАДКИ ПРОГРАММЫ
А ТРАССИРОВКА
। СИСТЕМНЫХ ВЫЗОВОВ
---ПРОФАЙЛЕР ОРРОР
ЫЫУХ ПОЛНОЕ РУКОВОДСТВО
22.1. Ошибки и отладка
Самыми страшными являются не синтаксические, а так называемые ло-
гические ошибки. Ваша программа может содержать хоть сотню мелких
синтаксических ошибок — там не так функцию написали, там забыли
указать параметр, а где-то пропустили точку с запятой. После исправле-
ния всех этих ошибок программа будет работать.
Если же ваша программа содержит логическую ошибку — например, вы
выбрали неправильный алгоритм или неправильно его использовали, — то
компилятор может даже не выдать предупреждения. Вроде бы ошибок
нет, программа работает, но результат выдает неправильный или в какой-
то момент вообще рушится. Мне запомнился один афоризм: «Программа
делает то, что вы ей сказали, но не то, что вам хочется». Это и есть самое
удачное, на мой взгляд, описание логической ошибки.
Если вы заметили ошибку до того, как ваша программа «увидела свет», то
можете считать, что вам повезло. Одно дело, когда программа бесплатная,
другое, когда вы за нее получили деньги, а заказчик недоволен... А бывает
и такое, что программа может работать один, два месяца и только потом
ваша логическая ошибка «всплывает» наружу. Почему это произошло?
Дать однозначный ответ сложно, даже когда видишь код программы: все
зависит от ее специфики.
Например, если ваша программа использует какую-нибудь СУБД для
обработки информации, вы могли установить размер поля меньший, чем
нужно. Первые два месяца программа работала отлично, а в один пре-
красный момент оператор ввел очень длинную фамилию очень важного
клиента, и ваша программа не внесла эту информацию в базу. Но это
тривиальная ошибка, и ее можно исправить очень быстро.
А вот когда вы пишете программу для управления устройством или для
обработки показаний внешних датчиков, подключенных к компьютеру,
бывает очень сложно найти ошибку, связанную с конфликтом на аппа-
ратном уровне. Например, пользователь установил новое устройство,
которое конфликтует с вашим контроллером. Или вы написали модуль
для поддержки одного контроллера, а пользователь подключил два, и
оба теперь не работают.
Какие же ошибки часто совершают начинающие (и не только) програм-
мисты? Самая тривиальная — неправильное использование операций
инкремента и декремента. Например, следующие выражения не экви-
валентны:
х = у++ + 10;
X = ++у + 10;
В первом случае переменной х будет присвоено значение 15, а во вто-
ром — 16.
Следующей по частоте является ошибка неучтенной единицы. Например,
вам нужен массив, состоящий из 10 элементов, вы его объявляете:
1пС а(10] ;
А затем инициализируете его с помощью цикла:
1ОГ (1 = 0; 1<=10; 1 + +) а[1] = 0;
Этот фрагмент кода попытается инициализировать несуществующий
элемент — а[10].
Или еще один распространенный случай: программист забывает, что ну-
мерация элементов массива начинается с 0, и не инициализирует первый
элемент массива:
1ог (1=1;1<10;1++) а[1] = 0;
Особое место в зоопарке ошибок занимают ошибки, связанные с непра-
вильным использованием указателей. Все эти ошибки можно условно
разделить на три группы, которые я сейчас кратко перечислю.
1) Неправильное использование операторов * и &. Это самая распростра-
ненная группа ошибок начинающих программистов. Вот характерный
пример такой ошибки:
/* неправильно */
сИаг * з;
*н = (сИаг *в)та11ос(25);
/* правильно */
сЬаг *8;
н (сИаг *$)та!1ос(25);
2) Выделение недостаточного для адресации объекта объема памяти.
Например, мы получим такую ошибку, если попытаемся скопировать
в строку » (вышеприведенный фрагмент кода) строку, состоящую из 30
символов.
3) Использование неинициализированных указателей. Такие ошибки
часто встречаются при работе с динамическими структурами. Например,
с линейными списками: вы забыли инициализировать главный элемент
(Ьеаб = МЛХ) и пытаетесь добавить в список новый элемент.
Использование рекурсивных вызовов может повлечь за собой ошибку
переполнения стека, если вы неправильно зададите условие завершения
рекурсии. Как правило, рекурсивная функция вызывает саму себя с не-
сколько измененными параметрами. Рано или поздно такая функция
должна, в зависимости от переданных параметров, возвратить какое-ни-
будь значение, а не опять вызвать саму себя.
Для облегчения поиска ошибок были созданы специальные программы —
отладчики. Одним из самых удачных отладчиков для 1дпих является |»<1Ь
(ТЬе 6МО ОеЬи^ег). Этот отладчик входит в состав всех распространен-
ных дистрибутивов (за исключением их «урезанных» версий — для рабо-
чих станций), и для его установки достаточно установить пакет §6Ь.
С помощью вы сможете:
♦ запустить вашу программу с определенными аргументами;
* запустить программу в пошаговом режиме;
* установить точки останова (Ьгеакргнгй);
♦ установить условие останова программы;
♦ узнать, что случилось, если программа неожиданно завершилась.
22.2. Отладчик дйЬ
Формат вызова отладчика следующий:
дбЬ [-Ие1р] [-пх] [~д] [-ЬаГсИ] [-сй^йтг] [-П [~Ь Ьрз]
|-Ыу=беу] [-з зутЁНе] [-е ргод] [~зе ргод] [-с соге]
[-х стйз] [~<3 Й1г] [ргод[соге!ргос!С]]
Ключи отладчика описаны в таблице 22,1.
Ключи командной строки дбь Таблица 22.1
Ключ Назначение
-Пе!р или -Ь Вывод краткого описания всех параметров
“ПХ иля ~п Не обрабатывать команды файла инициализации .дОЫпЙ
Не выводить приветствие и информацию об авторских правах
-ЬаТс|т Командный режим. Отладчик возвращает 0, если были выполнены все команды, указанные в файле, заданном параметром -х (и файле .дсЯэйзгТ, если его использование разрешено}. Если же хотя бы одна из команд не выполнена, возвращается ненулевое значение
сй=каталог Установить рабочий каталог (по умолчанию используется текущий каталог!
-(или -1и11пате Данная опция нужна, если вы планируете использовать интерфейс текстового процессора Етасв для отладки ваших программ с помо- щью дйь. Для более подробного описания обратитесь к справочной системе
Продолжению табл. 22. ?
-Ь ьр$ (Ыгз рег сесопб) Установить скорос’ь обмена информацией по последовательному интерфейсу, если вы отлаживаете вашу программу удаленно
-фдзтерминал Установить терминал а качестве стандартного ввода и вывода для отлаживаемой программы.
-5 файл или ~5утЬо!$=файл Читает таблицу символов из указанного файла
-икйе Разрешить запись в Исполняемые и соге-файлы
*<? программа Использоватьуказанную программу в качестве фильтра дампа
*зе=файл Читать таблицу символов из указанного файла и использовать указанный файл в качестве исполнимого
-соге=файл или -с файл Указать файл дампа
*согптапО=файл или •х файл Выполнить указанные в файле команда* (используется в командном режиме)
•й каталог Добавить каталог к списку поиска исходных текстов
[ргод | соге | ргосГО) Последний параметр задает объект, который нужно оглаживать. Вы можете задать программу (ргод). или дамп-файл (соге), который будет создан в случае ошибки программы (ЗедшепгаПоп ГаиН), или же подсоединиться к уже запущенному процессу (ргосЮ)
-рРЮ Подключиться к уже запушенному процессу (данная опция стала доступной в версии дйЬ 5.2)
Чтобы использовать §6Ь для отладки вашей программы, нужно добавить в
исполняемый файл отладочную информацию. Для этого откомпилируйте
вашу программу с опцией
$ дес -д -о ргод ргод.с
Данная опция включает отладочную информацию в родном для опера-
ционной системы формате, с которым может работать §ЙЬ.
Затем нужно вызвать так:
$ дс!Ь ргод
Если после запуска вашей программы произошла ошибка и был создан
дамп-файл (соге), можно передать отладчику и этот файл:
$ ддЬ ргод соге
Можно также подключиться к уже запущенному процессу, для этого
нужно передать его РЮ:
$ дйЬ 1111
Только убедитесь сначала в том, что у вас нет файла 1111, поскольку §с!Ь
сначала ищет исполняемый файл, затем соге-файл, а уже затем РНЭ.
После запуска отладчика в интерактивном режиме вы можете использо-
вать команды, самые важные из которых перечислены в таблице 22.2. Об
остальных можно узнать в справочной системе: шан ДЙЬ.
Команды дс!Ь Таблице 22.2
Команда Назначение
Ьгаак [файл;]функция Установить точку останова
тип [аргументы] Запустить программу и передать ей указанные аргументы
Щ Обратная трассировка; отобразить стек программы
рпт выражение Вывести значение выражения, операндами могут быть переменные, объявленные в вашей программе
с Продолжить выполнение программы (после останова)
Мок! Выполнить следующую строку. Это так называемый шаг «над» (йер сует). Если следующая строка — вызов функции, то мы выполним ви за один шаг — «перешагнем- ее
51ер Выполнить следующую строку. Это так называемый шаг «а* (в1ер 1п(а). Если следующая строка — вызов функции, томы будем последовательно выполнять все операторы тела функции
Не!р [имя] Вывести справку о команде отладчика или вынести общую информацию о нем
ОыЦ Выход
В данной таблице приведены далеко не все команды. Если вас интересует
более полная информация, обратитесь к руководству по рйЬ.
22.3. Пример отладки программы
Давайте напишем программу, которая обнуляет элементы массива а [ ].
Да, программа ничего полезного не делает, но на ее примере можно про-
демонстрировать работу с отладчиком Ц(1Ь.
Вот листинг программы:
Листинг 22.1. Демонстрационная программа, содержащая ошибку
#1дс1.ийе <асс11о.п>
1пЬ Я1а1п()
(
сИаг деVе1оре^[]=’Пеп1з";
1пГ. а [ 10] ;
1;
ао
с
а[1]=0;
1+-Т ;
иЫ1е (1<10) ;
геСигп 0;
Назовем нашу программу (екг.с и откомпилируем ее:
$ дсс -д -о СезЬ СезС.с
Опция -§ добавляет отладочную информацию для отладчика &с1Ь. а опция
-о указывает имя результирующего файла.
Просмотрите листинг программы. Программа не делает ничего подозри-
тельного — она всего лишь в цикле с±о обнуляет все элементы массива —
сначала нулевой элемент а[0] становится нулем, потом первый, второй
и так далее.
Попробуйте запустить программу, и вы увидите сообщение: ЗедтепШкт
Гаи11. В чем же причина? Попробуем выяснить ее с помощью отладчика
2<Ш. Запустите отладчик с параметром 1е®1 (это имя нашего исполняемого
файла):
$ дбЬ СенЬ
В отладчике введем команду гип для запуска программы. И что мы
видим? Что программа получила сигнал ЗЮЗЕСУ, то есть имеет место
ошибка Зе^шеШабоп йшИ. Эта ошибка произошла в строке 12: а[Ц=О. Но
что может быть опасного в этом операторе? Ошибка Зе^тешаНоп 1аи11
может произойти по нескольким причинам, одной из которых является
выход за пределы массива. Проверим это: введите команду рпп! ь
Команда рпп! выводит значение указанной переменной (или выражения).
Ого! Оказывается, мы пытаемся обнулить не нулевой элемент массива, а
715910728-ой! Почему же так произошло? Может быть, это дбЬ нагло врет
и вместо значения переменной 1 выводит непонятно что? Для проверки
на лживость введите команду рпп! <1еуе1орег, которая выведет на экран
значение переменной бехекзрег. С переменной бехеЧорег все нормально —
ее значение «ГЗеш'н» (рис. 22.1).
Так что же произошло? Так как переменная : не является глобальной, ее
значение не обнуляется при запуске программы. Чтобы избежать подоб-
ной ошибки, нужно инициализировать переменную при объявлении:
113 С 1 = 0;
Вот мы и нашли ошибку!
Что же еще можно сделать с помощью §с1Ь? Можно установить Ьгеак-
ропИ, то есть точку останова, прерывающую выполнение программы в
указанном месте. Это нужно для того, чтобы проследить состояние неко-
торых переменных и/или стека программы перед запуском какой-нибудь
функции или же для пошаговой трассировки программы. Для пошаговой
трассировки программы установите точку останова для функции таш:
Ьге-аИ та.1п
Рис. 22.1. Сессия дёЬ
Для установки тонки останова на другую функцию введите команду
Ьгеак и в качестве аргумента укажите имя функции. Теперь запустите
программу на выполнение (команда тип). Команде тип можно передать
также аргументы, с которыми должна запускаться программа, например,
тип /11оте/йет5/герог1ЛхГ.
Когда отладчик достигнет точки останова, он приостановит выполнение
программы и будет ждать ваших инструкций. Затем введите команду
пех! для выполнения следующей строки. Команда пех1 — это команда
трассировки «над» функцией, то есть оператор вызова функции будет
выполнен за один шаг. Команда мер используется для пошаговой трас-
сировки функций. Если вы хотите продолжить нормальное выполнение
программы после точки останова, введите команду с.
Для отображения стека программы предназначена команда !й (Ьаскггасе).
Команда используется для отображения исходного текста программы
(рис. 22.2).
Естественно, весь текст программы не поместится на экране, поэтому
отладчик отобразит только его часть. Чтобы еще раз не вводить команду
ПзЕ просто нажмите Ешег, и ц<1Ь выполнит предыдущую команду.
Команда Ье!р предназначена для отображения справки по командам от-
ладчика, а программа <рШ — для выхода из него.
Рис, 22.2. Команда Нз(
Возможности программы этим не ограничиваются. Отладчик ййЪ —
это очень мощная программа, и я советую вам почаще использовать
команду Ье1р — узнаете много полезного для себя.
Если вам удобнее использовать графический интерфейс, чем символьный, вы
можете воспользоваться одним из интерфейсов к программе §6Ь. Один из них—
КЙЬ§. Все, что мы только что проделали с помощью команд отладчика #4Ь,
вы можете сделать, используя меню интерфейса КВЬ& (рис. 22.3).
Программа К1)Ь{» понравилась мне еще тем, что позволяет удобно про-
сматривать регистры, потоки, память, стек и прочее, имеющее непо-
средственное отношение к процессу отладки. Однако имейте в виду, что
интерфейс КВЬ$ сильно ограничивает возможности отладки, потому что
позволяет выполнять лишь базовые функции.
Существуют и другие оболочки для отладчика й^Ь, например, ООО. Эта
оболочка обладает чуть большими возможностями, чем КВЬ&, но все же
она является лишь надстройкой наМ^бЬ. Оболочек много, а |*ЙЬ — один.
Вы можете выбрать оболочку на свой вкус, а я вообще предпочитаю й<1Ь
без всяких оболочек.
Рпэдгага ехПаЙ пзптаПу.
Гейм 51 ер
Тм пгодгат 15 чог гип.
Мь) I
Рию. 22.4. Оболочка ООО
22.4. Трассировка системных вызовов
Вы когда-нибудь задумывались о том, какие системные вызовы использует
наша программа во время своего выполнения? Если да, то этот пункт как раз
для вас. Возможно, пока он только удовлетворит ваше любопытство, но через
некоторое время эта информация станет вам по-настоящему необходима.
Проследить, какие системные вызовы использует наша программа, по-
зволяет программа я1гасе. Для ее установки нужно установить пакет
Мгасе.
Формат вызова команды я1гасе следующий:
вггасе ( -сИПыдгССЕТухх 1 [ -асоХшпп ] [ "-еехрг ] ...
[ -оШе ] [ -рр!<3 ] ... [ -БзСгзтге ] [ -иивегпапе ]
[ сопцпапб '[ агд .. . ] 1
Ключи программы перечислены в таблице 22.3.
Ключи командной строки а№все
Таблица 22 3
Ключ Назначение
-С Подсчитывать время, затраченное на каждый вызов и обработку ошибок. В конце трассировки будет представлен подробный отчет
Выводить отладочные сообщения самой программы зТгасе на стандартный вывод ошибки
4 Трассировать дочерние процессы, созданные уже трассируемыми процессами
л Данная опция применятся только нмаын с опцией -о имя_файла. Каждый трассируемый процесс будет записан в файл имя_файла.р|б
•г Следовать вызовам у(огкО. Данную опцию нельзя использовать вместе с опцией -(
•п Вывести справку
-( Выводить указатель инструкции во время системного вызова
-я «Тихий режим». Подавляет вывод некоторых сообщений
г Выводить относительную метку времени для каждого вызова
Перед каждой строкой выводить текущее время
-« То же, что и -Т, но будут выводиться также микросекунды
-т Показывать время, потраченное на системный вызов (то есть разницу между временем запуска и временем завершения вызова). Для каждого вызова
'V Получение дополнительной информации
-V Вывести номер версии зтгасе
-X Выводить не-ДЗСН строки в шестнадцатеричном формате
Выводить все строки в шестнадцатеричном формате
-а столбец Выровнять возвращаемые вызовами значения в указанном столбце (по умолчанию 40)
-е выражение Позволяет задать отслеживаемые события. Зв более подробной информацией обратитесь к справочной системе
-е (тасе=набор Определить набор отслеживаемых вызовов. Например,!гасег=ореп,сЩве,геаР,»гНе
Продолжение табл, 22.3
Ключ Назначение
-е иасе=ф)е Будут отслеживаться только вызовы для работы с файлами (орел, «1*1,«Ыпос1,мп11пк и т.д.)
-е (гасааргосезз Отслеживаются вызовы для работы с процессами (1сгк. вхес, лаФи др.)
-в 1гасе=пездогк Отслеживаются сетевые вызовы
-е Тгасе»з1дпа1 Отслеживаются вызовы для работы о сигналами
•а ТгасеЦрс Отслеживаются 1РС-вызовы
-е аЬЬгеу=набор Сокращает вывод каждого члена структуры. Например, аЬЬгем=а!( или аЬЬгеч=попе
в иегЬоае=набор Различать структуры различных системных вызовов, по умолчанию иегЬ08в=а11
♦в гам^яе! Выводит не декодированные значения аргументов системных вызовов. Данный аргумент полезен, если вы не доверяете декодированию или хотите знать точное числовое представление аргумента
-а з1дпа|=набор Определяет набор трассируемых сигналов. По умолчанию 5юпа1^а)1. Вы можете использовать восклицательный знак для отрицания, например, з!дпа!»!5Ю10 означает, что сигнал 31010 не будет трассирован
•в геаб=набор Выполнять полный шестнадцатеричный и А8С!|-дамр всех прочитанных вызовом теаб() данных. Например, чтобы видеть все данные, поступающие через дескрипторы 2 и 7, введите тааб=2,7
-а тебте=набор То же, что и -е геаф но только для записи
-о имя_файла Перенаправить вывод программы в указанный файл. Данный файл будет полезен для дальнейшего анализа трассировки
-Р р)б Присоединиться к процессу с Р1В=рШ и начать трассировку
-5 размер Установить максимальный размер строки (по умолчанию 32). Имена файлов не рассматриваются как строки, поэтому всегда будут напечатаны полностью
-3 критерий Сортирует вывод гистограммы, которая выводится опцией -с. по задан- ному критерию: рте {время), са!1з (вызовы), пате (имя) и потйпд (без сортировки)
-и «мйпояьаойателй Запустить программу от имени указанного пользователя. Эта опция будет полезной, если вы, зарегистрировавшись как гооТ, будете проверять корректность работы программы, если бы она была запущена под другим пользователем
Вы даже не можете себе представить, какие системные вызовы использует
такая маленькая программка:
Листинг 22.2. Файл ргод.с
#1пс1ид.е <5Сдто.Ь>
тпЬ таги()
{
ргтпЫ ("Не11о\п") ;
геСигп 0
}
Откомпилируйте эту программу (дос -о ргод ргод.с) и запустите
»1гасе:
$ я1гасе ргод
Вы увидите следующий вывод:
ехесче(’./а.оиЬ*, [“./а.оиС"], [/* 21тагв*/]) = О
ипате ((вув^’Ыпих* , по<Эе=*1оеа1.Ь:0В1:. 1оса1(3ота1п*, .. .}) =0
Ьгк(0) = 0хЙ0495Ь4
ореп{«/еьс/1а.зо.рге1оаа', ОЦЕШСЖ1Л) = -1 ЕМОЕМТ (Но
зисИ Ше ог йХгесСогу)
ореп ("/етс/1а.ао.саскея , О_ЯВОЖУ) = 7
1зСаС64(7, (вС^поае=8_1ЕЙЙЗ|0644, 8С_э1яе=31578, ...)) = 0
о1ашттар(НПЪЬ, 31578, РЕОТ_КЕАБ, МАР„РКТУАТЕ, 7, 0! =
0x40014000
с!озе(7) = 0
ореп{“/11Ъ/1686/.иЬс.БО,.6*, О_НМШ = 7
геай(7, н\177ЕЪП1\ 1 \ 1 \0\0\0\0\0\0\0\0\0\3\0\3\0\1 ЛОХ0\
О'и\1В4\О" ... , 1024) = 1024
15^164(7, {вс_люае=8_1ГВЕ©.|0755, 8Ь_з12е«1401027, ..,}) =
0
о1а„штар(0x42000000, 1264928, РКОТ_НЕАП|РВОТЦЕХЕС, МАР_
РВ17АТЕ, 7, .0) г 0x42000000
тргоЬесиОх4212сОО0, 36128, .₽В0Т_ЫОКЕ) =0
О1й_птар(0х4212с000, 20480, РКОТ„ВЕАПI РК0Т_Ж1ТЕ, МАР„
РК1УАТЕ1МАР„Р1ХЕР, 7, 0х12с000) = 0х4212:с.000
О1а„ттар(0х4213.10;б0, 1564.8 , РЙОТ_КЕАП I РКОТ^ИКТЕ, МАР_
РРЛ7АТЕ|МАР_Р1ХЕП|МАР„АК0КУМ0иБ, -1, 0) ='0x42131000
с!ове(7) =0
типтар(0x4001.4000, 31578) = 0
Ьгк(0) = 0х80495Ь4
Ьгк(0х80495е4) = 0х80495е4
Ьгк(0х804а000) = 0х804а000
18СаЬ64(1, [зС„тподе=3_1РСНВ 10620, вС_га^=таке<5ет (136 , 0),
...Н= 0
тгпар2(№1ЬЬ, 4096, РНОТ^НЕАП I РНОТ^ЖТТЕ, МАР_РВ1УАТЕ I МАР_
АИОНтетз, -1, 0) = 0x40014000
нг1.Се(1, яНе11о\п", 6) =6
типтар(0x40014000, 4096) - 0
_ехк(0) = ?
Читать вызовы нужно так:
имя системного вызова = возвращаемое значение
В нашем случае мы вывели на консоль шесть символов, поэтому вызов
тлтПеО возвратит значение 6.
В случае, если системный вызов завершился неудачно (обычно код ошибки
-1), программа 8(гасе выводит не только код, но и описание ошибки:
орепГ/Гоо/Ъагв , О„ИЮНЬУ) = 4 ЕЫОЕИТ (Ж вис И Ше.ОГ
Йтгессогу)
Стандартные константы выводятся в их символьном представлении:
орепС’ЕНе.ааС*, О_ЖОЖУ|О„АРРЕМП(О_СНЕАТ, 0666) = 3
Сигналы также выводятся в символьном представлении, например:
зхдвизрепб ([) сипПптвИей ... >
--- 81С1ЫТ (ХпсеггирС) -
+++ кШей Ьу 3101ЫТ +*+
Структуры, точнее члены структур, заключаются в фигурные скобки и
выводятся в формате имя_члена=3начеш1е, например:
1зЬаЬ ("/йеу/пи! 1" , {8Е„Я1оае=5_1РСНН| 0666,
гс1еи=таке<3еи(1, 3), ...}) - 0
Символьные указатели печатаются как строки я С, то есть их значения
заключены в двойные кавычки:
геа<3(3, *гооЬ •. :0:0 :5у 8 (:ет АатХптзСгаСог , 1024) ~ 4.22
22.5.Оптимизация программ.
Профайлер дрго!
Ваша программа работает медленно? Скорее всего, причина кроется в
неэффективном, медленном алгоритме. Существуют программы, позво-
ляющие определить время работы каждой функции вашей программы и
всей программы в целом. Программы такого рода называются профайле-
рами, В вашем дистрибутиве может присутствовать один из профайлеров
вргоГ, ргоГ, ргоГПег.
Сейчас мы рассмотрим программу &ргоГ (ТИе 6А<1; Ргой1ег), позволяю-
щую определить время работы каждой функции. Основные ключи про-
граммы представлены в таблице 22.3.
Ключи командной строки дрго< Таблица 22.3
Ключ Назначение
Не выводить информацию р статически* функциях
На выводить описание каждого поля в итоговой таблице
Включить эвристический анализ текстового сегмента объектного файла с целью создания статического графика вызовов
-е имяфункции Не выводить отчет о работе указанной функции и обо асех функция*, которые из нее вызываются
-Е ими_функции Не обрабатывать указанную функцию и все функции, которые она вызывает
4 имяфункции Выводить информацию только об указанной функции и обо всех функциях, которые из нее вызываются
-Р имя функции Обрабатывать только указанную функцию и все функции, которые из нее вызываются
-к 1опс1 Типс2 Не выводить информацию о вызове функции ТОпс2 из функции Тыпс1
Создание итогового файладаоп.зит
-7 Вывести функции с нулевым процессорным временем
22.5.1. Использование профайлера
Для использования профайлера нужно скомпилировать программу с оп-
цией компилятора -р§ и без опции ~о, так как профайлер по умолчанию
работает с файлом а.оис. После этого запустите файл а.оиг., чтобы
он создал файл дтоп.оис. Теперь запустите профайлер с параметром
--по^гарЬ:
$ дсс -рд 1. с
$ . / а . ои I.
$ дргоЕ -Ь —по-дгарб
Без ключа -Ь профайлер выведет описание полей итоговой таблицы:
♦ Игле: время работы функции в процентном соотношении;
* синшкШуе кесошЬ: сумма числа секунд этой функции и вызывающих
ее функций,-
♦ че1Г зесопйк: число секунд, потраченное на работу этой функции в
отдельности;
* СаНя: число вызовов;
♦ зеИ тз/саПв: количество миллисекунд, на протяжении которых функ-
, ция выполнялась;
♦ Ша! тк/саПя: количество секунд, на протяжении которых выполнялась
функция и все функции, которые вызываются данной функцией;
• пате: имя функции.
Чтобы было понятно, что означает каждое поле, рассмотрим листинг 22,3.
Рис. 22.5. Программа ррго(
Листинг 22.3. Демонстрационная программа
#1.пс1.ийе <з!:<31о.И
ёпС гипсС1ол2О
хпп 1;
/* генерируем задержку */
Еог (1=0;1<9999999;1++} ;
геШгп 777 ;
ДоиЫе ЕипсЫоп (уотд)
{
1пР 1 ;
доцЫе х = 7.2323232323, у=324343.3434';
/* генерируем задержку */
ГОГ (1=0;1<9999999;1++) Х/у;
ГипсМоп2 {) ;
геШгп х/у; '
1пс та1п()
{
1п1 1;
ЙоиЫе 1;
^ОГ (1=0;1<10;1*+)
{
рг1пСЕ(*%а\Ь',1);
1=СипсЫоп() ;
}
геЬигп 0;
}
Как видно из листинга, функция ЕилсС1оп () вызывается 10 раз (см. поле
саПк). В свою очередь, она вызывает функцию Сипс+ЗопЗ (), следова-
тельно, число вызовов этой функции тоже равно 10. Функция ГипсНоп()
выполняется 1.09 секунд (зеИ зесопйз), а так как ее никто не вызывает
(кроме таш), то поле ситиТй&Злге эесопйв также равно 1.09. Функция
1ипсЫоп2() работает 1.07 секунд, но ее вызывает функция ^ипсЫоп(),
которая работает 1.09 секунд. Следовательно, поле сит.ц1аЫуе вес-
опав для второй функции равно 1.09+1.07=2.16. Поле ве!Е тз/са11
эквивалентно полю зе1 йесопйз, только его величина представлена в
миллисекундах. Поле ЬоСа.1 гоз/саП обратно полю сшгшТаЫ^е са11
и содержит время выполнения этой функции и всех дочерних функций,
в то время как поле сиши1аС1ме са!1 содержит время этой функции
и всех родительских,
22.5.2. Как оптимизировать программу
В качестве оптимизации программы могу вам порекомендовать предпри-
нять следующие действия:
1. Запустите профайлер, и пусть он определит время работы всех функ-
ций.
2. Перепишите функцию (или функции), которые занимают больше
всего процессорного времени. Возможно, вам придется изменить
алгоритм работы этих функций.
3. Когда алгоритм изменить невозможно, можно попытаться перепи-
сать часть кода функции на языке ассемблера, если, конечно, это не
противоречит идеологии вашей программы (возможно, вы хотите,
чтобы она запускалась на как можно большем количестве разных
платформ - тут без С не обойтись). Если переработка функции невоз-
можна или помогла мало, то попробуйте оптимизировать программу с
помощью опций компилятора. Прежде всего выключите отладочную
информацию (не указывайте опцию ~$) — и размер программы станет
меньше. Используйте одну из опций оптимизации -О.
Глава 23
РАЗРАБОТКА
ГРАФИЧЕСКОГО
ПРИЛОЖЕНИЯ:
БИБЛИОТЕКА 6ТК+
----ВВЕДЕНИЕ В ОТК+
----БИБЛИОТЕКА ОИВ
4»--ПЕРВАЯ ПРОГРАММА НА (ЗТК+
о— виджиты
ымих ПОЛНОЕ РУКОВОДСТВО
Сейчас мы поговорим о создании графического интерфейса для вашей
Опих-программы. Как вы знаете, средствами одного С нормальный О1Л
не построишь, тем более что привычный пользователь \Ушбо\уя очень
требователен не просто к наличию 01Л, но и к дизайну формы (окна
программы). Поэтому без дополнительных библиотек вам не обойтись.
Самыми распространенными библиотеками для создания СНП являются
библиотеки ОТК + и О:. Рекомендуется использовать только эти библио-
теки, поскольку велика вероятность того, что они уже будут установлены у
пользователя (уж ОЬЮМЕ и КОЕ есть почти у всех). Рассмотрим подроб-
но библиотеку ОТК + , поскольку она, на мой взгляд, проще, чем О(.
Скорее всего, ОТК+ у вас уже установлена, но вам понадобится допол-
нительно установить пакет §гк+-беуе1, содержащий необходимые файлы
для разработки ОТК-программ.
23.1. Введение в СТК+
Первоначально библиотека ОТК+ (далее СгТК) была разработана для
использования программой О1МР, отсюда и название — ТИе О1МР Тоо1-
кй. Со временем библиотека стала использоваться для разработки других
приложений для среды ОЬЮМЕ. Сейчас СгТК — это объектно-ориентиро-
ванный и кросс-платформенный инструмент для создания графического
интерфейса приложений, причем созданные с использованием СгТК при-
ложения независимы от среды ОЬЮМЕ. Ваше приложение, написанное на
ОТК, будет отлично работать в КОЕ или любой другой среде — главное,
чтобы библиотека СгТК была установлена на компьютере.
Сама библиотека ОТК+ стоит на трех китах:
• Библиотека 6НЬ предназначена для оперирования с различными
типами данных. Данная библиотека будет полезной для разработки
любых приложений, даже не ОТК. Эта же библиотека содержит функ-
ции для работы с памятью и для обработки ошибок. О типах данных
библиотеки ОБЬ мы поговорим позже.
• Библиотека СИЖ (ТЬе СНМР Огам/шу КД) — библиотека низкого уров-
ня, ее функции взаимодействуют с функциями оконной системы (X
5УимкУ№), Используется для построения графических примитивов.
♦ Библиотека ОТК — используется для создания графического интер-
фейса
23.2. Библиотека СШЬ
23.2.1. Стандартные типы данных библиотеки (ЗНЬ
Библиотека СЖЬ содержит типы данных, аналогичные типам данных
языка С, а также такие структуры, как деревья, списки; функции для
работы с памятью и обработки ошибок. Это сделано для того, чтобы
ваше приложение могло быть легко портировано на другую платформу.
Например, на одних компьютерах тип т1 может быть 32-разрадным, а на
других — 64-разрядным (это зависит от архитектуры центрального про-
цессора). А если вы используете тип §пП, объявленный в библиотеке (ЗИЬ,
то можете дальше разрабатывать свое приложение и не беспокоиться о
том, как оно будет работать на К15С-машине под управлением УМшбом'5
ИГ. В таблице 23,1 перечислены типы данных библиотеки (ЗЫЬ, которые
соответствуют типам данных С.
Таблица соответствия типов данных 6йЬ и С Таблица 23.1
Тип данных С Тип данных СПЬ
сЬаг дсКаг
кГогг дзЬоП
!опд дЗояд
д!п(
Ьоа! дЬоо1еап
иги(дпей сГ>аг дисЬаг
ипядпвй аНог! диалог*
ипв1дпей 1опд ду|опд
дшгй
Т1оа1 дГоа!
йоиЫй дйоиЫе
1опд йоиЫе дШоиЫв
УО|<Г дро*п1ег
Для использования этих типов данных, как и прочих возможностей би-
блиотеки (ЗНЬ, необходимо подключить заголовочный файл §11Ь.й.
23.2.2. Функции для работы с памятью
Функции для работы с памятью библиотеки СтПЬ выполняют те же дей-
ствия, что и соответствующие им функции языка С. Вот их прототипы:
драхпСег д_та11ос( ди1опд з!г;е );
дротпЬег д_геа11ос( дротпРег тет, ди!опд з!зе );
уо1с1 дротпРег тет );
23.2.3. Строки и СНЬ
Библиотека СгПЬ содержит довольно много функций для работы со
строками, но я перечислю лишь самые с моей точки зрения интересные
(таблица 23.2).
Некоторые строковые функции библиотеки (ЗНЬ
Таблица 23.2
Прототип Описание
дсНаг* дзИсНод (дсЬаг* а) Функция удаляет все пробелы в строке 5, стоящие в начале строки (до первого печатного символа). Данная функция может пригодить- ся для контроля введенной пользователем информации
дсОаг’ д_з1гсНотр(дсКаг’ 8} Функция удаляет все пробелы в строке а, стоящие в конце строки
дсЬаг* д__эрз1г)р( дсПаг* в ) Функция удаляет пробелы в начале и в конце строки
той дйгбомит (дсЪаг* а} Функция переводит все буквы строки а а нижний регистр
70(0 двОир {доИаг* в) Функция переводит все буквы строки з в верхний регистр
701 й д ачгеиегзе (дсЬаг* в) Функция преобразовывает прописные буквы я строчные и наоборот
23.4.4. Списки
Библиотека СгПЬ содержит средства для работы с одно- и двусвязными
списками. Особенность двусвязного списка заключается в том, что по
нему можно перемещаться в обоих направлениях — назад и вперед. В
файле §81131.11 (ОБЬ 8т§1е Ы§1) описаны средства для работы с односвяз-
ными списками, а в файле §1Ы.Ь — для работы с двусвязным списком.
Вот структуры односвязного и двусвязного списков:
// одиосвязный список.
Рурейе^ вРгисЬ бЭЫвР;
дротпЕег ДаСа;
СЗЫзС *пехЬ; // указатель на следующий элемент списка
}
!/ двусеязный список
сурейе^ зйгисЬ СЛДзС,-
еСГисГ. „СЫзС
{
дротпСег <3.аСа.;
СЫвС *пехС; // указатель на следующий элемент списка
СЫвС *ргеу; // указатель на предыдущий элемент списка
}
Поле с!а1а предназначено для хранения данных списка, причем они могут
быть любого типа, ведь §ро1'Шег — это тип уоШ*.
Работать со списками очень просто. Для начала нужно объявить
список:
СЬЫ *11бЬ = ШЬь;
СБЫзЪ -51151: = ШЬЬ;
Затем добавить элементы в список. Это можно сделать с помощью двух
функций — §т1181_аррепб() или §_к1Ш_ргерепс1() — в зависимости от ис-
пользуемого тина списка:
ссИаг *е1 - д_5Сгаир("это первый элемент");
ИвС = д_11вЬ_арреп<3 (11вС , е1);
Функции §_П&_аррепб() и Е_з1к1_<ргереп(1() добавляют элемент в конец
списка. Если вы хотите добавить элемент в начало списка, нужно ис-
пользовать функции:
д_11зС_ргереп<3(С1.д.зЬ дроЗпЬег йаСа)
д„.з11зС_ргереп<3. ((ЗЗЫзЬ *11йС, дротпЬег йаСа)
Чтобы вставить новый элемент в определенную позицию, нужно исполь-
зовать функции:
аЫзЬ *д_ИзД_±п8ег1: ( (ЗЫэТ *Иб1:, дроЗпЬег <3а(:а, д1пЬ розШоп )
ййЫаТ *д„511зС„1пвегг ( (ЗЗЫзГ *11зГ, дрозпЬег <ЗаЬа, д!пЬ роз Шоп )
Здесь ромбоп — это номер элемента, перед которым нужно вставить
новый элемент. Если ро5Йюп=0, то элемент будет добавлен в начало
списка, то есть перед бывшим первым элементом.
Для удаления элемента используются функции:
ШеЬ *дш11зь_гетОУе(ОЫэС *1Ы:, дроЗпСег йаСа )
ЙЗЫзс: ^д^БИзС—Гёнкэт-е (ОЗЫШ *11бС, дроЗп^ег баСа)
Для передвижения по списку используются функции:
д„11йс_пех1: () , д_з11зс„пех1: () - на "щаг" вперед
д_11.8Ь,_ргеу() - на.зад
Вот небольшой пример работы со списком — вывод на консоль всех его
элементов:
// <ЗоиЫе„11зТ должен быть определен и содержать элементы
СЫзЬ *11зб = боиЫе_11йЬ;
иЪИе (1* =№ЛЛ|)
{
рг 1.пЬ г (, Изб-хЗаХа) ;
ИзЬ - д^ИзТ.—пехТ ;
}
По окончании работы со спискам не забудьте освободить память:
Уо1б д_ИзТ_^гее (<ЗЫйЬ *11вС) ;
Vо^д д._211еЬ„Сгее ((ЗйЫзЬ *в11йС);
Для сортировки списка используется функция:
СйЫзт *д_!з11з1:__эогС (<ЗЗБ1зЬ * з11вЬ, ССощрагеЕипс С);
Первый параметр — это список, который нужно отсортировать. Второй —
это функция сравнения двух элементов. Вот ее прототип:
сурейе!; д!пс {*ОСопрагеГипс) (дсопзСротгАег а, дсопзВротпЬет Вы-
данную функцию вы должны написать самостоятельно. Она должна при-
нимать два параметра и возвращать целое значение:
♦ если а<Ь, то -1 (точнее, любое число меньше 0);
* если а==Ь, то 0;
• если а>Ь, то 1 (любое число больше 0).
Библиотека ( Н1Ь также содержит средства для работы с деревьями — как
бинарными, так и произвольными, но мы эти средства рассматривать не
будем.
23.2.4. Таймеры в (ЗПЬ
Библиотека СЗНЬ позволяет использовать таймеры в наших программах.
Для этого нужно:
• подключить заголовочный файл ^Птег.й;
• создать таймер функцией бТппег *§~Бтег_пе\у();
♦ запустить таймер функцией §тишег_8Саг1(СгТ[тег *йтег);
♦ узнать время, отсчитанное таймером — §_Йтег_е1ар5ед();
♦ при необходимости перезапустить таймер с помощью функции
йЗ*тег__ге8ег(ОТ1тег *Бтег)
• остановить таймер функцией §__йтег_ягор(СгТ1тег *йтег);
♦ уничтожить таймер — §_Итег_с1е!йгоу(СгТ1гпег *1ппег).
Стоит остановиться подробнее лишь на функции §_и1пег _е1ар.чес1(С}Т1гпег
"и тег, §и!оп§ *тсз). Данная функция возвращает число секунд, отсчи-
танное таймером. По адресу указателя *гпсз записывается число микро-
секунд.
Пример использования таймера представлен в листинге 23.1.
Листинг 23.1. Использование таймера
*1г!с1иае <вСй1о.Ь>
#1пс1цДе <д11Ь.г:>
#1пс1и.йе <дЫтег.Ь>
1пЬ та1п()
{
ДоиЫе нес;
диТопд те;
1пГ. 1;
(ЗТ1шег *Д1гпег = д_С1тег„певд () ;
ргтпбГ("Данный цикл будет работать не более 10 СёкундХп") ;
д„Ь1теег„ебагЬ(Ь1тет);
Гог (1=1; 1>0;)
{
вес = д_к1тег_е1ар9еб {Ытег, Ьтв) ,•
1Г (вес >-10)
{
д_11тег_в1:ор (С1тег) ;
рг1пЫ( "Таймер остановлен. Мкс: %й\п";тз);
Ьгеак;
)
)
д_С1тег„Йевбгоу (Ытег) ;
геЬигп 0;
23.3. Первая программа на ОТК+
23.3.1. Виджиты
Перед написанием самой простой (ЭТК-программы нужно разобраться с
терминологией ОТК. Элементы графического интерфейса пользователя —
окна, кнопки, поля ввода, переключатели и тому подобное — называются
виджитами.
Основным элементом графического интерфейса является окно. Виджиты
для размещения в окне помещаются в контейнер. В самом окне выравни-
вать виджиты можно с помощью вертикальных/горичонтальных боксов
или же таблиц. Второй способ более гибок, хотя он может показаться
вам сложнее.
Виджиты могут реагировать на сигналы, например, щелчок мышью.
При этом вызывается функция-обработчик события (сигнала), если вы
определили ее.
Работа с виджитами происходит по такой схеме:
1. создание виджита с помощью одной из функций библиотеки ОТК;
2. определение свойств виджита;
3. определение сигналов виджита. если он должен реагировать на сиг-
налы;
4. размещение виджит а в контейнере, то есть привязка его к окну;
5. отображение виджита.
Нужно обязательно отобразить ввджит, иначе его никто не увидит. На-
пример, следующий фрагмент кода создает виджит — кнопку с текстом —
и отображает ее.
СД кИтддес *ЪибДоп;
/* Рисуем кнопочку с надписью Не11о, АН */
ЬиЫгоп = дЬк„ЬиСГоп_пеи„н1ЬИ„1аЬе1 ("Не11о, АН’);
/* При нажатии кнопки будет вызвана функция Ъе11о() */
дбк_Ё1дпа1_соппесС (СТК_ОВ^ЕСТ (ЬиГД.оп) , "сИскей”,
П1е]. 1о), ШШ ;
/* Помещаем кнопку з контейнер *!
дГк_сопСа1пег„айй (СТК„СОНТА1ЖР (и!гЛоч) , ЬиЬбоп) ;
/* Отображаем кнопку. */
дбктм1<1деЁ_з?1ок (ЬиГ.Доп) ;
Первый оператор создает кнопку (ЬиПоп). второй — добавляет кнопку в
контейнер. В данном случае контейнером является наше окно. Виджит
Мпскж должен быть создан раньше: нельзя создать кнопку без окна.
Точнее, можно, но тогда она не будет привязана к какому-либо окну и
мы ее не увидим. Функция й.1к_'Л1(1^е(:_хНо^' () отображает нашу кнопку.
Не забудьте отобразить и само окно. Порядок отображения виджитов
особой роли не играет, но рекомендуется главное окно отображать в
последнюю очередь.
23.3.2. Окна
Сейчас мы напишем программу, которая будет формировать небольшое
графическое окошко. Начнем сразу с исходного кода — так будет проще
понять, что есть что.
Листинг 23.2. Простое окно (файл НгбГс)
#1пс1ийе <дЬк/д!к.Н>
Т1Г- та!п! 1.пГ. агдс, сЬаг *а^дV[] )
(
(ЗЬк№1йдеЬ *и1пйом1;
дск_1п1с( &агдс, &аI'дV );
иТпаовд! = дтк_н1паои_п®и( СТК_И1ЫООИ_ТО₽ЬЕтеь );
дкк_и1.П<1ом_5еС_Ь 111е (СТК^НТМПОк/ (и1пс1ом1) , ” Заголовок" ) ;
дСк_^1йдеС_Бкои( и!пйом1 );
дкк_та1п();
гек.игп 0 ;
}
Сначала мы подключаем заголовочный файл дСк/дск.И — это необ-
ходимое условие для того, чтобы начать работу с библиотекой ОТК. В
первой строке программы мы объявляем наш основной (й единственный
в этой программе) виджит — виджит основного окна:
С1кШс1дег *вд1гк1о«1 ;
Обратите внимание, что виджит объявлен, но работать с ним пока
нельзя. Сначала (обязательно до вызова первой ОТК-функции) нужно
вызвать инициализирующую функцию ц1к_шк() и передать ей два два
параметра — аргументы функции шаш(). После того, как библиотека
инициализирована, нужно вызвать функцию §1к_м?1пбо^_пем?(), кото-
рая создает окно (напомню, что пока окно объявлено, но не создано).
Теперь, когда виджит окна создан, можно установить его свойства и
определить реакцию на сигналы. Установим свойство ТН1е (заголовок)
окна. Это делается с помощью функции ц1к %1пс!ом/_$е1_и(1е():
, "Заголовок") ;
Теперь можно отобразить наше окно:
0Г.к„_и1йдеС_в11ои( итпбо^?! ' ) ;
Чтобы наше приложение могло реагировать на события оконной среды
(например, щелчок мыши), нужно вызвать функцию ц!к_тат(). Функ-
ции §1к__шЙ() и §ск_та1п() должны присутствовать в любой ОТК-про-
грамме.
Теперь откомпилируем наше приложение. Для этого введем следующую
команду в командной строке:
$ дсс пгиг.с -о ИгвС 'дСк.-сопЁ1д —сНадз1 'дСк-ссиПд —ИЬв'
Флаги 'дгк-согИхд --сЁГадв” 'дГк-сопЕтд ~~ИЬз' нужно ис-
пользовать при компил яции любой ОТК-программы. Если компиляция не
удается, то проверьте, что вы используете апострофы ('), а не одинарные
кавычки (‘), и что программа §1к-соп/1$ у вас установлена.
Запустим нашу программу в эмуляторе терминала X УУтдоху (или оконной
среды 6К0МЕ/КЭЕ):
$ ./Под
Вы увидите окно, изображенное на рис.23.1.
Рис. 23.1. Простое окно
Геперь закроем окно и перейдем к терминалу: окно закрыто, мы его боль-
ше не видам, а терминал не освобожден. Наша программа не реагирует
на событие закрытия окна. По идее, Когда графическая среда закрывает
окно, программа должна завершить свою работу. А наша программа
этого не делает. Значит, нужно «научить» ее реагировать на события
(сигналы) оконной системы. Для этого нажмите в терминале Сгг1 + С и
отредактируйте исходный текст программы следующим образом:
Листинг 23.3. Добавим реакцию на закрытие окна
#1пс1и<1е <дСк/дкк.Ъ>
1пС тад-п! хиГ. агдс, сбат *агдм[] )
ОСкИгйдеГ *и1п<3о»1;
дск_1п1Ь( &а.гдс, &агду );
вдхпскм! = дкк_и1пйом_пем( (5ТК_ИХЫООИ_ТОРЪЕ\ГЕЬ ) ;
дск_в1дпа1_сопвесС ( СТК_ОВЗЪСТ( и1.пДои1 ), "ЗееТгоу',
СТК^1®АЪ^1тС( дСк_таХп_чи1Ь ), ГЯ1Ы, );
дЪк_И1с1деС_.йЪон ( иХпйоиХ );
дЪк_та1п();
геЬигп 0;
}
Функция в1к_81§па1_соппес1() устанавливает реакцию объекта иТпйото!
на сигнал Йеггау и вызывает функцию д1к_тай1_цшТО для завершения
работы программы.
А что если нам при завершении работы программы нужно выполнить
какие-нибудь специфические действия, например, удалить временные
файлы? Тогда нужно написать свою функцию-обработчик события
с!еЫгоу (листинг 23.4).
Эта функция будет называется аезЬгоу_»1пбо«1 (), и мы «пропишем»
ее в функции ^1к_!йцпа1_соппес1() в качестве обработчика события за-
крытая окна вместо й1к_та1п_циИ(). Делать она не будет ничего, просто
вызовет стандартную функцию §Гк_та1и_цшС().
Листинг 23.4. Добавляем собственную функцию-обработник
завершения работы
#1пс1и<3е <дск/-д±к.11>
уо!д йезЬгоу^ихпйои! ( СЪкЖйдеЪ *ы1йде^ , дро1пг.ег йаГа);
1пЬ та!п( 1пс агдс, сИаг *агдгуП )
(
(ЗЬкИШдеС *вд1п4<ж1; .
дСк_1п1Ь( &агдс, Ьагду ! ;
-^.гпаовд! = дГк^1паон„пе»( 5ТК_М1МП0ИшТ0РЬЕУЕЬ ) ;
дСк„з1дпа1_согте.сС ( (ЗТКшОВкТЕСТ ( шпй<ж1 ) , "(Зейкгоу" ,
((Зск31дпа1Гипс)йез&гоу_и1п<Дои1., 1йшк1о«1 ) ;
дтк_и1бдег_в1ао’.';! н1пйо«й };
дг.к_та!п (} ;
гекигп( 0 );
}
уо!д дезСгоуцюгискж!. ( ЗЬкИХйдек *и1йдек, дро!п1ег йаЬа}
{
дС.к_гпа1п_ди1Х () ;
)
23.3,3. Изменение размеров окна
Вам кажется, что окно слишком маленькое и не подходит для нашей
программы? Для изменения размеров окна лучше всего использовать
функцию
7о1д дкк_н1п<1ои_8еЬ„йеГаи11:„:812е(бскИХпйои *и1пйои,
д!пг итаСп, д!лЬ ИетдТЬ);
Эта функция устанавливает ширину окна \ушдо\у равной УлдШ, а высоту —
ЬещШ.
Для изменения позиции окна на экране используется функция
уоЫ дСк_вд1<1деС„.ееЬ„иро811:1оп *иМдеС ,
д1пЬ соогб„х, д1пЬ соогсфу);
Эту же функцию можно использовать для изменения расположения лю-
бого виджита — не обязательно, чтобы последний был окном.
Первая функция объявлена в файле дТк/дскиДпеЗои .Ь, а вторая —
в файле дкк/дскитбдеТ «И:
#1пс1ис1е <дТк/дТки1пйо«.Ь>
#1.пс1и<1е < дСк/дСкиМдеС .И>
дск_н1пйоад_зеС_йеЁаи1С_„з1^е (и!паои1, 200 , 3 00);
дСк_х1даеС_8еС_иро81С1оп(И1ПЙОШ1, 50, 50);
23.3.4. Обработка сигналов
Перед тем, как перейти к следующему пункту, нужно еще раз рассмо-
треть функцию й1к_мцла1_соппес1(). Данной функции нужно передать
четыре параметра:
♦ СЛкОЬ]ес1 *оЬ]ес( — объект, которому может быть послан сигнал;
♦ сопзЬ ^сйаг *пате — имя сигнала, например, «бекГгоу»;
• С(к8фпа11ипс Гипс—- имя функции обратного вызова, то есть функ-
ции, которая будет вызвана для обработки сигнала;
♦ дро1а1ег <1а1а — любые данные, которые будут переданы функции-
обработчику.
Что такое сигнал? Как только пользователь переместил мышь, оконная
среда посылает приложению сигнал, оповещающий о том, что мышь была
перемещена. Как только пользователь щелкнул мышью, приложение
получит сигнал об этом щелчке. Обрабатывать все сигналы может окно,
но удобнее для каждого виджита установить собственную реакцию на
события.
Функция, которая обрабатывает сигнал, называется по-разному: функ-
ция-обработчик (мы будем использовать именно это название), функция
обратного вызова и саИЬаск-функция. Такой функции нужно передать
два параметра (их передаст сама СтТК):
♦ СИкМШДО — виджит;
• Ершгйег гкйа — данные.
Параметры, которые нужно передать обработчику, зависят от передава-
емого сигнала. Например, если бы мы передавали не сигнал «Ое^гоу». а
сигнал «бе!е{е~еуеп(», то нужно было бы указать уже три параметра:
♦ (ИкМНх!^ *УЙс1§е1 — виджит;
♦ СйкЕуеп! *еуеп1— событие;
♦ йрот1ег 4а4а — данные.
Вот наиболее часто используемые сигналы:
♦ ЬиНоп_рге$8_еуеп1 — нажата левая кнопка мыши;
* Ьи11оп_ге1еа‘>е_еуеп1 — левая кнопка отпущена;
• тобоппобГуетеШ — движение мыши;
* с1е1еН’_еуеп1 — удаление объекта;
* 4е81гоу_еуеп( — уничтожение объекта;
♦ кеу_рге88_еуепС — нажата клавиша клавиатуры;
* кеу_ге1еазе_еуепС — клавиша отпущена;
♦ еп1ст_по(|Гу_еуеп1 — указатель мыши вошел в пределы объекта;
♦ 1еауе поН€у_еуеп1 — указатель мыши вышел за пределы объекта;
♦ Госи8_1П_еуеп1 — объект стал активным (получи фокус);
• Госи8_ои1_еуен1 — объект не активен;
* бга^_1)ей1п_еуеп( — начало перемещения объекта;
• (1гай_гс^ие8Т_еуеп( — запрос на перемещение объект а;
• йга§__епЗ_еуеп< — перемещение объекта;
* бгор егПег еуетП — объект перемещен.
Наиболее часто используемые события СЮК (используются в функции-
обработчике) перечислены ниже:
♦ СИЖМОТН1ЫО — не произошло никакого события;
* 61Ж_1ЖЕЕТЕ — удаление;
♦ 61ЖПЕ8ГНОУ — уничтожение;
♦ СИЖ \ЮТЮ\ \Ч)Т1ЕУ — уведомление о перемещении;
• СИЖ_1ЖЖГ(Ж_РКЕ88 — нажата любая кнопка мыши;
* СВК_1ВЦТТОХ_РНЕ88 — нажатие первой кнопки мыши;
♦ 61Ж_2ВЕ'ГРО\_РК.Е88 — нажатие второй кнопки мыши;
♦ С11ЖЗВЕ'ТГО\_РНЕ88 — нажата третья кнопка;
• 6ОК_ВиТТОМ_КЕЕЕА$Е — кнопка (любая) отпущена;
♦ СИЖКЕУРК.Е88 — нажата клавиша;
• (ИЖКЕУК.ЕЕЕА8Е1 — клавиша отпущена;
♦ Ст 1Ж ЕУТЕН_\ОТ1 ЕУ — указатель мыши в пределах объекта (вид-
жита);
• С}ПК. ЕЕАУЕЖОТТЕУ — указатель мыши вышел за пределы вид-
жита;
♦ СИЖ_ЕОСЕ'8_СНАУСЖ — изменения фокуса ввода;
♦ (ЗПКСЗГШлКЕУЕУГ — другое событие.
23.3.5. Виджит событий — ЕуегйВох
Далеко не все аиджиты связаны с окнами. Например, СИкЕаЬе! (надпись),
СнкТаЫе (контейнер-таблица), (пкНВох (горизонтальный контейнер),
СИкХ-'Вох (вертикальный контейнер) и некоторые другие с окнами не
связаны.
Если нужно, чтобы эти виджиты реагировали на определенные сигналы,
нужно использовать виджит ЕхепШох. позволяющий привязать сигнал к
не связанному с окном виджиту. Следующая программа демонстрирует
привязку события ЬиПоп_>ргея8_еуеп< к виджиту СНкЪаЬеЕ
Листинг 23.5. Виджит ЕуепТВох
#1пс1и<1е <дбк/дбк.Ь>
1пС гпа1п( 1пС агдс, сИаг *агду[] )
СЬкИЫдек *и!пс1ои1; / / главное окно
ССкШбдеС *еиепк„Ьох1; // емапЬЪох
ССкШйдеС *1аЬе1; // надпись
/* Инициализируем ОТК */
дЬк_1п1к( &агдс, &агдм );
/* Создаем окно с заголовком "Надпись" */
итпдои! - дСк_вд1п<а.ом_певд( СТК„Ы1 №0ИшТОРЬЕУЕЕ ) ;
дкк_и1паои_зеГ_Р1Ые ( СТК_И1КОО>Е »1п<±ж1 ), "Надпись" );
/* Устанавливаем реакцию на закрытие окна */
дкк_з1дпа1„соппеск(СТК_ОВДЕСТ(и1пРои1), "йезСгоу",
ОТК„51аМАЬ_РЦНС(дЬк_ех1С), КПЫ, );
/* устанавливаем ширину рамки контейнера - окна */
ддк„.сопка^пе^„8еС^_Ьо^йе^ти^<^1:к(бТК_С0^ТАI^ЕК(м^п^^ои'^), , 10} ;
/* создаем еУепГ_Ьох */
емепЬ_Ъох! = дГ.к_емеп1_Ьох_пеи () ;
/* помещаем емепЬ_Ъох в контейнер */
дкк„соп1а1пег_айй( <ЗТК_СОЫТА1НЕК ( ’И&дон! }, еуегх_Ьох1 );
/* отображаем еVеп^:^эоx */
дСк„и1.адеС„зЬоад( еуепб_Ьох1);
/* создаем надпись */
1аЬе1 - дТк_1аЬе1_пеи (
-== СИск Неге ко ех1Ь.
) ;
/* помещаем надпись в контейнер еуепС_Ъох */
дСк_сопЬа1пегшайй(бТК_СОЫТАПЯЕН( етепЪДэох! ), 1а.Ье1У;
/* отображаем окно */
дЬк_«1с!деЬ„бЬои (1аЬе1) ;
/* устанавливаем реакцию СРкЬаЪе! на щелчок */
/* (при щелчке - выход) */
дРк_и1йдеР_неЬ_еуепРз (еУепр^Ьох!, ССК„ВОТТОК_.РНЕ35_МАйК );
дЬк_з1дпа1_соппесг ( ОТКРОЙЙЕСТ( еуепР„Ьох! ) ,
"ЬиЕЬоп_ргеез_ейепЕ",
СТК_51СНАЕ„ЕШС( дЪк„.ехП }, МПЬЕ ) ;
дбк_«1ад.еЬ„г.еа112е(еУеп.к„Ь.ох1) ;
/* изменяем курсор над надписью -
курсор превратится в руку */
д<1к_и1гк1оишвеЬ„сиг5ог ( еуепЕ„Ьох1->хт1пс1ои,
дак_сиг8ОГ_пе«(6ВК_НЛНЙ1));
/* отображаем окно */
д1к„ы1ддеЕ„ккои(м1пб.ом'1) ;
дс.к_та1п () ;
геСигп 0;
Откомпилируйте и запустите программу. Над надписью указатель мыши
должен принять вид руки (как в браузере над ссылкой). При щелчке на
надписи программа будет закрыта
Если вы хотите создать надпись на русском языке, то подключите заго-
ловок 1оса1е.К и вызовите функцию:
5еС1оса1е( ЬС_АЬЬ, "ги_КП.КО18-й” );
Конечно, значение докали у вас может быть другим. Эту функцию нужно
вызвать ДО инициализации ОТК+.
ВИИ
-=== СВск Пеге !о ежП. =»-
23.4. Виджиты
23.4.1. Рождение, смерть и состояния виджита
После создания виджита управление ресурсами и памятью, необходи-
мыми ему, выполняется автоматически. Виджиты уничтожаются также
автоматически— при разрушении главного окна. Но иногда бывает нуж-
но самостоятельно уничтожить виджит. Сделать это можно с помощью
функции:
уотсЗ дЬк__,н1адеЬ_йезСгоу ((ЗЬкИтддеС *нЫде'с);
Эта функция объявлена в файле ^к/^квдб^еСК При уничтожений вид-
жита также уничтожаются все его дочерние виджиты.
Если вы освобождаете виджит из контейнера функцией:
Vо^а дСк_сопСа^пе^_^етоVе(^^:кСопСа^.пе^ *сопТ, (ЗГкМДдеС *и) ;
то виджит также будет разрушен.
Иногда нужно переместить виджит из одного контейнера в другой без его
уничтожения. Это можно сделать так (мы будем перемещать надпись):
дЬк_вд1адее_геГ(<ЗТК_ИГОСЕТ{1аЬе11 ) ;
дСк_соп1а1пег_ге.1поуе((5ТК„С0ЫТА1ЫЕЕ(соп1:1) , 1аЬе1) ;
дС.к_СОПСа1п.ег_.ад<1(0-ТК_С0МТА1КЕК(сопЬ2) , 1аЬе1) ;
«Спрятать» виджит можно с помощью функции
уо16 дЬХ-.м1.адеС„Т11йе(ОСкН1аде1: *к) ;
Отобразить виджит снова поможет функция фкмчД2е1у:11о\с().
Виджит может находиться в одном из состояний:
* ОТК_8ТЛТН №ОКМА1. — нормальное;
♦ ОТК_8ТАТЕ_АСТ1УЕ — активное (например, нажата кнопка);
♦ СгТКЗТАТЕРКЕЕЮТН — над виджитом находится указатель
мыши;
* ОТК_8ТАТЕ_8ЕЕЕСТЕО — виджит выбран (установлен фокус ввода);
* СТК_8ТАТЕ_1К$Е№8ПТУЕ — виджит не реагирует на ввод (сигналы).
Определить состояние виджита можно так:
СТК_ИТОСЕТ(и)->5ТаЬе
или с помощью макроса:
0ТК_И10СЕТ„5ТАТЕ(^1й),
описанного в файле ,Ь
Сделать виджит неактивным можно так:
дск_и1дде1._аек_8еп51с1уе (ю.йдеЬ, РАЬЗЕ) ;
Если второй параметр функции §ЙглУ1с1§е1_5е1_8еп8Й1уе() будет равен
ТЕ ЕЕ, виджит уийце! станет активным.
Чтобы наш виджит получил фокус ввода, нужно использовать функцию:
дТ к_уЯддек_дгаЬ_{осие'(к±йдеЬ) ;
23.4.2. Упаковка виджитов, поля вводаи кнопки
Для размещения (упаковки) виджита в окне используются контейнеры.
Существуют два основных вида контейнеров. Первый вид в качестве
прародителя использует объект класса СИ к Вт, а второй — объект класса
СИкСоШашег. Контейнеры первого вида могут иметь только один до-
черний виджит, поэтому они используются для создания специфических
интерфейсов: одной кнопки, рамки, окна.
Контейнеры второго вида более функциональны — они могут иметь много
дочерних виджитов. Чаще всего используются контейнеры:
♦ СИкНВох — позволяет размещать виджиты горизонтально;
♦ СЙкУВох — используется для вертикального размещения виджитов;
• СгкЕЁхеб — позволяет размещать виджиты в фиксированных коорди-
натах;
♦ СгкТаЫе — позволяет упаковывать виджиты в виде таблицы.
Наиболее удачным, на мой взгляд, является контейнер СИкТаЫе, поэтому
в этом параграфе мы рассмотрим именно его. СЙкТаЫе может с успехом
заменить и горизонтальный, и вертикальный контейнеры—что нам стоит
задать таблицу, состоящую или одной строки или одного столбца?
Кроме контейнера СНкТаЫе, в этом параграфе будут рассмотрены:
* поля для ввода текста и обработка введенной информации;
♦ кнопки;
♦ файловый ввод/вывод.
Сейчас мы напишем небольшой конфигуратор, который будет вносить
изменения в файл /екс/гезо^.сопЁ Напомню вам формат этого
файла:
дота1п г 1гта.ги
патезегУег .192.168.0, 1
патезег^ег 192.168.0.2
Директива ботат определяет наш домен, а две директивы патентует —
первый и второй В18 8-серверы. соответственно. Наш конфигуратор не
будет вносить изменения в настоящий файл /е1с/гезо^. сопС — для
этого нужны права суперпользователя. При желании можно будет потом
скопировать файл гебоГу.сопС сгенерированный нашей программой,
в каталог /ебс.
На рисунке 23.2 изображена уже готовая программа. Работает она так.
Когда пользователь введет что-нибудь в поле ввода и нажмет ЕтИег, про-
грамма отобразит введенный им текст на консоли. Когда пользователь
нажмет Ок, введенная им информация будет еще раз выведена на кон-
соль и записана в файл. При нажатии кнопки ОиЙ программа завершит
свою работу. Она должна также завершить работу при нажатии кнопки
закрытия окна — в ОТК программист сам определяет реакции на стан-
дартные кнопки.
Как видно из рисунка, нам понадобятся три поля ввода, три надписи и
две кнопки. Поля ввода мы будем хранить в массиве:
ССкИ1с1деГ: *ей1б[3];
Создать поле для ввода можно с помощью функции ц(к_еп1гу_пе\*О:
еЗЗХШ = дСк_еп1.гу_пеи() ;
Рис. 23.3. Учебный конфигуратор
После создания поля необходимо вызвать функцию $Цк_еп1гу^е1_е<!йаЬ1е().
иначе пользователь ничего не сможет ввести в это поле.
дкк_епкгу_8еша!каЫе(етК_ЕНТКУ(ей!! Ш ) , 1) ;
Ну и, само собой разумеется, нужно установить реакцию на нажатие
клавиши ЕгНег — сигнал асЦуаГе:
д! к_з!дпа 1_соппеск (СТК_ОЙЙЕСТ (ей! С [ 1 ] ) , * ас!1ча 1:е " ,
ЙТК„51 СЫА1,„Р(Ж€ (ей С ег_са11Ьаск) , ей!к[1]};
Весьма желательно на этапе отладки программы видеть введенную
информацию на консоли. Для этого нужно написать такую функцию
еп1ег_са11Ьаск(), которая выводила бы содержимое поля на консоль. По-
лучить введенную пользователем информацию очень легко;
йотагп = дСк_епСгу_деС_Сехе (СТК^ЕИТЕУ (еЛ! (0]} ) ;
йпв! = д!к епкгу... деС .ХехС (<ЗТК_ЕМТКУ (ей!! [11));
йпа2 - д!к_епкгу„дек„кех!(ОТК^ЕКТЕУ(ей!С[2]));
Реакция на нажатие кнопки Ок будет следующей:
уо!й иг!кеко!11е ( бккИМде! *и!йдек,
дрогпкег йака )
{
/* С помощью функции дкк„,епкгу„де!ткехк () мы получаем
введенный пользователем
текст из полей ввода */
йотатп = дкк„епкгу„дек_!ехк {ЙТК_ЕИТЕУ(ей.1!; [ОШ ;
йпв! - дкк епкгу дек кехк (ЙТК_ЕЙТКУ(ей!![!])) ;
Йпз2 = дкк епкгу де! кехк(ЙТК ЕМТЙУ(ей!![2 В};
/* Выводим прочитанный текст на консоль */
д_рг!пс ("Оотагп %з\п", йсяпа!п) ;
д_рг!п! (’ОДЗ! %в\п", ЙШМ.Е
д_рг!п! ("Ш52 %з\пи, Йпв2);
/* Перезаписываем файл гево1.у.соп! в текущем каталоге */
И ( (гевору ~ Еореп (''гезо1У.соп!“ , "ы" } ) "= 1®Ш
(
/* Наверное, нет места на диске или прав маловато. . . */
д_рг!п! ("ЕК.Й: Саппо! ореп гево!че. соп! !!1е\п");
д!к_та!п„ди!к () ;
}
/* Запись в файл */
!рг1пк!(гезо1у,"йотагп %е\п",йота!п);
!рг!пк!(гезоТу,’патеяегуег %з\п",йпв!);
^рг!пС^ (гезо].у, "патенегуаг ,йпв2) ;
^с1оае(.геяо1у) г
]
Если ваше окно должно содержать много надписей* то я рекомендую вам
поступать так: объявичъ всего одну переменную* затем создать надпись,
поместить ее в контейнер, затем опять создать надпись с использованием
этой же переменной, поместить ее в контейнер и т.д. Примерно так:
1аЬе1 - д:Ьк_1аЬе1_пеи( "Оотатп:
сЬк_ЬаЬ1е_аЬСа.сй„<ЗеСаи1ТБ (ЗТК^ГАВЬЕ(ЬаЫе), 1аЬе1, 0, 1, 0, 1);
дТк_и1йдеС_8Иои (1аЬе1);
1аЬе1 ~ дЬк_1аЬе!„пеи ( "Ж18 -#1; ") ;
дЬк_ЬаЪ1е_а!;Ьас1хт„с1еСаи1СБ (СТк_ТАВЬР:(СаЬ1е), 1аЬе1, 0, 1, 1, 2);
дСк„.и1<ЗдеТ_0кои (1аЬе1) ;
1аЬе1 = дДк_1аЬе1_пеи (. "Ж #2: ” ) •
дДк^СаЫ.е^а&СасИ^де^аиПГз (ЗТК„ТА1зЬЕ(СаЫе), 1,аЬе1, 0, 1, 2, 3);
(1аЬе1};
Листинг 23.6 содержит полный код конфигуратора К.е«)1уег.
Листинг 23.6. Файл геагйУвг.с
#1пс1и<1е <двк/дск. 1я>
Мг.с.’ойе <вТЙ11Ь.Ь>
#1пс1ийе <Зсд1о.И>
дсИаг *йота1п, *йп.з1, *йпв2;
/* Массив из трех полей ввода. Первое предназначено для
ввода имени домена, два вторых - [1] и [2] для ввода
тр-адрйсов серверов ВКБ*/
ЙГ.кИ1йдеС *е<31е[31;
/* Наш файл */
П1ПЕ *геао1У;
,/* Функция записи в файл */
уо!<3 иг1СеГоГ11е( (зСкЯх&деГ. ^д.гЗ.деГ:,
дроЛпСег йаСа )
{
/* С помощью функции дЬк_епСгу__деЬ._Д:ех6() мы получаем
введенный
пользователем текст из полей ввода */
ботагп = дЬк_епегу„деС_ЬехЬ; (СТК_ЕМТНУ {е<11б [0]) ) ;
апз! = дск_епЬху_деС_еех&:(&ТК_ЕК!1'ИУ{еа1Ь[1-1));
апз2 = дьк„епегу_дес_сехь(втк_ЕНТКУ<еа1^[й1));
/* Выводим прочитанный текст на консоль */
д_ргтпЬ ("Оогпа1п %в\п*, йота!п);
д_рг!пЬ (’0№1 %в\п* , сЕпв!) ;
д_ргз.пЬ ("Ш32 %.в\п', бпв2) ;
/* Перезаписываем файл гезоГу.сопЕ в текущем каталоге */
И ((гезо1у = Еореп(*гево!у.сопЕ","н")) == ШЕЬ)
{
/* Наверное, нет места на диске или прав- маловато... */
д^ргтпд ("ЕНК: СаипоЕ ореп гезоХуе.сопЕ Е11е\п");
дЕк_та1п__ди1Е () ,*
)
/* Запись в файл */
ЕрггпЕЕ (гевоХу, "аотаЗ-П %я\1и" ,<ЗотаХп) ;
ЕрггпЕЕ(гезоХу,"патезегуег %з\пя,апз1);
ЕрггпьЕ (гезоХу, "патееегуег %в\п" ,<3гш2) ;
Ес1оае(гево!у);
)
/* Эта функция будет запущена, когда пользователь нажмет
кнопку закрытия окна или кнопку фиЗЛ */
дтпС де1еЬе_еуеп1; ( СЕкИЫдаб *^1ддеЬ,
(ЗдкЕуепб *еу-епС,
дроЗпбег йаса )
{
/* функция дбк_й1а1п_ци1С(} используется для завершения
работы СТК-программы. Не нужно для этого использовать
ехК () */
дЬк_гпа1п_дц1(: () ;
гебигп(РАЬ8Е);
}
/* Когда пользователь введет текст и нажмет ЕпЬег,
введенный им текст
будет выведен на консоль */
Vо^с^ епДег_са11Ьаск( ЭДкИЫдеД *м1<ЗдеР,
СбкИХбдеб *ейСгу )
дотаХи = дбк^епЬху_дег_Ьехб(бТКдЕЙТКУ(епЬгу));
рггпбЁ("Потатп: %8\п*, ботаХп);
Хпб п1а1гН 1пС агде,
сбаг *агдУ[] )
ЙСкМадеЬ *и1пс1ои; /* Окно */
(ЗЬкШддеЬ *Ьи1Хоп; /* Кнопка */
СбкЖбдеб *гаЫе; " /* Таблица для размещения виджитов */
СбкШЛдеГ *1аЪе1; /* Надпись */
/* Как видите, все виджиты одного типа - СГкИхйдеб,
поэтому мы могли бы обойтись даже тремя виджитами ~ для
окна, таблицы и для всех остальных элементов ИИ*/
1пб 1;
/* Инициализация любой СТК-программы */
дЬк_1п.1Е. !&агдс, &агдт) ;
/* Создаем новое окно */
Шпбои = дЬк_и1паои_пем (6ТК_ИГКП0К_.Т0РЬЕУЕЪ).
/* Устанавливаем заголовок окна */
дРк_и1пдои_неС_ЫЫе (СТК„Н1ЫС0И (ХЙпбЬад) , "КезоХует") ;
/* Устанавливаем реакцию на кнопку закрытия окна.
Сигнал - йе1еге_еуедбВызываем функцию .<3е1ебе_руейб () ,
которая описана выше */
дбк_в1дпа1_соппес1:. (ОТК^ОВОЕСТ (и!п&Ж) , "<1еХе1е_еуеп'. ” ,
СТК_5ЮТАЬ„РЦМС (де1ебе_еуепЬ) , ВДЪЬ)
/* Устанавливаем рамку окна */
дбк„сопба1пег„БеЬ_Ьргйег_и1йбИ (СЛК_СС®?ГДИ1^ («ХлДои) , 20) .;
/* Создаем таблицу 3x3 */
ГаЫе - нем (3, 3, ТВОЕ) ;
/* ПомещаеЙГтаблицу в контейнер. Обязательно) */
дьк_ррпрахпегда<|а (0ТК_С0ЖА1ЖЙ (и1п&ж)., ка.Ь1е);
/* Рисуем надписи, помещаем их в таблицу и отображаем.
Обратите внимание, что в этом случае нам не нужно
объявлять отдельную переменную для каждой надписи */
1аЬе1 = дек_1аЬе1„пеи("0ота1п:
/* О координатах ячеек поговорим после этого листинга */
дРк_ХаЬ1е_абкасЪ_ае!аи]Лз (ОТК„ТАВЬЕ(ЦаЬ1е),
1аЬе1, О, 1, 0, 1) ;
дек_и1<ЗдеС„э11о« (1аЪе1);
1аЬе1 = дСк_1аЬе1„пеи'("ВИЗ #1:
дЬк_ГаЬ1е_аС1:асИ_йеЕаи11:8 (бТК_ТАВЬЕ(каЫе),
1аЬе1, 0, 1, 1, 2);
д!к_и!<1деб„вЬоы (1аЬе1) ;
1аЬе1 = дТкш1аЬе1шпе«(яБК5 #2:
дСк_ЬаЫе_а^асП_аеСаи1Ь8 (ОТК_ТАВЬЕ(СаЬ1е) ,
1аЬе1, 0, 1, 2, 3);
дЬк_и1ддек_зкош (1аЬе1);
/* Заполняем наш массив полей ввода. По аналогии с
ре!рЫ, я назвал массив ей!Ь[]*/
!оГ(1=0; 1<3; !+ + )
{
/* Новое поле */
ес11Ь[!] = дСк_епЬгу_пеиО ;
/* Если забыть этот оператор, пользователь
ничего не сможет ввести */
дЬк_епбгу_8еЬ„еа1баЫ.е{.6ТК_ЕШ,КУ (ей!б [1] ) , 1) ;
/* Определяем одну для Всех реакцию на сигнал
асШуабе - нажатие ЕпСег*/
дск_з!два1_соппес1 (СТК_ОВПЕСТ (е<Нс СИ), "асНчаке" ,
(ЗТК_81акАЬ_РШС (епбег„са11Ьаск) ,
ейШ!)) ;
/* Помещаем ей!б[1] в Таблицу */
д^к„еаЪ1е_аСЬасЬ_аееаи1бз (<ЗТК„ТАВЬЕ(СаЫе) ,
ейП[1] , 1, 2, 1, х+1) ;
/* Показываем */
дЬк_и!<3.де?:_з11ои (ей1Х (!)) ;
}
/* Создаем кнопку "Ок", помещаем в таблицу,
определяем реакцию на нажатие и показываем */
ЬиЫоп = дСк„Ьиккоп_пеи__и1С11т1аЬе1 ("Ок");
дкк_каЫе_аккасЪ_<ЗеСаи1кз (СТК_ТАВЪЕ(баЫе) ,
Ьиееоп, 2, 3, 0, 1);
дьк__в!дпа1_соппесе (ОТК„ОВОЕСТ(ЪиСбоп) , "сИскесЗ" ,
0ТК„31СНАЬ_РЦМС(иг1беСоГ11е) , ММ) ;
дЬкши!йдеС„зНоы (ЬикСоп);
/* 7'о же самое для кнопки Ои1Л */
Ииегоп - дТк_Ьиккоп„пеи„.и1СП„1аЪе1 ("'ОиИ*);
дКк_ЬаЫе_аГЪасИ.„йеЕаи1бз (0ТК_ТАВ1.Е ( СаЫе)-,'
Ь'йССоп, 2 , 3 , 2, .3) ;
дЬк_вхдпа1_согшесС (01'К„.0ВЗЕСТ(ЬибДон) ,."с11ск.ес1’г,
(ЗТК_51СИАЕ_РШС (ЗеЗё&е^еуепП, Ш1);
дСк_вд1йдеС„в1тои (Ьиссои) ;
дЬк_1»1<Здеб_з1'ЮТ'? (1аЫе) ; /* Показываем таблицу */
дСк_вд1<1дег„з11<ж (игтбонг) ; /* Показываем окно */
•/••*• Запускаем СТК-программу */
дск_та1п ();
геСигп 0;
)
Я старался писать подробные комментарии, но все же кое-что осталось
в тумане. Это координаты ячеек. Рассмотрим нашу таблицу 3x3:
ГаЫе = дСк_.СаЬ1е_пе'м (3, 3, ТРОЕ);
0 1 2
Сошатп Поле Ок
1
П1Ш э Поле
П№2 Поле Си 11
3
Сначала указываются координаты по X, затем — по У. Вот координаты
кнопки Ок: 2,3,0,1. Это означает, что кнопка будет расположена в по-
следнем столбце (между 2 и 3), но в первой строке (между 0 и 1).
д1к_1аЫе„аЫасЬ„с^{аи1ка (бТК_ТАВЕЕ(СаЫеР, ЬпЬЕоп, 2, 3,0, 1>;
Подробнее рассматривать контейнер СИкТаЫе я не вижу смысла:
основные операции, я думаю, вам понятны — это создание таблицы с
указанием ее размерности и добавление в таблицу виджита функцией
ф1к_1аЫе_аНасН с1еГаиИ80- Еще раз напомню о необходимости отобра-
жения виджитов, помещенных в таблицу, и самой таблицы:
дСк_м1адеС_ЕИои (СаЫе) ;
Теперь откомпилируем нашу программу:
$ дес гё5о]л-.с -о гезр..1у 'дкк-сопГ1д; —дИаде'
' дСк-сопЕ4д --ИЬв''
Программа ^к-сопГщ сообщает компилятору всю необходимую инфор-
мацию о библиотеке ОТК.
Обратите внимание на директиву
#1пс1и<3е <дСк/дТк.И>
Обычно файлы заголовков ОТК находятся в другом каталоге, например,
§1к-1.2, но это не имеет значения — все необходимые параметры укажет
программа ё<к-сопЛ§.
В заключение этого пункта перечислим события, характерные для кнопок
(таблица 23.3).
События кнопок
Таблица 23.3
Событие Описание
Щелчок
ргевзес! Кнопка нажата мышью (и пока не отпущена)
ге^еазес! Кнопка отпущена
еыег Указатель мыши а пределах кнопки
[еауе Указатель мыши вышел за пределы кнопки
23.4.3. Переключатели
Переключатели бывают двух типов: зависимые (гасНо ЬпИопя) и незави-
симые (сЬескЬиНовв). Переключатели являются кнопками, поэтому для
них характерны те же события, что и для кнопок.
Начнем с независимых переключателей, так как они проще в реализации.
Создать такой переключатель можно с помощью одной из функций:
ССкИтЙдеС *дСк„сЬеск„ЬцрСоп_пеу/( уоМ ) ;
(ЗСкИЫдеС *дЬк_скеск_ЬиССогспевд_и1гИ_1аЪе1 ( дсЪаг *1аЬе1 );
Первая создает переключатель без надписи (если вы хотите указать над-
пись отдельно), а вторая — с надписью, которая обычно отображается
справа от переключателя. Затем нужно, как всегда, поместить виджиты
в контейнер и отобразить.
Зависимые переключатели можно создать тоже с помощью двух анало-
гичных функций:
СС.кК1адеГ. *дСк„гай1о_ЬиСЛоп_пеи ( (ЗЗЫзС *дгоир ) ;
СС.кИЫдеЕ *дСк„габ1а_ЬисСоп„пеЧ_и1С?1._1аЬе1 ( ЗЗЫзС *дгоир,
дкэт *.1аЬе1 ) ;
Параметр §гоир указывает на принадлежность переключателя к группе.
В пределах группы активным может быть только один переключатель.
Группу можно создать функцией:
СЗЫзЬ *дрк га Л о ЬиССоп дгоир(ЗСкйас11оВи1:С.оп * гай1о_ЪиСЬоп .);
Однако существует другой способ, позволяющий обойтись без перемен-
ной группы — так мы сэкономим память, если групп много;
ЬигД:оп2 = дСк„гай1о„ЬиССоп._пёи„К1С11_1аЬе1 (
дСк га<31о ЬоССоп дгоир (СТК_нАВ1О„ВЦТТОМ"
(ЬиССоп!)), "ЬиГ.СопЗ") ;
С помощью функции
уо!о! дСктЪодд1е_ЬиИ:оп„яеЬшас^.1уе ( СЬкТодд1еВиЪ1:оп
*(;.одд1е_ЪиСЬоп, дтлС вСаСе );
можно сделать одну из кнопок активной.
Следующий листинг демонстрирует работу с тремя зависимыми пере-
ключателями и вертикальным контейнером ОгкУВох.
Листинг 23.7. Зависимые переключатели
#1пс1ийе <дЬк/дСк.Ь>
ИпсТийе <дИЬ.Н>
дзпЬ с1озе„аррИсас1оп( ,
(ЗйкЁУепС *ёуепС,
дроГпСег йаСа )
дСк_та1п_ди1Ъ();
геЬцгп(ГАЬЗЕ);
1пС та!п( 1п& агдс,
сНаг *а^дV[] )
{
ССкНГйдеЬ *и!пйои = ыиъЬ;
СтСклЧйдеГ. *Ьох1;
СФкИГДдеС *Ьох2;
<ЗЬкИ1с1деЬ *ЬиЕХоп;
СГ.кШйдег *эерагаЬог;
ЙЗЫаС *дгоир;
дек.пйс !&агдс,&а.гду );
тпбои = дек_шлбок_пен (0ТК„ШШХЖ_ТОРЬЕУЕЬ);
дСк„а 1два1_соппесЬ (СЗТК„0ВОЕСТ (иХвскзм) ,
Мв1еЬе_еУёпй*,
<ЗТК_31СНАЬ_ГЦЫе(с1р9е„арр11саЫоп) , МВД ;
дЬк„и1пйои_вёЁ_Ь.1Ые (СТК_У<’1ХТООИ (и!пйои) ,
"Выберите дистрибутив*);
дгк_сопГа1пег_не1_Ьогдег_.и1бСИ (6ТК_СОМТА1МЕН
(и1пйо«), 0);
Ьох1 = дек_уЬох_пеи (РАЬЗЕ, 0);
дЬк_сопЬа1пег_аб<3 (ОТКВДОЫТА1НЕЙ (н1пс1ои) , Ъох!);
деккн1бде1_зЬо^ (Ьох!);
1>ох2 = дГ.к_уЬох_,г.ем (ЕАЬЗЕ, 10) ;
дбк_сопСа1пег_8ер_Ьог4ег_^Й&И (0ТК_СЖГА1ЖЙ (Ьох2), 10);
дЬк_Ьох_раск,БеагЯ (Ьоос1) , Ьох2. ТКЦЕ, ТКЦЕ, 0);
дбк_»1бдеб_8Ьо« (Ьох2);
Ьиьеоп = ЙВД&, "Ней НаЬ");
дек_Ьох_^асК_вбагб (йфОЙ (Ьох2) , Ъиесоп,
ТКОЕ, ТКЦЕ, 0);
дЕк_н1<Зде!:_эИои (Ьибеоа) ;
дгоир = дек„гай1о_Ьиебоп_дгоир (СТК_ШШ10_ВиТТШ
(Ьиеесп));
Ьиесоп - дек_гад1о_Ьиееоп„пен_И1ЕЬ_1аЬе1(дгоир,
"Мапбгаке");
дек„еодд1е_Ьиееоп„веЬ_ас!б1уе (СТКЦТСХЗСЬЕ_ВПТТОМ
(ЬиЪеоп), ТВОЕ);
дек„Ьох_раск_яеагЕ (СТК_ВОХ (Ьох2), Ьи&Ъоп,
Т1ШЕ, ТКЦЕ, 0);
дЬк_и1вдер_5Ьои (ЬиЬбоп);
Ьиееоп = дСк_габ1о^иЬеоп_пеи_1»1еИ_1аЬе1 (
дЬ к_габ1о__ЬиЫоп_дгоир (СТК_ЕАВ1О_ВПТТОН
(Ьиъеоп)), ’АЪТЫцих*);
дек_Ьох_раск_б1аге (СТК„ВОХ (Ьох2), ЬиЬбоп,
ТИПЕ, ТВОЕ, 0);
д0к_ы1бдеС_бИои (ЬикЬоп)
зерагаеог = дбк„Ьверага1ог„пеи ;
дСк~Ьох_раск_кеаге (СТК_ВОХ (Ьох!), зерагаЬог,
ЕАЬЗЕ, ТВОЕ, 0);
дек„и!бдее_аНои (зерагаког);
Ъох2 = дЬк^Ьох_пеи (ГАЬЕЕ, 10) ; .
дЬк„соп1:а1пёг_8ее_Ьогс1ег_^аьЬ (ОТК.СОМТА1НЕН (Ьох2), 10);
дкк_Ъохлэаск„зЬагС (СТК_В0Х (Ьох1) , Ьох2, БАЕВЕ, ТНЦЕ, 0);
дСк„.м1ддеС„81тои (Ьох2) ;
ЬиЕкоп = дкк_Ъик{:оп_пеы_и1кЬ_1аЪе1 (“Ок");
дкк_51дпа1„соплесе_оЬ:есе (<ЗТК_ОВйЕСТ (ЬиЬЛоп),
"сИскей", 0ТК_31СМАЬ_Е0НС (с1озе_арр11саЫоп) ,
СТК_ОВЛЕСТ (игпбом));
д^к„Ьох_раск_8ЪагЬ (СТК_ВОХ (Ьох2), Ьикроп,
ТКиЕ, ТВОЕ, 0);
ОТК_И1ТСЕТ_ЗЕТ„ГЕАОЕ (ЬиПоп, ОТК„САЫ„ПЕГАШ.Т) ;
дЬк_ихддеР_дгаЬ„<Зе€аи1Ь (ЬиСЬоп) ;
дЬк_и1ддеЬ_8Иои (ЬиИГоп);
дИк_и1дде!:_8?1ом (ыыкЗои) ;
дСк_та1п();
гейигп(0);
23.4.4. Список
Виджит СЬЫ представляет собой список, состоящий из нескольких ко-
лонок. Ячейки такого списка могут содержать текстовые значения. Мы
можем обратиться отдельно к каждой ячейке списка. Создать список
можно одной из функций:
СбкИтйдеб *дкк„с!{ дтгЛ со1игапь );
СЬкИтйдёЕ *дСк_с11зГ._дегл/_и1СЬ_ЫС 1ее ( дзпб со1итий,
дск.аг *Т1Т1е5[] );
Первая функция создает список без заголовков, а вторая с заголовками.
Параметр со1итпя задает число колонок.
Добавить элемент в список позволяют функции:
дгпб дг.к_с1.15Т_тргерепД ( СТкСЫзС *с!1зГ, декад *ЬехТ[] };
дт.пб дбк_с11-зС_аррепб ( ССкСЫйС *с11зс, дсЬаг *сехбП );
Первая функция добавляет новый элемент в начало списка, а вторая —
в его конец. Если вам необходимо вставить элемент в определенную по-
зицию, вам нужно использовать функцию:
дСк_с11йС_1пеег!:: ( ССкСЫсб *с11вг, д!пГ гои,
дспаг *бехС[] );
Она позволяет вставить новый элемент в строку гои. Нумерация строк
списка начинается с 0.
Для удаления элементов списка можно использовать одну из функций:
уо1й дСк„с1.1еС_гепкг/е ( ОСкСХДвк *с118С, д!пб гои );
цогб дГ.к_с1.1.5к_с1еаг{ СЬкСТДзТ. *с11зЬ );
Первая удаляет строку го^’, а вторая очищает весь список.
Рассмотрим листинг 23.8, в котором демонстрируется работа со списком
С1лк1. Программа снабжена подробными комментариями, поэтому реко-
мендую внимательно читать исходный код.
Листинг23.В. Применение виджита С1Д«Л
(Иг.сТибе <дск/дСк ,1,1>
/* Нузкен для функции йё11оса1е() */
НнсДойе <1оса1е.п>
/* Добавляет спрюок обработчик кнопки Добавить */
уо!й ЬиГЛ:ап_аДй_с11скйл'! ( дробпГ.ег баса ')
{
1пб 1пбх;
/* Простой список */
дсИаг [41[2] = • ( { "1", "Неб Наб Ыпих" },
1 "2", "Мапбгаке Ыпих* },
{ "3" , "АЬТ Ыпих" },
{ "4", "А2Р Ыпих" } };
Сот ( 1пйх-0 ; 1пйх < 4 ; 1пйх++ )
дбк._с118б_аррегк1( (секСЫэЬ *) баса, б1яб[1пйх]) ;
гебигп;
}
/*Обработчик нажатия кнопки Очистить */
уо1б ЬиЬбоп_с1еаг_сИекеб ( дро!п1ег йа’Ьа )
(
/* Очищаем список */
дЬк_с11вЬ_с1еаг ( (ОЬкСЫеЬ *) бака) ;
ге.Ьигп;
}
/* Функция прячет/отображает заголовки */
чотб ЬиЬС.оп„Ыде_8Иоч..с11скей( дро1п1ег бака )
{
/* 0 = сейчас видим заголовки */
вГаЫс вИогЪ 1пЬ С1ад = 0;
1Г (Над == 0.)
{
/* прячем заголовки */
дбК„с118С_со1ишп__б1Ыеа„Ы<1е{«311кСЫзб *) баба) ;
Яад++ ;
}
е!зе
{
/* Отображаем заголовки */
дЬк_с11зЬ_со1игшт_с1с1ея_зИои( (дбкСЫзЬ *) йаба);
}
гебигп;
}
/* Данная функция будет вызвана, если пользователь выберет
элемент */
чо1б 8е1есб1оп„_1пайе ( ОбкИМдеб *с11эЪ,
дтпс гои,
д!пб соГатп,
СйкЕчепкВиббоп *ечепб,
дро1Пбег сила |
{
декад *кехк;
/*Получаем выбранный текст (элемент списка) */
сДк сИвС деЬ бехЕДСТК СЫШЧ-сЗДзС) , гои, со1итп, &бехб);
/* Просто выводим ин^ормйцию на КО5ЙСОЛ&. */
д_рг!пк ("В.ы выбралй ряд-:Ш. Колонка %й,
текст в ячейке %з\п\н*; гои, со1ишп, СехЫ ;
геЬигп;
)
1пЕ та.1п( пЛ - агдс,
декад *агду[] Г
{
ССкШддеС *«1пйо»;
ССкМгбдеС *уЬох, *ЬЬох;
СЛкШйдер *асго11еа„и1пйон, 'сИЛ;
<ЗсШ1<ЗдеЬ *Ьиббоп_а&1, *.ЬцкЬоп_„с1еаг, *ЬиЬбоп_Ыбе„,чЪои;
дсНаг *ЫГ1ей[2] = { "Номер", "Дистрибутив" };
ееС1оса!е( ЬС„АЬЬ, "ШДШ. КО18-К" ) ;
// Нужно вызвать ДО дкк„1гДк()
дЬк_1п1к (&а.гдс, &агду);
и1паон=д1к„тпбои_пеи((ЗТК„Н1НПОИ_'ГОРЬЕУЕЬ) ;
дск„‘и1йдеС_8ес_ив1ге(ЙТЕ^И10СЕТ(и1паби) , 300, 150) ;
д б к_и1пс1о«_8ёк_б 1 ГД е (ЙТК_ИМПОИ (и Дпбои) , * Список ”) ;
дГк_з1дпа1_с.оппесе (йТК„ОВЛЕСТ (из.Мои) ,
"йеергоу",
СЗТК_31йКАК_РЦМС (дбк_П1а1п_ди;и) ,
№Д;-
чЬох=д !;. к_уЬох_пен (рАДБЕ, 5);
дЬк_сопЬа1пег_веЬ_ЬогЙег„,М<1бЬ(СТК_СаЙТА1МЕН(уЬох) , 5( ;
дОк_сопг.а1пег_ааа(аТК_СОЫТА1ЙЕЙ (и1прон) , чЬох) ;
дI.к_и 1бдек_вЬои (чЬох) ;
/* Создаем окно с полосками прокрутки и упаковываем в
него список */
Бсго11еб_ы1пс1он1 = дЪк__зсго11ей_и1пйоишпеи
(№ДЬ, №ЛД) ;
дС к_з ст о 11 ей__иг пс1оад_5 еб_ро Псу ((ЗТК„5СЙОЬьЕО 11ГООИ
{зсго11е.а_и1.пбо«) , (ЗТК„РОк1СТ„АПТОМАТ1С,
атКшРОЬ1СУ_АЬ«АУЗ);
дРкшЬох„раск~13баге (СТК_ВОХ (чЬох) , зсго11е<1_н1паои,
ТВОЕ, ТВОЕ, 0);
дЯк„и1йдеЬ_бИон (зсго11ей__и1пдои) ;
/* Создаем список с двумя колонками */
сИеС = дЬк_с11нС_пеи_и11:И_Ы111ев( 2, СШез) ;
/* Обработка выделения */
дСк_в1дпа1_соппесС(6ТК_0ВСЕСТ(с11зб), “зе1ес^_гои",
ОТКт510МАЬ„Е1ЖС(8е1есЫоп„таае) ,
М1ЬЬ) ;
/* Устанавливаем тень для рамки списка */
дбк_с115С_веб_8Йайом„буре (ОТК_СЫЗТ (сИзС) ,
СТК_5НАПОИ_ООТ);
/* Устанавливаем ширину для колонки. Колонки
нумеруются с 0 */
дРк_с118Ь_веС_со11Пип^и1арИ (СТК_СЫ8Т(сИзЬ) , 0, 150) ;
/* Помещаем список в контейнер */
дСк„сопЬа1пегтааа(СТК_СОКТА1КЕК{8сго11еа„н1п<1ои), с11вЪ);
дкк_и1ддеС_вЬои(с11зС);
/* Создаем и размещаем кнопки Добавить список,
Очистить, Спрятать/отобразить заголовок */
ЬЬох = дСк_ЬЬох_пеи(РАЬ5Е, 0);
д)гк_Ьох_раск_8багб (СТК_ВСХ(чЬох), НЬох, ЕАДЕЕ, ТЕПЕ, 0) ;
,^1<4»Мдеб^8И.ри(йЬох);
= дЪк^5иЬЪоп_пеицн1Ьк_1аЬе1 ("Добавить") ,*
Ьиббоп^сХеаг = дЬк^Ьиббоп_пеи„и1бЬ_1аЬе1("Очистить");
Ьиб):оп_Ыйе_з11он = дЪк_ЬцЫ:од_пеи„кХЬ11_
1аЬе1(я Спрятать/отобразить");
дШ^Ьбх^аск враге«5ТК_ВОХ(ЪЬох), Ьиббоп_ааб,
ТКСЕ, ТНСЕ, 0);
.дЪ^^эеа^аск^вЬаЕЪСбТ^ЦВдХСкЬох), ЬибСоп__с1еаг,
ТИПЕ, ТРОЕ, 0);
ддк„;Й0Х_раск„вбагб (СТК„ВОХ (ЪЬох) , Ьиббоп„Мае_8Иои,
«.< ТКЦЕ , 0 )
/> Связываем обработчики */
дЬКдвхдпа1_со1тесЬ_оЬ] есб (бТКшОВДЕСТ(Ьиббоп„а<Зй) ,
"сИскёй* ,СТК_51<ЖА1._П^С (ЬиЪбоп_аа^а11скеа) ,
(дро!пбег) сИзС);
дбк-.8Шйа1_соппесР_оЬз есб {СТК_ОЮ'ЕСТ (ЬибСоп_с1еаг) ,
"сИскей", ётК_510ЫАЬ_РтаС(ЬибЪоп_с1еаг_с11скеа) ,
(дрот.пГег) сИзС)
дск„й1д1та1_соппесР_оЬ^есЬ (йТК_ОВ^СТ (Ьи1Роп_ЬЛйе
йЬол’) , "сИскер.", СТК.„51СНАЬ„Р1.;Ж (ЬикСоп_Мбе_5Иои__
сИскаа) , (дротп^ег) сИэЬ) ;
дск_Шйдек _8Ъои ^ЬнТСоп^адсО ;
(ЬиЬг&п_с1еаг) ;
д I: !<_?;1адеЬ ^бИсти (ЬикЬ.оп_Ыс1е_зЬоы) ;
д1,к_н1йдет_8Ио1ч {ихпйои) ;
дСк_та1п();
гетсгп(0);
Программа работает так: при нажатии кнопки Добавить создается спи-
сок, состоящий из названий четырех популярных дистрибутивов Глпих.
Кнопка Очистить очищает список, а Спрятать/огобразить прячет или
отображает заголовки списка. При щелчке на определенной ячейке спи-
ска на консоль выводится соответствующее сообщение — координаты
ячейки и ее текст.
ПМУХ: полной руководство
"сИскасР , = С-и к31дпа1Епп.с}
.С 1.1е_ок_|Е>е1, 1:11 е_й!а 1. );
то1а йеа^гоу ( СЬкКЫде!: *и1йдеР, дрохпСехааса) ;
зГаРхс уоШ ЬиЬРоп__с11ск( (ЭСМЯддеС *м!<1де1:, дрохпйег баса ) ,-
1Пк та1п(1пс агдс, сЬаг *агду(])
{
ОЬкИхйдеЬ *и1пйоад;
вЬкШадек *ЬиЫ:оп;
(ЗЬкШДдеЕ. *1аЬе1;
И_СГг1 ССГ1 ;
дсЬаг *саре1.оп;
аеЫоса1е( ЬС_АЬЬ, ’ги^РШ.КО18-Й*)-
сарЫоп = д_а 1:гдир_рг1пеп"Доброго, времени суток!*};
дЬк_1п111 ( &агдс, &агду );
ихпйои = дЬк_«1пс!ои_пеиг ( СТК_ШЖОЫ_Т0РАЕУЕЬ ) ;
дЬк_з1дпа1_соппесЬ (СТК„ОШЕСТ (итпйои) ( *<1е1еке_еуепЬ'',
СТк_51СМАЬ_ЕимС(де1еЪе_еуепе)\МЙЬЬ);
дЬк_‘51дпа1_согщесЬ (СТК_ОВЛЕСТ(н1паок.) , "аезЪгоу" ,
(ЗТК_316МАЬ_ЙЖС(аезйгоу) , &сЫ1 ) ;
дкк_тпйои„5е1 к 1е (6ТК_ЩЖЮИ (и!пйои) , сарк топ) ;
дГк_сопка1пег_5еИ_Ъогйег„^1ЙЫ1( СТ^„С0Ш*А1МЁК;(к1пво»>,
10 ) ;
ЪиТХоп = д.1к_ЬиЬИоп„пеи.0 ;
1аЬе1 = дЬк„1аЪе1_пеи( " ---= Нажмите кнопку " };
сег1.арр_«1пйд^ = мтпйом;
сЬг1.1аЬе1. = 1аЬе1;
дЬк_сонЬаАпег_адй( ОТК„СОНТА1КЕК1 ЬшЛоп ), ШЬе! ) ;
дкк_сопка1пег_асМ( СТК„СОКТА1МЕЙ ( и1п<3ои ) , ЬиЁНоп );
дЬк„81дца1_соппесе ( атК„ОВДЕСТ{ Ьи'стоп ), “сМ$Ыс^,
СТК„Э1<ЗМА1,_Е'ЦЖ'( Ьи^оп_сМ:ск ),
&с1:г1 };
ЗжШ
64!
(жХпс&э^) ;
дСк_та1п () ;
геЬигп(О);
у1/ **$*******#1Ю***О^ ★**О**!М * ^Иг*********
уо1<3 ди1к_соп^Хгт(СЬкН1адеЬ *иг1с1деЬ)
(
СГкНтддеЬ *ди1Ь_Еогт;
СЬкИХаде*. *1аЬе1;
6Г.Ш1йдеС *уе8_Ьи!Хоп> *йохЬцЬСоп;
ди!Ь_Еогт = дйк„й1а1ад_йй®|)-;
дИк_и1пйовд_ве«_ро81^10п (^1Цй1ППОН{ дизХ^Еогт ) ,
ЙТК-ИТЙ^РОЗ^ЕКТЕК ) ;
дЬк_соп.&а1пе.г_зеЬ_Ьежйег^Ш.<ЗЬИ < етк„СО&ТА1ЯЕЕ
( ди1е_Гогт ) , 10 ) ;
1аЬе1 = дЪк_1аЬе1„неШ ( *\п Вы действительно хотите
выйти? \п# );
уез_ЬиЬсоп = дЬк_ЬиС|Ьр^!деи„»1ЬЬ_1аЬе1 ( *Да" );
пО-ЬиГХоп = дЬк„ЬиЬЪоп_це^_У71Ь11_1аЪе1 ( “Нет" ) ;
д1к„81дпа1_сош1есЬ_оЬ1есе (' 6ТК_(ЖГЕеТ
( уез_ЬиирП ), "сИскМ", СЛК_31СМАЬ„РШ5С
( дЬк_^1ЙдеГ_,йезЬгоу ), (дро1п(:ёг)к1йдеД );
дЬк_соиеа1пег_асМ (Ста_С0ЖМ№Й( С>ТК_21АЬ0С
( ди1Ъ_Хогп1 ) ->асЫоп_агеа ) , уев_ЬиЬЬопН
дИк_з1дпа1_со1шеск„оЬзесЬ { 0ТК_ОВЛЕСТ( ло_Ьиг*-
Ьоп ), "сИскеа*, СТК„51ШАЬ_ЕПЫё ( дЬк„и1адеЬ_аезВгоу
) , (дро!псег) дц!Ь_^огт )
дгк„сопка1пег_аад (ЙТК^СОКТАХНЕВ ( С-ТК_О1АЬСХЗ
( ди1х_Хогт )~ >асС1оп_агеа ), по_Ьцгхоп);
дСк„сопка1пег_ада( ЙТК_СОКТА1КЕВ( <ЗТК„П1АЬОС
( ди 11‘огт ) ™>уЬох }, 1аЬе1) ;
дьк_м1паон_8е1:„тоаа1 ( СТК_И1НООад( ди1Х_Еогт ) ,ТНПЕ ) ;
дШ_шсЗдеЪ_зИои_а11 { дцхб^огт ) ;
)
дтпЬ де1еЬе_ёуёпб {ОбкШйдеб *и1г1деЬ, СдкЕуепб *еуепб,
дротпбег даба)
{
ди1б_сопб1гт(итйдеб);
гебигп ( ТК15Е ) ;
)
мотд декбгоу( ОбкНтйдеб *и1йдеб, дротпбег даба )
{
рг!пбб (“(ЗООЭ-ВУЕ! *) ;
дбк„та1п„ди.1б () ;
}
вбабтс уо1й ЬиЬбоп_с11ск( (ЗбкИМдеб *ШЙдеб, дротпбег даба I
{
абаЫс дтпб 1 = 0;
□бкШддеб *арр_ы1пбои;
СбкИ1Йдеб *1аЬе1;
дсИаг твд[25б];
арр_и1пйои = (ЗТК_И11ХЗЕТ ( ((и_сбг1 *) даба) - >арр и!пдои );
1аЬе1 = ОТК_ИТ1ХЗЕТ| ((и„сбг! *)даШ)->1аЬе1 );
!++ *
зргхпбб (изд, "Вы нажали кнопку: •%.й...раз (а) " , 1 );
дГк„1аЬе1_зеб„бехб {(ЗТК_.ЕАВЕЬ ( 1аЬе1 ) ,твд);
Думаю, текст программы ясен без лишних комментариев. Нужно лишь
пояснить один олень важный момент. Обратите внимание на то, что мы
переопределили обработчик для события ае1ёееЦ.еуепб.
дбк_в1дпа1„соппесЬ .ШТК_(ЖГЕСТ (?;1пс1о’л') , *:ае1ебе_еуепЪ* ,
аТК_51СКАЬ_Риые{4ё1ебе_еуепб) ,ШЬЪ) ; '
дск_.81дпа1„сопп@сб (0ТК_ОВД,ЕСТ(м1пдоад)., Мезбгоу",
(ЗТК_31СКАк„ГОТС.(деБбгру.) , &сбг1 );
Если данный обработчик возвращает ГАЕ8Е, то будет вызвана функ-
ция йевГгоуО, которая уничтожит окно. Мы переписали функцию
ск’к'1е_е\'еп1() так, чтобы она всегда возвращала ТКЕ1Е, то есть функция
бе81гоу() вообще не будет вызвана. Но в таком случае наше окно вообще
никогда не закроется, поэтому нужно, чтобы кто-то позаботился о за-
крытии окна. Это будет функция дин^сопбппО, отображающая диалог
завершения работы.
д!вС бе1.еСе_^епС ((ЗСкЖйдеС. *«1ддеС., СДкЕУепС *еуепё,
дротпСег ОаСа)
{
ди1С_соп^1ги1 !и!<ЗдеС} ;
гетто ( ТР.ДЕ };
}
Доброго времени суток’
’^|И|х
Нажмите кнопку ==-
Рис. 23.6. Программа только запущена
Дйрого еремй.ни суток!
Вы нажали кнопку: 4 раз(а) |
Рис. 23.7. Пользователь нажал на кнопку 4 раза
Вы действительно хотите выйти?
Да____|
Рис. 23.8. Диалог завершения работы
Теперь рассмотрим обработчики событий кнопок Да и Нет диалога:
д^к_тт_з1дпа1шсоппесС_„оЬ]есГ ( СТК_ОВЛЕСТ( уен^ЬиЬТоп ),
«сНекой», СТК_310НАЪ_ГОТС ( дЕк„и1йдеС„аезСгоу ),
(дрсТпбегГтйдеС ) ;
дСк__81дпа1_соШ1есС„.о!ззесЕ ( С4ТК_ОВиЕСТ
( П0__ЬиСС0П ), «сИскей», (ЗТК_31СМАЬ_НЖС
( дЬк_и1йде1:_аезСгоу ),(дро1пСег)ди1С_богга }-,
Кнопка уез_ЬиССоп. вызывает функцию {йкгий^сЧйе’йгоуО и передает
ей параметр (§ро1п1:ег)1УМ§е1, то есть уничтожает главное окно приложе-
ния, а кнопка по_ЬиГ.Соп передает функции @1к_т^<еС_<1е51гоуО пара-
метр (§ро1Гйег)диП_/огш, который указывает на окно диалога, то есть при
нажатии этой кнопки будет закрыто само окно нашего диалога.
23.4.7. Меню
Меню программы вручную писать довольно неудобно, поэтому для раз-
работки меню воспользуемся студией разработки графического интер-
фейса СИайе.
23.4.8. Иерархия виджитов
СскоЬ^есс.
•кЗккИЫдек
I ^-бСкМйас
I I +ббкЬаЬе!
I | I +-(ЗЬ,кАссе1ЬаЬе1
I | | 'ОСкТтрзОиегу
I I ^ОСкАггом
[ I +СТ.к1таде
1 I “СккРзхтар
I +ССкСопСад.пег
I | ч-сгкВто
I I I тдскАИдптепС
I I । +ССкЕга№
М I I 'ССкАересСГгате
I I | +ССкВиССоп
I I М гдгкТоддХеВиЬСоп
11111 'СГ-кСИескВигХоп
11111 'СЬкКайтоВиССоп
I II I ’СЬкОрИопМепи
I | I +С1;к1Г:.ет
I I I I кЗГ.кМепи.ТСет
11111 тсскСйескМепигкегп
111111. .^Э^кКаМоМедиКет .
II || | ‘ОскТеагс^МетПЬет
1111 +С^кЫБЬТГ.еп
1111 '(ЗгкТгееКет
| I I +(31:кИ1па<ж
1111 +0^кСо1ог$е1@с^хопЕ>1а1од
1111 +й'СИЭ1а10д
I I I I I 'сск1присО1а1рд
|||| +(ЗЬкОгаШХпйои
I I | I +(3’:кЕ11е5е1ес!11оп
1111 +СЬкРопй5е1ес!-1опВ1а1од
II I I 'секР1ид
I | | + Сг. кЕ уепГ.Вох
I I I +СЬкНапа1еВох
I I I +СЬк5сго11еан1пдои
| I I 'СЬк71еирогЕ
I I +6^кВох
I I I -СЬкВиГлопВох
1111 +СккНВиЬкопВох?
1111 'ОЬкУВиЬХопВох
I I | +оскУВох
1111 ^СПкСо1огЯ€‘1есе1оп
I [ ] | ' С ь кСаййаСи^е
I I I 'СйкНВох
I I | +(ЗЬ.кСотЬо
I I I '(ЗСкЗЬаЬиаЬаг
I I
I I | 'С^кСТгее.
I | +СйкР1хей
I I +секЫоСёЬ.о0к
I । | ’ськГойеЗеХесЕхоп
| I +(ЗГкРапей
I I I +СккНРап.ей
I I 1 'СЬкУРапёЙ
I' | +сскЬауби.е
I I +01кЫв1:
I I +бЪкМепи8Ье11
I I [ +61:кМепцВаг
| I I 'О^кМепи
I I +схкРаскег
I I +(ЗЬк5оскеЬ
I I +С^кТаЫе
[ I +СЬкТсю1Ь.аг
I I 'СЬкТгее
I +СЬкСа1еп(5а:г
I +СЬкВгатпдАгеа
I I 'еексигуе
+(ЗскЁс11€аЫе
I +6йкЕпЬгу
I | I 'ОСкЗрхпВиЫоп
I | 'СЬкТехС
! +де.кВи.1ег
I | +вСкНЕи1ег
I I уСЬкУЕи1ег
I +СРкЕапде
| | +СЬк8са1е
I I I +бекВЗса1е
I I | 'ССкУЗсаТе
I | '(ИЛЗсгоНЪаг
| I +(ЗккН5сго11Ьаг
I | 'С-СкУЗсгоИЬаг
I +Сйк5ерагаЬог
I [ +бСкНЗерагаког
I | ' ЗЬкУЗерагаСог
I +6СкРгеу1еи
I 'ОРкргодгезз
I 'ССкРгодгеззВаг
+секПаЬа
I +сикАд]из Степь
I '(ЗСкТооХЫрй
'ССкТСетРасЬогу
Главам СТУДИЯ С1А0Е
«---ЧТО ТАКОЕ О1АОЕ?
о---ЗНАКОМСТВО С 01А0Е
<>-- РАБОТА С ПРОЕКТОМ
о---СОЗДАНИЕ МЕНЮ
<»--ИНТЕРЕСНЫЕ ВИДЖИТЫ
игмих ПОЛНОЕ '.РУКОВОДСТВО
24.1. Что такое О1ас!е?
В предыдущей главе мы рассмотрели далеко не все виджиты и далеко не
все сигналы* на которые должны реагировать рассмотренные виджиты.
Это было сделано умышленно: для начала вам нужно было разобраться,
что такое виджит и «с чем его едят», а также понять, что такое сигнал
и функция-обработчик. С этого момента вам не нужно беспокоиться о
том, что вы забыли имя виджита, имя сигнала или что означает та или
иная маска сигнала, вам также не придется писать вручную прототипы
функций обработчиков. За вас все сделает студия разработки графиче-
ского интерфейса С1абе. Почему вам не нужно знать имя виджита? Вам
достаточно выбрать нужный вам виджит из палитры и поместить его в
контейнер, причем контейнер также представляется визуально. Вам не
нужно рисовать на бумажке или представлять перед собой координаты
ячеек таблицы контейнера Скк1с. поскольку вы все видите перед собой.
Если вы забыли (или не знаете) имя нужного вам сигнала* С1ас1е при на-
писании обработчика позволит вам выбрать нужный сигнал из списка.
Если вам нужно замаскировать определенное событие, нет проблем:
СИ а бе не только отобразит доступные маски, но и выведет их описание.
Код функций-обработчиков О1айе также напишет самостоятельно — вам
лишь нужно будет заполнить тело функции-обработчика, поскольку СИабе
пока еще не научился читать ваши мысли.
Что вам нужно для работы с СИабе? Просто установите пакет §1абе (он
входит в состав большинства современных дистрибутивов) и наслаж-
дайтесь. Особенно приятно работать с (Лабе будет тем программистам,
которые привыкли работать с визуальными средами разработки, напри-
мер, Эе1рЫ или \4&ца1 С.
24.2. Знакомство с СНайе
Наше знакомство с О!абе мы начнем с разработки калькулятора, но
прежде нужно познакомиться с интерфейсом самой студии. После за-
пуска О1абе вы увидите три окна:
• Главное окно О1абе — используется для операций с проектом, напри-
мер, создания, открытия, сохранения, указания опций.
♦ Палитра — набор виджитов, которые вы можете поместить в контей-
нер.
♦ Свойства — окно свойств виджитов, в котором отображаются свойства
активного виджита.
Рис. 24.1. Студия 6/айе
Палитра содержит три набора виджитов:
♦ (1ТК -- Основа — основные виджиты;
• ОТК+ Дополнения — дополнительные виджиты;
♦ Споте — специальные виджиты для создания СИМОМЕ-приложе-
ний.
К основным виджитам относятся:
• Окно — основной элемент вашего приложения.
• Главное меню — строка меню приложения.
♦ Панель инструментов — на этой панели обычно находятся кнопки
быстрого доступа к некоторым элементам главного меню, например,
Создать, Открыть, Сохранить, Выход и т.д.
Свгектар
СТК+ Основа
атк* Дополнения
Споте
Рис. 24.2. Палитра
♦ Ползунок — позволяет изменять размеры некоторых виджитов; обыч-
но ползунок ставится между двумя панелями инструментов.
♦ Метка — надпись.
• Поле ввода текста — название говорит само за себя.
♦ Комб, список — комбинированный список (СотпЬо Вох).
♦ Текстовый бокс — область для ввода нескольких строк текста; может
использоваться в качестве основы простого текстового редактора.
♦ Кнопка — думаю, этот виджит в комментариях не нуждается.
♦ Кнопка-переключатель — кнопка, которая может находиться в одном
из двух положений: включено или выключено.
♦ Флажок — независимый переключатель.
♦ Радиокнопка — зависимый переключатель.
* Список — простой список.
♦ Дерево — иерархическая схема элементов,
♦ Колоночный список — это список СХЫ из главы 23.
♦ Колоночное дерево — что-то среднее между деревом и колоночным
списком.
♦ Меню параметров — выпадающий список опций, напоминает список
СотЬоВох (см. рис. 24.3, тип окна).
♦ Крутящаяся кнопка — не знаю, почему ее так назвали, на самом деле
это поле с кнопками уменьшения/увеличения значения (как поле ввода
ширины или высоты окна, см. рис. 24.3).
Рис. 24,3. Окно свойств
♦ Индикатор выполнения — вы использовали программу СпоКРМ для
установки пакетов? Пока пакет устанавливался, в небольшом окошке
ползла небольшая шкала, информирующая нас о процессе установки.
Это индикатор выполнения,
♦ Строка статуса — небольшая панель с текстовым полем, точнее, над-
писью, содержащей информацию о статусе приложения.
♦ Горизонтальный, вертикальный разделители — эти виджиты также
не нуждаются в комментариях.
♦ Область для рисования — область, в которой можно рисовать мы-
шью.
♦ Диалог — произвольное диалоговое окно,
* Диалог выбора файла — это наш старый знакомый, работу с которым
мы рассматривали в прошлой главе.
* Диалог1 выбора шрифта — позволяет выбрать шрифт.
♦ Окно выбора цвета — позволяет выбрать цвет.
♦ Горизонтальный бокс —- контейнер ОПсНВох,
♦ Вертикальный бокс — контейнер СИкУВох.
♦ Таблица — контейнер СМкТаЫе,
♦ Фиксированная позиция — контейнер (нкНхеб.
♦ Горизонтальные панели, вертикальные панели — набор горизонталь-
ных и вертикальных панелей.
♦ Записная книжка — виджит, состоящий из нескольких страниц, обыч-
но используется для создания окна свойств.
♦ Рамка — небольшая рамка, обычно используется для объединения
нескольких радиокнопок или других виджитов, устанавливающих
параметры, в одну группу.
* Прокручиваемое окно — окно с полосами прокрутки.
♦ Окно просмотра.
Дополнительными виджитами являются:
• Горизонтальная, вертикальная шкала — эти элементы похожи на ин-
дикатор выполнения, но используются не для наблюдения за ходом
процесса, а для установки значений (такие шкалы используются в
диалоге выбора цвета).
♦ Горизонтальная, вертикальная линейка — аналогичны шкалам, но
немного по-другому нарисованы (в виде линейки),
• Событийный бокс — это виджит Елеп(Вох, с которым мы уже знакомы.
♦ Метка с клавишей ускорения — надпись е клавишей быстрого до-
ступа.
• Календарь — виджит для выбора даты.
♦ Ниспадающее меню — обычное ниспадающее меню.
♦ Кривая, Гамма-кривая — служат для отображения различных кри-
вых.
• Горизонтальная, вертикальная полосы прокрутки — вместо этих вид-
житов лучше использовать прокручиваемое окно.
♦ Предварительный просмотр — область предварительного просмо-
тра.
♦ Выбор шрифта, выбор цвета — виджиты выбора шрифта и цвета со-
ответственно.
♦ Диалог ввода — диалог для ввода информации.
• Изображение — используется для вывода картинки.
♦ Пользовательский элемент управления.
♦ Стрелка.
На вкладке Споте вы найдете следующие виджиты:
♦ Окно приложения Опоте — создает готовый шаблон окна приложе-
ния — с меню, панелью инструментов, кнопками быстрого доступа и
строкой статуса.
♦ Диалоговое окно Опоте — произвольный диалог в стиле Опоте.
♦ Окно сообщений Опоте — используется для вывода сообщений.
• Окно Опоте «О программе».
♦ Выбор цвета Опоте — небольшая кнопка с изображением выбранного
цвета, щелчок на которой приводит к появлению окна выбора цвета.
• Выбор шрифта Опоте — небольшая кнопка, щелчок по которой
приводит к появлению окна выбора шрифта.
♦ Пиктограмма Споте.
♦ Кнопка НКебссылки Споте.
• Поле ввода Споте — поле для ввода информации.
* Ввод файла Споте — небольшие текстовое иоле с кнопкой, щелкнув
по которой, вы увидите диалог выбора файла.
♦ Ввод числа Споте — поля для ввода числа.
♦ Правка даты — поле для редактирования даты.
♦ Шкала — красивая шкала, напоминающая спидометр.
♦ Часы.
• Строка приложения Споте —напоминает строку статуса.
• Калькулятор — уже готовый калькулятор.
♦ ОпотеСапуак —область для рисования.
♦ Список пиктограмм.
• Выбор пиктограммы — раскрывающийся список, позволяющий вы-
брать пиктограмму.
♦ Диалоговое окно свойств.
♦ Помощник — окно помощи Споте.
• Картинка Споте.
♦ Аниматор — отображает анимированное изображение.
Перечислять свойства и сигналы каждого виджита я не буду, поскольку в
окне Свойств до такой степени все просто, что вы разберетесь без моих
комментариев.
Итак, приступим. Создайте главный виджит — окно. Для этого просто
щелкните мышью на иконке окна в Палитре. Сразу же после этого в окне
Свойств вы можете установить свойства нашего окна.
Сейчас нас интересуют следующие свойства:
♦ Имя: имя виджита — это идентификатор, и оно должно соответство-
вать правилами написания имен идентификаторов, то есть никакой
кириллицы!
♦ Заголовок' заготовок окна может содержать символы любого алфавита, только
потом, в функции щщп(), не забудьте вызвать функцию локализации.
♦ Ширина окантовки: ширина рамки окна в пикселях.
• Тип — устанавливает тип окна:
♦ Тор Ьеуе! — главное окно;
♦ О!а1о§—диалоговое окно;
♦ Рорир — всплывающее окно.
♦ Позиция — позиция окна на экране при запуске:
• Копе — как при разработке;
• СепСег — строго в центре;
• .Мойке — в текущей позиции указателя мыши.
♦ Ширина, высота—можно указать значения явно, а можно изменить размер
окна с помощью мыши (второй способ часто оказывается удобнее).
Чтобы впоследствии увидеть окно свойств виджита \ушс1о\у (нашего окна),
нужно перейти в главное окно (Иас1е и выбрать из списка окон нужное
вам окно.
Чтобы удалить:
♦ Контейнер: щелкните на любом виджите контейнера правой кнопкой
мыши, выберите имя контейнера и команду Удалить. Будут удалены
также все дочерние виджиты контейнера.
♦ Виджит: щелкните на нем правой кнопкой мыши и выберите команду
Удалить.
• Строку контейнера: удалите дочерний виджит, щелкните правой
кнопкой на строке контейнера и выберите команду Удалить.
* Окно: в главном окне (ЗЫе выберите нужное вам окно и нажмите
клавишу Ое1.
Добавьте вертикальный контейнер из двух строк для размещения вид-
житов. В верхней будет размещена текстовое поле ввода, а в нижней —
контейнер-таблица, состоящая из 5 строк и 4 столбцов. В этой таблице
будут расположены кнопки калькулятора.
Поместите в верхнюю строку контейнера СИкУВох текстовое поле. Пере-
йдите в окно свойств и установите следующие свойства текстового поля
(рис. 24.4):
* Вкладка Эл. управления
• Редактировать: Да
• Видимость текста: Да
• Максимальная длина: О
• Текст: О
• Вкладка Общие
• Высота: 50
• Видимость: Да
• Чувствительность: Да
• Фокусировка: Да
• Имеет фокус. Нет
• События: 0000000000000
После этого в первую ячейку таблицы добавьте кнопку и установите ее
свойства следующим образом:
♦ Вкладка Эл. управления
• Ширина окантовки: 0
• Метка: ОН
♦ Вкладка Общие
• Ширина: 70
* Высота: 70
Ширина’ |“ ] Зб
Высота: [7 |ыГ
Видимость: .Да
Чувствителен.: Да
Подсказка-
Умолчание: Нет |
Имеет умолчани ' ' Нет Й
Фокусировка: &
Имеет фокус: <
События; '' |оо6оооаооосооооовооо
Расш.События: ыопе
Горячие клавишт Правка...
Рис. 24.4. Свойства текстового паяя;
вкладка Общие
войства
ВИЯ
'^.управления] Упаковка |рбщие|.фвдЙ&М
У:
57
Ширина:
Высота
Видимость:
Чувствителен.:
Подсказка:
Умолчание:
70
70
Да
Да
Нет
Имеетумолчани
Фокусировка:
имеет фокус:
События:.:
нет.
Да
Нет
Расш.События:
|ооооооооооооовоооаоо
Рис. 24.5. Вкладка Общие для кнопки
Горячие клавишт ’ . Правка.. . : .
Если вы забыли (или не знаете), что означает то или иное свойство
виджита, подведите указатель мыши к метке поля свойства, и рядом с
ним отобразится подсказка. Если же вам трудно установить маску для
событий, нажмите кнопку (рис. 24.5) рядом с падем выбора события,
и вы увидите описание масок событий.
Скопируйте получившуюся кнопку в следующую ячейку (С1г1 + С,
С1г1+У,). Для новой кнопки установите свойство Метка: СЕ. Проверить,
что находится в буфере обмена, можно с помощью команды главного
меню СИас1е: Вид, Буфер обмена.
'Годно так же создайте еще 16 кнопок и разместите их так, как показано
на рисунке 24.6.
Сейчас установим функции-обработчики для наших кнопок. Выделите
кнопку (Ж и перейдите в окно свойств на вкладку Сигналы.
Рис. 24,7, Сигналы
Выберите сигнал сНскеб и нажмите Ок. В поле обработчика введите
имя функции-обработчика, например, опЬиПоп^сКск. Можно выбрать
одну из стандартных функций, например, Е1к_та1п_ци1!( ). но не для
этой кнопки — это ведь обработчик включения калькулятора, поэтому
код для него мы должны будем писать самостоятельно. Теперь нажмите
кнопку Добавить.
Аналогично создайте обработчики для остальных функций. Советую
давать функциям понятные имена, например, ои^ЬиаопЛЧ_сНск, где И —
число от 0 до 9, или оп_р[ия_сПск.
Вот и все, интерфейс калькулятора построен.
24.3. Работа с проектом
Прежде всего нужно сохранить наш проект. Нажмите кнопку Сохранить
в главном окне О1абе. Перед сохранением Скк1е предложит установить
свойства проекта:
♦ Вкладка «Общие»
• Каталог проекта /Ьоте/ваше^имя/Проекты/Проект — сразу же из-
мените Проекты на Ргсуесгя и Проект на имя нашего проекта — са!с.
Использовать написанные кириллицей названия не запрещается,
но и не рекомендуется.
• Название проекта: Са1с.
• Название программы: са!с — так будет назван исполнимый файл.
• Файл проекта: са!с.§1ас[е.
• Каталог исходного кода: ягс (~/Рго]есГя/Са1с/ягс).
• Каталог картинок: р1'хтар.
• Язык: С.
• Включить поддержку Споте: Да.
♦ Вкладка «Параметры С»
• Все оставить по умолчанию.
В результате в каталоге -~7Рго|есЬ/Са1с будет создан файл проекта
са1с.§!аде. Этот файл полностью описывает наш проект на языке ХМЕ.
Фрагмент этого файла приведен в листинге 25.1 — просто для общего
развития.
Листинг 25.1. Фрагмент файла проекта са1с.д1ас(е
<?хш1 уегягоп^!.0"?>
<СТК-ГпЬег1асе>
<рго]есТ>
<пате>Са1с</па!пе>
<ргодгат_пате>са1с</ргодгат__.па.гие>
«ПгесСогух/с3.1гесС.огу>
<йоигсеш<11гесСогу>згс</5оигсе_с!1гесСогу.>
<р1хтарЕ_й1гесГогу>р1хтарз</р1хтаретб1гесГогу>
<1апдцаде>С< / 1.апдиаде>
<дпоте_БиррогС>Тгие</дпоте_8иррог&>
<деТС®хТ„виррогС>Тгие</десЕехС_циррогЬ>
</ргсдесс>
<«1с1деС>
<с1аз8>0ЬкН1пс1ом</с1аак>
<пате>и1пааМ</^айе> .
<Ьогдег_к1;ЗЫ1>:7</Ъогаег_и1йСЪ>
< ь 1 с 1е>и1пфэ1Й</ С 1С1е>
< Ьуре >СТК_®ЫШЙ_ТОаЕУЕЬ< / Суре>
<роз 1Ь 1оп>6ТК_!й1М_Р03_Н0КЕ</роз1 С 1оп>
<тпоба1>Еа18е</июй.а1 >
<а11ои_зЪг1пк>Еа15е</а11ои_йИг1пк>
<а 11 о»„дгои>:Тгие< /а11да^дгст>
<аиГо_зНг1пИ>Уа15е</'.ацйр^Ьг1пк>
<ы1бдек>
<с1а5в>61:к7В0х< / с1а®8>
<пате>уЬох2</пате>
<йотодепеои&>Ра15е</11отодепеоиз>
<н:.>ас1пд>0</арас1пд> < .
<т?1бдеС>
<с1авв>вЪкЕрсгу</с1а§з> '
<пате>епРгу1</пай®>
<Ье1дйХ>50</Не1дЫ>
<сап,„{осиз>Тгие</сап_С0си8>
<ейхСаЫе>Тхие</ей1ЬдШе>
< Ь ехЪ_у1з 1Ь1 й >Тгце< / 1 в 1Ы е>
<Рехк_тах_1епдРЪ>0:</:ЬехС_тах_1епдсИ>
<г.ехЬ>О</кехт.>
<сИ11<а>
<ра<Зй1пд>0< /рай<Нпд>
<ехрапй>Еа1ве</ехрапй>; ;
<Г1И>Ра1зе</Ш1>
</сЫ1с!>
</и1адеЬ>
</и1йдеС>
</и!<5деГ_>
</СТК-1пСегЕасё>
Но кроме этого файла в каталоге Са1с ничего нет. А где же исходный
код? А где картинки? Чтобы 61ас1е сгенерировала исходный код, нажмите
кнопку Построить в главном окне О1айе. В результате в каталоге са!с
будет создана структура подкаталогов, показанная на рис. 24.Н.
\ КМ.. Ётк - ей; оЫ \Рю \са!с \
1ШЙЖО Тин________________Размер_____I
Й1 [п»ас(о®1
ЙМ
К [»с]
ЛассопНд Ь
К Аи1Ьси«
Л аи1одег> ®И
^Л са!с д!айе
Л са1с,д1адй Ьак
Л СЬапдекод
л сопНдше т
Л МакеЫе ат
Л Иат
Л ВеаЦте
Л ®1атр-Ь №
Рис. 24.8. Структура каталогов проекта
В каталоге шасгоэ находятся макросы для поддержки среды Опоте.
Каталог ро предназначен только для вас — в него вы будете вносить
сведения об изменениях в проекте. Каталог зге содержит исходный код
проекта.
О каталоге эго нужно поговорить подробнее. В нем находятся следую-
щие файлы:
* ййеНасе.*, киррогк* — эти файлы сгенерированы СИабе, и вам не
нужно их редактировать;
* саНЬаск.* — функции-обработчики. Автоматически сгенерированные
функции первоначально не делают ничего, это только заготовки. Что-
бы ваша программа что-нибудь делала, вам нужно отредактировать
файл са11Ьаск.с;
♦ гпакех — вы можете редактировать этот файл, если вам это нужно.
Рассмотрим файл саПЬаск.с — его нужно редактировать в первую оче-
редь, О1абе создала для вас заготовки функций-обработчиков следующего
вида:
Листинг 25.2. Фрагмент файла саПЬаск.с
ИйеГ НА7Е_СОНР16_Н
# хпсХийе <сопГ1д..'Ь>
#епс1.И
#1пс1ийе <дпоййЛ>
#1пс1иде "са11Ьа$кз,.Ъ.
#1пс1и<3е "1пЬег'|асе.И
# .1пс 1иде п зиррогТ .й *
оп„Ьи Ь Соп„. с 1 хсШ# ПШекВиЬйоп *ЬисЪои, дроАпСег иаег_йаСс1)
) уо1с1 са_Ьиксоп_с11ске<Я (СскВиГХоп. *ЬШЛоп, дро1пТет ивег_йаТа.)
{
>
уо1с1 оп_Ьи 1; Ь оп 11 с к.ес! (<ЗСкВцг Ьоп *ЬиССоп, дроДпкег ивег_йаСа)
{
)
Вписав в эти заготовки код, выполняющий нужные вам действия, можно
попытаться собрать программу. Для этого перейдите в каталог са1.с и
введите команду таке.
24.4. Создание меню
Если вам нужно стандартное меню приложения, состоящее из пунктов
Файл, Правка, Вид и т.п., используйте виджит Окно приложения Споте
(рис. 24.9) — вы его найдете на страничке виджитов Опоте.
нН!
Файл Правка Вид Свойства Справка
Новый Открыть Сохранить
......-ЦП | |Г| .| •гй11ТГШЖу
Рис. 24.9. Окт приложения Опоте
Это уже готовый шаблон окна с меню, панелью инструментов и строкой
статуса. Удобно?
Если же вам нужно нестандартное меню, то выберите виджит Меню,
который находится на вкладке основных виджитов окна Палитра. В
окне свойств меню нажмите кнопку Правка меню. В открывшемся окне
редактора вы можете создавать пункты меню.
Для создания пункта меню нажмите кнопку Добавить и введите следу-
ющую информацию:
♦ Метка — эту надпись увидит пользователь.
♦ Имя — это идентификатор пункта меню.
♦ Обработчик — имя функции-обработчика.
• Иконка — иконка, соответствующая пункту меню..
♦ Подсказка — обычно эта'подсказка отображается в строке статуса
при выборе пункта меню.
Рис. 24,10, Редактор меню
♦ Тип элемента — обычный, зависимый (радиокнопка) или независимый
(флажок) переключатель,
• Ускоритель — горячая комбинация клавиш,
С помощью стрелок вы можете изменять положение пунктов меню.
24.5. Интересные виджиты
Интересных виджитов намного больше, чем будет описано в этом пункте, —
каждый виджит по-своему интересен. Но мне больше всего понравились
следующие виджиты:
♦ Шкала — виджит, напоминающий спидометр, находится на вкладке
элементов Опоте,
♦ Выбор цвета — если этот виджит расположить в контейнере, то по-
лучится окно выбора цвета, которое очень похоже на стандартное
окно выбора цвета среды Опоте (вкладка Дополнительно),
♦ Выбор шрифта — позволяет пользователю выбрать шрифт (вкладка
Дополнительно),
Глава 24. Студий <31абе
♦ Диалоговое окно свойств — уже готовое окно свойств (напоминает
окно свойств проекта), содержащее вкладки и кнопки Ок, Применять,
Закрыть, Справка (вкладка Опоте).
Файл. Правка - Вид Свойстеа' "Справка,
Новый' Открыть СекрштйтЪ Л
Сообщение о состоянии
Рис. 24.11. Шкала
Рис. 24.12. Выбор цвета
^ПС1САМ2
ОН
Шрифт/
Шрифт;
Моктап
.,Сшт> шрифта
' Размер-
: аип«о
• а.уап!дал1е
йсюк?наг11
С^ГКиГу 5С*10011)00* 1
: сЬзлсегу I
: с^еуага
|и$м
В№&3?"
ЦдМ курсив
и
и Жг
;; '1!
РотЛой курсив
П^йсустаковигк филь'ф ' 1'
«98853-1
|щт
тай 11$М курсив
;
16
!8
го
?9
1
/Пример;-——
1
метрика. <г Точек С Пиксел
аЬссЫ§Ь.ук АВСОНРСНЫК
Рис. 24Л3. Выбор шрифта
Рис. 24.14. Окно свойств
Глава 25
ПАКЕТ 01АЮ6
<’-- ЧТО ТАКОЕ 01АЮ0?
--- СООБЩЕНИЯ
о--- ВИДЖИТУЕ5-МО
«---ОКНО ВВОДА ТЕКСТА
(ЗАВИСИМЫЕ И НЕЗАВИСИМЫЕ
ПЕРЕКЛЮЧАТЕЛИ
о---ОРГАНИЗАЦИЯ МЕНЮ
<»--КАЛЕНДАРЬ
о--- ШКАЛА ПРОГРЕССА
1ЛЧИХ ПОЛНОЕ РУКОВОДСТВО
25.1. Что такое О!а1од?
Пакет <_На1о§ служит для вывода диалоговых окон в сценариях Ьа.чЬ. Эле-
менты пользовательского интерфейса мы будем, как и в ОТК 4-, называть
виджитами. Пакет <йа!о^ позволяет использовать следующие виджиты:
♦ 1пГоЬох, Мв^Ьох — выводят информационные сообщения;
• ТпрШЬох — принимает ввод текстовой информации;
• Сакпйаг — позволяет выбрать дату;
♦ КайЫШ — список зависимых переключателей;
• СйсчкНх! — список независимых переключателей;
♦ МепиЬох — используется для организации меню;
• Саи^е — шкала прогресса.
Установив пакет сйа1о& в каталоге /пег/ зНаге/аос/а1а1од-<версия>
вы найдете много примеров применения этого замечательного пакета.
25.2. Сообщения
Начнем с самого простого — отображения небольших текстовых со-
общений. Для этой цели можно использовать два виджита — 1п(оЬох или
Мз^Ьох. Первый отличается от второго тем, что не ждет подтверждения
пользователя о прочтении, а закрывается через некоторое время. Виджит
Ммфох ждет, пока пользователь нажмет кнопку Ок или клавишу ЕпСег.
Рассмотрим пример использования виджита Мк§Ьох:
Листинг 25.1. Виджит МвдЬох
# ! /Ып/зЬ
О1АЬОС>$ {01АЬООй1а1од}
$1)1А1ЮС --ис1е "МЕЗЗАСЕ ВОХ" --сХеаг \
“"ШздЬох “Этот виджит используется для вывода
сообщений. Ждет, пока пользователь нажмет ЕпСег" 10 41
сане $? ги
0)
есИо "ОК";;
255)
есЬо "Нажата ЕЗС.";;
езас
Теперь разберемся, что есть что. Параметр —Ш1е программы сНа!о§ задает
заголовок виджита (рис. 25.1) Параметр -т8§Ьох сообщает программе
тип виджита, который нужно отобразить. После этого параметра нужно
указать текст сообщения, заключенный в кавычки. В тексте можно ис-
пользовать управляющие последовательности (\Ь,\п,\1,\а и др.). После
сообщения задаются размеры виджита.
Рис. 25.1. Виджит Мздоох
Конструкция саке проверяет возвращенное программой б1а!о§ значение.
Если пользователь нажал Ок (или <Ввод>), то программа возвращает
О, а если клавишу Еас, то 255.
Виджит ТпГоЬох следует использовать так:
Листинг 25.2. Использование виджита 1п1оЬох
1 /Ып/зЪ
ШДЬ0С=${П1А1г0(><На1од}
# ждем указанное количество секунд
1еЕЬ=10
ип1Г. = "секунд"
мШе СеэС ’= О
сЬ
$31АЬ0С --$1еер 1. \
-ЬШе "1?№0 ВОХ“ \
~-1пФоЬох "Это информационный бакс. Он отличается от
твдЬох тем, что не вдет, пока пользователь нажмет Епбег,
а прекращает работу по истечении времени
(в данном примере - 10 секунд}.
V вас $ип1Ь чтобы прочитать это сообщение..." 10 52
Ге^^'ехрг $1еЕС - 1'
СейЬ $1е^С = 1 && ип1с=“®едрпй''
допе
Параметр 1 означает, что программа О1а1од будет перери-
совывать окно через одну секунду. Параметр —сШе задает заголовок
виджита, ^~1п4бЬох — определяет тип виджита, после определения
виджита следует отображаемое сообщение, а потом — размер виджита.
В цикле уу!п1е мы проверяем, сколько секунд осталось, уменьшая значение
переменной 1ёЙ,
25.3. Виджит Тез-по
Часто встречаются диалоговые окна, спрашивающие пользователя, со-
гласен ли он с действиями программы, например, «Вы точно хотите
выйти?» или «Удалить этот файл?». Пользователю-Ж: Предлагается два
варианта ответа — Да или Нет. Для организации такого диалога пред-
назначен виджит уек-по.
Следующий листинг демонстрирует работу с этим виджитом:
Листинг 25.3. Работа с виджитом уек-по
# ’ /Ып/еИ
Э1АЬОС = $ {П1АЬЖ=61 а 1од)
ёИАЪОС —*УЕ5/К0 ВОХ" —сХеаг \.
-“Уезпо “Отформатировать /Йеч/Ма1?" 5 41
саэе $? 1п
0)
есЬо "Да.";;
1)
есИо "Нет.";;
2 55)
есИо "Е5С.";;
евас
Рис. 25.2. Виджит уе&-гю
Виджит используется так же, как и предыдущие: название виджита
(уезпо), текстовое сообщение, размеры виджита. Программа Ша1о§ воз-
вращает следующие значения:
♦ 0, если пользователь нажал кнопку Уев;
♦ 1, если пользователь нажал кнопку Мо:
♦ 255, если пользователь нажал клавишу Екс.
25.4. Окно ввода текста
Следующим по частоте применения после информационных виджитов и
виджита уез-по следует виджит ввода текстовой информации—ТпрШЪох.
Принцип работы данного виджита следующий:
1. Мы определяем имя временного файла, в который будет записано
введенное пользователем сообщение.
2. Вызываем программу сЦа1од с параметром —1притЪох,
3. Перенаправляем вывод программы во временный файл (программа
выведет введенное пользователем значение).
4. Выводим или обрабатываем каким-либо другим способом содержимое
временного файла.
Листинг 25,4. Виджит 1пр1йЬох
#!/Ып/вИ
Б1АЬ0С~$ (Г)ХАЪОС=а1а1од^
кетрН1е=' ЬетрЕЫе 2>/йёу/йп1.1' I I РеарН1.й^/1:®р/йезЬ$$
ЕГар Т® "Е $Ее1фШе’ 0 1 2. 5 15
$О1АЬОС —Ш1е *1ЫР11Т ВОХ" —с!еаг \
~“1приРЬох "Данный виджит используется для ввода
информацииХп \ п.
Введите свое имя:" 16 51 2>&ев1рШе
геГ.уа1=$?
сазе $ге$^а1 1п
0)
есЪо "Вы ввели ’сар $1®йрР11е’ ";
1)
есЬо "Нажата Сапсе!";:
255)
11 РезР -в $СетрГ11е ; 1Ъеп
саС $1етрШ.е
е!зе
ес!то "Нажата ЕБС."
11
? !
езас
Значения, возвращаемые программой Й1а1од:
♦ 0, если пользователь что-то ввел и нажал ЕпГег или проста нажал
<Ввод>. не введя ничего (тогда временный файл будет пуст);
♦ I, если пользователь нажал Сапсе!;
* 255, если пользователь нажал Ечс.
25.5. Зависимые и независимые
переключатели
Программа 41 а 1 од позволяет вам использовать в своих сценариях за-
висимые н независимые переключатели. Зависимые переключатели реа-
лизуются визитом гасПо11!>1. а независимые — сЬескйчГ
Листинг 25.5. Независимые переключатели
#; /Ып/вЬ
ОIАЬОС=$ {МАЬОС=сИа1од}
1етр111е='ЧетрГ11е г^беч/гшН' I I Тетр! 11е=/Гтр/1ге5С.$$
Тгар "гт --С ^ЬетрГЫе" 0 12 5 15
$Э1АШЙ --ЬаскЫЫе "Пример* \
— 1Ше "Независимые переключатели" \
--с1тескИаЛ "Данный Пример демонстрирует работу
независимых \п\
переключателей, реализуемых с помощью пакета ПтаЛод \п\
Используйте ПРОБЕЛ для включения или выключения
переключателей. \п\п\
Какие произведения вы читали?" 20 61 5- \
"Почти как люди" "Саймак” оИ \
"Фауст" "Гете" ОМ \
И' Маргарита" "Булгаков"-' о Л \
"Мир теней" ' "Саймак" оЕб \
"Лемон" "Лермонтов" оп 2> $Ьетр€11е
геТуа1=$?
споЗое = 'саС $СепфШе 1
саке $ге"ча1 1п
0)
есИо "Вы выбрали ’$сНо1се'";;
1)
есЪ.о "Нажата СапсеГ',-,-
25 5}
есЪо "Нажата ЕБС";;
еяас
Рис. 25.4. Независимые переключатели
Выбранные пользователем значения помещаются во временный файл,
который вам нужно будет обработать. Сейчас мы просто выведем его
на консоль. Элемент списка сйескИч! может находиться в одном из по-
ложений — Оп или ОН. Эти значения не чувствительны к регистру. Во
временный файл выводятся только включенные переключатели.
Работа с виджитом га<11о№1 осуществляется так же, как и в виджитом
сКескНьГ, за исключением того, что может быть активным лишь один
элемент и во временный файл будет записан именно этот элемент.
Листинг 25.6. Зависимые переключатели
И 1 /Ып/зп
ВIАЪОС=$ ( ЦIАЬОСа 1 од}
ГетпрЕ 11о= ‘ РетрЕИе 2>/<Зеу/гш11' Н СетрЕ 11е = /Ыпр/СезС $$
Игар "гт -г $ЬетрЕ11е" 0 1 2 5 15
$1ИА1,0С -ЬаскЕПАе "Пример" \
.."НА1П0ЫЗТ ВОХ" --с1еаг \
--гасНоИзЕ "Это список зависимых переключателей \п\
Он позволяет выбрать только один вариант из списка \гА
Какую из этих книг вы читали последней?" 20 81 5 \
"Почти как люди" "Саймак" о[[ \
"Фауст" "Гете" оЕЕ \
"Мастер и Маргарита" "Булгаков" ОМ \
"Мир теней" "Саймак" оН \
"Демон" "Лермонтов" оп 2> З^етрЕПе
геГуа!=$?
сло1се='саЬ $ГетрГ11е1
сазе ДгеГна! 1п
0)
есЪо "Вы выбрали '$сНо!се'";;
1)
есЪо "Нажата Сапсе!";;
255)
есЬо "Нажата ЕЭС";;
езас
25.6. Организация меню
Виджит МепиВох очень похож на гаШоВз!—они прямо-таки братья-близ-
нецы, только у тепиЬох нет слева переключателя включено/выключено.
Использовать МепиВох нужно так же, как и гасНоПМ, но не указывая оп
или оГГ для элементов меню.
Листинг 25,7. Меню
# 1 /Ып/ёИ
ПТМО0=${01АЬ0а=а1а1од}
1етр^х1е-'б.етр€11е 2>/.Йеу/пи11' I I бещр€11е=/бтр./беэб$$
Стар *'зй?-е ^етреМе" 0 1 2 5 15
$01АЬИ —сХеаг --бШй "МЕЖТ ВОХ" \
—хпепи "Этот- виджит поможет вам организовать
небольшое меню \п\
МЕМП ВОХ предоставляет Пользователю я&йрять один вариант
из списка \п\ .
Данный виджит такжФ тйз’звоЯяет прокручйэйть возможные
варианты \п\
Вы можете использовать стрелки ВВЕРХ/ВНИЗ,
а также клавиши \п\
1-9 для выбора. \,п\
Выберите вашу ОС:" 20 71 4 \
"Ыпих" "А что, разве есть другие операционные
системы" \
’РгееВБО' "Это лучшая ОС" \
"Нхпскжв* "Мы кроме Шпйомз ничего не видели.,." \
"МЗОО8" "На моей двойке ничего другого не
запускается 2> $ГетпрЕ11е
,геСча1 = $?
спо1се=' саЬ $СетрЛ1е'
сазе $гесча1 1п
0) есЬо "Ваш выбор '§ско1се'";;
1)
есЪо "Нажата Сапсе!";;
255)
еспо "Нажата Езс.";;
езас
Рис. 2&.5. Виджит тепиЬох
25.7. Календарь
Этот виджитпозволяет пользователю удобно ввести дату. Работать с ним
нужно так: с помощью клавиши ТаЬ выбираете нужный элемент управ-
ления: кнопка Ок, Сансе!, поле изменения месяца, поле изменения года,
поле выбора числа; с помощью стрелок вверх/вниз указываете нужное
значения месяца, гада, числа и нажимаете <Ввод>. Выбранная вами дата
будет отображена на консоли.
|1!^стинг 25.8. Календарь
# 1 /Ып/аИ
Ц5ЕН.0АТЕ=='$0.ТАЬ0С --вбаоиС. --ЫПе "САЬЕЫОАД" --саХепйаг
"Выберите дату..." \
0011 2004"
саке $? тп
0)
есЬа "Вы выбрали дату- $ПЗЕВ0АТЕ.";;
1)
есИо "Нажата Сапсе!.";;
2 5 5}
есИо "Диалог закрыт",-;
еаас
Рис. 25.6. Календарь
25.8. Шкала прогресса
Для информирования пользователя о ходе процесса, например, копиро-
вания или обработки файла, целесообразно использовать виджит йап8е
(шкала прогресса).
Листинг 25.9. Шкала прогресса
#! /Ып/зР1
01АЬ06=$(П1АЬ0С=а1а1од}
РСТ=10
(
иШе $РСТ *= 100
до
есИо "XXX"
еспо $РСТ
есЫ "Выполнено\п\
($РСТ %) "
есЬо "XXXй
РСТ-'екрг $РСТ * 10'
# засыпаем на 1 секунду, 1 секунда - это 10%
з1еер 1
Йопе
) I
5Э1АВОС --С1Ые "Инада" --даиде "Шкала" 20 70 0
Рис. 25.7. Шкала прогресса
Глава 26
ВЗАИМОДЕЙСТВИЕ
ПРОЦЕССОВ
В 1ЛЧЦХ
"--СПОСОБЫ ВЗАИМОДЕЙСТВИЯ
--- ПОЛУДУПЛЕКСНЫЕ КАНАЛЫ
О--КАНАЛЫ ТИПА ЯРО
ОСНОВНЫЕ ПРИНЦИПЫ 8У8ТЕМ V 1РС
ОЧЕРЕДИ СООБЩЕНИЙ
о--СЕМАФОРЫ
”--РАЗДЕЛЯЕМЫЕ СЕГМЕНТЫ ПАМЯТИ
1_1ГМиХ ПОЛНОЕ РУКОВОДСТВО
26.1. Способы взаимодействия
Процессы, как и люди, могут «общаться» между собой, то есть обме-
ниваться информацией. В главе 3 мы бегло рассмотрели два средства
межпроцессного взаимодействия (1РС, 1тег~Ргасехз Саттитсайоп):
полудуплексные каналы (конвейеры) и сигналы, но в 1'МХ-систе.мах
таких средств значительно больше. В этой главе я перечислю остальные
средства 1РС и покажу, как использовать их в программном коде.
С давних времен существуют именованные каналы ПРО (7чг.ц 1п —ЕИгМ
От) и сетевые гнезда (сокеты). Вместе с конвейерами и сигналами они
составляют 1РС типа В8Ю. Компания АТ&Т вместе с операционной си-
стемой ЗукГеш V предложила три новых вида 1РС:
• семафоры;
• разделяемая память;
* очереди сообщений.
В операционной системе 1л них поддерживаются оба типа 1РС — ЗукГеш
V и В81). то есть в Глпих мы можем использовать все вышеперечисленные
способы 1РС.
26.2. Полудуплексные каналы
Напомню, что канал — это способ связи стандартного вывода одного про-
цесса со стандартным вводом другого. Каналы — старожилы 15М1Х: они
появились еще в самых первых версиях СМХ. Полудуплексные каналы
позволяют обмениваться информацией только в одном направлении. Если
процесс-предок передает информацию со своего стандартного вывода на
стандартный ввод потомка — это пример полудуплексного канала.
Что такое перенаправление ввода/вывода и как его использовать из
командной строки, вы уже знаете (п.3.4.6). Сейчас я покажу, как осуще-
ствить перенаправление программным путем, то есть без вмешательства
пользователя.
Вызов яувГетО порождает дочерний процесс, позволяя ему читать данные
со стандартного ввода (зкИп) и писать на стандартный вывод (зйЗот).
Иногда нам нужно передать данные дочернему процессу или, наоборот,
получить информацию от порожденного процесса. Другими словами,
мы хотим, чтобы дочерний процесс получал данные не со стандартного
ввода, а от родительского процесса или/и выводил информацию не на
стандартный вывод, а передавал ее процессу-предку. Ввод/вывод между
процессами осуществляется с помощью системного вызова рореп().
Этот вызов должен быть выполнен ДО вызова Гогк( ). чтобы файловые
дескрипторы были унаследованы дочерним процессом.
Р'ТЬЕ * рореп(сопзС сИаг * команда, сопвС сЬаг * режмм_доступа);
Первый параметра— это название программы, которую мы хотим запу-
стить в дочернем процессе. Второй параметр определяет режим доступа.
Установите значение «г», если вам нужно читать вывод дочернего про-
цесса, если же вам нужно передать информацию на стандартный ввод
порожденного процесса, установите значение «ад». Режима двустороннего
обмена не существует.
Вызов рореп() возвращает указатель Г1ЬЕ* или пустой указатель 14151,1,,
если вызов не удался. Так же, как и при работе с обыкновенными файла-
ми, после завершения операции ввода/вывода вы должны закрыть канал
вызовом рс1о.че(). Во время работы с потоком рекомендую использовать
вызов тшво, чтобы предотвратить задержки из-за буферизации.
Теперь несколько простых примеров. Предположим, что нам нужно вы-
вести на стандартный вывод имена всех текстовых файлов, содержащихся
в текущем каталоге. Это можно очень просто сделать с помощью вызова
куя1ет ():
зузСет(*1з ‘.СхХ") ;
Это уж совсем тривиальная задача — мы просто выводим данные, но
никак не обрабатываем их. Как получить все имена текстовых файлов и
обработать их в программе?
// открываем поток
Р1ЬЕ = рореп("1в *.ГхЪ", ’г’);
// в цикле читаем имена всех текстовых файлов
кЫ1е (Плате - ЕдеСв (, . . , Ёр) ; ) 1= ЕОЕ)
{
!/ обрабатываем полученное значение переменной ^пате
// закрываем поток
рсХозеИр) •
Этот фрагмент кода в особых комментариях не нуждается. Сначала мы
создаем поток для чтения (доступ «г») информаций от порожденного
процесса (Ь *Лх1), Затем в цикле \уЫ1е читаем имена файлов до тех пор,
пока не будет достигнут конец файла. После окончания операции вво-
да/вывода закрываем поток вызовом рс1о8е(Гр).
Вот теперь мы готовы к тому, чтобы рассмотреть более серьезный при-
мер. В этом примере мы будем передавать данные дочернему процессу.
Задача такова: у нас есть две программы. Первая программа передает
второй какую-нибудь информацию, вторая обрабатывает ее и выводит
на стандартный вывод результат.
Листинг 26.1. Родительский процесс
#1пс1ис1е <зЬд.1.о.Ь>
#1пс1ис1е <вуз/иа1е .Ь>
#1пс1ийе <ит.8Да,Ъ>
1пЬ гпахп {)
{
сЪаг ЬиШЮ24] = {0} ;
Р1ЬЕ * ср; // ср ~ ргосёзк - дочерний процесс
1п{: вДаВцз;
// Открываем канал. Дочерний процесс - /изг/Ып/сИН.а
ср~рореп ( “/изг/Ып/сЬИй" , "те*) ;
И (!ср>
{
ргхпГ.Е("не могу открыть канал. \п"};
0X1ь(1)
}
рг1пс("Введите информацию для передачи дочернему
процессу " );
// читаем ввод пользователя
КдеГз (ЪкИ!:, (ЬиИ) , вШп) ;
// передаем данные дочернему процессу
Ерг1пР1; (ср, "%з\п* , ЬиЕЁ) ;
// "выталкиваем" содержимое буфера в канал
Г 11пв11 (ср} ;
/7 закрываем канал и проверяем состояние вызова рс1ове()
вСаТ-иа™рс1ове(ср) ;
И и^1РЕХ1ТЕ0(й1а(1из) )
ргтпГГ("ошибка при закрытии каналаХл");
рг1пСГ("Завершение работы родительского процессеХп");
тебиги 0;
}
Листинг 26.2. Дочерний процесс - исходный код /изг/Ып/сйИб
#1пс1и<2е <абб1о.Н>
1пЬ та!п()
{
сИаг Ьи^Ш024)Ч0};
бдеСе(Ьи1{, 81геоГ (ЬиГС} , вбсИп) ;
рг!пСЕ(“Прочитал со стандартного ввода: %8\п" ,ЬиП) ;
ргхпСЕ("Завершение работы дочернего процессаХп");
гегигп 0;
}
26.3. Каналы типа Р1РО
Канал ПРО — это канал, основанный на принципе очереди: «первым
вошел, первым вышел». От обычного канала канал НГО отличается
следующим:
• Канал НЕО сохраняется в файловой системе в виде файла, поэтому
каналы НТО называются именованными.
♦ С именованным каналом, как с обычным файлом, могут работать все
процессы, а не только предок и потомки.
• В отличие от полудуплексного канала, находящегося в ядре, канал
НГО находится в файловой системе и остается там даже после за-
вершения обмена данными. Для следующего использования канала
его не нужно заново создавать.
Создать именованный канал можно с помощью командного интерпре-
татора:
$ ткпой туЕТГО р
5 ткеИо а=ги туЕТРО
или системного вызова щкпоб():
1пС ткпой( скат *раСЬпате, тобе_Г тоде, бег 1;
Функция ткноЩ) используется не только для создания каналов ИГО.
Она может создать любой 1-узел (тос1е) файловой системы: файл, устрой-
ство, канал НГО. функция возвращает 0, если создание узла прошло
успешно, или -1, если произошла ошибка. Проанализировать ошибку
можно с помощью переменной еггпо, которая равна:
♦ ЕЕА1Л.Т, ЕХОТЭ1К ЕМОЕЫТ — неправильно задан путь;
♦ ЕАССЕ88 — у вас недостаточно прав;
♦ Е\АМЕГО()1.О\Ст— слишком длинный путь.
Пример создания НГО-канала:
тклс>а("Р1Е0",
В текущем каталоге будет создан канал ИГО с правами доступа 0666.
Указывая права доступа создаваемого файла, помните, что они находят-
ся под влиянием шпавк. Поэтому, если вы хотите установить истинное
значение прав доступа, используйте системный вызов цтаак(О), чтобы
временно отключить влияние шпакк.
итазк(0);
ткпоаГ'ПРО" , 5_1Е1.РО10бб6, 0);
Рассмотрим программу, создающую ПРО-канал и ожидающую данных по
этому каналу. Программа после создания канала будет ожидать данных по
этому каналу и не завершится до чех пор, пока вы не «убьете1» процесс.
Листинг 26.3. Процесс-читатель
#1пс1ийе
#1пст.исЬ <зЬЙ11Ь.Й>
#1пс1пйе <вуз/йСаС.11>
#1пс1ис1е <ип1вСй.И>
+?1пс1иде <11пих/кСас .И>
/* Наш канал называется Р1РО, он будет создан, в текущем
каталоге */
Р1РО НР1ЕО"
-уо1й таазп
РТЬЕ *Ер;
/* Буфер для чтения ★/
сб.аг ЫЕ [128] ;
/* Создаем канал, если он еще не создан, права доступа
0666 * /
итазк[0);
ткпскПРП-О, 3_1Р1РО 1-0:666, 0);
/* Ожидаем данные */
вдЫЛе (1)
{
Ер = Еореп(Е1ЕО, "г") ;
ЕдеЕвСЬиЕ, 128, Ер);
ргхпЕЕ("Получена строка: %б\п*, ЬиЕ);
Ес1озе{Ер);
}
)
Теперь рассмотрим процесс-писатель, который будет записывать данные
в НЕО-канал. Этот процесс не завершится до тех пор, пока процесс-чи-
татель не прочитает их:
Листинг 26.4. Процесс-лиса тель уугИеМо.с
#1пс1ис1е <зЫ1о.Ь>
МпсХиде <зМ11Ь.1а>
#аеЕ1пе Р1ЕО "ПРО"
чо!й та1п ЦпС агдс, ска г *агду[])
{
Е1ВЕ *Ёр;
1.Е ( агдс 2 ) {
РГ1ПС.Е {"02АСЕ: игтСеЕХЕо <нЕг1пд>\п" ) ;
ех1Д (1.) ;
)
Ер = Еореп(Е1РО, *ВД*);
ЕрпТз(агду{1], Ер);
Ес Хозе(Ер) ;
)
Запустите процесс-читатель, затем перейдите на другую консоль и за-
пустите «писателя» с аргументом — строкой «тЕо». На первой консоли
вы увидите сообщение:
Получена строка: 1пЕо
При использований каналов НГО нужно учитывать механизм их блоки-
рования. Если процесс открыл канал для записи, то он блокируется до тех
пор, пока другой процесс не откроет его для чтения. Аналогично, если
какой-то процесс откроет ИГО-канал для чтения, он будет блокирован,
пока другой процесс не запишет в канал данные. Если блокировка про-
цесса нежелательна, можно использовать опцию О МО.ШМ.ОСК
оретша, О„ЫОИВЬОСК) ;
Ясное дело, что тогда нужно немного модифицировать исходный код: вы-
зовы Гс1о8е(), Гри(в(), ГееЬ() использовать уже нельзя, вместо них нужно
использовать соответствующие вызовы с1о5е(), уиШО, геас10.
И последнее, что нужно помнить при программировании РГЕО-каналов:
идеология Е1ГО-каналов предполагает наличие «читателей» и «писате-
лей». Если «писатель» пишет в канал, у которого нет «читателя», из ядра
будет послан сигнал 8ЮР1РЕ.
26.4. Основные принципы 8у$1ет V1РС
Каждый объект 1РС, то есть семафор, очередь сообщений или разделяемый
сегмент памяти, имеет свой идентификатор, позволяющий ядру однозначно
идентифицировать объект. Идентификатор уникален только для объектов
данного типа, а не для всей системы. Например, в системе может быть
очередь сообщений с иден тификатором «111» и семафор с ГО «111», но
никогда не будет двух разных очередей с идентификаторам «111».
Для получения уникального идентификатора системе нужен ключ (1РС
Кеу), который согласовывается с процессом-сервером и процессом-клиен-
том. Ключ осуществляет связь между процессом-сервером и процессом-
клиентом подобно тому, как маршрутизатор осуществляет связь между
двумя компьютерами в разных подсетях.
Ключ генерируется приложением самостоятельно. Для этого используется
функция Йок():
ГЬок( сЬаг *раЬЬпате, сЪаг рг<0 );
В случае успеха возвращается ключ, а в случае ошибки -1,
При создании ключа нужно учитывать, что сгенерированные ключи могут
повторяться, поэтому после получения нового ключа нужно проверить,
не используется ли он уже.
Ключ генерируется на основе номера шойе первого аргумента и симво-
лов второго. Это не гарантия уникальности, поэтому и получается, что
функция может возвращать уже используемый ключ.
кеу_Д кеу1;
кеу„1 кеу2 ;
кеу! = Пок ("/Ьпр/арр", 'а');
кеу2 = ЕЬок 'а');
Просмотреть статус всех объектов 1РС можно с помощью команды грех,
выводящей состояние всех разделяемых сегментов памяти, семафоров и
очередей сообщений.
Для удаления объекта 1РС используется команда
1рсгт <твд | зет I зИт> ХРС„ГО
Так как идентификатор 1РС уникален только для объектов 1РС определен-
ного типа, вы должны указать тип объекта (т8§ — очередь сообщений,
зет — семафор, «Ьт — сегмент памяти) и его идентификатор.
Для работы с объектами 1РС не забудьте подключить следующие заго-
ловочные файлы:
#1пс1ийе <зГй1о.И>
#1пс-1нс1е <вМ11Ь.И>
#1пс1ийе <еув/Ьурез.И>
#1пс1ийе <зуз/1рс.И>
#1пс1нйе <зуз/1пед.И> /* для очередей */
#1пс1и<5е <ёу8/веш.Н> /* для семафоров */
#1пс1ибе оуБ/ййт.Ьэ-/* для разделяемых сегментов памяти */
26.5. Очереди сообщений
26.5.1. Основные структуры ядра
для работы с очередями
Очередь сообщений — это связный список, находящийся в адресном
пространстве ядра. Каждая очередь имеет свой уникальный идентифи-
катор 1РС.
Структура ядра гп8§ЬпГ (описана в файле /изг/вгс/11гшх/1пс1и8е/
Ипих/шед.й) является буфером сообщений:
вСгисЕ тздЬиЕ {
1опд пЛуре;
сЬаг тРехС(1];
);
/* тип сообщения */
/* текст сообщения */
Тут все ясно: тип сообщения и само сообщение, Используя тип сообще-
ния, вы можете помещать в одну очередь разные сообщения, а не созда-
вать еще одну очередь. Например, у нас есть два приложения — клиент
и сервер. Вы можете использовать доя них одну и ту же очередь: сообще-
ния клиента будут с номером 1 (пИуре = 1), а сообщения сервера — с
номером 0 (пнуре = 0).
Ясное дело, что сообщения из одного символа нас не устраивают, поэтому
вы можете переопределить структуру тя^ЬиГ в своей Программе:
5(;гисб ту_ЬпГ {
1опд гпбуре;
сН&г пиехС [128] ;
}
Вы также можете добавлять новые поля в эту структуру (но только в
своей программе! Код ядра модифицировать не нужно):
зСгисЬ {
1опд ггх.уре;
сЬаг ггДехЬ (128] ;
спад тп^о[ 50 ];
1пс 5ДаШ;
}
Не бойтесь создавать свои структуры: ядру все равно, с какими данными
работать, вам нужно учитывать только максимальный размер сообщения,
который определен в файле /икг/ысЛтих/|Пс1иде/11Пих/тв§.Ь:
#<1еГ1пе М5СМАХ 4056
4056 байтов — это максимальный размер не ваших данных, а всей струк-
туры, включая тип сообщения. Размер типа 1оп§ равен 4 байтам.
Сами сообщения хранятся ядром в структуре т^, которая также опреде-
лена в файле
впгиср тзд {
вСТиСТ глад *т&д_пех6; /* указатель на след, сообщение
в очереди * /
1опд сИаг (текста) Н1зд_буре; *ГП8д_8роС ; */ /* тип сообщения */ /* адрес самого сообщения
зИог^ тзд„б8; /* размер сообщения (текста) */
};
Сообщения хранятся в виде односвязного списка. Первый член структуры
тк§_пех1 — это указатель на следующее сообщение в очереди. Второй
член гш&_1уре — это тип сообщения, такой же, как в структуре Щ8§_ЬиГ.
Следующий член структуры — это указатель на начало текста сообщения,
а последний член — размер текста сообщения.
Каждый тип объекта 1РС представляется в ядре определенной структу-
рой. Для очередей сообщений это структура Ш8ЦЙ_ф (описана в файле
/цат/8гс/11лих/1пс1шЗе/11пих/т®д.И).
кЪгисС 1ияд1й_<Яз {
зСгисЬ 1рс_регт тзд_регП1; /* информация о правах
вдгисГ гозд *т5д_Г1г8Ь;
йсгисб тпзд *тзд_1а5Т;
С1гпе_Д: тад_йС1те;
тзд_гЫте;
И; за сЫте;
вСгисТ иа1С_дие:ие *-миа1Т;
вСгисС «а1Ь._диеие *гыа!Л;
ивЬогЬ тзд_сЬус.ея;
ивИогб твд^дпит;
изИогб гг>зд_дЬутез ;
изЬогТ т®д_1 зр1д;
изНогб тзд_1гр1д;
доступа */
/* указатель на первое
сообщение .э очереди */
/* указатель на последнее
сообщение а очереди*/
/* время последнего вызова
тедзпй */
/* время Последнего вызова
твдгсу */
/* время последнего изменения */
/* максимальное число байтов
на очередь */
/* р!в последнего
испустившего гоздзпй */
/* последний полученный рх<1 */
♦ тж регт
Эго структура типа 1рс_регт (1рс__регт определена в файле 11пии/1рс. ь).
Данная структура содержит информацию о владельце и правах до-
ступа:
зЬгисб 1рс_регт {
кеу_Г кеу;
цзНогб и!й; /* и1а и а 16 владельца */
изкогЬ. д!б;
ц.йЬогб си!д; /* ц1'5 и дк! создателя */
цаИогС. сд1а;
избогС атюйё-г /* режим доступа;*/
ивйогб вед; /* системное поле. -Вас оно не касается. */
};
♦ ГП8§ДЙ«
Указатель на первое сообщение в очереди.
Указатель на последнее сообщение в очереди.
• глад кбте
Время отправки последнего сообщения из очереди.
♦ тяготе
Время последнего изъятия сообщения из очереди.
♦ тлейте
Время последнего изменения очереди.
♦ ууууэй и пуан
Указатели в очередь ожидания ядра, которые используются, когда
очередь переполнена и процесс вынужден ждать из-за этого.
• ш5§_сЬу1ез
Суммарный объем всех сообщений в очереди.
♦ ПЪ§_С(ПШП
Количество сообщений в очереди.
♦ т8§_цЬу1ея
Максимальный размер очереди.
♦ т5§_18р1б
РЮ процесса, который послал последнее сообщение в очереди.
♦ гп«:_1грк1
РЮ процесса, который подучил сообщение из очереди.
26.5.2. Создание очереди сообщений
Для создания очереди сообщений используется системный вызов тьё§е1().
Этот же вызов используется для подключения к уже существующей оче-
реди:
1гХ твддеь ( кеу, 1пХ говдПд 5;
Первый аргумент — это ключ, который мы получаем с помощью систем-
ного вызова Йок(). Второй аргумент — это режим доступа к очереди:
♦ П’ЕСКЕАТ — создать очередь, если она не была создана ранее.
♦ 1РСЕХСЕ — если использовать вместе с 1РССКЕАТ. то в случае,
если очередь существует, мы получим ошибку.
Если использовать только 1РСшСЯЕАТ (без 1РС_ЕХСЪ), то вызов
всегда возвращает идентификатор очереди, даже если очередь
уже существует (происходит подключение к очереди). Если использовать
1РС_ЕХСЬ вместе с 1РС_СКЕАТ. также будет создана новая очередь, но
если очередь уже существует, подключения не произойдет, а функция
возвратит -1 (ошибка).
Вместе с режимом 1РС_СКЕАТ можно указывать права доступа к очереди
с помощью операции ОК:
1РС„СКЕАТ I 0660
Если произошла ошибка и тзщ’еЦ) вернул -1, то переменная еггпо уста-
навливается следующим образом:
♦ ЕАССЕ88 — у вас нет прав доступа к объекту 1РС;
♦ ЕЕХ18Т — очередь уже существует, создание невозможно, НО воз-
можно подключение к очереди;
♦ Е1ЛКМ — очередь помечена для удаления;
* Е\'ОЕ\Т — очередь не существует (в случае подключения);
♦ ЕЬЮМЕМ — не хватает памяти для создания очереди;
♦ Е\'О8РС — не хватает адресного пространства (то есть превышено
максимальное количество очередей).
Следующий код создает очередь сообщений:
кеу„Ь кеу; /* ключ 1РС */
1пТ 1<1; /* 1П очереди сообщений */
/* создаем ключ */
кеу = ^Сок (“ . * , 'д');
/* создаем очередь */
((16. ~ тзддек ( кеу, 1РС_СВЕАТ | 0660 )) == -1)
{
ргхпСЕ("Ошибка при создании очередиХи");
}
26.5.3. Постановка сообщения в очередь
Для постановки сообщения в очередь используется вызов тк&зшЦ):
1гХ тядзпЩ тздШ, зкгися твдки^ *газдр, 1т± тздзг, 1пс. тздйд );
Первый аргумент — это идентификатор очереди, в которую нужно доба-
вить сообщение. Данный идентификатор мы предварительно получаем с
помощью системного вызова т.чщ>е1(). Второй параметр — это указатель
на буфер сообщения. Третий аргумент — это длина сообщения без учета
типа сообщения (4 байта). Последний аргумент обычно устанавливают
равным 0 или 1РСКОХМА1Т, если вы не хотите, чтобы процесс был бло-
кирован при постановке сообщения в очередь, в случае переполнения
очереди. По умолчанию (когда флат равен 0), если очередь переполнена,
ваш процесс будет блокирован до тех пор, пока сообщение не будет по-
ставлено в очередь.
Как обычно, в случае успеха вызов возвращает 0, а если произошла ошиб-
ка, то -1. С помощью еггпо можно анализировать ошибку:
* ЕАОАШ—очередь переполнена, а вы используете флаг I РС_\О\УА1Т,
то есть сообщение будет удалено и вам нужно заново поставить его в
очередь (отсюда и название ошибки — АОА1» (опять));
• ЕАССЕ88 — у вас недостаточно прав для записи сообщения в оче-
редь;
♦ ЕЕАСЕГ — неверный адрес буфера (невозможно получить до-
ступ к этому адресу);
• ЕШЯМ — очередь сообщений удалена;
♦ Г1\\'ЛЕ — ошибка в аргументах, например, неправильное значение
идентификатора очереди, отрицательный тип сообщения, неправиль-
ный размер сообщения и т.д.
♦ Е\ОМЕМ — не хватает памяти.
Следующий фрагмент кода демонстрирует постановку сообщения в
очередь:
1пг. тез, 1епдЫз,- /* результат операции и длина
сообщения */
зЬгисб ту_Ьи! *Ьи1; /* само-сообщение */
/* определяем длину сообщения — 4 байта */
1епдЬб - ззтаво!: (вЬтнс^ шу^ЬцЕ) — вЕтеоЕ (1ол.д) ;
ИШ'ез = швдвпсЦ 1й, ЙзиЕ, 1епдС?1, 0) ) == '-1)
ргтпбГ (. “Ошибка при постановке сообщения в очередьХп") ;
}
Наверное, вам уже не терпится увидеть реально работающий пример, а
не куски кода, которые только отчасти связаны между собой. В листинге
26.5 представлена программа, создающая очередь сообщения и записы-
вающая в нее сообщение.
Листинг 26.5. Пример работы с очередью
#:1пс1и<а.е <вЬ<11о.к>
# тис1пбе 1Ь.Е
#.1пс.1ц4е < 1хпих/ 1рс. п >
#:1пс1и^к<11пих/®зд.?2>
та1п()
(
1пб АДк ./* Идентификатор очереди * 1
кеу_Ь кеу; / * Ключ * /
1пй:гё8; ;• /* Результат операции и длина
сообщения *./
ебгисб ту_Ьиб {
1о.пд тЬуре; /* тип сообщения */
/* Далее-.-следуют произвольные: поля — они -зависят от
сообщения. */
АпР ор_г.уре; /* тип операцию */
Арр. 1_ор; /* первый операнд */
Ап.р. г„ор; /* второй операнд.*/.
} тзд;
/* Генерируем 1РС-ключ */..
кеу = А.рок(”.я, 'й');
/* Создаем очередь или присоединяемся к уже
существующей */
И [(1Д = тзддеь { кеу, 1₽С„СНЕАТ I 0660 )) == -1)
ргАпбб("Ошибка при создании очереди\п");
ехАс. (1) ; *
./* Заполняем сообщение */
тер,Дуре =1; /* тип сообщения.,, должен Йить
положительным 1 */
тед.бр_Ьуре = 0; /* тип операции */
тёд.1д.ор = -6; '
т.ва. Д_ор = 5;
/*: опредейяйм-:-рйййу с:ооб1цения ~ 4 байта */
1епдСЪ = еАиеоГ {вСгпсС щу_ЬиГ) - з!геоА (1ог.а) ;
1Е<(гез " твдзпсЦ 16, &ЬиЕ, 1епдЫа, 0)} == ~1)
{
ргАпб?("Ошибка при постановке сообщения в очередь\п"};
ехах (1) ;
После запуска этой программы запустите программу 1рс5 и посмотрите
на статус только что отправленного сообщения. Теперь напишем про-
грамму, которая получит это сообщение.
26.5.4. Получение сообщений очереди
Для получения сообщения используется системный вызов п18§гсу():
1пС гпядгсч( 1пЬ тздМ, зЬгисС твдЪиЕ *тядр, тпЬ тэдзл,
1опд тсуре, тздЕтд)
Первый аргумент определяет очередь, из которой нужно получить со-
общение. Второй аргумент — это адрес буфера, в который будет записа-
но сообщение. Третий аргумент — это ограничитель длины сообщения.
Четвертый аргумент— это тип сообщения. Ядро будет искать в очереди
наиболее старое сообщение данного типа и вернет его копию. Если
пНуре-О. то ядро вернет самое старое сообщение независимо от типа.
После успешного получения сообщения оно удаляется из очереди.
В случае успеха вызов тм|т() возвращает число байтов, скопированных
в буфер, или -1 в случае ошибки. Переменная еггпо устанавливается
следующим образом:
♦ Е2ВЮ — длина сообщения больше, чем ограничитель
• ЕАССЕ88 — у вас недостаточно прав;
♦ ЕГА1Л.Т — недоступен адрес буфера;
* ЕПЖМ — очередь уничтожена ядром;
♦ Е11ЧТЯ — операция прервана поступившим сигналом;
• ЕЛ \ УЛЕ — ошибка в аргументах, например, отрицательный размер
сообщения или неверный номер очереди;
• Е\()М8Сг — нет сообщения, удовлетворяющего условию. Посылает-
ся, если установлен флаг 1РС_ГчО\УЛГГ, в противном случае процесс
будет ждать нужного сообщения.
Последний аргумент предоставляет дополнительные возможности по
работе с сообщениями. Если установлен бит М8Сг_\ОЕЯГ<()К в
то если размер сообщения больше, чем оно будет обрезано и вы
получите только гш>й$;г байтов. Если флаг 8М(г_\()ЁГ<Г<()Г< не устанав-
ливать, вы получите ошибку Е2В1О.
Следующий код получает сообщение из очереди:
1пГ 16.; 1п1 тез, 1епдсй; зЫнсС ту_Ьи! Ъи{'; 1пГ буре^!; /* 1В очереди */ /* результат операции и длина *7 /* буфер */ /* тип сообщения */
1епдсИ = зхгеоЕСзкгиск ту_ЬиГ) - БтгеоГ(1опд);
И: ((ген = твдгсу{ М, &Ы1Г, 1епдгИ, Суре, 0 )} == -1)
{
ргкпСк(“Ошибка!“);
/* можно проанализировать ошибку */
1Е(еггпо==Е2В1в) рг!пЬС("Сообщение слишком большое\п");
1Е(еггпо==ЕАССЕЗЗ) рг1пбЕ(“Нет доступа\п");
/* и т.д. */
ехтб(1);
}
26.5.5. Проверка наличия сообщения в очереди
Наверное, вы не хотите, чтобы ваша программа ждала, пока в очереди
появится нужное сообщение. Используя особенности системного вызова
т«егеу(), можно написать код проверки наличия сообщения опреде-
ленного типа в очереди. Напишем функцию тв&_ех15Ь(), которая будет
возвращать ТЕПЕ, если сообщение есть в очереди, или ГАЕ.8Е, если
сообщения в очереди нет.
1пб тзд_ех1зГз(1пб 16, 1опд буре )
{
1пЪ гез;
1Шгези1Х = тздгсч; 16, №11, 0, куре, 1РС„№ИА1Т )) -1)
{ 1Е(еггпо — Е2В1О)
гекигп(ТКПЕ) ;
}
гебигп(РАВЗЕ);
)
В вызове пи§гсу() отсутствует адрес буфера и длина сообщения. Этим мы
специально провоцируем ошибку, а вызов 1РС_ЫО1Л'А1Т отказывает от
блокировки процесса, Мы проверяем еггпо; если он равен Е2ВЮ, значит,
сообщение есть в очереди. Ошибка Е2ВЮ порождается потому, что мы
установили размер сообщения равным 0.
26.5.6. Тотальный контроль
До сих пор мы рассматривали только системные вызовы для работы с
сообщениями очереди, сейчас рассмотрим системный вызов т$дсН(),
предназначенный для контроля самой очереди.
тздсЫ ( 1пс твддгй, 1пЬ сйкЗ, кСгиск тзд1с1_б8 *ЬиГ ) ;
Первый аргумент — это Ю очереди, второй — команда, которую нужно
выполнить:
♦ IРС_8'Т'Л'Т' — записывает в буфер ЬиГ структуру т8цМ_с18 для очереди
сообщений с идентификатором
♦ 1РС_$ЕТ — устанавливает значение 1рс_репп структуры т«]к1. Зна-
чение берется из буфера ЬиЕ
♦ 1РС КМ11) — удаляет очередь.
Системный вызов возвращает 0 в случае успеха и 4» если произошла
ошибка. Переменная еггпо устанавливается следующим образом;
♦ ЕАССЕ58 — недостаточно прав.
• ЕРАСЬТ — невозможно получить доступ к адресу буфера ЬиГ или
неверный адрес.
• Е1ГЖ.М — очередь была уничтожена прямо во время запроса.
♦ Е1\’\’А1. — ощибка в аргументах, например, неправильный Ю-оче-
реди или отрицательный размер сообщения.
• ЕРЕНМ — у вас нет прав на запись в очередь.
Структура П18<р(1_<15 уже рассматривалась ранее, поэтому не вижу смысла
приводить ее описание еще раз.
Если подытожить, то все, что мы можем сделать с очередью — это удалит ь
ее и изменить права доступа или информацию о владельце (его 14 Г) и
ОГО). Как удалить, думаю, понятно. Напишем функцию ейапде гтннкО.
которая будет изменять права доступа к нашей очереди. Ей нужно пере-
дать два параметра — идентификатор очереди и новый режим доступа в
виде строки, например, "0660" .
сЬапде„тойе (. сЬаг *тойе )
(
нГгисс ЬиГ;
/* Получаем копию структуры- в буфер ЬиГ */
1А( тндсЫ{ 1Й, 1РС_5ТАТ,' &ЪиГ) == -1 )
геГ.игп (-1) ;
}
/* Изменяем права доступа *./,
засапЕ (поде, "%Но", &.Ьи.Г лпойе);
/* Модернизируем внутреинкж структуру */
1Е( твдсСК 1й, 1РС..ЗЕТ, &ЬцГ ) =~ -1 )
{
геЬигп(-1);
}
геСигп(О);
}
Иаша функция возвращает 0 в случае успеха или -1, если произошла
ошибка.
На этом обзор средств для работы с очередями сообщений можно считать
законченным, теперь с чистой совестью перейдем к следующему средству
1РС — семафорам.
26.6. Семафоры
Семафор — это объект 1РС, управляющий доступом к общим ресурсам
(устройствам). Семафоры не позволяют одному процессу захватить
устройство до тех пор. пока с этим устройством работает другой процесс.
Семафор может находиться в двух положениях: 0 (устройство занято) и
1 (устройство свободно).
Одиночный семафор используется редко, практически никогда. Для кон-
троля доступа к ресурсам обычно используются множества семафоров,
даже если это множество состоит всего из одного семафора. Например,
пусть у нас есть три принтера. Когда вы посылаете задание на печать,
диспетчер печати просматривает множество семафоров принтеров и вы-
ясняет, есть ли свободный принтер. Если да, то он начинает печатать ваше
задание, если же нет, диспетчер ставит ваше задание в очередь печати.
Еще один пример использования семафоров — это счетчики ресурсов.
Представим, что вместо принтера есть некий контроллер, позволяющий
выполнять 100 заданий одновременно. Когда он свободен, значение се-
мафора равно 100, По мере поступления заданий диспетчер контроллера
уменьшает значение семафора на I, а по мере их выполнения увеличивает
на 1. Когда значение достигает 0, новое задание ставится в очередь до
освобождения контроллера.
Как и в случае с очередями сообщений, для семафоров в ядре Игшх есть
своя структура—шпк1_д8, которая описана в файле /йБг/агс/Ипих/
1пс1шЗе/11пих/зет.Ь:
зСгисЬ зе1р1Й_&з {
зЫисС 1рс_регт зет_регт; /* права доступа */ /* время последней
5ет_оС1те;
операции */ Г1те_г изменения */ зСгпсС зет зет_сЫте; *зет_Ьазе; /* время последнего /* указатель на первый
семафор */ зСгисс иа±р_яиеие *еу©пСп; /* очереди ожидания */
зСгисТ иа1с_диеие *еуепС2; зСгисС 8ет_ипс1о *иийо; /* запросы ип<3о в этом
массиве */ изИогС массиве */ }; зет_пзетз; /* номера семафоров в
Обратите внимание: в структуре есть указатель на первый семафор. Тип
указателя — зет. Данный тип описывает семафор:
зСгисб зет {
зЬогТ ветпрФЙ? /* р!й последней операции */
изИогЬ вещуа!; /* текущее значение семафора */
изкогЪ освобожд. зеишспЛ; рес * / /* число процессов, ожидающих
изИоГС всех рес. зегасспс; */ /* число процессов, ожидающих освоб.
♦ 5ет_р1й
РГО процесса, который произвел последнюю операцию над семафором.
♦ 8ет_зетуа1
Текущее значение семафора.
• 8ет_8етпсгй
Число процессов, ожидающих увеличения значения семафора, то есть
освобождения ресурсов.
♦ ^етдет/сп!
Число процессов, ожидающих освобождения всех ресурсов.
26.6.1. Создание множества семафоров
Для создания множества семафоров или подключения к уже существую-
щему множеству используется системный вызов 5ет^е1():
1пЬ зетдеЬ { кеу_т кеу, хпЕ пзетз, 1пС ветГ1д );
Первый аргумент — это ключ 1РС, который, как обычно, создается си-
стемным вызовом Пок(). Он сравнивается с ключами других семафоров
и в зависимости от значения .четГф решается, создавать новое множество
или подключиться к уже существующему. Значение вешП^:
♦ 1РССКЕАГ — создать новое множество семафоров;
* 1РС_ЕХСЬ — при использовании с 1РС_СКЕАТ порождает ошибку,
если семафор уже существует.
При создании семафора, как и при создании очереди сообщений, мы
можем указать права доступа:
1РС„СНЕАТ § 0660
Второй аргумент системного вызова 8ет§е<() задает требуемое количество
семафоров. Оно ограничено в файле зет.И:
#<1еПпе ЗЕММ8Е 32 /* <= 512 */
Данный аргумент игнорируется, если вы подключаетесь к уже существу-
ющему множеству, а не создаете новое.
Функция аешееЦ) возвращает идентификатор семафора или -1 в случае
ошибки. Переменная еггпо устанавливается следующим образом:
* ЕАССЕ88 — у вас не хватает полномочий для выполнения опера-
ции;
♦ ЕЕХ18Т8 — множество существует, его нельзя создать;
• ЕГОКМ — множество помечено для удаления;
• ЕЫОЕХТ — множество не существует, не было ни одной операции
1РССКЕАТ;
* ЕГчОМЕМ — не хватает памяти;
• ЕХО8РС — достигнуто максимальное количество семафоров.
Функция для открытия существующего семафора может выглядеть так:
уо!д ореп„зет(1пГ *з1а, кеу_С кеу)
(
1П(*81а - зетдеЫкеу, 0, 0666}) == -1)
{
рг!пЕ1(“Семафор не существует !!*!\п*);
ех!С(1);
}
)
Для создания множества семафоров можно использовать следующую
функцию:
чо!с( сгеаСе_ёётп(1п1: кеу, 1пС п)
{
1пС С = 0; /* счетчик */
ип!оп зетип вете;
1Г(п > ЗЕММЗЬ.) {
ргтпЬЁ{•Превышен лимит. Максимальное число семафоров
%а\п",ЗЕММ5Е);
ех1Ь(1);
}
И((*:з1а = ветдеЫкеу, п, 1РС_СКЕАТ 11РС„ЕХСЫ Оббб)) — -1)
С
ргтпСЕ("Множество уже Существует\п");
ех1е(1);
}
ветв.ча! ЗЕМ^ЕЗОПЙСЕцИАХ;
/* Инициализируем все элементы одним значением */
зетсЫ(*з1а,с,5ЕТАЬЪ,еепш) ;
/* Если нужно установить разные значения, нужно
использовать ЗЕТУАЪ,
например
гог(с~0; С<П; С++}
зетсВ!(*з1й, с, ЭЕТУАЬ, ветз);
*/
}
26.6.2. Выполнение опервций над семафорами
Для выполнения операций над множеством семафоров служит системный
вызов аетор():
1пЬ зетор( хгл вет!<а, аыисс зетЬиЕ *зорз, ипзДдпей. пзорз) ;
Первый аргумент — это идентификатор семафора, возвращаемый вы-
зовом аешкеЦ). Второй — это массив операций, которые нужно выпол-
нить над семафорами. Последний аргумент — это количество операций
в массиве.
Второй аргумент представляетсобой массив типа яешЪиР
Е^тисГ. зешЬиЕ {
ивНогс зет^пигп;
вНогТ. яет_ор;
зИогл 8ет„Г1д;
/* номер семафора в массиве *7
/* операция над семафором */
/* Флаги */
♦ 8ет_гшт
Номер семафора, над которым нужно выполнить операцию
♦ 8ега_ор
Выполняемая операция. Может быть отрицательным или положи-
тельным числом. Если число отрицательно, значение семафора будет
уменьшено, а если положительным — увеличено. Не забывайте, осво-
бождая ресурс, увеличивать значение семафора — за вас никто это
не сделает. Если 8еш_ор = 0, то процесс «заснет» и не «проснется»
до тех пор, пока значение семафора не станет 0.
♦ $ет_П§
Флаги операции, например, 1РС_ЖЖА1Т. Если 1РС_МО^АГГ не уста-
новлен, то процесс «заснет» до тех пор, пока не освободится указанное
количество ресурсов (пока другой процесс не освободит их).
Чтобы лучше понять, что такое хеторО, вернемся к нашим принтерам.
Пусть у нас есть всего один принтер, умеющий выполнять только одно
задание за раз. Начальное значение семафора принтера будет равно 1.
Перед посылкой задания на принтер нужно убедиться, что он свободен,
то есть получить от семафора значение 1. Заполним массив кетЬгй не-
обходимой для выполнения операции информацией:
Дгис1 ветЪпГ рт_1оск = { 0, -1, 1РС_т\\Л1Т };
Здесь 0 — это номер семафора: у нас всего один принтер, а нумерация
начинается с нуля. -1 — это операция, запрашивающая единицу ресурса.
Если принтер свободен, то после выполнения этой операции значение
семафора принтера будет равно 0.
Мы также установили флаг 1РС_АЮ\УАГГ, чтобы вызов прошел немед-
ленно. Если принтер занят, вызов вернет ошибку:
1Г (ветер(з±й, &ргп„1оск, 1) =- -1} ргтпЬГ("Принтер занятАп")
Первый аргумент — это идентификатор объекта 1РС, второй — это
массив операций. Последний аргумент 8етор() говорит о том, что у нас
есть только одна структура типа .четЬиГ, то есть нам нужно выполнить
только одну операцию.
После выполнения задания мы должны сообщить семафору об освобож-
дении ресурса:
еСгисС кетЪпЕ ргп„ип1оск. = { 0, 1. 1РС_ЫОИА1Т } ;
зетор (з!с1, &ргп_ип!аск, 1);
В случае успеха, когда выполнены все операции, системный вызов кешорО
возвращает 0. В случае ошибки возвращается -1, а еггпо равна:
♦ Е2ВЮ — количество операций (аргумент пворз) превышает разре-
шенное число операций;
♦ ЕАССЕ85 — не хватает полномочий;
♦ Е АО А1Х — операция не может быть выполнена (при использовании
флага 1РС_ХО\УАП). такую операцию нужно повторить снова;
♦ ЕЕАЦЬТ — указатель зорв указывает на ошибочный адрес;
♦ ЕГОК.М — множество помечено на удаление;
♦ ЕИЧТК. — прервано сигналом;
• ЕШУАЬ — неверный яепйй;
• ЕХОМЕМ — не хватает памяти для создания структуры Пайо-опе-
рации;
• ЕКЛХОЕ — значение семафора вышло за пределы допустимых зна-
чений.
26.6.3. Контроль семафора
Для контроля семафора используется системный вызов 8етс(1():
зетсГ.1 ( 1г± вепшЗ, 1пС зетпит, хпЬ стд, ип1оп велит агд );
Первый аргумент — это идентификатор семафора, второй — номер сема-
фора во множестве семафоров (нумерация начиняется с 0). В отличие от
очереди сообщений, где достаточно было указать только идентификатор
очереди, при работе с семафорами нужно обязательно указывать номер
конкретного семафора, над которым вы хотите выполнить операцию. Тре-
тий аргумент — это команда, которую нужно выполнить над семафором.
Возможные команды представлены в таблице 26.1.
Команды управления семафорами Таблица 26.1
Команда Назначение
1РС__5ТАТ Запоминает структуру нет1Й_с|в Для множества по адресу Ьи( объединения аетип {чуть позже мы подробно рассмотрим ату структуру и объединение зетип)
1РС.ЗЕТ Устанавливает значение члена фс_регт структуры вет)б„Рв
1РСЯМЮ Удаляет множество
СЕТАП Позволяет получить значения всех семафоров. Значения возвращаются в виде массива ипз(дпеб збоп, на который указывает член объединения зггау
СЕТНСМТ Возвращает число процессов, которые ожидают ресурсы в данный момент
6ЕТР10 Возвращает РЮ процесса, выполнившего последний вызов 5етор{)
ОЕТУАГ Возвращает значение одного семафора
(ЗЕТ2СМТ Возвращает число процессов, которые ожидают полного освобождения ресурса
ЗЕТАГ1 Устанавливает значение семафоров* Значения берутся из члена аггау объединения звтпоп
ЗЁТУА!. Устанавливает значение конкретного семафора. Значение берется из элемента уа| объединения зетип
Последний аргумент — это объединение (ишоп) аргументов, которые
можно использовать для управления семафором. Рассмотрим подробнее
это объединение, объявленное в файле /изг/вгс/11пих/1пс1ийе/
Ипих/вет. Ь:
ип!оп ветип (
1пС Vа1; /* значение для 5ЕТ7АЬ */
зСгисС зешДдЗз *Ьи1=.; /* буфер для 1РСЦ5ТАТ и 1РС_ЗЕТ */
изИогб *аггау; /* массив для СЕТАЕЬ и ЗЕТАЬЬ */
вЬгисб зетгпЕо *___Ьи^; /* буфер для 1РС.ДМЕО */
уо!б *___рай;
};
Первый член этого объединения та1 используется для установки значения
одного семафора при использовании команды ХЕТУАЬ,
Член ЬиГ используется командами ГРС.Ч'ГЛ'Г и 1РС56-Т. Это копия вну-
тренней структуры данных семафора.
Указатель на массив аггау используется командами ОЕТАЫ. и 8ЕТАЕЕ
для получения или установки значений всех семафоров во множестве.
Последние два члена объединения специфичны только для Ыпих — в дру-
гих ЕМХ-системах вы их не найдете. Эти элементы использует ядро.
В случае успеха системный вызов 8етсН() возвращает натуральное число,
а в случае ошибки -1. Переменная еггпо равна;
• ЕАССЕ88 — не хватает полномочий;
• ЕРА1Л.Т — адрес аг§ ошибочен;
♦ Е1РКМ — множество помечено для удаления;
• ЕШУАЕ — неправильный аргумент $епцф
♦ ЕРЕЯМ — у вас нет прав для выполнения команды стд;
♦ ЕЯАЬКЗЕ — значение семафора вышло за пределы допустимых зна-
чений.
Пример получения значения семафора с номером 14 из множества зм1:
з.пЬ ча1;
уа1--8етсС1 |в14г К, СЕТУАЬ, 0) ;
Предположим, что нам нужно вывести состояние всех трех имеющиеся
принтеров:
1пЬ с, ча1;
^ог (с=0; х<3;
(
уа1=зетсС1 (&10, с,(ЗЕТУМ>., 0) ;
ргАпЫ; ("Принтер %Й\п",с,Vа1) ;
}
А вот код инициализации всех семафоров множества $етк1:
шпоп аетип орЬэ;
1ПТ с;
орбз.ча! = 1; /* первоначальное значение семафоров */
'от (с-0;с<5;с+ + ) кетсЫ(зегий, с,5ЕТУАБ,орСз) ;
Довольно часто возникают определенные сложности с установкой прав
доступа к множеству семафоров. Рассмотрим следующий код, позволя-
ющий установить права доступа к множеству яепйй. Права доступа за-
даются в виде строки, например, ,<0660».
чо1с1 яеп1„сИапде_йюйе (1М: зетАй, сЬаг *щойе)
{
1ПС гез,-
зЫисС зет!с1_Д8 еепйз;
ипАоп зенит орСз;
/* Нужно указать нашу локальную копию структуры */
орСэ.Ьи€ ~ ДёШвз;
АТ ( (тек = зетсЫ (зетМ, 0 , 1РС_ЗТАТ, орСв) > — -1)
ртАпЕ Г" ( "ЕГГО!"' ) ;
ех1С(1);
ргХпЫ("Старые права доступа %о\п*, орГ.8.Ъи{~>зетирегт.пкх1е>;.
/* Изменяем права доступа */
звсап.Е (тоде, "%Ъо", &орГн.Ьсг->8ет_реггп.то'Зе) ;
/* Обновляем внутреннюю структуру */
ветсСКвМ, О, 1РС_5ЕТ, орЬн) ;
26.7. Разделяемые сегменты памяти
Сегменты памяти разделяются между несколькими процессами. Один про-
цесс создает сегмент памяти, а другие в любом количестве—используют.
Разделяемые сегменты памяти — это самый быстрый способ 1РС.
.Ня каждого разделяемого сегмента памяти ядро поддерживает специ-
альную структуру —хйпнйск. описанную в файле /ивг/вге/Ипих/
1пс1иае/Ипих/эЬт.И:
вСгисЬ вИтйрЗз {
вЬгисС 1рс_регт ёИт~Р®тгп; /* права доступа */
1пС яИт„недБ2:; /* размеры, сегмента в байтах */
С1тпе„с 5Ьт_аМте; /* время последней привязки */
Д1те„Е; вИт„бс1те; /* время последней отвязки */
Д1те_с зЪттсГ.1те; /* время последнего изменения */
ипз1дпеЙ зИогС 81тн1„ср1с1; /* Р1С создателя */
/* РЮ последнего процесса-пользователя сегмента */
ипвХдпей зНогС. аИт_1р1<1;
зИогС зпи1„паРСсЬ; /* число привязок */
ипз1дпеа вбогб нкт„прадев;
/* размеры сегмента (в страницах} */
/* массив указателей на З^гатеа -> 3$*/
ипБтдпей 1опд *вИт_радей;
вбгисс У1и_агеа_яСгц.сС *аЫасйе5;
/* дескрипторы для привязок */
) ;
Я немного сократил эту структуру, оставив описание только нужных нам
полей. Полагаю, что вы в нем разберетесь. Возможно, вас заинтересовали
термины «привязка» и «отвязка». Привязка — это размещение сегмента в
адресном пространстве процесса, подключение к разделяемому сегменту
памяти (РСП). Отвязка, соответственно, — отключение. Поле вЬт^паНсЬ
содержит количество привязок к РСП на данный момент.
Для создания нового РСП используется системный вызов вЬтееЦ). Этот
же вызов используется для подключения к уже существующему РСП,
з.пЬ зИшдеС I кеу_С кеу, 1пС в12е, 1пС );
Первый аргумент — это ключ 1РС, подученный с помощью Йок(), второй —
размер РСП в байтах, а третий — флаги системного вызова Если
установлен флаг 1РССКЕАГ. системный вызов создаст новый РСП или
подключится к уже существующему сегменту, если обнаружится, что
уже есть такой сегмент (с таким же значением ключа). Если установлен
флаг 1РСЕХСЕ вместе с 1РССКЕАТ (сам по себе он бесполезен) под-
ключение к существующему РСП запрещается.
Системный вызов возвращает идентификатор РСП или -1, если
произошла ошибка. Переменная еггпо устанавливается так:
♦ ЕАССЕ38 — не хватает полномочий для доступа к сегменту;
♦ ЕПЧУАЬ — неправильно заданы размеры сегмента;
♦ ЕЕХ15Т8 — сегмент уже существует, создание невозможно. Вы по-
лучите эту ошибку, если будете использовать флаг 1РС ЕХС1. вместе
с 1РС_СКЕАТ при условии, что сегмент уже существует;
• ЮКМ — сегмент помечен на удаление или уже удален;
♦ ЕХОМЕМ — не хватает памяти для создания сегмента.
Приведем пример функции открытия/создания РСП:
1П!: ореп_зЕпз( кеу_1 кеу, 1пС к!ге )
(
геЬигп (зЪтдес( кеу, з!ге, 1РС_СКЕАТ | 0660 )) ~= -1));
')
После получения идентификатора РСП мы должны «привязаться» к
этому сегменту, то есть разместить сегмент в своем адресном простран-
стве. Для этого используется системный вызов $ЬтаЦ) (.чИагес! тетогу
аиасКтет):
зпс иЬтаГ. ( тпъ зЬтЫ, сЬаг *зктаайг, 1пС зНш^Хд ) ;
Первый аргумент — это идентификатор РСП, который мы получаем с помо-
щью предыдущего вызова. Второй аргумент — это адрес привязки. Если ука-
зать вместо адреса ноль, то ядро само найдет нераспределенную область.
Третий аргумент — это флаги. Обычно используется два флага:
♦ 5И1М КХО — переданный адрес будет округлен до ближайшей стра-
ницы (если вы сами указываете адрес);
♦ 8НМ КПОХЕУ — РСП будет доступен только для чтения.
В случае успеха «ЬпЫ() возвращает адрес, по которому сегмент был
привязан к процессу, или -1, если произошла ошибка. Переменная еггпо
может принимать всего три значения:
• ЕАССЕ.Ч.Ч — нет доступа;
♦ ЕМОМЕМ — не хватает памяти;
♦ ЕПЧУАЕ — ошибка в параметрах, то есть неправильное значение ПЭ
или адреса привязки (кЬтасЗНг).
Пример привязки:
сНаг *Р1Г;
ргС = вЪтаС (бИ_1<1,0,0) ;
После привязки сегмента к адресному пространству доступны операции
чтения и записи, которые очень напоминают работу с простыми указа-
телями.
Для снятия привязки используется системный вызов 811пиЙ():
итЬ еЪтдС ( сйаг *еЬгпасЗаг ) ;
В случае ошибки данный системный вызов возвращает -1. Значение еггпо
только одно: ЕШУАЕ, то есть вы неправильно указали адрес привязки.
После отвязки значение элемента 8Йщ_паПсЬ структуры зЬппд_€Ьумень-
шается на 1. Если больше нет привязок, то есть аЪгп_паПсЬ = 0, сегмент
будет удален ядром.
Для управления РСП используется системный вызов 8Йтс[1(’):
зИтсЫ ( тпХ зИтзй, тпС ст<3, зТгисС зЪтгсЕДь *Ьи^ ) ;
Первый аргумент — это идентификатор РСП, второй — команда, а третий —
буфер для команд 1РС8ТАТ71РС8ЕТ. Команд для управления три:
♦ 1РС 8ТАТ — сохраняет структуру НшшНЕ по адресу ЬиГ;
• 1РС 8ЕТ — берет значение элемента 1рс_регт структуры зйпйбПз и
устанавливает его для сегмента. Значение берется из Ьи(;
♦ 1РСКМПЭ — помечает сегмент для удаления, само удаление про-
изойдет, как только последний процесс отвяжется от сегмента. Если
сегмент помечен на удаление, ни один процесс не сможет привязаться
к сегменту.
В случае успеха системный вызов зйтсНО возвращает 0 или -1,если про-
изошла ошибка. Переменная еггпо устанавливается так:
♦ ЕАССЕ88 — нет прав;
• ЕГАСЕТ — ошибочный адрес ЬиР
* ЕПЭКМ — сегмент помечен на удаление;
♦ Е1МУАЕ — неправильный идентификатор сегмента.
Вот теперь мы готовы к написанию демонстрационной программы для
работы с разделяемыми сегментами памяти.
Листинг 26.6. Демонстрационная программа вНт__8ето.с
#1пс1ийе <вб<31б.Ъ>
#1пс1ис1е сзуз/Гурез. л>
#1пс1ийе <8ув/1рс.И>
Й1пс1пае <зув/нИт.И>
/* размер нашего сегмента - 256 байтов */
МеНпе 81?,Е 256
1пС. таттИДпг агдс, сИаг *агду[])
{
кеу_г кеу? /* ключ */
1 .ПГ зИт1б, с; /* идентификатор */
сИаг *рбг; /* указатель, через который мы будем
работать с сегментом' */
/* Если аргументы не указаны - */
1Г (агдс == 1)
{
рг ("яЬш_Лето иеадегХп*);
рггпбГ("зИпуДето -и еСгГпд записать строку в сегмент\п");
рг 1 п с б ( " зЫидешо -г прочитать инф. из сегментаХп");
ргьпбг ("яЬп1_4ето -<Я удалить сегментХп");
рг1пбб("зйт„дето -ш пк?йе изменить права доступах
ех1е ил;
}
/* Генерируем ключ 1РС */
кеу = *еок(*.", *Р'У;
/* Пытаемся'создать сегмент*/
1Шз1тт.а = зйтдеМкеу, 812Е, 1РС„СЙЕАТиРС„ЕХСЫ 0660)) == -1)
(
рг 1пс Г ("Сегмент существует, подключаемся к нему..Дп*);
/* Используем йИтдеб без 1РС_ЕХСЪ */
ИНвИтМ = зЬтдеЫкеу, 512Е, ОМ == -1)
{
рг1пЫ: ("Ошибка в зНтдеМп");
ех1С(1);
}
}
е1зе
{
рг1.пЫ ("Создаем новый сегмент\п") ;
}
/* Привязываемся к сегменту */
ИНрЬг = вЪтаГ(зИийа, 0, 0)) == -1)
{
реггог("яИтаб“);
ех!Ь(1)?
}
/* Разбираем параметры командной строки:
тя — запись в сегмент
г - чтение
а — удаление сегмента
ш - изменение прав доступа
*/
зи1ХсЬ(Го1оадег!агд^[1][1})|
{
сазе 'и'; Бкап_иг1Ье(вЪтпай, ргг, а^дV[2});
Ьтеак;
сазе *г' : зКт_геаЙ(вЪтМ, рСг) ;
Ьгеак;
Саве 'с|' : 8кт_гт(аИта.6.) ;
Ьгеак;
сазе 'т' : зЬт_скапде_пюде (зЫпМ,.. агду [2] };
Ьгеак;
}
}
/* Функция для записи в сегмент: ей нужно передать 1.Р
сегмента, адрес привязки и записываемую информацию
Б[ш1_мг1бе(1пб зЬт1<а, сЬаг *рЕг, сЪаг *1пЕо;
{
Зегеру(рбг, 1пЕо);
)
/* Функция чтения информации из сегмента */
зИпигеад(1пЬ зИтМ, сйаг *рбг)
{
рГ1№;Е ("Информация из сегмента: %в\п" , рсг) ;
}
/* Функция удаления сегмента */
зИт„гт(1пЬ еИтй)
{
зИтсЬКэЬтЫ, 1РС„КМ1П, 0);
ргхгЛП "Сегмент помечен на удаление\пв);
}
/* Функция изменения прав доступа. Ей нужно передать
идентификатор сегмента и права доступа в виде строки,
например, "0666" */
е1тп_сЬ.апде_1тюд.е (1пЬ яИгаМ, еЪаг *гпоРе)
{
вЬгпсС еЬт1а_йв тс!ь;
ягшсЫ (еЫп1д, ТРС_.5ТАТ, &шйз) ;
рНпГН "Старые права доступа: %е\п", тЙ8..вЬщ_регт.тоде);
кзсап! (тойе, “%о", Ыпйя.зЪщдрегт.тойе) ;
зИтсСКзИтМ, 1РС_ЗЕТ, &тйз) ;
рг!пЫ ( "Новые права доступа: %о\п", гайз.8Ьш_регп1.то<1е) ;
}
Использовать программу нужно так:
./зЬш вето строка
запись строки в сегмент
Л11П1_с1епю ~г
чтение строки из сегмента
А11т _с1еп1о -т права
изменение прав доступа
./зВт_дето -й
удаление сегмента
Выполните команду
$ ./вИт^йепо -и вИг1пд
А затем запустите утилиту фсх. Вы увидите, что наша программа создала
разделяемый сегмент памяти:
------ЗИагей Метогу ЗедтепЬз ------------
кеу смпег реппз Ь/Ъез паЬЬсЪ йГаТня
0x44063781 0 гооГ 660 256 0
------Зетаркоге Аггауз-------—-
кау зетад овдпег регтз дзета зЬаСиз
------ Мее&сфе фиеиез ----------
кеу тнд1д оипег реипз ивед-Ьусез тезвадез
Затем выполните команду:
5 . / зЬт_йето ~ г
Вы получите информацию:
Информация из сегмента: нСг1ид
Попробуем изменить права доступа, а затем просмотреть информацию
командой фсх:
$./вЬт„йето -т 0666
дкагеа Метогу ЗедтеиЬн
кеу аЬтй омпёг репгв ЬуЬез пакЬ.сИ зГаЙлз
0x44063781 0 гооЬ ббб 256 0
------ ЗетпарЬоге Аггауз -
кеу---зегохд оипег
------ Меззаде Оиенез -----
кеу тзд!д оипег
регтз инете вЬакие
регтз изед-Ьукез теззадез
Глава 27
СОЗДАНИЕ
СЕТЕВОГО
ПРИЛОЖЕНИЯ
в иицх
Ф---ПРОТОКОЛ ТСР/1Р
Ф--ПРОТОКОЛ 1СМР
---ПРОГРАММИРОВАНИЕ СОКЕТОВ
иыих ПОЛНОЕ РУКОВОДСТВО
В главе 6 я ввел основные сетевые понятия, перечислил самые популярные
протоколы и вкратце рассказал об основе сети Интернет — протоколе
ТСРДР. В этой главе я собираюсь подробнее остановиться на протоколах
ТСРДР и 1СМР и показать, какие средства вы можете использовать для
написания собственных приложений для работы в сети.
27.1. Протокол ТСР/1Р
27.1.1. Многоуровневая архитектура стеке ТСРДР
Протокол ТСРДР был создан в конце 60-х — начале 70-х годов агентством
□АКРА Министерства Обороны США (С.8. □ераптсгп оГ ПеГепке Аб-
уапсеб КеаеагсЬ Рго^ес18 Агенсу), Основные этапы развития этого про-
токола отмечены в таблице 27.1.
Этапы развития протокола ТСР/1Р Таблица 27.1
Год Событие
1970 г. Введен в использование протокол МСР (Мешюгк Соп!го! РгоТосо!} для узлов сети Аграпе!
1972 г. Вышла первая спецификация Те!пе1 (см. ЯРС 318}
1973 г Введен протокол ПТ (ЯРС 454)
1974 г. Разработана программа ТСР (Ттапзт&зюп Соп1го1 Ргодгат)
1981 г. Опубликован стандарт протокола 1Р (ЯРС 791)
1982 г. Объединение протоколов ТСР и !Р в одно целое — ТСР/1Р
1983 г. Сеть Агране! переведена на протокол ТСР (ранее использовался протокол ЫСР)
1984 г. Введена доменная система имен О№
Как видите, все стандарты интернет-протоколов опубликованы в доку-
ментах КЕС. Документы КЕС (КедиеМ /от Сотшепи) — это документы,
в которых описывается устройство сети Интернет. Они создаются со-
обществом Интернет (Ыегпег 8ос!с1у. 18ОС). Любой член 18ОС может
опубликовать свой стандарт в документе КЕС. Документы КЕС делятся
на пять типов:
1, Требуется (Кедшгеб) — данный стандарт должен быть реализован
на всех основных узлах ТСР1Р.
2. Рекомендуется (Кесоттепбеб) — обычно такие спецификации КЕС
также реализуются,
3. Выборочно (Е1есйуе) — реализация не обязательна.
4, Ограниченное использование (Ытйеб пхе) — не рекомендуется для
всеобщего применения.
5. Не рекомендуется (1Чо1 гесоттеибеб) — не рекомендуются.
Протоколы семейства ТСР/1Р можно представить в виде модели, со-
стоящей из четырех уровней: прикладного, основного, межсетевого и
сетевого (таблица 27.2).
Уровни стека протоколов ТСР/1Р Таблица 27.2
Уровень 1 Прикладной уровень (уровень приложение, АррИсайоп Ьауег)
Уровень 2 Основной (транспортный) уровень (ТгапероД Ьаует)
Уровень 3 Межсетевой уровень (уровень !п(егпе1,1п(ете1 Гауег)
Уровень 4 Уровень сетевых интерфейсов (МеМогк (пТеНасе Сауег)
Каждый из этих уровней выполняет определенную задачу для организа-
ции надежной и производительной работы сети.
27.1.1.1. Уровень сетевого интерфейса
Этот уровень лежит в основании всей модели протоколов семейства ТСР/
1Р. Уровень сетевого интерфейса отвечает за отправку в сеть и прием из
сети кадров, которые содержат информацию. Кадр ((тате) — это единица
данных, которыми обмениваются компьютеры в сети Е1Ьегве1. Для обо-
значения блоков данных определенных уровней используются термины
кадр ((тате), пакет (раске1), дейтаграмма (ба(а§гат), сегмент (ке^тепТ).
Все эти термины обозначают транспортируемые отдельно блоки данных,
и их можно считать синонимами. Название блока пересылаемых данных
изменяется в зависимости от уровня (рис. 27.1).
27.1.1.2. Межсетевой уровень
Протоколы Интернет инкапсулируют блоки данных в пакеты (дейта-
граммы) и обеспечивают необходимую маршрутизацию. К основным
интернет-протоколам относятся:
♦ 1Р (1п1ете? Ртюсо1) — предназначен для отправки и маршрутизации
пакетов.
* АКР (Аддгезз КемЯийоп Рго1осо1) — используется для получения МАС-
адресов (аппаратных адресов) сетевых адаптеров.
* 1СМР (Ьнете! Соп1го! Мехиасе РнАосоГ) — предназначен для отправки
извещений и сообщений об ошибках при передаче пакегов.
Рис. 27.1, Пересылка блока данных в стеке протоколов ТСР/1Р
• ЮМР (1н1егне1 Стоир Мапа^ешеш РюЮсоГ) — используется узлами
для сообщения маршрутизаторам, которые поддерживают групповую
передачу, о своем участии в группах.
* ШР (Реппе 1п1егпе! Рго1осо1) и О8РР (Ореп ЯНопсх/ Ратк Риз?) — про-
токолы маршрутизации.
На этом уровне реализуется передача пакетов без установки соедине-
ния — дейтаграммным способом. Межсетевой уровень обеспечивает
перемещение пакетов по сети с использованием наиболее рациональ-
ного маршрута (протокол О8РЕ). Основная функция межсетевого
уровня — передача пакетов через составную сеть, поэтому этот
уровень также называется уровнем Интернет.
27.1.1.3. Транспортный (основной) уровень
Этот уровень обеспечивает сеансы связи между компьютерами. Существу-
ет два Транспортных протокола: ТСР (Тгапзтжюп Сошго! Ршосо!) и СЭР
(Слег Г)а1а%гатп Рго!осо1). Протокол ТСР ориентирован на установление
соединения, то есть перед передачей данных компьютеры «договарива-
ются» между собой, Обычно по этому протоколу передаются большие
объемы данных или данные, для которых требуется подтверждение их
приема. Этот протокол используется большинством сетевых приложений,
так как обеспечивает достаточную надежность при передаче данных.
Протокол ПСР не ориентирован на соединение и не гарантирует доставку
пакетов (дейтаграмм), зато он работает быстрее ТСР. Обычно по этому
протоколу передаются небольшие объемы данных. Ответственность за
доставку данных несет сетевая программа.
27.1 Л .4. Уровень приложений
Этот уровень является вершиной модели ТСРДР. На этом уровне рабо-
тают практически все распространенные утилиты и службы: Те1пе1,
иЛ\'\У. ОорЬет, 8ИМР, РТР, ТЕТР. 8МТР, РОР, ШАР.
Таблица 27.3 показывает соответствие уровней стека протокола ТСРДР
семиуровневой модели 081.
Соответствие уровней стеке ТСР/1Р модели 081 Таблица 27.3
Уровень модели 051 Протокол Уровень отека ТСРДР
7.6 УйМЧ (НТТР), РТР, ТГГР. 5МТР! РОР, 1е1пе1, ЧУА18, 8ИМР 1
6.4 ТСР, НОР 2
3 (СМВ ЯЕ ОЗР^ АНР 3
2.1 ЕЙ»ете(,:рёР;ШР 4
27.1.2. Структура пакетов 1Р и ТСР
Протокол 1Р не ориентирован на соединение, поэтому не обеспечивает
надежную доставку данных. Поля. бписаиие которых приведено в таблице
27.4, представляют собой 1Р-заголовок и добавляются к пакету при его
получении с транспортного уровня.
Структура заголовка 1Р-пжета Таблица 27.4
Поле Описание
5сшсе (Р-аСОгевк 1Р-адрев отправителе пакета
0еа!1П5И|Оп )Р-а<Йге$а 1Р-адрес получателя пакета
РгоСоссй Протокол; ТСР или ДОР
Контрольная сумма для проверки целостности пакета
ТТТ (Тлпв 10 и») Время жизни пакета; определяет, сколько секунд дейтаграмма может находиться в сети. Предотвращает бесконечное блуждание пакетов В сети. Значение ТТЬ автоматически уменьшается на одну или более секунд при проходе через каждый маршрутизатор сети
Версия протокола 1Р — 4 или 6 (4 бита)
Неабяг СвпДОН Длина заголовка пакета {4 бита) Минимальный размер заголовка — 20 байтов
Продолжйж» табл. 27.-1
Поло Описание
Ту|>ао1 ЗВгтизе () Тип обслуживания; обозначение требуемого для этого пакета качества обслуживания при достаю® через маршрутиаагары (Р-оети. Здесь определяются приоритет, задержки, пропускная способность (б битов)
То)а11_епдШ Длина дейтаграммы ^-протокола (16 битов)
МепйЯсаКоп Идентификатор пакета. Если пакет фрагментирован (разбит на части), то все фрагменты имеют одинаковый идентификатор (16 битое)
ГгадтагНаПоп Надо 3 бита для флагов фрагментации и 2 бита для текущего использования
Ргадтеп(аЬол ОГСзеЕ Смещение фрагмента; указывает на положение фрагментов относитель- но начала поля данных (Р-пакета. Если фрагментации нет, смещение равно 0x0 (13 битов)
Ориона ала РайФпд Опции
Протокол ТСР в отличие от протокола ГР ориентирован на установление
соединения и обеспечивает надежную доставку данных. Структура ТСР
пакета описана в таблице 27.5.
Структура заголовка ТСР-пакета
Таблица 27.5
Поле Описание
Зоигсе реи Порт ТСР уз ла-отправителя
ОезИпабоп Рот1 Порт ТСР узла-получателя
Зециепсе ИитпЬег Номер последовательности пакетов
Аскп<ж1ебдетеп1 МитЬег Номер подтверждав^ порядковый номер 6зйтз( который локальный уаел рассчитывает получить следующим
Паи 1.епд1Ь Длина ТСР-пакета
ЯезегуеЦ Зарезервировано для будущего использования
Наде Флаги; описание содержимого сегмента
У7> гнТон! Показывает доступное место в окне протокола ТСР
С11ескзшт| Контрольная сумма для проверки целостности пакета
Отд епт Ро)тцег () Указатель срочности; при отправке срочных данных (поле Падз) е этом поле задается граница области срочных данных
27.2. Протокол 1СМР
27.2.1. Для чего используется протокол 1СМР
Протокол межсетевых управляющих сообщений используется для диа-
гностических целей. Например, система А передала системе Б неверный
пакет. Система Б с помощью протокола 1СМР может «сказать» системе
А, что посланный ею пакет некорректен. Также по этому протоколу
производится диагностика сети. Многие из вас использую! утилиту рт$,
чтобы определить, доходят ли отправленные вами пакеты до какой-то
определенной машины, даже не подозревая о том, что р1п$ использует
как раз протокол 1СМР.
С помощью протокола 1СМР можно определить не только тип неисправ-
ности, но и максимально уточнить ее причину. Например, тип сообще-
ния 3 («Адресат недостижим») свидетельствует о том, что посланный
нам пакет не может «добраться» до адресата. Кроме типа сообщения,
возвращается его код, позволяющий детализировать неисправность.
Например, код 0 означает, что сеть недоступна, 1 — узел недоступен, 2
— протокол недоступен и т,д, В таблице 27,8 ниже перечислены типы и
коды сообщений 1СМР.
Обязательно ли посылать сообщение об ошибке, получив некорректный
пакет? Нет, из главы 19 вы узнали, что такие пакеты (например, отправ-
ленные на запрещенный для доступа извне порт) можно просто игно-
рировать. Первый подход «вежливее», второй безопаснее. Представьте,
что злоумышленник отправляет с 1000 машин 1000 пакетов с указанием
неверного порта на вашу систему. Тогда ваша система только тем и будет
заниматься, что отправлять сообщения об ошибках. Это называется ата-
кой на отказ. Конечно, современные брандмауэры позволяют избавиться
от этого неприятного явления, но не у всех они установлены и настроены
должным образом.
27.2.2. Структура 1СМР-пакета
Для лучшей диагностики ошибки вместе с 1СМР-пакетом передается
заголовок исходного пакета, вызвавшего ошибку. Также передается спе-
циальный указатель на позицию заголовка, позволяющий определить,
что именно вызвало ошибку. В случае с неправильным номером порта
указатель будет установлен на поле, содержащее номер порта. Благодаря
этому система-источник может вычислить процесс и сокет, вызвавшие
ошибку.
Структуры различных 1СМР-пакетов отличаются друг от друга в зависи-
мости от типа пакета. Например, пакет, сообщающий о недоступности
адресата (Пезбпабоп СпгеасЬаЫе Мекка^е), выглядит так:
Сообщение ОевИпаИол УпжасбаЫе Мезааде
Таблица 27.6
Тип | код | Контрольная сумма
Не используется
Интернет-заголовок плюс первые 64 бита оригинального сообщении (пакета)
Что такое тип и код, вы уже знаете, с контрольной суммой тоже все ясно.
А последнее поле необходимо, поскольку оно поможет идентифицировать
процесс, вызвавший ошибку.
Точно такую же структуру имеют сообщение об истечении лимита вре-
мени (Тгте Ехсеейеб Мевза^е) и сообщение об обрыве источника Зоигсе
ОиепсЬ Месяце (тип 4).
А вот сообщение о неверном параметре (например, указан неверный
номер порта) выглядит уже по-другому (таблица 27.7).
Сообщение Рагате(ег РюЫет Мезваде
Таблица 27.7
Тип Код | Контрольная сумма
Указатель Не используется
Интернет-заголовок плюс первые 64 бита оригинального сообщений (пакета)
Поле Указатель в сообщении о неверном параметре (РагатеГег РгоЫет
Мезха^е) указывает на то место в заголовке, которое вызвало ошибку.
Сообщение о переадресации (КесПгесГ Мезза^е) имеет следующую струк-
туру:
Сообщение Яайгесг Меаааде
Таблица 27Я
Тип | Код | Контрольная сумма
Адрес шлюза
Интернет-заголовок плюс первые 64 бита оригинального сообщений (пакета)
Чтобы понять, что такое сообщение о переадресации, рассмотрим сле-
дующий пример. Система Б определяет, что посланный системой А
пакет некорректен. Системе Б нужно отправить системе А сообщение
об ошибке. Система Б определяет, что единственным маршрутом назад
для данного пакета является маршрут через систему А. Тогда система Б
посылает системе А два пакета: первый с сообщением о некорректном
пакете, а второе — сообщение переадресации, докладывающее, что у
системы А проблемы с таблицей маршрутизации, которая, возможно,
содержит ошибку.
Сообщения типа эхо-запрос (рш& тип 8) и эхо-ответ (роп§, тип 0) имеют
следующую структуру:
Сообщения ЕсЛо или ЕсТю Яер!у Мевзаде
Таблица 27.9
Тип 1 Код Контрольная сумма
Идентификатор П оследовательность
Данные
Поля Идентификатор и Последовательность могут использоваться ис-
точником эха для передачи вспомогательной информации. Например,
идентификатор может использоваться как порт при использовании про-
токолов ТСР/1ЮР для идентификации службы, а иомер последователь-
ности может увеличивается на единицу при отправке каждого запроса
(то есть выступать в роли счетчика).
27,2.3. Тип и код 1СМР-сообщения
В следующей таблице перечислены все типы 1СМР-сообщений Об их
структуре вы можете прочитать в документе НРС 792. Типы 17 и 18
описаны в документе НРС 950.
Тилы ГСМР-сообщений Таблица Й7.3
Тип Код Название сообщения Описание
0 ЕсМ Вар|у Мевваде Зхо»ответ
0 Кодвсегда равен о
3 ОезйпаНоп 11пгеасНаЫв Мезеаде Адресат недоступен
0 Сеть недоступна
1 Узел недоступен — что-то случилось с компьютером ваэможйо, он просто выключен
2 Протокол недоступен — запрашиваемый протокол ня поддерживается
Э Порт недоступен — на машине ни одна служба не Свяэана с указанным номером порта
4 Длина пакета слишком велика, а в его заголовке установлен флаг ОР (ОопТ ЕгадтепП, то есть не фрагментировать. Для передачи большого пакета его нужно фрагментировать (разбить на части}, а так как установлен флаг Ьг, фрагментация, а следовательно, и передача пакета невозможна
5 Ошибочный маршрут источника
4 Зошсв ОиепсЬ Меззадв Обрыв источника
0 Код всегда равен 0
5 йесИгас: Мевааде Переадресация
0 Переадресаций пакетов для сети
1 Переадресация пакетов для узла
2 Переадресация пакетов для сети и типа обслуживания (ТОВ, Туре СИ Йетсе}
3 Переадресация пакетов для узла и типа обслуживания (ТО8, Туре ОТ йетхгсе)
8 ЕсНо Ме&ваде Эхо-запрос
0 Код всегда равен 0
11 Пте Ехсввйей Мевзадв Превышен лимит времени
0 При передаче превышено .время жизни» (ТП.. "Игле То Цуе)
тип Кед Название сообщения Описание
1 5 Превышено время реассембпирований (сборки) фрагментов
13 Рагапдаег РгоЫегп Мезааде Ошибочный параметр
а Указатель на ошибочный параметр (табл,27,7)
13 Т1тей1атр Мезкадв Запрос временной метки
0 Код всегда равен 0
ы .•.Лп*йМ«пр Яер(у Меззаде Ответ е временной метке
Код всегдарааенО
15 (пГогтагюп Аедиез( Информационный запрос (запрашивается номер нашей сети)
0 Код всегда равен С
16 1пГоппа1юп Яар(у Меззаде Информационный ответ (возвращается номер нашей сети)
0 Код всегда равен 0
Т7 Г) 1пЬгтпа11оп Пециез! Информационный запрос (запрашивается маска адреса)
0 Код всегда равен 0
18 С) 1гНотабоп Нар1уМедааде Информационный ответ (возвращается маска адреса)
0 Код всегда равен 0
27.2.4» Функции для работы с протоколом 1СМР
Для работы с протоколом 1С.МР существует 12 основных функций. Все
эти функции описаны в файле /инт/агс/1 тпих/пеЬ/ ^рV4/^сIпр. с. У
вас нет этого файла? Тогда установите исходники ядра (странно, почему
вы до сих пор этого не сделали).
♦ 1стр_аййге85() — отправка ответа на запрос о маске адреса;
♦ 1сгпр_(Й$сагс1() — удаляет 1СМР-пакет;
♦ 1стр_ес1ю() — эхо-запрос;
• 1стр_1ш1() — инициализирует служебные подпрограммы протокола
1СМР в операционной системе;
♦ 1стр_ои1_сошП() — увеличивает счетчик отправленных пакетов;
♦ 1етр_гсу() — прием 1СМР-пакета;
♦ 1стр_ге<1(гес10 — отправка сообщения переадресации;
♦ 1стр_8еп<1() — отправка 1СМР-сообщения;
♦ 1стр_Шпе.<йатрО — ответ на запрос о времени создания;
• 1стр_ипгеас1ц) — отравляет сообщение об ошибке;
♦ хгНт_аН<иу() — решает, отправлять ли 1СМР-пакет или нет;
♦ хгКгпДпНО ~~ ограничение скорости передачи 1СМР-пакетов (в вер-
сии ядра 2.0).
27.2.4.1. Технические подробности
Прежде чем перейти к рассмотрению функций 1СМР, разберемся, как же
1СМР-пакеты принимаются операционной системой. Собственно, 1СМР-
пакет принимается операционной системой Опих так же, как и любой
другой пакет. Драйвер сетевой платы (или другого сетевого устройства)
собирает полный пакет данных, затем он строит структуру 8к_Ьи1Т.
Листинг 27.1, Структура
вЬгисЬ вк_ЬиЕ^ {
/* Эти два члена должны быть первыми */
зСгисЬ зк_ЬиН* пехб;/* Следующий буфер в списке*/
зк„ЬиЕ{ *‘ргеу;/* Предыдущий буфер в списке*/
31ГИСТ зк_ЬнН_Ъеаб * Неб; /* "Голова" списка */
збгисе воск *зк; /* Сокет */
зСгиск Ыпюта! зДашр; /* Время прибытия пакета */
зсгпся пеЬ_Дет!се Мем,- /* Сетевое устройство *7
/* Заголовок транспортного уровня */
оп!оп
{
я С гисб Г срМг * СЪ;
вЯгисС идрМг *иЪ;
зЬ.гисС тсшрЬйг *1сщрИ;
зЬгцсЬ хдтпрЫг *1дтрЬ;
зЬгисГ 1.рЫг *1р1рЪ;
эСгисб зрхМг *зрхИ;
ипзГдпесЗ скат *гаи;
] Н;
/* Заголовок сетевого уровня */
игйоп
вСгисС 1рЬДг *1рб;
ебгисЕ ^рV6Ь<1^ *1рубЬ;
еСгисС атрЫг *агрб;
зЬгисС 1рхЬйг *1рхИ;
ипзгдпеб сбаг *гаи;
} пЬ;
ип1оп
{
вСгисЬ еЬЫздг *ескегпеЬ;
ипзХдпей скат *тан;
} шас;
яггцсг йяП„епСгу
сЬаг сЬ[48];
ипн1дпед 1пЬ 1еп; /* Длина данных */
ипвтдпеб хпЬ йаСа_1еп;
ип81дпе<1 1гЛ сайт; /* Контрольная сумма */
ипвЕдпей скат ипивед. /* Не используется */
с1опе<а, /* Заголовок должен клонироваться */
ркС^Еуре, /* Класс пакета */
1р„зитте<3; /* контрольная сумма 1Р */
и32 рг1ог1Ху; /* Приоритет пакета */
аРош1с_С цвета; /* Счетчик пользователей ~ см. йакадтапи
с, Сер. с */
цпвхдпей вНогб ргобосо!; /* Протокол пакета */
ипз1дпе<3 вЪогР весит 1Су,- /* Уровень безопасности */
ипзГдпеЙ 1пб Егиевтге; /* Размер буфера */
ипвтдпед сЬат *Ьеас1; /* Заголовок буфера */
ипз1дпед. сЬат *баСа; /* Указатель заголовка данных *Г
ипзХдпе^ сЬат *ба,11; /* Указатель "хвоста" */
ипз1дпе4 сЬат *епд; /* Конечный указатель */
чотб (*сЗевТгисЬот) (вЫисЬ зк_ЬиИ *);
ШДе[ С0КГ1С_ЫЕТГ1ЬТЕВ
ипрхдпеб. 1опд п^тагк;
/* СасЪе 1п€о */
_и32 пЕсасЬе;
/* Ассоциированное соединений */
в&гисС пЕ_сЬ_1пЕо *П^СГ;
#1МеЕ СОМР1С_КЕТЕ1ЪТЕН_ОЕВте
ипв1дпес1 хпС п^_беЬид;
#епб1^
#<эпЛ ? / *СОМК1С__ЫЕТР1ЬТЕЙ* /
НЕ аеЕ1пе.а(СОЫЕ1С_Н1РР1)
ип1оп{
__ц32 1.Е1е1<3;
} ргхиабе;
#епб1Е
ММ&Е СО№13_КЕТ_ЗСНЕЭ
ц32 г.с_1пйех; /* Индекс контроля
трафика * /
йегиП Е
};
Данная структура описана в файле /ивг/8гс/Ипих/1пс1и<1е/11пих/
экЬиЕг .п. После формирования структуры ак„ЬиО она передается
драйвером функции пейГ гх.
1пс пеС1Е„тгх (вСгисС зк„ЬиЕС *вкЪ);
Функция пеНГ_гх() описана в файде /изг/егс/Ипих/пее/согеМеу.с.
Она получает пакет от драйвера (сетевого устройства и ставит его в оче-
редь (очередь называется ЬасМо^) протокола высшего уровня. Функция
возвращает следующие значения:
♦ ХЕТД<Х8П(7СЕ88 — пакет удачно поставлен в очередь;
♦ X 1:'ГНХ_СХ_ЕО\У — имеется небольшая «пробка» при постановке
пакета в очередь, но скоро она «рассосется»;
♦ ХЕТ_КХ_С \ _МО1) — «пробка» чуть больше — средней «длины»;
♦ ХЕТНХСХН16Н — очень большая «пробка»;
* ХЕТКХ1ЖОР — пакет был удален.
Если в очереди Ьаск1о§ находятся более 300 пакетов, новый пакет будет
удален без какого-либо предупреждения.
Драйвер сетевого устройства при формировании структуры зк_ЬиЕЕ уста-
навливает ее поле ргоеосо!. Функция пеНГ_гх(), как уже было сказано,
передает пакет «наверх», затем функция пе1_Ы1() использует значение
поля ргоЕосо!, установленное драйвером, для вызова соответствующей
протоколу программы и передает этой программе пакет. Для протокола
1СМР такой программой является функция ктпр_гсу(), описанная в файле
/ивг / зге/1 гпнх/пеС/ 1ру4/ 1сй1р .с.
1п1: 1стр_гсу (йСгисГ эк„ЬиЕЕ *вкЬ) ;
Функция 1стр_гсх выполняет следующие действия:
1. Увеличивает значение счетчика входящих пакетов
1СМР_ШС^8ТАТ8„ВН(1сшр1пМ8ё5).
2. Удаляет пакет, если его размер слишком мал.
3. Проверяет контрольную сумму: если она ошибочна, увеличивает
счетчик некорректных пакетов.
4. Проверяет тип 1СМР-пакета. Если тип пакета превышает максималь-
ное значение 18, то пакет удаляется. При этом увеличивается счетчик
некорректных пакетов.
5. Вызывает функцию-обработчик ТСМР-сообщения в зависимости от
значения типа сообщения.
Соответствие номеров шпа служебным функциям (описаны В файле/стр.с) Таблица 27.9
Тип Функция Описание
0. 1. 2, 6, 7. 9. ТО. 12, 14-16, 18 уой <стр_й!зсаТО (Ягас! 5к_ЬиП чкЬ) Удаляет пакет
3.4,11 У01Й (стр _ипгеасб (йгис! зк„ЬиЯ *зкЬ) Данная функция определяет максимальный размер модуля передачи (МТС, Мах(гпит ТгагюпёзФоп Опп), а также передает информацию об ошибке любому модулю, которому нужна эта информация
5 мок! 1стргей1гас1 (8ЦЦС1 з<ЬиЙ ЧкЬ) Пакет переадресации, который означает примерно следующее: «Не посылайте мне пакет по адресу ххх.ххх.ххх.ххх, потому что он будет отправлен обратно»
0 уоЙ1с(пр_ес1ю (81гис15к_Ьи« *зкЬ) Функция для отправки эхо-запроса. Эхо-ответ (тип 0) отправля- ется ядром автоматически (если вы не отключили эту возмож- ность)
13 Уо1б 1стр_Лте5(атр №исг зкЬий *вкЬ) Запрос о времени создания пакета — один из самых эффектив- ных методов измерения производительности глобальных сетей в реальном времени. Метод Заключается в следующем: нете- стируемый узел посылаются небольшие пакеты, которые сразу же удаляются. Информация из последнего пакета копируется в пакет эхо-ответа, в этот пакет также вставляется информация о текущем времени. После этого пакет ставится в очередь как обычно
17 УоИ (стр_аййгез5 (з&ис! 5к_ЬиН *зкЬ) Отправка ответа на запрос о маске адреса
Рассмотренные выше функции обрабатывают входящие 1СМР-пакеты.
Но мы ведь можем не только принимать 1СМР-пакеты, но и передавать,
поэтому есть также и «исходящие» функции.
Для отправки ТСМР-сообщений используется функция
уо1<Я 1сшр_8епа(8СгисЬ *зкЬ_1п, 1пГ гуре, 1пГ сойе,
и32 1пТо);
Данная функция отправляет сообщения типа 1уре, с кодом собе и телом
шГо.
После отправки пакета неплоха бы проверить, будет ли он реально от-
правлен. Это можно сделать с помощью функция
1пГ хг11т__а11о^(зЫисС йзс^епсгу *дзГ, тпГ Ытеоцё);
Эта функция определяет, отправлять или нет текущий пакет из очереди.
Если пакет должен быть удален, функция возвращает 0, иначе — 1.
После отправки 1СМР-пакета нужно увеличить счетчик отправленных
пакетов. Это можно сделать с помощью функции 1стр_оЩшсощп():
Vо^с^ .1стр_оиЬ_соипб (1пС Суре) ;
Данная функция увеличивает счетчик оправленных пакетов типа 1уре.
На этом обзор протокола 1СМР в Еших заканчивается и мы переходим к
рассмотрению механизма гнезда (сокета), с помощью которого можно реа-
лизовать двунаправленный обмен данными между двумя компьютерами.
27.3. Программирование сокетов
27.3.1. Что такое сокет?
Сокет — это двунаправленный канал между двумя компьютерами в сети,
который обеспечивает конечную точку соединения. «Двунаправленный»
означает, что данный могут передаваться в двух направлениях — от
клиента к серверу и наоборот. Понятие сокета — абстрактное, это как
бы программный соединитель, через который обмениваются данными
программа-сервер и программа-клиент.
Сокет-интерфейс используется для получения доступа к транспортному
уровню протокола ТСРДР и представляет собой набор системных вы-
зовов операционной системы и библиотечных функций на языке С. Все
эти функции можно условно разделить на три группы:
♦ управляющие функции;
♦ функции установления связи;
• функции сетевого ввода/вывода.
Общий алгоритм работы сетевой программы, использующей сокеты;
1. Подготовить (создать) сокет — функция хоскеЦ).
2. Связать сокет — функция Ъшб().
3. Установить связь с удаленным компьютером (клиенту — установить
связь, а серверу — ожидать установления связи).
4. Произвести обмен данными — функции гесу() и $епб( ).
5. Завершить сеанс связи — с!о§е() и кЬш6о\уп().
Библиотечные функции для работы с сокетами находятся в заголовочном
файле ауа/аоскесЬ, поэтому для любой сетевой программы обязательна
следующая директива:
#1пс1иае <зуя/зоскеС.
27.3.2. Создание и связывание сокета
Основная задача управляющих функций — организовать взаимодействие
двух компьютеров, точнее процессов, а также завершить сеанс связи этих
процессов. К управляющим функциям относятся функции;
• чоске1() — создание сокета;
* ЫшЮ — связывание сокета;
♦ с!о$е() и зйиЫои'пО — завершение сеанса связи.
Начнем по порядку, а именно, с функции чоске1(). Ее прототип следующий:
#1пс1и.йе <8уе/Ьуре8.Ъ>
#1пс1ийе. <зуа/эоскеЬ.Н>
ехСегп 1пЬ зоскеГ: (хпС _йогаагп, хпЬ _Ьуре,
1ПЕ __ргоГосо!) _ТЖОН;
Первый аргумент определяет набор протоколов. Особо вдаваться в
подробности не будем -— просто всегда в качестве параметра скипам
передавайте значение АЕ_ШЕТ, что означает использование стека про-
токолов ТСР/1Р.
Аргумент Суре позволяет установить режим работы: с установлением со-
единения и без такового — значения 8ОСК_8ТКЕАМ и 8ОСКООКАМ
соответственно. Для непосредственного доступа к протоколам 1Ру4 ис-
пользуется параметр 8ОСК_ВА\У. Для его использования нужно под-
ключить заголовочный файл:
4ы1с1ш1е <пеСРпеГ/ 1п.Ь>
Третий параметр лучше всего установить равным 0. В этом случае будет
выбран протокол по умолчанию в зависимости от режима работы:
ТСР, если мы выбрали режим 8ОСК_8ТКЕАМ;
СВР, если мы выбрали 8ОСКДМИ1АМ.
Если вы установили значение 8ОСК_КА\У, вы можете указывать в каче-
стве последнего параметра непосредственно значения из файла /есс/
ргоГ.осоХз. Фрагмент этого файла приведен ниже.
Листинг 27.2. Фрагмент файла /е1с/ргс1:осо15
гр 0 1.СТ1Р 1Р 1 1СМР # Протокол Интернета # Протокол 1СМР
тдтр 2 1С14Р # Протокол ПЗМР
# (ТпСегиеС: Сгонр МападетепЬ РгоСосо1
ддр з ССР # Протокол ССР (даТеиау-даРевдау )
Сер 6 ТСР # Протокол ТСР
иф 17 ОПР # Протокол ОПР
Если сокет создан успешно, функция возвращает дескриптор сокета —
целое положительное число, В случае ошибки функция возвращает зна-
чение “1 (отрицательное число). Вот небольшой пример:
1пС заек;
зоск = воскеС (АР_1ИЕТ, ЗОСКЦ5ТК.ЕАМ, 0);
1Е (зоск==-1) {
ргтпьг("Ошибка при создании еокетаХп");
ех!Ь(1);
)
Чтобы связать созданный нами сокет с локальным портом, например,
1234, нужно использовать системный вызов ЫпсЦ):
#1пс1ийе -свуз/Сурез.
#1пс1и<3е <зуз/носкеЬ.Ь>
#1.пс1ийе спеСХпеС/Тп .п>
ехСегп 1пс Ы.нс! (тпС М, зСгисХ. носкаййг *айбг, носк!еп_Ь
1еп) _ТШЮК;
Первый аргумент функции задает дескриптор нашего сокета. Второй —
это указатель на структуру типа тоскаббг. Все структуры данного типа
определены в файле еоскег .И:
# <3©Ппе _2ОСКАОПК_АЬЬТУРЕ5 \
__5ОСКАОПН„ОКЕТУРЕ (воскай(3г) \
____ЗОСКАСПК-СЖЕТУРЕ (зоскайдг„ак) \
____ЗОСКАППН„ОКЕТ?РЕ (8оска<Мг_ах25) \
_8ОСКАО1)В„ОКЕТУРЕ (зоскаайТ^Л!) \
_5ОСКАППВ_ОКВТУРЕ (яоскаааСеоп) \
_5ОСКАООК_СЖЕТ'УРЕ (зоскааЗг-Ди} \
____90СКА00К_0КЕТУРЕ (аоскаадг_1пб) \
_ЗОС?САСОЙ_ОЫЕТУРЕ (зоскаайг^дпагр) \
__ЗОСКАПОЙ^ЫЕГУРЕ [зоскаааг_1рх) \
____ЗОСКАЛВН^ОЖТУРЕ (зоскааах„1яо) \
_5ОСКАОСЙ_ОКЕТУРЕ (зоскаааг_п«} \
____ЗОСКАОПЙ.ОМЕТУРЕ (зоскайдг^ип) \
_ЗОСКАВРЯ_ОНЕТУРЕ (воскаааг_х25)
Мы программируем для сети ТСР/ГР, поэтому будем использовать струк-
туру зоска<Шг_1п (для I Ру4) или хоскаббг шб (для 1Ру6).
Последний аргумент — это длина выбранной нами структуры
(мккзббгуп) в байтах.
Структура $оска<к1г_1п определена в файле 1п. И так:
з I гисС 5оск.аййг_1 п
__ЗОСКАЙОВ^СОММОН (81П_);
1п.ЦрогТ__к 31П....Р0ГИ; /* Номер порта */
зСгисЬ 1п_аййг 81п_абс1г; /* 1Р-адрес */
ипв1дпе<3 сЬаг э!п_гего[втяеоЗ: (еЬгисЬ зоскаййг) ~
_______30СКАП0Н_С0ММ0Н„512Е -
з 1 геог (1п_дюгС_С) -
зтгеоГ (зСгисС 1п_асЗйг)] ;
/* Для 1Ру6. * /
зЬгисЕ 8:оска<ДЗг_1п6
{
_50СКА0ПЙ_С0ММ0Ы (з1пб_);
1п_рогг_1: з1пб_рогЬ; /* Порт транспортного уровня */
и!п(:32_Л з1пбтЕ1ои1п1!о; /* Информация потока 1Ру6 */
зЕгисЬ 1п6_асИг 81пЬ'_аб<Зг; /* адрес ТРуь */
и!.п132„Л з1пб_5соре_1б; /* IРу6-идентификатор */
};
Поля структуры воскагШгт означают следующее:
• $ш_ — набор используемых протоколов. Так как мы используем ТСР/
ЕР, данное поле должно содержать значение АР_ЕИЕТ;
♦ кт_рогЕ — номер порта;
♦ мпаййг — структура, определяющая адрес узла;
♦ мп_хего — обычно не используется.
Структура *>1гис1 ]п_ас1<1г, определяющая адрес узла, также описана в
файле то .И:
зегисС 1.п_аваг
(
1п_асНт_Т з_ай<3.г;
};
Обычно поле 8_асШг должно принимать значение ШАООК_АЮ/ — сей-
час поясню почему. Структура .чоскасМг ш должна быть заполнена ДО
вызова функции Ыпб(). Если поле 8т_а<Шг.8_а(1<1г принимает значение
ШАПОК_АКУ, то функция Ып<1() автоматически привяжет к сокету
адрес локального компьютера и нам не нужно будет указывать его явно —
так наша программа будет универсальной,
Функция Ып(1() возвращает 0 в случае успеха, и -1, если произошла
ошибка. Вот небольшой пример использования этой функции:
вСгисЬ з<зскаййг_1п сИепЬ;
с11елС.з1п_Гат11у = АГ_ШЕТ?
с11епТ.з1п_асИг.&_адйг = 1НАПИК_АЫУ;
сИепх. з1п_рог1: = 1235;
Ыпй (воск, (зСгисС. воскайДг *}&с11епб, вхгеоЕ (сИепС));
27.3.3. Установление связи
с удаленным компьютером
Устанавливать связь можно как на стороне сервера, так и на стороне кли-
ента. На стороне клиента используется только один вызов — соппесН)-
который «спрашивает» у сервера: «Могу ли я подключиться?», то есть
передает запрос на установление соединения. На сервере используются
функции:
♦ Н<»1еп() — ожидание клиента;
♦ ассерЦ) — подтверждение запроса клиента на установление соедине-
ния.
Сервер должен постоянно прослушивать сокет — ожидать новых клиен-
тов. Как только новый клиент посылает запрос на установление соеди-
нения, сервер может либо разрешить ему подключиться (соппесТ), либо
запретить (например, если сервер уже обслуживает другого клиента).
Функция Мз1еп()
Вызов 1ЗДепО «заставляет» программу-сервер работать в режиме ожи-
дания запроса на соединение от клиента. Прототип этой функции сле-
дующий:
# 1пс1.цйе сзуа/ Боскет . Ь>
ехсегп 1пС Небеп (1пЬ тй ТНКОда:
Первый параметр — это дескриптор сокета, а второй — максимальное
количество запросов на установление связи (другими словами, макси-
мальное количество клиентов).
Как и функция Ыпб(), функция Пк1еп() в случае успеха возвращает 0.
Пример вызова функции;
1Г (ИвЬеп (воск1, 3^ 1=0) {•
ргтпс^ (“Ошибка при вызове Ивбеп (воск! , 3)\п" ) ;
ех1С(1);
};
Функция соппесГО
Используется программой-клиентом для отправки запроса на подключе-
ние к серверу. Прототип функции следующий:
НпсХибе <зу8/Сурез.Ъ>
#1пс1иде свув/зоскеС.&>
#1пс1и4е <пеЫпеС/1п.Ъ>
ехСегп 1ПХ соппесС (1пС __Гб, зПгисС коскаббг_1п *аббг,
8оск1еп_1г _1еп) ___ТННОИ;
Первый параметр — это дескриптор сокета, созданного функцией м>ске<()
и привязанного функцией Ыпй(). Привязку сокета функцией Ып(1() вы-
полнять не обязательно: если сокет не был привязан до вызова соппесС(),
привязка будет выполнена автоматически.
Второй параметр — это указатель на структуру типа чоскабйгт, со-
держащую информацию о сервере: его 1Р-адрес. номер порта, а также
семейство протоколов.
Последний параметр — это размер структуры «оскас1с1г_1п в байтах. В
случае успеха функция возвращает 0, а в случае ошибки -1.
Вот пример использования вызова соппесГ:
зСгисС зоскаббг„1п зегчег;
зСгисС ИокСепС *П;
// определяем ХР-адрес сервера
1з = деСЬозЬЬупате ("зех'уег .с3.оша1п. ги".) ;
гаетсру ( (скаг *) Двегуег. з1п_аб<1г, Ь->И„асНг, п->к_1епдЬЙ) ;
// Определяем порт сервера
зегтег.31п_рогс = 1234;
// Определяем семейство протоколов
яегует. етп^ГатНу = АР_1ЫЕТ;
// Вызов функции соппес1()
сомлеет (зоск, йзегчег, зХгео!(негчег));
Если вы используете режим без установления соединения (8ОСК_ЕМЭКАМ),
вызов соппес( () необязателен.
функция ассерЩ
Если максимальное число клиентов не превышено, сервер может при-
нять запрос клиента. Для этого используется функция ассер1(). Данная
функция используется только при работе в режиме с установлением со-
единения. Прототип функции следующий:
#1пс1ибе <зув/зоске1.Ь>
#1пс1ис1е <пеЫпе1:/1П.И>
ехЪегп 1пЪ ассерЬ ЦгЛ ____Сй, з1:гисЬ 5Оска<Мг_1п *аййг,
воск1еп_Л * гее1г!сг _____Ъеп) __ТНЙОИ;
Первый параметр — это дескриптор сокета, второй — указатель на
структуру, где можно разместить адрес клиента, причем данную структуру
инициализировать не нужно. Последний параметр — размер структуры,
указанной во втором параметре.
Системный вызов ассерЦ) работает так. Сначала он извлекает из очереди
1151еп() запрос на соединение и создает новый сокет, через который будет
производиться обмен данными с клиентом, например,
II получаем сокет клиента
зоск2 = ассерс (яоск!, &апзш1еп) ;
// передаем клиенту информацию
мгзХе (воск2, М5С_Т0_5ЕШ, МкессЕ (М5С_ТО_«ЕПП) ) ;
Если вызов ассерЦ) завершился успехом, структура абйг, задаваемая во
втором параметре, будет содержать П’адрес клиента.
Если очередь 11з1ец() пуста, то наш сервер будет ожидать появления
нового клиента. В случае ошибки функция ассерЦ) возвращает отрица-
тельное значение.
27.3.4. Функция де1Ьо51Ьупате()
Пользователям обычно удобнее указать символьное имя сервера, чем
его 1Р-адрес. Для разрешения имени служит функция 2еЙЮ8(Ьупате().
Вот ее прототип:
#1пс1пде <пеЫпеЬ/1п ,И>
#1пс1ийе <пеСйЬ.Ь>
зЬгист ЬоаЬепС *деЬбовСЬупате (сИаг *пагае);
Данная функция возвращает указатель на структуру типа Ьо$1еп1, со-
держащую следующие поля:
• сйаг *11_паше — доменное имя узла;
♦ сйаг **й_аПа$е<> — псевдонимы узла, если таковые определены;
♦ сйаг *Ь_асШг — 1Р-адрес узла;
♦ 1П( Ь_ас1(1г1уре — набор используемых протоколов (в нашем случае
— АР1КЕТ);
• ш1 Ь_1епдНГ — длина адреса узла.
Примеры использования функции:
вТгисТ ИовсепЬ *Ь;
И-деЫ'юзЮупате (*атду) ;
и (к=~даы,) {
ргхпСЕ ("Невозможно разрешить .имя: '%зЛи." , *агд^ ;
еххС (1);
}
// Выводим 1Р~адрес. Вывод в виде: имя -> адрес
ргтпсЕ (*%з ~> \п*, *агду, 1пеС_пСоа(* ((аЬгисТ. 1п„ай<аг
ЛЬ->Ъ_аМг_ИаЕ [0] ) )) ;
Узнать свой собственный адрес можно с помощью функции сеГадскпате():
ехГегп 1пЬ декзоскпате (1пЬ _к1, ЗОСКАРВН АЙС _______асМг,
8оск1еп_г * геаГгхсГ ____1еп) ТНКСЖ:
Ей нужно передать три параметра — дескриптор сокета, адрес структуры,
которая будет содержать информацию о нашем узле (его адрес). Третий
параметр будет содержать длину адресной структуры.
27.3.5. Функции сетевого ввода/вывода
После успешного установления соединения можно начать обмен дан-
ными. Для отправки и получения данных можно использовать обык-
новенные функции для работы с файлами —геаф) и 'лг11е(), только
вместо дескриптора файла нужно указывать дескриптор сокета. Однако
рекомендуется использовать системные вызовы вепй() и гест(), которые
предназначены именно для работы с сокетами. Эти системные вызовы
будут рассмотрены ниже.
Если вы работаете в режиме без установления соединения, вам нужно
использовать функции яеп<11о() и гесуТгот(). Первая функция отправля-
ет данные, а вторая — принимает. Функция вешко() вместе с данными
позволяет указать адрес получателя, а гестйтниО возвращает не только
полученные данные, но и адрес отправителя.
Обмен данными в режиме 5оСК_5ТЙЕАМ
Для отправления данных используется функция кец<1():
#1пс1ц<1е -свун/Г.урее-й>
#1пс.1и<1е сзуз/аоскеС
ехЬегп 581г:е_Х зеп<3 (1пС _______сопзС. уо1й *__ЬиЕ,
е!ге_Х ___п, 1пС __^1ада) __ТН.КОИ;
Первый параметр — дескриптор сокета, второй — указатель на область
памяти, которая содержит передаваемые данные. Третий параметр — это
размер передаваемых данных в байтах. Последний параметр позволяет
определить поведение функции яеп<1(): если он равен 0, то вызов кепй()
полностью аналогичен вызову мтйе().
Нужно отметить особенность работы этой функции: если буфер сокета
__Г<1 переполнен, функция переводит программу в состояние ожидания
освобождения буфера. Такое может случиться, если узел-приемник по
каким-то причинам не успевает принять данные.
Функция возвращает число байтов отправленных данных или -1 в случае
ошибки.
Для приема данных используется функция гесу():
#1пс1ийе <йуз/Сурев.б>
#1пс1ийе <йув/зоскеС .Н>
ехСегп тест (ШЬ____М, уо!й *____ЬиЕ, а1ге_с п.
1ПГ ^1аов) _____ТНЙОИ;
Первый параметр, как обычно, задает дескриптор сокета. В случае успеш-
ного приема данных они будут размещены в буфере____Ьи? — второй
параметр функции гест(). Третий параметр задает размер области, на
которую указывает второй параметр. Если четвертый параметр (флаги)
принимает значение 0, то вызов гест() аналогичен вызову геас[(). Четвер-
тый параметр может принимать следующие значения;
• М86РЕЕК — прочитанные данные не удаляются. Следующий вызов
функции гесуй*от() опять возвратит эти данные.
• М8О_ХМАГГА1Х — процесс будет блокирован до получения всего
запрошенного объема данных, а не до получения первого сообщения.
Только для сокетов 8ОСК8ТК.ЕАМ!
Если через указанный сокет ничего нельзя принять, функция перево-
дит программу в состояние ожидания — до появления данных в канале
связи.
Функция возвращает количество принятых байтов или -1 в случае ошибки.
Обмен данными в режиме 5ОСК ООНАМ
Функция $епс1€о() позволяет отправить данные по протоколу СЭР (без
установления соединения), указав при этом узел-приемник:
ехЬегп зепйГ.о ЦпС Ей. сопаС уотй *________ЬиГ',
я1хе_С __п,
1гЛ _Е1адв, _СОК5Т_.5ОСКАОПЙ_АНС _____аййг,
зоск1еп_.С абЙГ 1егй ТНКОИ:
Назначение первых четырех аргументов такое же, как и функции $еп<1(),
а последние два аргумента задают структуру типа $1гис1 8оскаЛЛг_1п,
содержащую информацию об адресе узла-приемника, и размер этой
структуры соответственно. Аргумент___асМг — это адрес структуры
чоска(1(1г_1п. а не она сама!
Как и функция кешЦ), функция кеш1(о() возвращает количество байтов
отправленных данных или -1, если произошла ошибка.
Функция гес\Тгот() позволяет получить данные по протоколу ИПР:
ехСегп 3812е„Ь гесуТгогп ЦпЪ ___Сй, Vо^й *___гезСгхсС ЬиГ.
зх2:е_Р _п, хпЬ __Лада,
_30СКАПЖ_АЕС __„аййг,
зоск1еп_Ь * гевсгхсь аййг 1еп> ТИКО№:
Назначение первых четыре аргументов такое же, как и у функции гест().
Предпоследний аргумент позволяет указать структуру, в которую будет
записана информация об адресе узла-отправителя. Помните: нужно пере-
дать адрес структуры, а не саму структуру. Последний параметр задает
длину этой структуры.
Функция возвращает количество принятых данных или -1 в случае ошиб-
ки. Проверить ошибку можно и по-другому: если структура адреса узла
отправителя пуста (равна МдЕЕ), значит, произошла ошибка.
27.3.6. Завершение сеанса связи
Для закрытия сеанса связи можно использовать один из двух системных
вызовов: с!ояе() иди ‘ЯпИбоивС)
Системный вызов ск>5е() также используется для закрытия файлов. Вот
прототип этой функции:
1пС с1озеНпС ____Гй)
Данной функции нужно передать всего один параметр —> дескриптор
сокета.
Однако вызов с1озе() использовать не рекомендуется из-за специфики его
работы: он закрывает сокет грубо, не дожидаясь завершения передачи
данных. В результате использования с1о8е() вероятность повреждения
принимаемых или передаваемых данных очень высока. В принципе, ис-
пользовать с1о8е() можно на клиенте, но на сервере это недопустимо:
сначала нужно использовать 8ЬиМоип(), а потом уже с!о«е().
Вызов 8ЙиШо«'п() используется для завершения сеанса связи, при этом
еще не переданные данные будут переданы другой стороне. Прототип
функции:
ехСегп тпС зЬиейсжп (1гХ _М, 1пС ______1том) _ТНйОИ;
Первый параметр — это дескриптор сокета, а второй может принимать
одно из трех значений:
• ЗН1ГГ К1) (или 0) — передать данные, которые еще не переданы,
но их отправка уже началась, и больше не принимать данные для
чтения.
• 8НСГТ_1УК (или 1) — передать данные и запретить прием данных
через сокет.
• ЗНСТКЭХУК. (или 2) — передать данные и запретить вообще обмен
через сокет — ни приема, ни передачи.
27.3.7. Программа-сервер
В этом пункте мы напишем две программы — сервер и клиент. Програм-
ма-сервер после запуска сразу же перейдет в режим ожидания («про-
слушивания») новых клиентов. Максимальное количество клиентов — 3.
Как только подключится клиент, сервер отправит ему сообщение «\УЬаГ
18 уоиг пате?», в ответ на которое клиент передаст свое имя — «Оетж».
Сервер прочитает Переданную клиентом информацию и выведет ее на
консоль. Клиент, в Свою очередь, выведет на кбнсойь запрос сервера.
С целью упрощения исходного кода как сервера, так и клиента, обработку
ошибок производить не будем, поэтому будьте готовы к тому, что ваш
клиент выдаст сообщение 5е§тешабоп СаиИ в ответ на неверно задан-
ные параметры. Я рекомендую в качестве имени сервера использовать
ЗосаШоэк и обе программы запускать на одном компьютере — это же
только демонстрация.
Вот исходный код программы-сервера:
Листинг 27.3. Программа-сервер
Нпс1и<3е
#1пс1шЗе
НпсХийе
#1пс1иЦе
#1пс'1ис1е
#1пс
оуз/Турев ,Ь>
<пеТ<ЗЬ.У1>
стетогу. 1т>
оув/воскеТ .Ь>
<пеС1пеЬ/1п.Ь>
<йСй1о.Н>
#<3е11пе ЗЕЙУЕЙ_РОНТ 1234
МеНпе ВУГ_й12Е 64
#<3е11пе МЙС^ГСЦЕЕМО "ИЪаС. уоиг паше?\п"
1пГ. П1а1.п (} (
коск1, зоск2;
йпь апз_.1еп, ЬоЬа1=0;
сИаг Ьи{1ег[ВОТ,_512Е] ;
бЕгисЕ воска<3<3гт1п зАп, сИеп1:;
еоск!. = воске:: (АР^ХЖТ, 5ОС.К„5ТйЕАМ, 0};
тетзек” ((сЬаг *) &в1.п, ' \о ‘ , я!геоГ (в1п))
Б1п.81п_1аин.1у - АЕ„1ИЕТ;
В1п.81п_айбг.з_аайг 1кШ)0В„ДКГУ;
й1п-81.п_раге = ЗЕЙ7ЕВ_Р0ЙТ;
ММ (воск1, (нЬгисС воскасМг *)&в1п, еХиеОЕ (вХп).) ;
ргХпкХ("Зегуег гиппхпд.. Лп") ;
ИвЬеп (зо.ск!, 3);
кМ1е И) {
апз_1еп = зХгеоЕ (сИепЕ) ;
зоск2 = ассер!: (эоск1, ^сИепС, &ап8„1еп) ;
иг1Ее (воск2, МЗС_ТО„ЗЕНП, з 1 геоЕ(М§С_ТО„ЗЕМП)) ;
ЕоЕа1+=1;
апв_1еп = геай (еоск2, ЬиИег, ВОТЦ512Е);
иг!Ее (1, ЬиЕЕег, апз„1еп);
рг1гЛЕ (’СИепЕ по %д\п" , Со1а1) ;
вйиМоип ( воскЗ, 0 ) ;
с1оне (воскЗ);
);
геЕигп 0;
}
Теперь разберемся, что есть что. Сначала мы определяем некоторые ма-
кросы: номер порта, который будет прослушивать сервер, размер буфера
передаваемых данных и текст запроса клиенту.
Стандартные номера портов определены в файле пеЫпеЕ/1п . Ь:
епшп
.(
ТРРОЙТ_ЕСНО = 7, /* ЕсИо зегУ1.с#„. */
ХРРОЙХиПЯСайВ = 9, /* Охзсагб Сганж1зЕ1.опз йеп/Асе. .?/.
ТРРО?Т_ЕУ.<5ТАТ = 11, /* Зувкещ/>Ъ^Си8 вегУтсе. */
1₽РОЙТ„САУТ1МЕ = 13, /* Т1те оЕ йау эегл/1се. */
" ТРРОКТ-ИЕТ8ТАТ = 1.5, /* Ыешагк нСаСив зегухсе. */
ТРРОНТ_гТР = 21, /* РИе ТгапнЕег'РгоТойо!. */
1РРОЕТ_ТЕШЕТ = 23, /* ТеГпек ргогосо!. */
1РРОЙТ..8МТР -25, /* 51тр1е Ма11 Тгапз^ег ртоСосоХ.
ГРР0КТ_Т1МЕЗЕК7ЕК = 37, /* ТХтезегтег зегузсе. */
1РРОНТ_КАМЕ8ЕЙУЕК = 42, /* Потахп Каше Зегутсе. */
1РР0НТ_ИН013 = 43, /* ТпСегпеС ИПо1н еетухсе. */
1РРОКТ_МТР = 57,
1РРОКТ_ТРТР = 69, /* Тг1У1а1 РПе Тгапв^ег РтоСо-
СО1. */
1РРОНТ_^Е = 77,
1РРОЙ.Т_Е1№ЕН = 79, /* Г1пдег вегу1се. *7
1РР0НТ_ТТУЫЖ = 87,
1РРСЖТ_5ПР0ОТ = 95, /* ЙОРШР ргоЬосо!. */
1РР0КТ_ЕХЕС5ЕКУЕН = 512, /* ехесй йегутсе. */
1РРОРТ_ЬОС1№ЕЕУЕН = 513, /* г1од!пД зегуЕсе. */
1Р₽ОЕТ„СМОЗЕЕУЕЙ =514,
1РРОКТ_ЕГЗЗЕЙУЕН = 520,
/* ипр рогсз. */
1РРОВТЦ31РГ1ЮР = 512,
ТРРСЖТ-ИНОЗЕНУЕЙ = 513,
1РР0РТ_Е0ОТ’ЕдЕК7ЕЕ = 520,
/* Рогмз 1еэз ЬИап еЫв уа!ие аге гевегуеД ^аг рг1У1-
1едей ргосезнез. */
ХРР0КТ_НЕ5ЕЙ7Е0 = 1024,
/* Рог^з дгеаЬег Шв уа1це аге гееегуеф ^ог (поп-
ргЗуНедед) вегуегз. * /
1РРОКТ_ПЗЕНВЕ5ЕКУЕП = 500.0
Нам понадобятся сразу два сокета: первый — это сокет сервера, а через
второй сокет мы будем производить обмен данными с клиентом.
ЗпГ воск1, аоск.2;
Следующие переменные: апв„1еп используется для хранения размера
передаваемой клиентом информации^— фактического размера структуры
«1гис15оскаббг1п, а СоСа! — это счетчик числа клиентов, используемый
для вывода порядкового номера клиента.
Переменная ЪиНег размера ВСР_812Е — это наш буфер для обмена
информацией. Нам нужны две структуры типа зоскаааг_1п — одна для
сервера (ып) и одна для клиента (сНепг).
В строке
Боск1 = носкеЬ (АР„1ЖТ, 5ОСК„5ТНЕАМ, 0);
мы создаем наш, «серверный», сокет: набор протоколов — ТСРДР, режим —
с установлением соединения.
Затем мы инициализируем структуру ып:
тетпзес ЦсЪаг '\0', зхгеоЕ (к!п) ) ;
Е1П.81п_Гат11.у = АР„ЖЕТ; // ТСР/1Р
к1п. в1п_а<Мг .в__аск3.г = 1МАЭОЙ„АМУ; // можем работать на
// любом адресе
Е1п.81п_рог1: = ЗЕЯ7ЕК_Р0КТ// указываем порт (1234)
После создания сокета и инициализации структуры яп, нужно связать
наш сокет с адресом и портом сервера:
Ыпй (зоск1, (вСгис-Х зоскаййт я!;<еог (з!п) ) ;
Оператор ЦаСеп (яоск1, 3 ) означает, что мы будем прослушивать
сокет зоск! (порт 1234) и максимальное число клиентов не должно пре-
вышать 3.
Как и любой нормальный сервер, мы должны работать в бесконечном цикле,
постоянно обрабатывая запросы клиентов. В бесконечном цикле мы:
1. получаемразмер структуры сНеШ
апй_1еп = (сИепС ) ;
2. создаем сокет зоск2, через который будем обмениваться данными с
клиентом. Если в очереди Нзшп нет клиентов, мы переходим в со-
стояние ожидания
эоск2 ~ ассерС (зоск1, &.с11епЬ, &апй_1еп);
3. как только подключится клиент, мы отправим ему сообщение
М8О„ТО„8ЕЬГО
иПе (воск2, МЗС_ТО„6ЕМР, к 1 геоГ (М5С„ТО„5ЕК!П) ) ;
4. увеличиваем счетчик клиентов
Со1а1-+~1;
5. получаем размер прочитанных данных, сами данные записываются в
буфер ЬиП’ег
апз„1еп = гсай (эоск2, ЪиИег, ВОР_512Е) ;
6. выводим прочитанные данные на стандартный вывод
щ-тХе {1, ЬиИег, апз„1еп) ;
7. завершаем сеанс связи
вИиСйсдап (воскЗ, 0) ;
8. закрываем сокет
с1озе зоск2);
Конечно, любой нормальный сервер при поступлении определенных
сигналов, например, БКЗ НС'Р. должен корректно перезапуститься или
вообще завершить работу. Наш сервер этого не делает — обработку
сигналов, я надеюсь, вы можете добавить сами.
Теперь мы можем откомпилировать нашу программу:
$ дсс -о еегуег вегтег.с
Запускаем:
. / зет^ег
Программа перешла в состояние ожидания новых клиентов.
27.3.8. Программа-клиент
Программа-клиент несколько проще, чем сервер. Вот ее листинг:
Листинг 27.4. Программа-клиент
Нпсзийе
#1пс1иве
#1пс1ийе
#1ас1ийе
#1пс1иск=!
МпсРайе
свуз/буреэ.И>
<зуе/зоскеС.к>
<пеЫпеС/1о.й>
<пеГ_<ЗЬ. И>
стояк? гу. И>
сзЕсИо .11>
МеШе ЙЕКУЕН^НОЯТ " 1оса11юз5:"
МеНпе 2ЕЙУЕЙ„РОЕТ 1234
«еП.пе С1,1ЕКТ_РОЙТ 1235
Ме Е 1п е МЕ!С " Пеп! а \ п "
та!п О {
1пС зоск;
1пЕ апз..1еп;
1гЛ ВиК„517.Е = 64;
спа г Ьи1Е е г[12 Е] ;
в.ТгисС коз'епс *к.;
вСгисС воскайб.г_1п сИепЬ, ветуег;
воск = еоскек (АР_1КЕТ, 30СК_5ТКЕАМ, 0);
гпетзек ЦсНаг *)&с11епг, ' \0 ' , ззхеоГ (сПеШ)) ;
сИепе. Й1п_гай111у = АЕ_1НЕТ;
с11епС,з1п_аас1г.н_аааг = 1КА1©Е_АЯУ;
сИепк. з1п_рогЬ = СЫЕНТ_РОйТ;
Ыпб (воск, (эЬгисЬ зоскаййт * ) &с11.епЬ, з1хеоГ (сИепЬ)) ;
тетзеС ( (ск.аг *)&сМепк, '\0', з1гео< (зегуегН-;
Ъ = декЬовеЪупатле (ЗЁЯ\ГЕй„НОЗТ) ;
5егуег.з1п_1атПу = АЕ_1ЫЕТ;
тептсру ((сЪаг *) Унегуег. з1п_а<Мг, ?т->Ь_адаг ,Ь->И_1ёпдСЬ> ;
зегуег. з1п__рогк = ЗЕН7ЕН_Р0НТ;
соппесЕ (зоск, &зегуег, взгеоНветУегМ;
апв_Хеп =*-гёсу (коек, Ъи^Гег, В1’Р_312Е, 0);
>.т1Ье : (1, ЬиП:ег, аг.з_1еп) ;
вепа (зоск, ИЗО, з1гео{(МЗС») , 0);
с!озе (зоск);
ех1е (0)?
ч
}
Константа М8С — это сообщение, которое будет передано серверу. Как и
а случае с сервером, нам понадобятся две структуры типа зоскасИг тп:
БргисЬ ЬозЬепс *к;
з^гисЬ зоскайаг„1п с11епЬ, зегуег;
Структура типа Ьок1еп1 нам нужна для получения адреса сервера.
Создаем сокет, заполняем информацию о клиенте и связываем сокет:
зоск = воскеС (АЕ_1ЯЕТ, .5ОСК„5ТКЕАМ, 0.) ;
тетвеС. ( (скаг *)&с11епЬ, '\0', 512йо5 (с1.1епС)) ;
С1;1епк.шп^ай111у 5= АГ_1КЕТ;
с11епк/&1.п„айс1г. в_адйт ~ 1>ШЮЙ_АЖ; .
сИепС ..отрдэогЕ = С.И^Т„РОКТ;
Ып<3 (йоск, (зЬгнек зоскайбг *)&с11ёп^, (сНепЬ)) ;
Перед подключением к серверу нужно определить его 1Р-адрес:
11 = деСкозСЬупате (8ЕНУЕВ_НОЗТ) ;
Подключаемся к серверу:
зегуег.з!п_Еаш.1у = АР_1МЕТ; // набор протоколов
глетсру ( (сИаг *) йнегуег. 81п_асИг, Ъ->Ь._адс1г )И->Ь_1епдСЬ) ;
/7 задаем адрес сервера
зегуег.з1п_рогЬ - ЗЕКУЕК_Р0ВТ; // указываем порт сервера
соппеси (зоск, Ьвегуег, зХаео!(зетуег));
После подключения к серверу принимаем его запрос, выводим на стандарт-
ный вывод, отправляем серверу свое сообщение и закрываем сокет:
апз_1еп ~ гесу (зоск, ЬиЕНег, 0);
иг1Се (1, ЬиЕЕег, апн„1еп);
зепй {воск, мзе, йтгеоНМЗО , 0);
с1озе (воск);
27.3.9. Установка опций сокета
Поскольку мы используем набор протоколов АЕ_ЖЕТ, то в этом пункте
будем рассматривать только те опции сокетов, которые относятся к этому
набору. Для работы с опциями сокета используются две функции:
• ^еЬоекор1() — получение опций сокета;
♦ 5еТчоскор(() — установка опций сокета.
Прототипы этих функций выглядят так:
#1пс.1пйе <зуе/зоске11. Ь>
1пС деСкоскорС (1пС ай, 1пб 1еие1,
ДпР: орР1оп_пате,
уо1й *гезСг1сС орь!оп_Уа1ие,
зоск1еп_С *геяГг!сС орС1оп_1еп);
1пС зеСзоскорС (1пС з<1, 1пС 1еуе1,
1гщ орк1оп_пате,
сопз!: уо!.а *орЬ1оп„уа1ие,
зоск1еп_1: ор1;1оп„.1еп) ;
Первый параметр, зф — это дескриптор сокета. Второй параметр — уро-
вень доступа (существует только один уровень — 8ОЬ_8ОСКЕТ). Следу-
ющий параметр, орбоп_пате, — это название опции, значение которой
вы хотите изменить (см. таблицу 27.10). Последние два параметра ™ это
значение опции и его размер.
Наиболее часто используемые опции сокетов Таблице 27. Ю
Название опции Описание
5О-0ЕВ1Ю Включитъ/выключить (1/0) запись отладочной информации для сокета
50.ВН0А0СА5Т Включить/выключить (1/0)отправку широковещательных сообщений
зо^яеизеаооя Опция разрешает/запрещает использование локальных адресов
50_КЕЕРАЫУЕ Сохраняет неактивные соединения "а живых" путем посылки сообщений. Если данный сокет не отвечает на сообщения, соединение будет разорвано, а про- цессу, который осуществлял запись в сокет, будет послан сигнал 8!<ЭР1 РЕ. Для включения КЕЕРАВУЕ нужно установить значение 1, для выключения — 0
ЗО-ЗМОВИР Устанавливает размер буфера отправки, значение целого типа
ЗО_АСУВОЕ Устанавливает размер буфера приема, значение целого типа
5О_5М0Т1МЕО Установка таймаута для отправки сообщений. По умолчанию таймаут равен 0, то есть его вообще нет. Нужно передать значение типа аГгис! бтеуа!
ЗО^СУПМЕО Установка таймаута для приема сообщений. По умолчанию таймаут равен 0, то есть его вообще нет. Нужно передать значение типа втгцщ Птаха!
ТСР_«ООЕ1АГ Отключить (1) механизм буферизации сообщений, то есть они будут отправ- ляться сразу, без задержки. Для включения механизма буферизации нужно указать з^чение 0
ТСР_МАХ8Е6 Установить максимальный сегмент данных. Значение целого типа
терроризм Не использовать проталкивание (1)
ТСР_МООРТ На использовать опции ТСР (1) Для использования опций передайте значение 0
В случае успешной установки параметра функция зе&оскор1() возвращает
0; в случае ошибки возвращается 4, а переменная еггпо устанавливается
следующим образом:
♦ ЕВАОГ — неверный дескриптор сокета;
• ЕМОТ8ОСК — указанный дескриптор является файлом, а не соке-
том;
♦ Е Г-АСЕТ — нет доступа к адресу, на который указывает указатель
орема!, то есть данный адрес находится за пределами видимости
приложения.
Функция |*еН!оскор<() возвращает значение параметра. Кроме выше-
перечисленных параметров, функция ке^оскор1() может использовать
следующие параметры:
♦ 8О_ЕККОЕ — возвращает номер ошибки (будет в возвращаемом
значении);
♦ 5О ТУРЕ — возвращает тип сокета.
Рассмотрим небольшой пример работы с опциями сокетов. Мы установим
размер буфера ТСР.
# 1пс 1и<3е "коек/Н*
#1пс1ийе "йСЙХа.И"
та и: ()
1пГ. вд;
1гИ орбча!;
1ПТ орй1еп;
/* дескриптор сокета */
/* значение опции */
/* длина орбуа!
1пС пе-и„.Ьиг^ахке = 8192; /* новый размер буфера */
/* создаем сокет */
вс! = зоскее(АР_.1НЕТ, ЗОСК_8ТНЕАМ, 0) ;
/* считывание длины буфера ТСР */
орШеп = (орЬча!);
деТзоскорЬ(зб, ЗОЬ.„5ОСКЕТ, ЗО_ЗИРВСЕ, &орСуа1, &орС1еп) ;
рг1пг.1 ("Зтзе о^ вепй ЬиИег %4\п* , ороча!) ;
делзоскорМза, ЗОЬ„ЗОСКЕТ, ЗОЦВСТВиК, йорРуа!, &орС1еп);
,рг ! ( "512е оЕ гесч Ьи.Ехег %<3\п*, арйуаГ) ;
/* изменяем длину буфера */
веЬвоскорй (ей, 50Ъ_5ОСКЕТ., 30_ВСТВУЕ,
&пе«г_Ьи^?в1ге,812еоЕ (пеи_ЬиСС81гё)) ;
061500^1(301, 50й„Ь’0СКЕТ, 30„5№ЮГ,
&пеи„Ъи^Ез12е ,в12ёо^ (пеи_Ьиг{:в12е));
/* выводим измененную информацию */
деСвоскорт (вй, ЗОЬ„.5ОСКЕТГ 50„5МП5ОТ\ & ороча!, &орР1еп) ;
рг1:тГ е ("Ыем о! вепс! Ьц^Еег %<3\п", ороча!) ;
дейвоскор!(ей, ЗОЬ^ЗОСКЕТ, ЗО.КСТВбЕ, &орбУа1, &орР1еп);
ргйп! 1 ("Меи й1ге о! гесч ЬиОег %д\п", орбуаХ) ;
27.3.10. Сигналы и сокеты
С сокетами связаны три сигнала:
♦ 81610 — сокет готов к вволу/выноду. Сигнал посылается процессу,
который связан с сокетом;
♦ 81бйКО — сокет получил экспресс-данн ые (мы их использовать не
будем, поэтому особо останавливаться на них нет смысла);
♦ 8ЮРП*Е—запись в сокет больше невозможна. Сигнал посылается
процессу, связанному с сокетом. Например, функция уш1е() вызывает
сигнал 8ЮР1РЕ, если удаленный процесс завершен или связь по сети
невозможна.
Пример обработки сигнала 8ЮР1РЕ приведен ниже.
Листинг 27.6. Обработка сигнала ЗЮР1РЕ
#1пс1и<3е "йоск.И"
#1пс1шЗе <81дпа1.Ъ>
/* обработчик сигнала 81СР1РЕ */
В1др1ре„капй1ег()
{
егг_ди!Г, Г Получен Б1СР1РЕ \п") ;
та!п()
(
1пс воск; /* дескриптор сокета */
/* установка обработчика сигнала 81СИРЕ *7
а!дпа1 (310Р1РЕ, з.1др1ре„Иапа1ег) ;
/* работа с сокетом */
27.3.11. Мультиплексирование
В этой главе мы рассматривали пример программы-сервера, обрабаты-
вающей запросы только от одного клиента. На практике все выглядит
намного сложнее: серверу приходится одновременно обрабатывать за-
просы многих клиентов. Для мультиплексирования запросов клиентов
используется системный вызов ке!ес1( ). Этот вызов использует, например,
суперсервер хтеШ
Листинг 27.7. Мультиплексирование запросов
#1пс1ис1е "зоск.Ъ*
#1пс1ийе <8уа/б1те,И>
гпа1п ()
{
1пе воск; /* дескриптор...^.рх^ддадр;..сокета */
1пЬ пеиг_8оск,- /‘.дескриптор, получений^ с помощью ассерР */
1пД геЪча1; /* возвращаемое значение- */
аСгисГ 8оскасйг_1п вегйог; /* адрес сокета */
Гс1_кеС геаЙУ; /* переменная для ве1есР */
Е(3„неЬ нгхЬеу,- /* переменная для в61ёсЬ */
вЬгисЕ Мтеуа! ЬоиЕ; /* тайм-аут для веХесР */
/* бесконечный цикл ожидания */
ЕОГ {
/* процесс ждет операцию ввода-вывода на сокете ;
одновременно можно ждать и другие операции */
П>_2ЕКО(&геаау);
РП_2ЕР.О(&иг1ЬеУ) ;
П)_5ЕТ(зоск, йгеайу);
Г0_5ЕТ(зоск, &нг1!1еу};
Гоцр.Гу_зес = 10; /* 10 секунд */
геСуа! ~ зе1есЬ(зоск+1, &геа<1У, &адг1Ьеч, 0, &&о);
/* если ве1есЬ возвращает нулевое значение, значит
тайм-аут*/
1Е (геЬча1 == 0) {
егг„геД("Ь1теоис");
сопИпие;
)
/* в противном случае, ищем соответствующий, дескриптор */
1Е ( (Р0_155ЕТ(зоск, йгеаЙчН Н (Е0„183ЕТ(зоск,
&№зЛеч) ) } {
/* прием связи с сокета */
пеи_зоск = ассерй(зоск, (вйгисЬ зоскасЙГ *) 0, (1пЬ *)0);
/* работа с сокетом пете_&оск */
/* закрытие текущей связи */
с1ове (пеи_воск);
} е1ве {
егг.„1-еР ( "Это не сокет! Проверьте все дескрипторы\п") ;
}
)
Системный вызов 8е1есЕ() принимает 5 аргументов:
1пС зе1еск(1пб Еб, М_зег: *1приС, М_зе1: *оиЬриГ,
Ы_ВеЬ *еггог,
нГгисЬ Г_1теуа1 *Я1теоиЬ);
Первый аргумент, М, — это файловый дескриптор, который может быть
сокетом. Следующие три аргумента задают множества файловых дескрип-
торов для ожидания условий ввода (трЩ), вывода (оиГриГ) и ошибок
(еггог). Последний аргумент — это таймаут.
Множества файловых дескрипторов инициализируются с помощью трех
макросов:
ЕИ_2ЕК0({а„зеГ);
ЕП_ЗЕТ(М, М_веЬ);
РП.^СЕК (Ш, М_эеО ;
Первый макрос полностью очищает множество, следующие два макроса,
соответственно, добавляют и удаляют файловый дескриптор. Мы исполь-
зовали два макроса для ввода и два для вывода. Сначала мы полностью
очистили множество, а потом добавили в него соответствующие дескрип-
торы:
РП.~2ЕН0(&геаау) ;
РП„гЕКО(&ИГ1ееУ);
Р0_8ЕТ(5оск, &геайУ);
РП_ЗЕТ(зоск, Ьыгзйеу);
Особого разговора требует последний параметр — таймаут. Таймаут
можно задавать в секундах и миллисекундах. Например, следующие опе-
раторы объявляют таймаут длительностью 2 секунды и 5 миллисекунд:
збгисЬ Ытеуа1 ЕоиР ;
/* тайм-аут для веХесТ */
•соиЕ.Еу_яес ~ 2; /* 2 секунда */
СоиЬ.Ъу„ивес = 5; /* 3 миллисекунд */
Если вы хотите не использовать таймаут (то есть ждать бесконечно),
укажите МЛХ в качестве последнего аргумента.
Функция 8е1ес1() возвращает число файловых дескрипторов, на кото-
рых выполнились ожидаемые условия (ввод/вывод/ошибка) или -1 при
ошибке.
Вот еще один пример использования функции 8е1ес1(). Мы будем ожидать
ввода из файла и из сокета. Если будет достигнут таймаут в 20 секунд,
пользователь увидит соответствующее сообщение; в противном случае
он увидит сообщение: «Получен ввод из файла/сокета».
Листинг 27.8. Еще один пример использования во1ес1()
#1пс1и<1е <ип1зЕс1.й>
#1пс1и<5е <йуз/Ьурез .Ь>
#1пс1ийе <вуБ/ИтеЛ1>
#1пс1ийе <зуз/зе1есЕ.И>
1пТ к ;
1пТ зоск;
1пЕ М;
1пТ тоаХ-М;
й„_зег гприС;
нТгисЬ отеча! ЫтеоиТ;
/* инициализация файла и сокета */
/* Инициализируем множество ввода */
ЕП_2ЕК0(1приС);
РО^ЗЕТаа, 1прик) ;
Р1)_ЗЕТ (зоск, 1лриЬ) ;
гпах„М - (коек > М ? зоск : Ей) + 1;
/* Задаем таймаут */
ЬШеоик . кучнее = 20;
к - зекесд(тах_М, &1прик, №]ЬЪ, ШЬЕ, ЬЬхшоиЬ) ;
(к < 0)
реггог('Ошибка при вызове ёёХесЕ");
е!зе 1Е (к == 0)
риЕв("Т1МЕОПТ");
е1ве
(
/* Получен ввод */
И (ЕО_Т53ЕТ(М, хприем
ргТпП ("Получен ввод из файла");
И (ЕС„183Е1ЧБоск, .ТприШ
ргапСг(“Полунен ввод из сокета");
}
Вроде бы код программы очень прост, но комментария заслуживает
макрос РВ_185ЕТ. С его помощью МЫ проверяем, есть ли во множестве
ввода ввод из какого-либо источника.
27.3.12. Неблокирующие операции
Некоторые функции для работы с сокетами блокируют программу в
случае, если удаленный процесс не осуществил требуемую операцию.
Примеры таких функций:
♦ ассерЦ);
♦ соппесЦ);
♦ геасЦ);
♦ итйе().
Блокирование процесса очень нежелательно, поскольку во время ожида-
ния можно было бы заняться чем-нибудь другим: например, обработать
информацию, поступившую с другого сокета. Вы можете объявить сокеты
неблокирующими с помощью системного вызовы юс(1().
Особенности работы некоторых функций в неблокирующем режиме:
• функция ассер1() сразу же завершает работу с ошибкой
Е\УООЕГ)В1.С)СК;
• функция соппес1() тоже завершает работу, но с другой ошибкой:
Е1№КО6КЕ8$;
• функции чтения (геаб(), гесу(), гес>Тгот()) возвращают -1 или 0, если
нет считываемых данных.
Ясное дело, что в таком режиме нужно периодически проверять нали-
чие данных—ведь теперь процесс не будет их ожидать; если их нет1, то
функции просто возвратят -1 или 0.
Пример создания неблокирующих сокетов приведен ниже:
Листинг 27,9, Использование системного вызова !осЦ()
МпсЕибе "зоск-Ъ”
#1пс1ийе <зув/1осЫ.Ь>
уо1й та!п()
воск;
1пГ. оп = 1, оАГ ~ 0; /* значение для АосСЮ */
/* Создаем неблокирующий сокет */
1осС1(яоск, Г1ОЙВ1О,&оп);
Глава ПРОГРАММИРО-
ВАНИЕ ЯДРА
“--- КАРКАС МОДУЛЯ
--- КОМПИЛЯЦИЯ МОДУЛЯ
---РАБОТА С УСТРОЙСТВАМИ
„___ОПЕРАЦИИ НАД УСТРОЙСТВОМ.
ПОИСК УСТРОЙСТВ
1-11М11Х полное РУКОВОДСТВО
Из главы 7 вы узнали, что драйверы устройств в Ыпих выполнены в
виде модулей ядра, и познакомились с пакетом шоби1е-1пй-1оо18 (он же
тодпШк для ядер 2.4), содержащим утилиты для выполнения основ-
ных операций над модулями ядра. В этой главе я покажу, как создать
собственный модуль, позволяющий расширить возможности ядра опе-
рационной системы.
28.1. Каркас модуля
Что будет делать ваш модуль, зависит от вас — это может быть драйвер
устройства или просто небольшой модуль, дополняющий ядро нужной
вам функцией.
Для начала напишем каркас модуля на языке С. Этот каркас можно будет
скомпилировать, но в результате получится модуль, который не делает
ничего. Ой просто послужит вам основой для написания настоящих,
серьезных модулей.
Листинг 28,1. Каркас модуля ядра Мпих (тск1Ще1 .с)
МеНпе МОПОЬЕ
МеПпе _____КЕйКЕЬ___
#1пс1ис1е <11пих/гпос1и1е. Ь>
1пС 1п1С_тойи1е()
{
геСиги 9;
)
уоМ с1еапир_пю<аи1е ()
{
}
Теперь разберемся, что означает каждая строчка кода нашего будущего
модуля. Первые две строчки делают обыкновенную программу модулем
ядра Г.ншх. Это директивы препроцессора срр, обязательные для каждого
модуля. Если вы не укажете их, компилятор сгенерирует совсем не тот
код, которого мы от него ожидали.
Третья строка подключает заголовочный файл пюди1е.И. в котором на-
ходятся все необходимые для создания модуля определения .
Функция шо4и1е() вызывается при загрузке модуля ядром. Если
загрузка модуля прошла успешно, функция возвращает О, в противном
случае она должна возвратить любое другое значение — код ошибки.
Функция скчшир_дпос1п1е( ) вызывается при удалении модуля. Тии воз-
вращаемого ею значения не определен, поэтому проверить, успешно ли
произошло удаление, сама функция не позволяет.
Названия функций !гШ_1пос1и1е() и с1еапнр_тоди1е() необязательны — вы
можете назвать их по-другому, но для этого вам нужно использовать
функции тоди1е^шй() и тоб1и1е_ех11(), которые определены в заголо-
вочном файле тй.Ь.
Переделаем наш шаблон так, чтобы он не использовал стандартные имена
функций иШ тоНск’О и ск>апир тоди1е():
Листинг 28.2. Шаблон модуля с переименованием
стандартных функций (пкк1и1е2.с)
#аеЕ1пе МОШЬЕ
#<ЗеИпе КЕКМЕЬ_______
// для модуля
#1пс1ийе< 11 них/ 1й1Ь. 1з> / / гаойи 1е„1.п1 С () и. тойи1е__ех )
1Г.С зСа.гс { ) ( геСи.гп 0; }
УО1Й зг.ор\) (}
1?.оац1 зСа.гс) ;
тойи 1 1.с (нСор) г
Функциям шос1и1е_ятй() и тобн1е_ехй() нужно передать имена функций,
которые будут вызваны при инициализации и удалении модуля соответ-
ственно. Зачем это нужно? Так, для общего развития — чтобы вы знали,
для чего используются эти функции. Ваш модуль не станет работать
лучше, если вы переименуете стандартные функции инициализации и
удаления.
Помните, для чего используется программа пюсЙпГо? Да, для получе-
ния информации о модуле. Давайте добавим эту информацию в наш
модуль.
Листинг 28.3. Информация о модуле (тойи1е3.с)
МеПпе МОППЬЕ
МеПпе „КЕККЕЬ__
#1пс1иве <11пих/тао<3и1е-Ь>
МОПОЬЕ_Аитнбй'(*Оеп1з КоИзгысЬепко аЬйНаЬзётаИ.ги*) ;
МОПиЪЕ„РЕЗСК1РТ1ОН ("Ыпих кегле! тоЗиЛе");
1пС 1п!±_яюаи1е О ( геАигп 0; }
Vо^д с1вапир_дпойи!е{) ( гесигп 0; }
Макросы МОВиЬЕ_АОТНОН и МОШЬЕ_ПЕ8СВ1РТ10Н определены В
заголовочном файле пкхкйеФ, поэтому никаких дополнительных заго-
ловочных файлов подключать не нужно.
При необходимости модуль может выводить на консоль сообщения,
например, о невозможности инициализации устройства. Выводимые
модулем сообщения будут запротоколированы службой протоколирова-
ния ядра демоном к1о§б. Выводить сообщения нужно не с помощью
функции |л шВ(). а функцией ргййЦ). В этом случае сообщения не только
окажутся на системной консоли, но и будут запротоколированы в файле
,.'^аг /Ход/шезвадез.
Сейчас мы напишем модуль, который будет выводить сообщения при
загрузке и при удалении.
Листинг 28.4. Использование функции рг»п!к() (тойШе.с)
МеГ1пе МООЦЪЕ
йдеГгпе ___КЕЙЫЕЬ
#1.пс1иЗе <1!пих/тойо1е.Ь>
^гпсХийе <11гшх/кегпе1.Ъ> // рг!пЬк
МаПШ,Е„АиТНОЯ ("Веп1з Ко 11 з п 1 ей е п Ио сШз И.аЬ-3 Эта 1.1. г и ") ;
МООиЬЕ_ПЕЕСВ1РТ1ОН(''Е!пих Кегле! тс>аи1ея);
зпй 1п!й_тос1и.1е()
рг!пйй( "Му тосЗиТе: 5Т.агс1пд.. . \п") ;
гегигп 0;
)
уо1й с!еапир_тойи1еО
{
ргтпСМ "Му т©йи!е: ЗЬоррхпд..\п"1;
геЬигп 0;
28.2. Компиляция модуля
Компилировать мы будем файл тосЫе.с. Для этого понадобится уста-
новленный компилятор §сс, заголовочные файлы и исходные тексты
ядра. Если вы дочитали книгу до этой главы, то у вас уже должны быть
установлены пакеты:
1. срр — препроцессор срр;
2. ЫпиШк — набор различных утилит (аз, ёргоГ. 1й);
3. ц№с-кегйеас1ег.ч — заголовочные файлы ядра;
4. §1Фс~беуе1 — вспомогательные файлы для разработки приложений с
использованием стандартной библиотеки С;
5. ксс — компилятор $сс.
Осталось установить пакет кегпеЕзоигсе — исходные тексты ядра Ыпих.
Кроме того, нужно убедиться, что ваше ядро поддерживает динамически
загружаемые модули (п. 20.3.2.3). Если опция ЕпаЫе 1оа<1аЫе тойи!е
зиррог( выключена, ее нужно включить, сохранить файл конфигурации
ядра и перекомпилировать ядро,
Компилятор усе нужно вызвать со множеством опций, поэтому для об-
легчения себе работы мы напишем шаке-файл (п. 21.2):
Листинг 28.5. МакеШе для сборки модуля
СС-дсс
РЛТН"/ияг/1пс1ибё /изг7егс/11пих-2.4/1пс1ис1е
МООгЬАСЗ:^ -03 -ОЫЫЖ -П_КЕНМЕЬ_ -1$(РАТН)
пюаиХе . О: итойи1е. с
$(СС) $(М00РЕАС8) -с тосШе.с
Опции компилятора означают следующее:
• ОЗ: будет использован третий уровень оптимизации (что это такое,
вы узнаете в справочной системе $сс: тап дсс);
♦ Х\'ай: включаем все предупреждения;
• 1ЭЫХСХ: генерируем код для 1_1пих;
* 1$(РАТН); определяем путь поиска заголовочных файлов. По умол-
чанию компилятор ищет файлы заголовков в каталоге /и8г/1пс1иде, но
там может и не быть нужных файлов. Например, для дистрибутива
АЬТ Ыпих (ядро 2.4.21) файлы заголовков находятся в каталоге /наг/
шекк1е/1тих-2.4.21 геНкБпр.
Поместите таке-файл в тот же каталог, где находится тосМе.с, и выпол-
ните команду таке. После ее выполнения вы получите файл тобгйе.о,
который будет находиться в том же каталоге.
# тпзтой тодиХе.о
Вы унидите сообщение Му тобиХе: зсагЫпд... Это же сообщение
будет записано в файл протокола ^аг/1од/теззадее.
28.3. Работа с устройствами
Мы только что написали модуль ядра, который можно установить, уда-
лить, который выводит сообщения, но ничего полезного он не делает.
Усложним нашу задачу: напишем модуль, управляющий некоторым
устройством /аеу/сЗеутсе. Данного устройства в нашей системе нет,
поэтому нам его нужно создать, но этим мы займемся чуть позже.
Перед тем, как приступить к написанию драйвера устройства, нужно по-
говорить о самих устройсгвах. Устройства бывают трех типов:
* Символьные: чтение и запись устройства выполняются посимвольно.
Примером такого устройства может послужить последовательный
порт.
♦ Блочные: чтение и запись устройства выполняются блоками, как прави-
ло, по 512 или 1024 байта. Самый яркий пример блочного устройства —
жесткий диск.
• Сетевые: файлов этих устройств вы не найдете в каталоге /деч, по-
скольку использование файловой системы, то есть работа с этими
устройствами как с файлами, неэффективно. Пример — сетевая карта
(егЬХ).
Существуют устройства, которые нельзя отнести ни к одному типу, по-
скольку они не принимают и не передают данные. Пример: К.ТС (Кеа!
Т;те С1оск).
Чтобы сделать устройство доступным для системы и пользовательских
программ, нужно его зарегистрировать. В заголовочном файле Ев. И
определены функции для регистрации символьных и блочных устройств.
Все они начинаются с префикса гефгйег. Наше устройство будет сим-
вольным, поэтому для его регистрации мы будем использовать функцию
ге^цлег сИгйеу. Вот ее прототип:
ехСегп 1пС гед1вЬег„скгс^(ш1.а1.дпеа 1пЪ, сотшс сИаг *,
вСгисС ?11е„орегаЫопк * ) ;
Первый аргумент — это старший номер (та]ог питЬег) устройства,
определяющий его тип. Если старший номер равен 0, до функция возвра-
тит свободный старший номер для устройства нашего вида (символьное
устройство).
Чтобы понять, для чего нужен старший номер, вспомним каталог /деу,
содержащий файлы устройств. Файл /аеу/ссу! — это терминал с но-
мером 1. Старший номер определяет тип устройства — терминал (Ну), а
младший — его номер в системе (1). Человеку проще работать не с номе-
рами. а с символьными именами устройств, поэтому каждому старшему
номеру соответствует символьное обозначение.
При регистрации устройства нужно указать его тин — старший номер
устройства. Но для этого нужно знать, какие номера свободны, Проще
всего указать первым аргументом 0 — тогда функция возвратит первый
свободный старший номер символьного устройства для вашей системы.
Если старший номер указать явно, может возникнуть конфликт номеров,
и наше устройство не будет зарегистрировано.
Второй параметр определяет имя устройства («беутсе»). Последний па-
раметр очень важен. Это структура указателей на функции для работы с
нашим устройством. Наш модуль содержит таблицу доступных функций;
а операционная система вызывает нужную функцию, когда пользова-
тельской программе нужно выполнить операцию с файлом устройства
(открытие/закрытие, чтение/запись). Таблица функций символьного
устройства хранится в структуре Ше^орегагюпз, которая передается при
регистрации устройства.
После регистрации драйвера устройства происходит поиск устройств
данного типа. Причем этот поиск должен произвести сам модуль. Для
простоты будем считать, что у нас всего два устройства. Нам нужно
создать эти два устройства, предварительно вычислив старший номер
устройства. Напишем модуль, который помимо регистрации устройства
выводил бы его старший номер — потом мы его будем использовать при
создании устройства.
Листинг 28.в- Драйвер устройства /йбу/йеу)се
(без структуры ТНе_орегабопз)
Мейпе ЖЮПЬЕ
#деПпе _КЕВЫЕЬ_
#1пс1иве
#1.пс1ийе
#1псГиде
#1псХиде
#1пс1иде
#1нсХиде
<11пих/тоди1е .Ь.>
<Ипих/1п1Ь. Н>
<11пих/кегпе1.И>
<11пих/Гя.Ь>
<11пих/горогб.Ъ>
<11пих/8сЬед.п>
// регистрация устройств
// работа с портами ввода/вывода
// резервирование прерывания
1/ Имя нашего устройства
МеЕГпе ПЁУ„дамЕ "бег!се
// Порты ввода-вывода нашего устройства
МеГ1пе РОНТ..5ТАЙ.Т 0x2000
МеНпе РОЯТ^ОТУ 10
// Память нашего устройства
#ЙеЕ1пе МЕМ„ЙТАЙТ 0x20000000
МеИпе МЕМ„0ТУ 0x2 0
1/ Номер прерывания для нашего устройства
йдеПпе 1й<2„ЖМ 9
МОРГГЕ_АОТИ(Ж (" Геп! я Ко11вп1 сЪепко бйз 11аЬв@та 11. ги*)
МООиЪЕ„ОЕЕСВ.1РТ10Н("Ыпих кегпе1 тоди1ея);
// Старший номер файла устройства
вЬаГ1с 1пЬ Ма;)ог;
// Структура И1е_орегаЫоп8 - пока пустая,
// но вскоре мы ее напишем
ясгисГ ГИе_орегаР1оп8 ЕС;
// Обработчик прерывания
Vо^д 1гц_1тапй1ег ЦпЬ 1гд, уогб *<3еу_±д, я-ЬгисЬ рС_гедв
*гедв)
{
гебигп;
}
{.
/7 регистрируем устройство
рг1пХк(вМу тойиХе: зХагХ1пд..Лп’’);
Ма^ог = гед1з€ег_скгйеУ{0, ОЕУ_ИйМЕ> &Е0);
IX (Ма]ог < 0> {
// Устройство не зарегистрировано
ргХпкк("Му шойиХе: гедХвкгаМоп ЕаИейХп*);
геХигп МаЗог;
}
рг1гЛк("1^ тсйаХе: йеу1се гедхвкегей, ищот гмйзег = %й\п" ,Мадог).;
// Резервирование портов ввода-вывода
рг1пЕк("Му гаойиХе; аНосаСтпд 1о рогЬвХп");
IX (сЬеск„гед10П(РОКТ„ЗТАКТ, РОЙТ^ОТУ))
{
ргХпгк(”Му тойиХех аИосаЫоп 1о ротхз ХаЫеЙХп");
геЕигп -ЕВиЗУ;
}
гедие5С„гед1ои(ЮКТ_ЗТАКТ, ₽ОВТ_СТУ, ПЕУ_МАМЕ) ;
ргхигк ("Му тойи1е: 1о рогкв а11осаЬей\п*);
// Резервирование памяти
IX {сЬеск_тет_гед1оп(МЕМ_8ТАВТ, МЕМ_ОТУ))
(
рг1пск("Му шойиХе: тетогу аПосаЫоп Ха11ей\п*);
ге!еа8е_гед1оп(Р0ВТ_ЗТАКТ, Р0ЙТ_0ТУ);
геХигп -ЕВиЗУ;
)
гедиевХ^ейигвд1оп(МЕМ^$ТАКТ, МЕМ„ОТУ, ПЕУ_НАМЕ) ;
ргХпХк ("Му тоЙиХе: шетогу аПосаРейХп*) ;
/I Резервирование прерывания
IX (гедиенХ_1гд(1К<2_МиМ, 1гд_Ьапй1ег, О, ПЕУ_НАМЕ, ЮЪЪ))
{
рг1пек("Му тойиХе: ГКО аПосаЫоп ХаПеЙХп*);
ге1еаве_те1п_гедхоп(МЕМ_8ТАКТ, МЕМ_С2Т?) ;
ге1еазе_гед1оп (РОКТ_ЗТАКТ, РОКТ_ОТ?У) ;
геЕцгп -ЕВОЭУ;
}
ргхпбк ("Му тойи1е: 1К0 аИосаСейУп") ;
геСихп 0;
}
уо!с1 с1еапир_то<3и1е ()
{
// Освобождаем порты ввода-вывода
ге1еазе_гед1оп(Р0КТ_ЗТАР.Т, РОКТ_<2ТУ) ;
рг1П0к("Му пгсмЗиХе: геТеаве 1о рогб8\п");
// Освобождаем память
ге1еазо_теи1„гед1оп (МЕМ_5ТАЙТГ МЕМ_ОТУ) ;
рг1пЬк(*Му шо<1и1е: геТеаве тетогу\п") ;
// Освобождаем прерывание
Егее_1гд.(1.КО„НиМ,ШЬЬ) ;
ргхпЕк(*Му тоби1е: геХеазе 1гд\п");
II Отменяем регистрацию устройства
IX (цпгед1зЕег_скгсЗеУ(Ма^ог, 0Е7_НАМЕ) < $М
рг1пбк(”Му пю<1и1е: ааппоб Со ипгедхвбёг беу1се\п“);
}
рг1пЬк("Му пто<3и1е: детгсе ипгедХвбегейХп*) ;
гебигп;
)
При загрузке модуля вы увидите следующее сообщение:
Му тойи1е: <3еу1се гедХаСегеб, та^от пшпЪег = 255
Конечно, кроме этого сообщения будут и другие, но нас они не интере-
суют. Почему именно это сообщение так важно для нас? В первой части
сообщения говорится, что наше устройство успешно зарегистрировано,
а во второй сообщается старший номер устройства, который мы будем
использовать для создания устройств Меу/с1еу!се0 и /с1еу/с1еУ!се1.
Вы не забыли, что нам еще нужно создать два устройства типа йесюе,
чтобы программы могли работать с ними? Перейдите в каталог /йеу и
от имени суперпользователя выполните команды:
# ткпоб. <3^1се с 255 О
# ткпоД йеV^Сй с 255 1
Здесь 255 — это старший номер устройства (у вас он будет другим), 0 и 1 —
младшие номера устройств. После выполнения данных команд будут
созданы два файла устройств — /деV/с^еV^сеО и /бк^/беухсе!.
После регистрации устройства функцией !'ефч(сг_с11гс1е\() мы пыта-
емся захватить диапазон портов. Для этого предназначена функция
гецие51_гефоп(), но перед ее вызовом мы должны убедиться, что нужный
нам диапазон не используется (функция сйеск_гефоп()). Затем, если нуж-
но, мы резервируем память для нашего устройства. Для резервирования
памяти используется функция гецие$1_пзет_ге§1оп(), а для проверки воз-
можности захвата памяти предназначена функция с11еск_гпст_гефоп().
После успешной регистрации памяти можно попытаться захватить ГКО —
функция гедиек1_1гц().
Предположим, что на каком-то этапе регистрации модуля произошла
ошибка. Если мы не смогли зарегистрировать порты ввода/вывода, вряд ли
имеет смысл продолжать работу. Если же ошибка произошла при резерви-
ровании памяти, то перед завершением работы модуля нам нужно освобо-
дить порты ввода/вывода, которые мы зарегистрировали на предыдущем
этапе. Аналогично пощупаем при ошибке захвата ГКО — освобождаем
порты и память. Функции ге1еаве__гг1еи1„гед1оп () ,ге1еаве_гед1оп
и Г г ее„„1 гд () используются для освобождения памяти, портов и 1КО
соответственно.
Обратите внимание: мы написали драйвер так, что он захватывает порты
и память от имени одною устройства — 1>ЕУ_НАМЕ. В реальности все
гораздо сложнее; нужно захватывать ресурсы для каждого устройства
данного типа. К тому же придется предусмотреть поиск устройств моду-
лем: в нашем случае мы знаем, что устройств только два, но у конечного
пользователя таких устройств может быть больше или меньше, поэтому
наш модуль не будет универсален, если он будет поддерживать только
два устройства.
28.4. Операции над устройством.
Поиск устройств
Наш модуль пока ещё не может называться «драйвером» в прямом смысле
этого слова: устройство-то он регистрирует, но не позволяет выполнить
ни одной операции с ним — ведь структура Гйе орегабопз пуста.
Кроме структуры Ше_орегабоцз нам еще понадобится структура для
хранения информации о состоянии устройства, а так как устройств у нас
два, то нужен также массив структур для хранения состояния каждого
устройства. Индексами массива будут младшие номера устройств.
// Структура для хранения состояния устройства
гисЬ |ЗеV^се_т^н^аЕе
1пС <5еушореп; !! 1 - устройство открыто, 0 ~ закрыто
$$1ке„Л ЬуРе^геай; II Количество прочитанных
// из устройства байтов
зв1ге_С ЬуГе„.иг1се; // Количество записанных байтов
};
// Массив для хранения информации о состоянии устройств
вбаЫс нСгисС <1еу1се_вСаГ.е яСаСе[2);
В принципе, можно обойтись и без кода поиска устройств — без него
модуль будет проще (а значит, надежнее), да и работать он будет быстрее.
Обойти поиск устройств можно следующим образом. Мы не знаем, сколь-
ко устройств типа беуюе будет у конечного пользователя. Поэтому вместо
массива Ма(е (он будет описан ниже) нужно использовать динамический
список, который будет содержать информацию© каждом устройстве типа
с1еУ1се. При загрузке модуля список будет содержать всего один элемент —
для устройства /а^ууаеч1с©0. Если устройств этого типа ц системе нет
вообще, будем Просто считать, что устройство аехпсеО закрыто, а при
попытке обращения к нему будем сообщать, что оно занято. По мере
поступления запросов программ на открытие других устройств /йеу/
с1еч1с-еХ будем добавлять в наш список новые элементы.
Если же вам все-таки хочется узнать конкретное количество устройств
/беу/деМсеХ, установленных у пользователя, можно просто просмотреть
содержимое каталога /бет и посчитать количество файлов беуюе*.
Все готово для того, чтобы написать функцию открытия устройства.
Листинг 28.7. Функция открытия устройства
зг.абтс 1пб деУ1се„ореп(вГ-гисг. 1пос5е *1пойе, вЯгисС .Е11е *Гр)
{
зыисб йеу1се_зСабе *йеу„кСабе;
рг!пЬк^вМу тос!и1е: Уту со ореп ОечГсе «Шз т!пог питЬег
%а\п", М1М0Й(1по^е->1„гс1еу} ) ;
беУ_зСабе = &зраЬе [М1М0В (1гюде->1__тйеу) ] ;
1.Г (<Зеу_зГ.абе->с1еу_ореп)
{
рг!пск{"ПеУтяе 1я Ьиву\п");
геГит -ЕВУЗУ;
)
йеу_5Сабе-><3.еу_ореп. - 1;
йеУ__вСаЬе->Ьубе_геас1 * 0;
аеУ_зСаЬе~>Ьубе„иг1б,е - 0;
МОБ_1КС„и5Е_СОПКТ;
теТпгп 0;
)
Младший номер устройства мы получаем с помощью вызова МШОК
(йю<.1е->1г<1еу). Если устройство уже открыто, мы выводим сообщение:
Ьеуйе 15 Ьи5у. В противном случае устанавливаем флаг открытия устрой-
ства, обнуляем Ьу1е_геас1 и Ьу1е_5УпГе, а также увеличиваем счетчик ис-
пользования данного модуля (МОО_1.\С_1кЧ!-._СОи^тТ).
Функция закрытия устройства сбрасывает флаг с!еу_ореп и уменьшает
счетчик использования устройства.
Листинг 28.8. Функция закрытия устройства
зсасгс 1пп <1еч1се_с1озе(8СгисС 1ло<1е *1гтос1е, зЕгисЪ Е11е *^р)
{
езЬгнсс деУ1се_зЬа1'е *йеу_аЬаСе ;
рг1пЬк("Му то<3и1е: Сгу Со с1озе б.еутсе «НИ т!пог питЬег
%й\п", М1ЫОЙ(1побе~>1_г<Зеу));
беу^зСаСе = &8ба1:е [М1ЫОЙ (1пойе->1_гДеу) ] ;
И < ’<3.еу_8Са!:е->деу_ореп)
{
рг1пЬк("0еу1се 1б поЬ ореп\п");
геСигп 0;
}
аеу_зСаСе->аеУ_ореп=0;
МОС_ПЕС„ОЗЕ_СОШТ;
геЬигп 0;
}
Теперь нам нужно указать ядру, какие функции нужно использовать для
открытия и закрытия устройства:
вРгчсТ I11е_орегаТ1оп8 ГО =
ореп: с!^1се_ореп,
геХеаее: <ЗеV^се__с1о5е
} ;
Полный код модуля устройства <ЗеУ1Се вместе с функциями открытия и
закрытия устройства, а также структурой й1е_орегаНоп$ приведен в сле-
дующем листинге:
Листинг 28.9. Модуль устройства Нечлсе (той»1е.с>
МеПпе МОБЦЪЕ
МеИпе ____КЕНМЕЬ__
#1пс1и<1е <11пих/тойо1е.И>
#1пс1и<1е <11пих/1п1Ь.Ъ>
#1пс1ийе <Ипих/кете1 .Ь>
#1пс1ийе <11пих/Ез.И> // регистрация устройств
#1пс1ийе <11пих/1орогЕ.Р> // работа с портами ввода/вывода
#1пс1ийе<11пих/всЬей.Ъ> /7 резервирование прерывания
// Имя нашего устройства
МеПпе РЕУ_ИАМЕ “беу/се"
// Порты ввода-вывода нашего устройства
МеПпе РОВТ„ЗТАНТ 0x2 000
МеЕтпе РОЙТ-СШ 10
// Память нашего устройства.
МеЕ1пе МЕМ„5ТАКТ 0x20000000
ИеНпе МЕМ_0ТУ 0x2 0
II Номер прерывания для нашего устройства
МеНпе 1К0_МЦМ 9
ЕЮООЪЕ„АЖНОВ ("Ееп1н КоИвпгспепко йЬз11аЬ5@шаИ. ги" ) ;
^ООРЕЕ_ОЕЗ€й1РТ1ОЫ("Ыпих кегпе! 1Ыи1е"Н
// Старший номер файла устройства
эЬаГгс 1пЬ Ма^о!';
// Структура 1е_орегаГ.1опв - пока пустая, но вскоре мы
ее напишем
зЬгисС Е11е_орегаС1опз РО
{
ореп: <3еу1се__ореп,
ге1е.аее: <1еу1се„.с1ояе
};
// Структура для хранения состояния устройства
зсгисЬ
{
1пЬ с!еу_ореп; // 1 — устройство открыто., О - закрыто
зз!ке_С Ьубе_геай; II Количество прочитанных байтов из
устройства
зз1ге_Р ЬуЬе_«г1Се; /./КрВИ^а.ство задЙе^ЙЙЙх байтов-
};
// Массив для хранения информации о состоянии устройств
йСаЫс вЪгисС йеУ1се„8баЬе нбаЬе[2];
// Обработчик прерывания
уо!б 1гд_Иапй1ег (1пС 1гд, уоЫ *йеу_Хс1, вбгцсб рЬ„гедз
*гедз)
(
геЬигп;
}
1пГ 1п1С_шоаи1е()
(
II Регистрируем устройство
р.г1пЬк ("Му тойиХе: эЬагЫпд..Лп") ;
Ма}ог = гед1зСег_сИгдеу(0, РЕУ_НАМЕ, &К0);
1Г (Ма 5ог < 0) (
// Устройство не зарегистрировано
рг1пск("Му пюйиТег гедтвЬгаЫоп Га11еб\п*);
гехигп Ма^ог;
}
рг1пСк(яМу тойи!е: беухсе. гедхвРегеб, шауог пшпбег = %б\
п",Ма]ог);
// Резервирование портов ввода-вывода
рггпЬк ("Му тоби1е: аИосаЫпд 1о рогб8\п*)?
И (сЬеск_гед!оп(РОКТЦЗТАНТ, РОВТ_0ТУ))
{
рг!пГк("Му тойиТе: аНосаЫоп го рогов {а11еб\пн);
гебигп -ЕВЦ5У;
)
гедиезЬ_гед1од ( РОКТ_5ТАЙТ, РОЙТ_<2ТУ, ОЕУ_МАМЕ) ;
ргтпЬк ("Му тойи1е: го ротбз а11осаЬеб\п");
// Резервирование памяти
1Е (сЙеск„шет_гед1оп(МЕМ„5ТАКТ, МЕМ_ОТУ))
{
тойиХе: тешогу аНосаЫоп ^ах1ей\п") ;
ге1еа®®^Г0д1оп (РОНТ_5ТАЕТ, Р0КТ_ОТУ)
герига -ВВОЗУ;
)
геф1еБЬ„теи_гед1оп(МЕМ_8ТАКТ, МЕМ„ОТУ>:.-ВЕУ^КАМЕ) -;
рг1пЬк ("Му тодиХе: тетогу аХХосаГеДХп'’) ;
// Резервирование прерывания
И Лгедие8б_1гд{1Н0_М0М, 1гд_ЪапаХег, О, ОЕУ_КАМЕ, ШЫЛ )
{
ргХпбк(’Му тойиХе: 1К0 аНосаЫоп Га11ед\п“);
ге1еазе_тёП1_гед1оп(МЕМ_8ТАВТ, МЕМ„0ТЯ ;
геХеавеигедхоп(РОЙТ_ЗТАНТ, РОРТ„0ТУ);
текигИ -ЕВП5У;
}
рг!пРк ("Му ШодиХе: 1В0 а11осаТе<3\п") ;
геГита 0;
}
Vо^й с1еапир_то<3и1е ()
I
// Освобождаем порты ввода-вывода
ге1еаве_гед1оп(Р0йТ_5ТАКТ, РОНТ„ОТУ);
ртгпЬкРМу то<3а1е: геХеазе 1о рогРзХп");
// Освобождаем память
ге1еазе_шеп1„гед1оп !МЕМ_ЗТАЙТ, МЕМ_СТУ) ;
рг1пЪк("Му тоби1е: геХеаве тетогуХп");
// Освобождаем прерывание
Ггее 1гд(1ЙО ЖМ.КЦЬЫ ;
рг1пЬк(’Му тоЛиХе: геХеаве ХгдХп*);
/7 Отменяем регистрацию устройства
17 (ипгед18бег_.скгаеу(МаЗог, ОЕУ_МАМЕ) < 0) (
рг1пбк(жМу тобц1е: саппоЬ во иптедхвЬег <^еV^се\п''Н
}
ргХпек(ЛМу то<Эи1е: 4$УХсе цпгедХвЬегеД\пи) ;
гебигп;
)
зЬаС1с 1пй йеу!се_ореп(всгисй 1пойе *1пойе, .зйгисй Е11е *Ер)
{
зйгисй с1еу1се_БЬайе *йеу_нйайе;
рг1пйк("Му то<3и!е: йгу йо ореп деутсе м!йЬ ттпог питЬег
%а\п", М1К0К(1паае->1„гаеУ>);
<1еу„зйайе = Дзйайе [МХЫОК(1по<Зе->1_г<ЗеуН ;
IX(Йеу_вйайе~>аеу_рреп)
{
ргХпйк("Сеутзе 1з Ъизу\пл);
гейигп -ЕВиЗУ;
деу_зйаСе->аеу„ореп = 1;
аеу_зйайе->Ьуйе_геаа = 0;
д.еу_нЬаке->Ьуйе__1Яг1йе ~ 0;
МОП_1МС_и5Е_СОВДТ;
гейигп 0;
}
зйай!с йпй с!еу1се_с1озе(зйгисй 1пос1е *1пойе, зйгисй Ше
*Хр)
{
зйгисй Реу1се_зйайе *беу__8йайе,-
рг!пйк("му тодиХе: йгу йо сХозе йеуХсе гсХйй тйпог пипйэег
%<3\п* , М1ИОК(1поае->1„гаеу)) ;
'деу_зйайе ~ &з.йайе [М1ЫОК(1по<3е->1_гс1еу) ];
И(!деу_зйаЬе->деу_ореп)
{
рг1пйк("йеугсе 1з пой ореп\п");
гейигп 0;
}
с1еу_5 й а й е - ><3еу_ореп=0 ;
МОО_ОЕС_О 5 Е-СООТИ?;
гейигп 0;
}
Теперь модуль для абстрактного устройства скуке готов. Вы можете
написать небольшую программку, которая пыталась бы выполнить опе-
рации с нашим устройством: открыть его и закрыть — других операций
мы не определили. Для определения других действий используется та же
структура Ше_орегайоп8. Листинг 28.10 показывает, как она объявлена в
файле /из г /зтс/Ипих-2.4 /1пс1иде / Ипих / Ез .Н.
Листинг 28.10. Фрагмент файла /иег/$гс/!)пих-2.4/тс1и<1е/ЙпихД5.(1
еЕгисЕ Г11е_орегак1оп5 {
вЕгисЕ тойи1е *о«пег;
1оП_Е (*11веек) (аЕгисЕ Ше 1оЁЕ_Е, 1пЕ) ;
581ге_с (*геай) (зЕгисЕ Ше *, сЬаг *, зхге„Е, 1оЕЕ_Е *) ;
ез1ге_с (*^гЬЕе) (зЕгисС И1е *, сопзС сЬат *,
в12е_С , 1оК_1: *) ;
1пЕ (*геайс11г) (зЕгисЕ Ше *, уо1с! *, Н11с!1г_Е) ;
ипзЕдпеб 1пЕ (*ро!1) (зЕгисЕ Ше *,
аЕгисЕ роН_ЕаЫе_вСгисЕ *) ;
хпг (*1осС1) (зЕгисЕ 1по<1е *, зЕгиср Ше *. ипвздпей
1пЕ, ипктдпед 1опд);
1пЕ (*ттар) (вЕгисЕ ГНе *, зЕгисЕ ута_агеа„зЕгисЕ *};
1пЕ (*ореп) (вЕгисЕ 1пойе *, вЕгисЕ ГНе *);
1пЕ (*Е1инИ) (вЕгисЕ Ше *) ;
1пЕ (*ге1еайе) (еЕгисЕ хшэйе *, зЕгисЕ Ше *);
1пЕ (*Езупс) (вЕгисЕ ЕНе *, яЕгисЕ йепЕгу *,
1пЕ ваЕазупс);
1пЕ (*Еазупс) (1пЕ, зЕтисЕ ЕНе *, 1пЕ);
1пЕ С*1оск) (вЕгисЕ И1е *, 1пЕ, вЕгисЕ ЕНе„1оск *) ;
3512е__Е Рге.айу) (вЕгисЕ Ше *, сопзЕ зЕгисЕ тотес *,
ипвтдпйй. 1опд, 1оЕЕ_Е *);
зз1ге_Е (*мг1Ееу) (зЕгисЕ ЕНе *, сопзЕ зЕгисЕ 1ОУес *,
ип51дпей 1опд, 1оЕЕ_е *);
бз12е_Е (*зеп<3раде) (зЕгисЕ Ше *, вЕгисЕ раде *, 1.пЕ,
з1гс_Е, 1оЕЕ„Е *, тпЕ);
ипзЕдпей 1опд (*де.Е_ЦШпарреЙ__агеа) (е.ЕгисЕ Ше *,
ипв1дпе<Я. 1опд, ипвхдпей. 1опд,
ипй1дпей 1опд, ипзтдпей 1опд);
Как использовать структуру Ше^орегаНоп», думаю, ясно. Например, нам
нужно описать обработчики записи и чтения устройства — функции
<1еугсе_тйе() и деу1се_геас1():
вЕгисЕ Н1е„орегаЕ1опз Р0 =
(
ореп: деУ1се__дреп,
ге1еаяе: <3еу1се_с1рве
геай: йеу!се_геай,
мг1Ее: <Зеу1се_нг1Ее
};
Обработчики чтения и записи пишутся «по образу и подобию» обра-
ботчиков открытия и закрытия устройства, то есть сначала нам нужно
определить младший номер с помощью вызова М11\!ОК(), а затем про-
извести операцию с устройством.
Приложение
ТАБЛИЦЫ
СООТВЕТСТВИЯ
МНООУУЗ-
И иШХ-ПРОГРАММ
°--- РАБОТА В ИНТЕРНЕТ
о--РАБОТА с файлами
ПРИКЛАДНЫЕ И СИСТЕМНЫЕ
ПРОГРАММЫ
о---ОФИСНЫЕ ПРИЛОЖЕНИЯ
МУЛЬТИМЕДИА
РАЗРАБОТКА ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ
СУБД
КОМПИЛЯЦИЯ МОДУЛЯ
МАТЕМАТИЧЕСКИЕ ПАКЕТЫ
ИГРЫ
1ЛЧЫХ ПОЛНОЕ РУКОВОДСТВО
С помощью приведенных ниже таблиц вы сможете подобрать достой-
ный аналог для вашей АУтскжа-программы. При заполнении таблицы
я руководствовался простым правилом: чтобы ХУ1пдо\У5-программа и
ее Ъйшх-аналог были в одной весовой категории, то есть обладали
примерно одинаковыми возможностями.
Работа в Интернет
ОДпасте»- программе Ыпих-Аналог Комментарий
1пТвгпе! ЕхрЮгег Ыеисаре Ка^да1ос/Мо2П1а Думаю, что обе эти программы в представлении и особых комментариях не нуждаются — мы их знаем еще со времен УУюйотгз
Коприегог Вряд ли Завоеватель сможет выступить в роли !птегпет ЕхрГатет'а. Но для походов на не очень «навороченные» (с использованием РГавб, УВМЦ апплеты йауа) сайты его возможностей вполне хватит
6а1еоп Данный браузер основан на движке МогЙа. поэтому он с успехом может заменить самого Мойну!
1Е Гог Ьпих Компания М10ГО&ОН портировала программу на платформу Опитс Честно говоря, *оспика ИА для Линуко я в глаза не видел, но судя по отзывам, программа линуксоидам не понравилась
Орега Орега Гог ипих Уже вышла восьмая версия этого популярного браузера, и она доступна пользователям ипих. Но рекомендуется воспользоваться стабильной версией 7.54 — это проверенная временем, надежная версия
МогШа й)г Уйпдбнге МогШа Гог Ипих Ипих-аналог обладает всеми возможностями УУ|П йомга программы
Оийоок Х1гтиап &о1иг!оп Полный аналог знаменитой программы Оо!!оок — программы похожи друг на друга как две капли воды
К Май К Май вполне справится с возложенной на него задачей — служить заменителем для ОоИоок. Организация учетных записей К Ма11 очень напоминает ОиНоок. что делает эти две программы несколько похожими друг недруга. Конечно, К Май и ООДоок не очень похожи внешне, но идея остается прежней. Нужно заметить, что К Май не заменит полную версию ОоИоок. скорее всего. он «потянет» на роль аналога ОибооХ Ехртезв
ОиНоок (чтение новостей) Кпойе Программа обладает достаточно удобным интерфейсом, что позволяет ставить ее в один ряд с клиентом новостей программы Оийос4<
Петэдре Мезвепдег Меввепдег — это более зрелый, по сравнению с Кпоре, продукт, позволяющий читать не только почту по протоколам РОРЗ и !МРЗ, но и новости
программа Цпих-Аналог Комментарий
ТЪе ВаГ! 2у|рЬееН Программа ТЪе ВаГ! давно стала культовой, а ее разработ- чики, видно, не спешат портировать программу на плат- форму йгшх. К счастью, мир не без добрых людей: разработчик Н(гоуик( Уашатою {скорее всего, японец) написал Клик-аналог программы ТЪе ВаТ! Программа 5у)рЪееб заслуживает отдельного разговора, поэтому о ней мы поговорим немного позже
ТЬе ВаН К Ма(1 Программа К Мак тоже может выступать в роли аналога для программы ТНе ВаК, но с меньшим успехам, чем программа Зу|рЛееб
НазЛСвГ. ЯедеТ. СоШНэ менеджеры закачки файлов) Ооулпоайег Гог X Мне очень понравилась эта программа — по своим возможностям она не уступает ни одной из перечисленных У/Фсктоз-программ
КдеГ(или СаИоо) Довольно неплохой загрузчик файлов
У/де! Данная программа работает в консоли, то есть не имеет графического интерфейса, но возможности данной программы заслуживают уважения
Тйероп Рго (полная загрузка сайта) Роул|(оабег Гог х Программа Ооып(оайег ГогХ может использоваться как для загрузки одного файла, так и длязакачки целых сайтов
То же самое можно сказать и о программе ч/дег
РТР-клиенты (9иШ РгооГ РТР) 1. СПр 2.»др 3. псНр Первые две программы более удобны, поскольку они являются графическими приложениями. Третья програм- ма — пейр — работает в консоли, но обладает довольно полезными функциями, например, докачка файла в случае разрыва соединения или закачка файлов по шаблону
ГСО. М5М А1М 1. Кед 2. Э|СЦ 3. плед 4. Оа(т 5. 8!тр(е |ФЛап( гпеззепдег Существует Много разновидностей |СБ-клиента. вы можете выбрать один из них на свой вкус
М|гс (1НС-клиент) ХНаГ, КЫгс. Касс С (ЯС-клиентами также никогда не было проблем ~ ато только три наиболее удобные на мой взгляд (ЯС-клиента
Р1теи>а)1 (В!асЖЕ. АТОцаГО, ХопеА1агт) 1рТаЫее или (рсНаШ Обе эти программы являются стандартными и устанавли- ваются при установке любого дистрибутива Стих. Использовать графические оболочки для (риЫез или (рсПаюв (ктоубгеткаН, Нгечкай ВиИег) я не рекомендую, поскольку ни Одна оболочка не позволяет гибко настроить Йгеиап
ШиаМоые, СуЬегкт Хцасегоше, У1аиа1ЙоиГ Тот Моих, ггасегоиге. р(пд, ТсрРотр Программу У1зиа!Йои(е с успехом можно заменить программой ХТгасегфЛе или ее текстовой версией ГгасегоиТе, Пакет СуйегКИ можно заменить набором стандартных программ — ггасегоцТе, р(пд, пзЮокнр и Тсрбитр: полученная смесь будет мощнее, чем СуЬегКЦ
Фильтрация данных и роутинг (ВГасКЮЕ, АТСиагй. УДпАоиТе, 1МпОа1е) 5цц(й и гои(е Обе эти программы являются стандартными и обладают значительно большими возможностями, чем их УУ1пйадув-аналоги
УепгаРах еГах БГах Эти программы смогут заменить знаменитую программу УепТаРах
УФаГег, Е-Гуре Н1а(ег (дозвон к провайдеру) Кррр Б РРР ЮпТетеГ Звонить к провайдеру Опнх также умеет —не сомневайтесь, ведь ипцх создан для сети, как птица для полета
программа Ыних-Аналог Комментарий
Загрузка какала кррр!оад КЫпктаб Первая программа отображает график загрузки РРР-канала, а вторая — канала 15СМ
РетпоГе АОт!лй!га!ог (е1пе( зам Х-1епп!па! В отличие от УУгпфэнгз. где для удаленного администри- рования нужно устанавливать отделытую программу, в Цпих есть стандартные средства, с помощью которых можно управлять удаленкой машиной
НурегТйтпВД гптфот Небольшая программа с большими возможностями
Работа с файлами
программа Цпих-Аналог Комментарий
иогтоп Соттапйег, Уо1соу Соттапйег, РАВ МйгидМ Соттапрег Программа МШЫдбГ Соттапбег полностью заменяет популярную программу ?ус, Интерфейс программ практически одинаковый: МС, как и МС, обладает двумя панелями синего цвета и работает а текстовом режиме. Так как МС это файловый менеджер УФх (Ыпих), то он обладает специфическими для этой ОС функциями: операции с правами доступа, создания символических ссылок, поддержка сети (МР5, ГГР}
УУ|ПЙ0шз Соттапйег (Тош! Соттапбег) М10п(дП| Соттапйег Программа МС обладает всеми функциями указанных удапошз-лротрамм. Правда, а отличив от У/1пйоуга Сотгпяпйег, МС работает в текстовом режиме. Хотя имеется возможность запуска МС а терминале X: при этом программа будет реагировать на события X {например, щелчок мыши на кнопке Копировать)
ЦпСоттайег Удобный файловый менеджер. Программа доступна п о адресу |тНр:/Думушг идагло/Яи5йа/уй/1стФМт1
Кгааабег Программа обладает удобным интерфейсом и предназна- чена для работы а КОЕ. Поддерживает различные форматы архивов, обладает встроенными ГГР-клиентом и просмотрщиком графических файлов, Программа доступна по адресу бйр7/Ь’иааааг,зоргсеГогде.пе1/
Прикладные и системные программы
ИПгтОожя» программа Цпых-Аивлог Комментарий
Блокнот ХеФ1, дегйг, хеФ1 Любая из этих программ в состоянии заменить Блокнот
Всей, Яраб32, АФГрг Ка1е Программа Кз(в поддерживает Зв различных кодировок и подсветку синтаксиса дпяС,С++, Цата, Рэзса!, РНР, НТМЦ ВавН и других языков программирования
Программы - переводчики (Рготрт) Пока нет ни одного нормального переводчика
Словари (8осга>,. ирдуо) МоеНег, Моуа, Кзосга{ Любой из этих словарей способен заменить Цпдуо, хотя я не обещаю, что замена будет равноценней
ВДгмЕомя- прогрвмми Мпих-Аналог Комментарий
ААВ/ВДпЯАЯ НАЙ Тог ОпиХ Версия популярного архиватора для Упих * комментарии излишни
Агк Программа входит в состав утилит КОЕ (пакет кбеиб|) и поддерживает распространенные форматы архивов
!Мп7!Р Агк Все тот же Агк
Ст>г|р Удобный архиватор для среды СШОМЕ. Программу можно качать по адресу |1йр://'икчиг,деоеШез.сот/БШсопУаПеу/ 9757/дпсг1р.Ыт1
РОР РСР Тот Мпих Полный аналог У^пйотта-аерсии
ВМеЬ. АУР ОНЛТеб Тог Ипих, АУР Тог ипих Программы доступны по адресам Нйр://н™лУ.б™еЬти/ип1х/ и нИр.у/иулт.казретзку.ш/. соответственно
МзсопНд ОгакСопТ. ипихСопт (в Мапбгаке) зе(ир (в Йвб На!) гестатсопба-ХХХХ (я АН В.О) Думаю, с конфигураторами проблем у вас не будет
8ушет Соттапвег, РоукегОиез! Воо! Мад1с ию СгаЬ АБРЕоабег Асготйз 03 Зе1ес1ог Первые два загрузчика являются стандартными, и вы можете использовать любой из них на свой вкус. Третий — это стандартный загрузчик ОС АВР ипих, а последний ~~ это альтернативный загрузчик, доступный по адресу НПру/ичлч.астопю.га/
Диспетчер задач рз, Тор, й!ор, К(ор,.„ Без комментариев
МВМопИго , РСА!ея1 (измерение темпе- ратур и напряжений на материнской плате) КНеапЪСаге (ДЛЯ КОЕ) Программа не входит в состав КОЕ, поэтому ее нужно акачать самостоятельно М!р://ЬогперадезЛЪ-д(е5зеп.0е/ -Нд7229ДЬеакИсаге/таю. Мт!
РотязгОиеэт РапНто Мад(с ОвкОгаке Полный аналог РО Рвгййоп Мафо. Входит в состав Мапбгаке и Мапбгаке-подобных дистрибутивов
Р1Р5 Поставлялся на компакт-диске с дистрибутивами компании Яеб На! до версии 8.0. Сейчас згу программу можно найти в Интернете, но стоит ли? Ведь она уже не развивается. Поэтому лучижвоегюльзуйтесьпрограммой сми Раней — очень, очень удобная программа.
ОМИ Рагтей Программа доступна по адресу Ы!р7 /иллч.рпи .т»д/зо(Ъта । е/раНеб/рапеб, Мт)
Мониторинг 5. М. А. Я. Т - атрибутов винчестера ЗтагТзиИе Нбйетр-0.3 ЮЕ1оаб-0.г 1йе-зп1агТ ЗмагТеийе-г.Т 5тпагТптопкю)з Оценить работу данных программ не смог по техническим причинам — мой винчестер не относится к разряду -умных» (зптаб)
ЕсИзк Рб1зк Практически каждая ОС обладает своим аналогом програм- мы й!зк — ОС Цпих не является исключением из правил
5сапб)зк Таек Программа (вок умеет проверять не только файловые системы ех!2 и ех!3, но и любые другие при наличии плагина файловой системы
Офисные приложения
программа М пих-Аналог Комментарий
МЗОН1се Ореп ОШсе Данный пакет будет достойной заменой офисному стандарту де-факто — М5 ОШсе. Надеюсь, вы уже успели в атом убедиться
&аг ОГЯсе Это коммерческий вариант Ореп ОИсе. Точнее, Ореп СИбсе — это бесплатный вариант Ореп ОТбсе. Не знаю почему, но мне больше нравится Ореп 0№се. Нет, не потому, что он бесплатный, а какой-то более дружественный и более «шустрый»
К (Исе Скорее всего, данный пакет не сможет удовлетворить все ваши запросы, особенно, если вы до этого работали с М3 ОЭДсе
АОоЬе РЪо1оэПор 01МР Программу 01МР можно с успехом использовать в непро- фессиональных целях вместо РбоГояПар. Почему в непро- фессиональных? СйМР немного‘прихрамывает» при калибровке цветов и размеров, поэтому в профессиональной полиграфии его использование чревато небольшими {или большими} неприятностями
АйоЬе Асгобат К (Жив, ТеХ, 1уХ,... Многие Мпух-программы, работающие с документами, могут конвертировать их В формат РОР
АйоЬе АсгоКед Аеабег ХрйТ Данная программа (версия 0.9) поддерживает форматы РЭЕ 1.3, 1.4 (Асгоба! 4, 5, соответственно). Хр(Я присутст- вует во всех дистрибутивах, поэтому вам не придется ее долго искать в Интернет — она уже установлена а вашей системе
Асгоба! йаабег Гог илих ТУГ У* вообще комментарии излишни — компания «АбоЬе» давно выпускает версии АсгобаТа (начиная с версии 2.0) для Птах и других 1)пЬе-плзтформ
Соге! ОпйИ Соге! Ога« (ог Моих Как еы, наверное, знаете, компания Соге! давно выпустила версию Соге! Ога« для Мпих. Честно говоря, мне программа не понравилась. Во-первых, программа довольно медленна, потому что она запускается посредством эмулятора ИЛпе и ее нельзя назвать Плох-программой а полном смысле этого слова. Во-вторых, мне очень не понравилось. как программа работает с русскими шрифтами — русский язык больше похож на китайские иероглифы. Причем программа поддается настройке только в операционной системе Соге! Мпик. В-третьих, программа очень не стабильна. Исходя из всего этого, позвольте мне отрекомендовать вам следующую программу »
Ореп Огада Данная программа входит в состав пакета Ореп ОГбсе. Возможно, она не заменит Соге1 Ога» полностью, однако если выбирать между Соге! Огэдг (ог ипэх и Ореп Ога», я бы выбрал последнее
Кагбоп Неплохой векторный редактор. появившийсп в Кое 3.3 (до этого основным вентерным редактором КОЕ был К Шмягзтог). Программа проста и даже проще, чем ОО Ога«. поэтому рассчитывать на ее функциональность не Приходится. Однако попробуйте поработать с программой -- вдруг вам понравится
Раде Макет ТеХ, ТаГеХ Издательская система ТеХ, разработанная Д, Кнутом, является одной Уй самых лучших издательских систем. Единственный ее недостаток — это отсутствие графичес- кого интерфейса пользователя. Хотя, этот недостаток иногда перерастает в достоинство — программу можно использовать даже на стареньких 3№-х компьютерах
бспРиз Данная программа обладает интерфейсом пользователя, системой управления цветом (Со1ог МападетепТ Бумегп), достаточно удобна в использовании
программа илих-Аиалог Комментарий
Композеры и НТМи-редакторы ОиагЛа Р1из Очень рекомендую данный НТМС-редактор. С помощью Оиапт'ы ем не только отредактируете вашу ограничу и обмочите ед на вашем сервер?*, но и проверите правописание, а также соответствие написанного коду НТМ1.-стандарга
Рте Неабес Коока Работа программы Коокв оставляет желать лучшего. К тому же Корка не является ОСП, а только сканирует документ. Я бы вам посоветовал запускать Йпе Неайет через Ут УУаге или йЧпейп. Кроме программы Коока имеется программка Оосг. но она умеет распознавать только английский текст
30 Мах (ппоиаДОп 30 1ппрма<1оп в полной мере не заменит вам 30 Мах. но можно надеяться* чте е скором времени, это случится — в программу 1пиоиабрп 30 можно добавлять плагины
АСОБее (5ОУ50Ж (30У(еи> послужит равноценной заменой популярному просмотрщику графических файлов •— АСОбее
М5 Мопеу ВЫОсааП Небольшая программка, позволяющая управлять своими финансами
Финансы без проблем Финансы без проблем для йпих Портированная версия «Финансоаидая Цпих. Программа доступна на компакт-диске
?С: Бухгалтерия Апапаз Не следует надеяться, что Апапаз полностью заменит Бухгалтёрию от 1С. Программу можно скачать по адресу |-.йр://апапВ5Лпих.ги.пеу
АиЮСАО КМо, ОСАО, Уагсоп,... В Интернете вы найдете не только эти программы, но и сопровождающую их документацию - поэкспериментируйте с ними, возможно, для себя вы найдете доступную замену АыпСАО
Мультимедиа
программа ипих-Аналог Комментарий
АиФобгаЬег Опр сйПаЗедк Программа Блр белее функциональна, чем АийоСтэЬег, а МРЗ- кодок 1ате обеспечивает качественное сжатие музыки в формате МРЗ
УИпАМР ХММЗ Программа ХММ5—это полный аналог программы МАпАтр, ХММ5 даже поддерживает скины УйпАМР
Проигрыватель АиФа СО КзСО Программа является стандартным проигрывателем компакт-дисков в Цпих
уунтйст Мваи №уег Х>пе Х’шв поддерживает форматы видео МРЕС, МР4, <370, АУ! (У|йео (аг ЗДпбот)
Мега, Базу СО Сгеайэт Хсбгоаз! КопСО сФесогб С помощью этих программ вы сможете записать собственный СО, Подробно о процессе записи СО вы сможете прочитать а этой книге
Преобразование ОУО в 0<тХ Пчйгф Программа позволяет преобразовать один 070-диск а несколько дисков формата 01уХ
Яакб Р1ауег Плагины для Ые1зсаре/МогЙ1а/ Копдоегот Браузеры ЫеТвсаре/МогШа/Копоиегог обладают встроенными плагинами для просмотра ЯазП
МЛпйспга- программа Е1пих-Аналог Комментарий
Масгоитеб1а Нгеисткз 61МР Программа Ягеюогкз с успехом заменится тем же 6!МР'ом
Маю Асгог Ма1п Ас(ог Гог Опих Для программы Маю Лстог давно создан ее полноценный аналог для и пи х, Программа Ничем не уступает аналогичной У^пЛочгз-программе, Мат Асюг Тог к!пих может также послужить заменой программе МоУе Макет
Программы просмотра телепередач через ТУ-тюнер ХаиНч ЕпотеТУ К»1ПТУ Программа Хч/а(ч является стандартной и обладает большими возможностями по сравнению с (ЗпотеТУ и КилпТУ. ХадаТч рассматривается в главе 17 «Видео и видеомонтаж в Опох»
Неа!Р1ауег Яеа!Р1ауег 1ог Цпих Портированная версия Неа1Р1ауег- Скачать можно здесь: ЬЛрУ/зсорез ,геа1 ,сот/геа!/р(ауег/сп 1х/нп(х .Н(т1
СЫскИте Р1ауег ОиюкИте Р!ауег для Плох Полный аналог УУЮРо^з-версии
5оипй Рогде У/ауе Гогде, Зох Данные программы можно скачать по адресам Мр://иллл1Г.Пт.го/игауеГсгде/ и ПИр://Ьогпе, вр гупек согп/~сЬадню11/вох .Н1т I соответственно
кате (МРЗ - кодек) кате Тог Опих Портированная версия
Разработка программного обеспечения
У/3 пев со- программа Цпих-Аналог Комментарий
Ре1ры Ку11х и КуИх Регзопа! ЕйШоп Ку1|х Реглола) ЕгЯНоп является бесплатной программой
Равса! Ргееравса! Сеободиораспустраняемый 32-битный компилятор
ТигЬоРэгса! Ргееразса) + Мо1ог МсГаг—это редактор с подсветкой синтаксиса^ подобный тому, который иснальзуетСя в среде Тугбо РазсаГ Мс1ог доступен по адресу 1тйр://копат,огд.ра/то1ог
ТугЬо С ОСС »- Мсявг ССС —• это Ше СШ С СотрНег
Вог!алй С++ 8Ш!0ег 013 0ез!дпег + Кйехе1рр В полней степени 0(3 □ев1дпег все же заменить С ВеИбег не может, но написать небольшое приложение с использованием библиотеки О1, можно
Сойе Еогде Среда разработки приложений
Ва$(с НЬаяс Любителям Бейсика рекомендую заглянуть на страничку пир: //Ызаз;с. зоигсеГогде. пеу
ЗтаНВазШ Если НЬа&!с вам не понравится, загляните сюда Пйй://зта11Ьа5!с.8оигое1огде.пе1/
У|вРа1Рго|од □Ш Рго!од Программа доступна по адресу Мгр :/,'раи [ В ас. (ппа .Гг/~б!аг/дпи - рго! од
ТогЬо А55ет01ег ЫАЗМ Программа входит в состав многих дистрибутивов, Домашняя страничка -- М1р://т<млаеЬ-зйев.со.Ы</паат
РгошРаде Могйа Сотровег Композер МоаПй поддерживает принцип И/У517776
3 ВоЯРег й вцИбег 1ог 1(пох Портированная версия
Нгеиг В1е» Программа доступна по адресу П!1р://Ые».воегсе{огде.пе1/
РНР РНР Гог Стих Входит в состав любого дистрибутива
СУБД
ЭДп&лга* программа ипех-Аналог Комментарий
М3 Ассадз Ореп ОГбсе + Му5С11. Орел ОЛ1се можно использовать в качестве графического интерфейса для СУБД МуЗОЬ. Полученная смесь будет более мощная, чем Ассеэв
БОВМ Возможно, а вашем дистрибутиве будет СУБД СОВМ
шм пег юг одах Заменять Асееве СУБД от 1ВМ — ото асе равно, что с тушки по воробьям палить. Но все-ши, ®М 0В2обладает удобным клиентом, написанным на дата. Единственный недостаток — графическая версия клиента, в отличие от твкстоврй.пригормзживает—сказывается кроссплатформенаость
1о(егВаве Зегуег 1лйгВаве Зеггег Гог Уппх Портированная версия
1ВМ 0В2 1ВМ 0В2 гог Ыпих Портированная версия. Версия для Цг»их, как и для платная
Му*ЗО1 Гог У^пбочл; музой Гог Плох Вот сейчас я немного сомневаюсь. какая программа была разработана раньше: или У/юбвугз-версия, которая была портироварана Мпих, или наоборот, Лично я сначала утмдел Ипих-аерюйо, а потом уж версию для ГАйпбои®. В любом случае замена есть
Огайо Огас!е 1ог Плох Версия для Опух, как и для ййтйтта, платная
Математические пакеты
ВДпйдоз* программа ипох-Аиалог Комментарий
Маркт Мар)е Гог Спех Существует версия Мар1е для ипих
МаГЬСАО □ар Па своим функциям программа бар приближается к популярному математическому пакету
Редактор формул ООМаГН 00 МаГЬ входат в состав офисного пакета Ореп О№$
Зтабзкса РгоЬабВИу ала ЗгаПзГГсз (ЛЮПеа Гог Моих иавгз Программа Доступна по адресу Рпр7Ли«гу,даосФегьсогп/зшсопУа1|еу/№ЛчогК/б885/
ЗпитеПс Я, конечно, далек от вопросов математической статистики, но мне показалось., что программа Опитебс сможет помочь решить задачи а этой области
Игры
Шпйо*»- иро грамма ипих-Аналот Комментарий
Омаке 1, 2,3 Оиаке 1.2,3 (от Ыпих ЛиргирэднНЫРЙреии-Длярабогы этих версий нужны некоторые файлыУйойоыз-иерсни
ОООМ ЕхСООМ, ОООМ Ьедесу Программыдоступны. поадресам М1р://Ь«Юрт .11пихдатев.согп/, кйр'//йоот1еййсу;эригсеТ0гре.пеу
Соип1ег51пке СЗ Плох Прошу извинения, но я не любитель игр, поэтому оценить программу не смог
№1ит ю СавНе Мйелййп йеПлп (о СазИе УУоКеп51е1п доя и лих Портированная версия. Подробнее можно прочитать здесь КИрУЛйда.асЙйоп,йкп/датез/«с>^ап51в|П
ИгЬап Теггог ОтЬап Теггог для Моих Портироааниаяверсия
рпгеа! Тоотагпеп! 2003 Опгеа! Тоигпашеги 2003 Тог Ыпих Портированная версия
СМИгайоп РгееСУ Довольно неплохая игрушка, очень похожая на СМИгайоп
ЗигСгаЙ ргееСгаЙ Скачать можно здесь пар://йгеесга«.огд/
Стандартные игры УЙПЙОЖЗ Игры КОЕ (пакет кбедатез) Эти игры понравятся любителям небольших игрушек, помогающих «убить* время
Эмулятор Золу Р1ау8Ш10Л (еРЗХе ТогУЛпОоиге) еРЗХе Тог Ыпих Портированная версия
Д.Н. Колисниченко
ышх-
сервер
своими
руками
----------------------------------------
Издание 3-е, переработанное и дополненное
Вы держите в руках третье издание книги, ставшей бестселлером в своей
области. В ней вы найдете подробное описание настроек сетевых сервисов,
позволяющих на основе ОС Опих создать сервер требуемой конфигурации и
функциональности, Узнаете, как должен быть организован Шлих-сервер для вы-
полнения тех или иных задач. Ознакомитесь с практическими примерами на-
стройки, Научитесь администрировать Ыпих. Благодаря этой книге вы сможете
настроить сервер любого типа: от сервера локальной сети до Интернет-серве-
ра и сервера удаленного доступа.
Во третьем издании книга была немного дополнена и существенно обновле-
на (в соответствии с появлением новых дистрибутивов Мапбгаке, Ребога Соге).
Более широко стало рассмотрено создание Мпих-сервера для УИпбоию-сетей,
Книга подойдет как для профессиональных, так и для начинающих админист-
раторов, поскольку изложение материала начинается с установки ОС Ыпих, а в
первой главе дано описание основных сетевых технологий и протоколов (курс
молодого администратора).
В одном из множества благодарных отзывов по первому изданию говорится:
«Наконец-то нашел книгу, в которой все понятно и толково описано», И этими
словами можно выразить общее мнение читателей о ней. Так что если вам нуж-
но настроить сервер на основе ипнх, узнать его внутренний мир — эта книга
для вас.
Д Н. Колисниченко
Самоучитель
иыих.
Установка,
настройка,
использование
>
х
ш
о
18ВК: 5-94387-193-4
Размер: 165x235
Объем: 688 с.: ил.
Издание 4-е, переработанное и дополненное
Данная книга является самым полным руководством пользователя Кпих.
Предназначена для всех, кто хочет эффективно использовать у себя на компью-
тере эту систему. Изложение материала происходит последовательно, начиная
с этапа установки и заканчивая специальными технологиями Ьпих, Подробно
описаны внутреннее устройство Мпих, настройка оборудования и оптимизация
системы. Обсуждаются возможные проблемы. Особое внимание уделено за-
щите и восстановлению Моих после сбоев.
В книге детально рассмотрен весь круг задач, который может стоять пе-
ред пользователем: от редактирования текста, работы в Интернет и запуска
УУюбоууз-игр, до компилирования ядра, администрирования системы и записи
компакт-дисков. Учитываются особенности разных дистрибутивов, Подробно
описаны мультимедиа-инструменты Ыпих; фотомонтаж, просмотр и редакти-
рование видео, настройка ТУ-тюнера, обработка звука и многое другое. Рас-
смотрено множество программ и приложений под Ыпих: ОрепОНюе, КОНюе,
ТЬе бйгпр, Ма1пАс1ог, ШпеХ, УМУУаге, кап ВЛПпд и т.д.
Автор книги — опытный и известный консультант по использованию Ипих,
Книга написана простым и понятным языком. Лучший выбор для начинающих
линуксоидов.
Самоучитель
работы на
НОУТБУКЕ
М,В, Юдин,
А.В,Куприянова
О
15ВЫ: 5-94387-241-6
Размер: 165x235
Объем: 512 с,: ил,, цв. вклейки
-------------------------
Издание 2-е, стереотипное
Эта книга позволяет освоить работу на ноутбуке «с нуля», даже без каких-
либо предварительных компьютерных навыков. Начинается изложение с де-
тальных правил пользования ноутбуком, правильного ухода за ним, а также
общего описания его внутреннего и внешнего устройства. Далее приводится
описание стандартных компьютерных технологий (\Мпбо«8 ХР, УУогб, Ехсе!, Ин-
тернет, Электронная почта) с учетом особенностей работы на ноутбуке.
«Изюминкой» книги являются следующие разделы; подключение ноутбука
к телевизору и использование его в качестве универсального СО/ОУО-плеера,
домашний кинотеатр на базе ноутбука, сотовый телефон+ноутбук=мобильный
Интернет (как подключить к ноутбуку сотовый телефон и настроить выход в Ин-
тернет через него (настройка ОРЛЗ-соединения)), цифровая фотостудия на ос-
нове ноутбука (подключение цифрового фотоаппарата и работа с цифровыми
фотографиями), контроль и правильная эксплуатация аккумуляторных батарей
ноутбука, а также многое другое.
Книга написана простым и доступным языком. Содержит множество нагляд-
ных иллюстраций. Лучший выбор для начинающих.
Книги ПОЧТОЙ
Издательство «Наука и Техника» принимает заказы на продажу
собственной печатной продукции по почте наложенным платежом.
Оплата производится на почте при получении книг, для организаций
возможна оплата по безналичному расчету после выставления счета.
Для этого Вам необходимо оформить бланк заказа и отправить его нам.
Для жителей России:
193029 Санкт-Петербург, а/я 44,
ООО «Наука и Техника»
тел/факс (812}-567-70-26, 567-70-25
Е-таН: пЛ@таЛ.уур)и».пе1
Для жителей Украины:
02166 Киев-166, ул. Курчатова, 9/21,
«Наука и Техника»
тел/факс (044)-516-38-66
Е-таН: пЛ8@уф|асаЫе.сот
Перечень рассылаемых книг размещен на
сайте издательства: м/ут.пН.сот.ги
Радиоэлектроника.................
Компьютерные технологии...,......
Техника безопасности на предприятиях
Транспорт,
Примечание. Заказанные бесплатные каталоги высылаются по электронной почте или
вкладываются в посылку с книгами (отдельно письмом каталоги не рассылаются).
Заполняйте поля аккуратно большими отдельными буквами.
'1НГ"'*'^""Т1|ин'Л1СТ1ттжнш1миии1'1ннннг^^^яот1т^^ .“***“* |д|"г г****1~~г**ттттп™™" у Iм.—™—ц‘“—™— * ™.
Информация для приобретения книг почтой частными лицами
1. Фамилия, имя, отчество ________________________________________________________________________
2. Почтовый адрес: индекс страна
область город, поселок
улица дом корпус кв.
телефон () ________________________________________________________________________________________
адрес электронной почты (если он у Вас есть): Е-таН:
Информация для выставления счета организациям
Название ИНН
Теле фон/факс () .
Контактное лицо ,
Адрес для отправки заказа: индекс страна
область ________ город, поселок
улица.дом
адрес электронной почты (если он у Вас есть): Е-таН:
БЛАНК ЗАКАЗА (принимаются ксерокопии)
Автор., Нмааиив ............ Цена Цен® .„...Год Объем Заказ (жэ.)
Роосив (РУЙ.) УКрюти (ИЖ)
Серия; Егоров Компьютерная шпаргалка МиниЖелтые страницы Интернет Компьютерная шпаргалка .50..., ...._. 4ь..._.. .2006.... „80....
Егоров Поиск в Интернет. Компьютерная шпаргалка .10... .4 .2006.... ...80
Золотарева Электронная почта. Компьютерная шпаргалка.., .16,,, 4 2006.,.. ., во
Колосков .. ... ....М1сте5оПМпДоигаХР Компьютерная шпаргалка .16... ...... 4.., .2006.... .. 90
Кузнецова. МюгозоЦ 1№ий 2003: работаем е текстом. Компьютерная шпаргалка .16..., .,„..4 .2006,... .. 80
Матвеев . .. ... Вычисления и расчеты в Ехсе! 20031 Комп, шпаргалка МюговоТ! Ексе! 2ИЙ‘. работаем с таблицами. Компьютерная шпаргалка .16 4 ,2006... .. 80...,
Юдин .16... 4 ,2005-,.. .. 80
Серия: Апешкое.... Просто о сложном Программы-переводчики. Осваиваем сами . .54 . 12 .... .2005.... .. 144...
Антоненко. -Толстый» самоучитель работы на компьютере .131.. .29 .2005.... ...544..,
Воробьев .. А1его Випйнд НОМ, Записываем СО И ОЦО , .54... 50 ,2005.... .. 192...
Герасимов. АШоСАО 2002, Популярный самоучитель 135 28 .... .2004.... , 496..,
Главенка ... ,45 лучших программ для созд», копира обработки €0 и ОУО . Настройки 9105. ИЗД. 2^ , : Л4&, 32 .2005... . 368 .»
Дмитриев.. ,78 . 17 .... .2005...» . 288...
Жарков АшоСАО 2004. Эффективный самоучитель, Изд. 2-е .564 37 2005.. . 560...
Жаркое ДиюСАО 2005: эффективный самоучитель . 173.. 39...... .2005.... .. 600...
Колисниченко Самоучитель РНР 5.2-е издание ..168 38 .... ,2005.... .. 576..,
Колисниченко Самоучитель МЫЦХ. Установка, настр.^ издольз. 4-е над *►* .2006.,.. „ 688...
Колисниченко Сделай сам кама. сеть. Монтаж, настройка, обслуж 127 28 ..», .2004,... .400,,.
Колосков... УУ|Пс1оигз Хй Популярный Самоучитель. 2-е ияД.Перер, и доп. .109 ......24 .... .2005..,. ...368...
Кузнецова . Кузнецову . Марек Установка и переустановка УУМоуй. 4-е изд., ... М&гозой Шпйодю ХР Краткое руководство .,43 10 »„. .2005».,. 128»».
„63... 14 .2005,... ...256...
Ассемблер на примерах, базовый курс ..109,- 24. ,2005.... ..240...
Матвеев.... Самоучитель МбЗДпйет ХР Все Об испрйьц. и настр. 4-е изд.. *** м* 11» ..2006... ...624.,,
Пестриков. Турбо Паскаль 7.0. Научаем на примерах. Изд. 2-е .лоз 22 .... .2004.... ...368...
Подольский Печи г ь на ПК еиапым десятипальцевым методом. 3-е изд. ... ..2005»», ,..96
Пономарев Самоучитель работы на компьютере + це.вкдвйки ..106 24 .... .2005-,.. ..368...
Серогодский Ехсе! 2003 + цв.вклейки Эффективный самоучитель ..147 33 ..„ .2005... ...400... по.......
Сухарев ТитЬо Раиса! 7.0. Теория и практика программир. 2-е изд ,.165 ......34 .... ..2004... ,..Б40,,г
(Один Самоучитвл ь работы на ><юутбу»щ. 2*й ИЗД + цвлвстейки .... ..175, 39 .2005.... ...512...
Серия: Секреты мастерства Колисниченко Ипих-сервер своими руками 3-е изд, перер. и дополненное ,203 45 .... ..2005... ...752...
Мозговой .. Классика Программирования; алгоритмы» языки? Автоматы, компиляторы. Практический подход .164.. 37 ..2006... ...320...
Сухарев .Основы ОЫрЫ. Професс печальный подход .184 37 ... ..2004... ...600.., л.
Финкой Интернет, Шаг второй: ог пользоаат; к профессионалу + СВ ,.88 . 17 ..„ „2002... ...768... им»т.<»
Юдин.. Ноутбук: особенности испол и настройки + це.вкдвйки ... .,184 г ,37 .... 2005- ,..384,.,
Серии: Вебер. ...... Профи и др, КлсуИеОДВ-техдологии в консалтинге и улраал-прйдлр.ч СО ,.127 18 . 2003- .176 .
Гургенмдзе Муяьтисервиснде сети и услуги широкополосного доступа . .109 ...... 18 ... .2003... ...400..
Есипов Информатика (учебник!, 3-е ИЗД .102 21 ... .2003... . .400..
Куприянов Техническое обеспечение цифровой обработки сиггьалов.... ..66 , 12 ..2000... ...752..
Кучеров..... Ис гочники питания ПК и перифе рии. 3-е и зд. .... ., М2 32 ... .. 2005... 432.
Кучерявый. Кучерявый. Пакетная сеть Связи общего пользования .. 132 27 ... 2004... ... 272 ..
Управа, графиком и начет во обслуживания саги Интернет. „128 ......29 ... ..2004... .336»,
Никами» ... Цифровая звукозапись. Технологии И стандарты Защита комп информации от несанкционнр. доступа >7в ч 12 ... „2002.^ 256»»
Щаглоа .164 20 ... ,.2004... ...384..