Введение 1
О чем эта книга? 1
Кому адресована книга? 2
Принятые соглашения и обозначения 3
Методические рекомендации 4
Что должен знать читатель 5
Совет для начинающих 7
Глава 1. Архитектура ОС Linux
9
1.1. Обзор внутреннего устройства 9
1.2. Внеядерные компоненты: программы и библиотеки 11
1.3. Ядерные компоненты: подсистемы управления процессами, памятью, вводом-выводом, файлами 11
1.4. Трассировка системных и библиотечных вызовов 12
1.5. Интерфейсы прикладного программирования 13
1.6. В заключение 14
Глава 2. Пользовательское окружение ОС Linux
15
2.1. Командный интерфейс 15
2.2. Виртуальные терминалы 17
2.2.1. Псевдотерминалы 19
2.3. Управляющие символы 21
2.4. Управляющие последовательности 28
2.5. Основной синтаксис командной строки 30
2.5.1. Опции командной строки 32
2.6. Справочные системы 33
2.6.1. Система страниц руководства 34
2.6.2. Справочная система GNU 37
2.6.3. Встроенная справка командного интерпретатора 37
2.7. Пользователи и группы 39
2.7.1. Передача полномочий 41
2.7.2. Хранилища учетных записей 42
2.8. Переменные окружения и конфигурационные dot-файлы 43
2.9. В заключение 49
Глава 3. Подсистемы управления файлами и вводом-выводом
51
3.1. Файлы и дерево каталогов 51
3.1.1. Путевые имена файлов 52
3.2. Типы файлов 53
3.2.1. Обычные файлы 54
3.2.2. Каталоги 55
3.2.3. Имена, данные, метаданные и индексные дескрипторы 56
3.2.4. Ссылки 57
3.2.5. Специальные файлы устройств 61
3.2.6. Именованные каналы и файловые сокеты 64
3.3. Файловые дескрипторы 65
3.4. Файловые системы 67
3.4.1. Файловые системы и процедура монтирования 67
3.4.2. Дисковые файловые системы 70
3.4.3. Сетевые файловые системы 70
3.4.4. Специальные файловые системы 72
3.4.5. Внеядерные файловые системы 74
3.5. Дискреционное разграничение доступа 78
3.5.1. Владельцы и режим доступа к файлам 79
3.5.2. Базовые права доступа и дополнительные атрибуты 80
Режим доступа новых файлов 82
Семантика режима доступа разных типов файлов 83
Дополнительные атрибуты 85
3.5.3. Списки контроля доступа POSIX 90
Групповая маска 91
Права по умолчанию 92
3.6. Мандатное (принудительное) разграничение доступа 93
3.6.1. Модуль принудительного разграничения доступа AppArmor 95
3.6.2. Модуль принудительного разграничения доступа SELinux 97
3.7. Дополнительные свойства файлов 101
3.7.1. Расширенные атрибуты файлов 101
3.7.2. Флаги файлов 103
3.8. В заключение 104
Глава 4. Управление процессами и памятью
105
4.1. Программы и библиотеки 105
4.1.1. Ядро Linux 108
4.2. Процессы и нити 111
4.3. Порождение процессов и нитей, запуск программ 115
4.3.1. Параллельные многопроцессные программы 119
4.3.2. Параллельные многонитевые программы 120
4.3.3. Двойственность процессов и нитей Linux 123
4.4. Дерево процессов 125
4.5. Атрибуты процесса 128
4.5.1. Маркеры доступа 128
4.5.2. Привилегии 131
4.5.3. Другие атрибуты 134
4.6. Классы и приоритеты процессов 135
4.7. Память процесса 141
4.7.1. Виртуальная память 143
4.7.2. Отображение файлов в память 144
4.7.3. Потребление памяти 149
4.8. Механизм сигналов 152
4.8.1. Сеансы и группы процессов: управление заданиями 157
4.9. Межпроцессное взаимодействие 161
4.9.1. Неименованные каналы 161
4.9.2. Именованные каналы 162
4.9.3. Неименованные локальные сокеты 164
4.9.4. Именованные локальные сокеты 165
4.9.5. Разделяемая память, семафоры и очереди сообщений 167
Разделяемая память 167
Семафоры и очереди сообщений 171
4.10. В заключение 172
Глава 5. Программирование на языке командного интерпретатора
175
5.1. Интерпретаторы и их сценарии 175
5.2. Встроенные и внешние команды 177
5.3. Перенаправление потоков ввода-вывода 177
5.4. Подстановки командного интерпретатора 183
5.4.1. Подстановки имен файлов 183
5.4.2. Подстановки параметров 185
Переменные — именованные параметры 186
Позиционные параметры 189
Специальные параметры 190
5.4.3. Подстановки вывода команд 191
5.4.4 Подстановки арифметических выражений 193
5.5. Экранирование 195
5.6. Списки команд 199
5.6.1. Условные списки 201
5.6.2. Составные списки: ветвление 203
5.6.3. Составные списки: циклы 208
5.6.4. Функции 213
5.7. Сценарии на языке командного интерпретатора 216
5.8. Инструментальные средства обработки текста 219
5.8.1. Фильтр строк grep 220
5.8.2. Фильтр символов и полей cut 222
5.8.3. Процессор текстовых таблиц awk 223
5.8.4. Потоковый редактор текста sed 224
5.9. В заключение 228
Глава 6. Сетевая подсистема
231
6.1. Сетевые интерфейсы, протоколы и сетевые сокеты 231
6.2. Конфигурирование сетевых интерфейсов и протоколов 236
6.2.1. Ручное конфигурирование 236
6.2.2. Автоматическое конфигурирование 238
6.3. Cлужба имен и DNS/mDNS-резолверы 239
6.4. Сетевые службы 243
6.4.1. Служба SSH 243
6.4.2. Почтовые службы SMTP, POP/IMAP 250
6.4.3. Служба WWW 253
6.4.4. Служба FTP 255
6.4.5. Служба NFS 256
NFS-клиент 257
NFS-сервер 258
6.4.6. Служба SMB/CIFS 259
Имена NetBIOS 259
CIFS-клиенты 261
6.5. Средства сетевой диагностики 262
6.5.1. Анализаторы пакетов tcpdump и tshark 263
6.5.2. Сетевой сканер nmap 265
6.5.3. Мониторинг сетевых соединений процессов 266
6.6. В заключение 270
Глава 7. Графическая система X Window System
271
7.1. X-сервер 271
7.2. X-клиенты и X-протокол 274
7.3. Оконные менеджеры 279
7.4. Настольные пользовательские окружения 283
7.5. Библиотеки интерфейсных элементов 286
7.6. Запуск X Window System 287
7.6.1. Локальный запуск X-клиентов 287
7.6.2. Дистанционный запуск X-клиентов 289
7.6.3. Управление X-дисплеями: XDMCP-менеджер и протокол 292
7.7. Программный интерфейс X Window System 294
7.7.1. Трассировка X-библиотек и X-протокола 294
7.8. В заключение 299

Заключение 301
Список литературы 303
Начинающим 303
Программистам 303
Бесстрашным 304
Предметный указатель 305