LINUX на примерах. Практика, практика и только практика [Денис Николаевич Колисниченко] (pdf) читать онлайн

-  LINUX на примерах. Практика, практика и только практика  38.49 Мб, 322с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Денис Николаевич Колисниченко

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

КолиСНИЧЕНКО

д. н.

LI

НА ПРИМЕРАХ
Практика, практика и только
практика

"Издательство Наука и Техника"
Санкт-Петербург

УДК 004.42
ББК 32.973
Колисниченко Д. Н.
LINUX НА ПРИМЕРАХ.

ПРАКТИКА, ПРАКТИКА

ИЗДАТЕЛЬСТВО НАУКА И ТЕХНИКА,

2022. - 320 С.,

и только ПРАКТИКА - СПБ.:

ИЛ.

/SBN 978-5-94387-410-9

Данная книга является практическим руководством по работе в Linux и ее
администрированию. Книга содержит в себе как теоретические, так и прак­
тические материалы, т.е. теория и практика объединены в одно целое. Изло­
жение ведется с. учетом самых разных дистрибутивов Linux.
Будет рассмотрен широкий спектр задач и возможностей Linux - от самых
основ (установка системы, вход и завершение работы, настройка системы,
основы командной строки) до более продвинутых тем (локальное адми­
нистрирование в Linux; управление файловой системой; маршрутизация и
настройка брандмауэра; системные процессы и т.д.)
Книга будет полезна как для тех, кто только заинтересовался Линуксом, так
и для тех, кто хочет расширить свои навыки использования этой операцион­
ной системой.

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

1

ресурсы были действующими.

ISBN 978-5-94387-410-9

9 78- 5- 94387- 41 О- 9

Контактные телефоны издательства:
(812) 412 70 26
Официальный сайт: www.nit.com.ru
© Колисниченко Д. Н.
© Издательство Наука и Техника (оригинал-макет)

Содержание
ВВЕДЕНИЕ ................................................................................................................................... 9

ГЛАВА 1. УСТАНОВКА СИСТЕМЫ .............................................. 15
1.1. ЗАГРУЗКА С ИНСТАЛЛЯЦИОННОГО ДИСКА ..................................................... 16
1.2. ПР ИНЦИП УСТАНОВКИ LINUX................................................................................. 18
1.3. ЗАГРУЗКА С ИНСТАЛЛЯЦИОННОГО НОСИТЕЛЯ ...•......•.......•........................ 18
1.4. НАЧАЛО УСТАНОВКИ ..........•......................................•........•.•..•...............•.......•.•....•..• 20
1.5. РАЗМЕТКА ДИСКА .....................................................................•.................•..•.•............. 22
1.5.1. Общие сведения о разметке диска....................................................... 22
1.5.2. Введение в точку монтирования.......................................................... 24
1.5.3. Раздел подкачки .................................................................................... 25
1.5.4. Как правильно разбивать жесткий диск? .........................: ................. 26
1.5.5. Ручная разметка в Ubuntu .................................................................... 27
1.5.6. Ручная разметка в Astra Linux ............................................................. 30
1.6. УСТАНОВКА ПАР ОЛЯ АДМИНИСТРАТОРА ....•....•....•...•.•.......•.•....•..................... 35
1.7. ПАРАМЕТРЫ ПР ОГРАММНОГО ОБЕСПЕЧЕНИЯ•...............•.....•....................... 37
1.8. УСТАНОВКА ЗАГРУЗЧИКА ............................•....•..•....•..•.••....•..•......•..•..•..•................. 39

ГЛАВА 2. ВХОД В СИСТЕМУ .......................................................... 41
2.1. ВХОД В КОНСОЛЬ И ПЕР ЕКЛЮЧЕНИЕ МЕЖДУ НИМИ ................................. 42
2.2. ОСНОВНЫЕ ЭЛЕМЕНТЫ ГРАФИЧЕСКОГО ИНТЕР ФЕЙСА .......................... 45
2.2.1. Интерфейс UЬuntu ................................................................................ 46
2.2.2. Интерфейс Astra Linux ......................................................................... 53
2.3. АВТОМАТИЧЕСКИЙ ВХОД В СИСТЕМУ ............................................................... 59
2.4. ЗАВЕРШЕНИЕ РАБОТЫ ИЗ КОНСОЛИ ................................................................... 60

ГЛАВА 3. СРАЗУ ПОСЛЕ УСТАНОВКИ ....................................... 63
3.1. ПР ОВЕР ЯЕМ И УСТАНАВЛИВАЕМ ОБНОВЛЕНИЯ .......................................... 64
3.2. НАСТР ОЙКЕ LIVEPATCH (ТОЛЬКО ДЛЯ UBUNTU) ........................................... 66
3.3. ОТКЛЮЧАЕМ УВЕДОМЛЕНИЯ ОБ ОШИБКАХ .................................:................ 66
3.4. НАСТРАИВАЕМ ПОЧТОВЫЙ КЛИЕНТ ................................................................... 67
3.5. УСТАНОВИТЕ ВАШ ЛЮБИМЫЙ БРАУЗЕР ........................................................... 68
3.6. УСТАНОВКА ПР ОИГРЫВАТЕЛЯ VLC ..................................................................... 72


.7. УСТАНОВКА КОДЕКОВ ................................................................................................. 72

. - - - - - - - - - - - . - . - - . - . - . - . -- - - . - -- . -...-- . - . - . - . - . - - . - . - . - . -.. -.. - - . - . -............. ..

1.1\l :\ ш1 щншl·pa,. llpai-:1111.:a
3.8. ВКЛЮЧЕНИЕ НОЧНОГО Р ЕЖИМА ......................................................................... 73
3.9. УСТАНОВКА WJNE ДЛЯ ЗАПУСКА WINDОWS-ПРИЛОЖЕНИЙ .................. 74
3.10. УСТАНОВКА ДОПОЛНИТЕЛЬНЫХ АРХИВАТОРОВ....................................... 74
3.11. ПОПР ОБУЙТЕ ДРУГИЕ ГРАФИЧЕСКИЕ ОКРУЖЕНИЯ ................................. 74
3.12. ТОНКАЯ НАСТРОЙКА GNOME. УСТАНОВКА ТЕМЫ ОФОРМЛЕНИЯ В
СТИЛЕ MACOS ....................................................................................................... 75

ГЛАВА 4. ОСНОВЫ КОМАНДНОЙ СТРОКИ ............................. 82
4.1. ВВОД КОМАНД...................... ;........................................................................................... 83
4.2. АВТОДОПОЛНЕНИЕ КОМАНДНОЙ СТР ОКИ ...................................................... 85
4.3. ПЕРЕНАПРАВЛЕНИЕ ВВОДА/ВЫВОДА .................................................................. 85
4.4. СПРАВОЧНАЯ СИСТЕМА MAN .................................................................................. 87
4.5. КОМАНДЫ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ.............................. 87

4.5.1. Команды для работы с файлами .......................................................... 87
4.5.2. Команды для работы с каталогами ...................................................... 90
4.6. КОМАНДЫ СИСТЕМНОГО АДМИНИСТРАТОРА................................................ 92

4.6.1. Команды для работы с устройствами и драйверами ......................... 92
4.6.2. Команды настройки сетевых интерфейсов ........................................ 93
4.6.3. Программы тестирования и настройки жесткого диска ................... 94
4.7. КОМАНДЫ ОБРАБОТКИ ТЕ КСТА............................................................................. 95

4.7.1. Редакторsеd........................................................................................... 95
4.7.2. Подсчет количества слов/символов..................................................... 96
4.7.3. Сравнение файлов ................................................................................. 97
4.7.4. Разбивка текста на колонки ................................................................. 97
4.7.5. Команды diffи dijfЗ............................................................................... 98
4.7.6. Команда grep ....................................................................................... 100
4.7.7. Замена символов табуляции пробелами ........................................... 100
4.7.8. Форматирование текста ...................................................................... 101
4.7.9. Команды постраничного вывода тоге и less ................................... 101
4.7.1О. Команды head и tail: вывод первых и последних строк файла .... 1О1
4.7.11. Командаsplit...................................................................................... 102
4.7.12. Команда unexpand ............................................................................ 102

ГЛАВА 5. ЛОКАЛЬНАЯ СЕТЬ ....................................................... 103

'

5.1. ФИЗИЧЕСКАЯ НАСТР ОЙКА СЕТИ ETHERNET ................................................ 104
5.2. НАСТР ОЙКА СЕТИ С ПОМОЩЬЮ ГРАФИЧЕСКОГО КОНФИГУРАТОРА.106

..................................................................................

( ·11 н·ржа11ш·

5.3. КОМАНДА IFCONFJG .................................................................................................... 111
5.4. ИМЕНА СЕТЕВЫХ ИНТЕРФЕЙСОВ В LINUX .....................................................114
5.5. ОБЩИЕ КОНФИГУРАЦИОННЫЕ ФАЙЛЫ ........................................................... 116

Файл /etc/hosts ............................................................................................... 117
Файлы /etc/hosts.allow и /etc/hosts.deny....................................................... 117
Файл /etc/host.conf......................................................................................... 117
Файл /etc/hostname ........................................................................................ 118
Файл /etc/motd ............................................................................................... 118
Файл /etc/resolv.conf ...................................................................................... 118
Файл /etc/services .......................................................................................... 119
Файл /etc/protocols ........................................................................................ 119
Файл /etc/network/interfaces: конфигурация сети в Astra Linux ................ 119
Каталог /etc/NetworkМanager/system-connections: конфигурация сети в
Ubuntu ............................................................................................................ 120

ГЛАВА 6. БЕСПРОВОДНАЯ СЕТЬ WI-FI................................... 122
. 6.1. НАСТРОЙКА БЕСПРОВОДНОЙ СЕТИ С ПОМОЩЬЮ ГРАФИЧЕСКОГО
ИНТЕРФЕЙСА ....................................................................................................... 124
6.2. НАСТРОЙКА БЕСПРОВОДНОГО СОЕДИНЕНИЯ В КОМАНДНОЙ СТРОКЕ
(WЕР-ШИФРОВАНИЕ) ....................................................................................... 128
6.3. СОЕДИНЕНИЕ С ТОЧКОЙ ДОСТУПА ПО WРА-ШИФРОВАНИЮ .............. 130

ГЛАВА 7. VРN-СОЕДИНЕНИЕ ..................................................... 133
7.1. ЗАЧЕМ НУЖНА VPN ...................................................................................................... 134
7.2. НАСТРОЙКА VРN-ПОДКЛЮЧЕНИЯ В UBUNTU................................................ 135
7.3. НАСТРОЙКА VРN-ПОДКЛЮЧЕНИЯ В ASTRA LINUX ..................................... 136

ГЛАВА 8. УСТАНОВКА ПРОГРАММ В LINUX......................... 139
8.1. СПОСОБЫ УСТАНОВКИ ПРОГРАММ ................................................................... 140
8.2. ТИПЫ ПАКЕТОВ И ИХ СОДЕРЖИМОЕ ................................................................ 141
8.3. ИСТОЧНИКИ ПАКЕТОВ.............................................................................................. 142
8.4. МЕНЕДЖЕРЫ ПАКЕТОВ ............................................................................................ 143
8.5. ГРАФИЧЕСКИЕ СРЕДСТВА УСТАНОВКИ ПРОГРАММ ................................. 149
8.6. СНАПЫ ............................................................................................................................... 152

--

8.7. ОШИБКА ПРИ ВЫПОЛНЕНИИ АРТ: UNABLE TOACQUIRE ТНЕ DPKG

,.

LOCKIVARILIBIDPKGILOCK.............................................................................. 155

8.8. НЕВОЗМОЖНО НАЙТИ ОПРЕДЕЛЕННЫЙ ПАКЕТ......................................... 157

... ---- ........................................................................

I.I:\ l :Хна 111н1\Jrpax. llpa1,1111,a

ГЛАВА 9. ПОПУ ЛЯРНЫЕ ПРОГРАММЫ.................................. 159
9.1. ОФИСНЫЕ П АКЕТЫ .................................................................................................... 160
9.2. ГРАФИЧЕСКИЕ ТЕКСТОВЫЕ РЕД АКТОРЫ ....................................................... 161
9.3. КОНСОЛЬНЫЕ ТЕКСТОВЫЕ РЕД АКТОРЫ ........................................................ 162
9.4. ПРОГРАММЫ ДЛЯ РАБОТЫ С ИНТЕРНЕТОМ .................................................. 167
9.5. LINUX-AHAЛOГИ WINDOWS-ПPOГPAMM .......................................................... 169

ГЛАВА 10. ЗАПУ СК WINDОWS-ПРИЛОЖЕНИЙВ LINUX"178
10.1. УСТАНОВКА ИЗ ОФИЦИ АЛЬНОГО РЕПОЗИТАРИЯ .................................... 180
10.2. УСТАНОВКА ИЗ РРА ................................................................................................... 181
10.3. Н АСТРОЙКА ПОСЛЕ УСТ АНОВКИ ...................................................................... 183
10.4. УСТАНОВКА И З АПУСК WINDOWS-ПPOГPAMMЫ ....................................... 185
10.5. СПИСОК ИГР И ДРУГИХ ПРИЛОЖЕНИЙ, РАБОТАЮЩИХ ЧЕРЕЗ WINE187
10.6. ИСПОЛЬЗОВАНИЕ ОТДЕЛЬНЫХ ПРЕФИКСОВ.............................................. 188

ГЛАВА 11. ПЕЧАТЬ ДОКУМЕНТОВ В LINUX ......................... 190
11.1. ДОБ АВЛЕНИЕ И Н АСТРОЙКА ПРИНТЕРА ........................................................ 191
11.2. ОСУЩЕСТВЛЕНИЕ ПЕЧ АТИ ИЗ ПРИЛОЖЕНИЯ ........................................... 194

ГЛАВА 12. ФА ЙЛОВА Я СИСТЕМА .............................................. 196
12.1. КАКИЕ ФАЙЛОВЫЕ СИСТЕМЫ ПОДДЕРЖИВАЕТ LINUX ........................ 197
12.2. КАКУЮ ФАЙЛОВУЮ СИСТЕМУ ВЫБРАТЬ?.................................................... 199
12.3. ЧТО НУЖНО ЗН АТЬ О ФАЙЛОВОЙ СИСТЕМЕ LINUX ................................ 200
12.3.1. Имена файлов и каталогов ............................................................... 200
12.3.2. Файлы устройств .............................................................................. 200
12.3.3. Корневая файловая система и основные подкаталоги первого
уровня ............................................................................................................ 201
12.4. ссылки .......................................................................................................................... 203
12.5. ПРАВА ДОСТУПА ......................................................................................................... 204
12.5.1. Общие положения ............................................................................. 204
12.5.2. Смена владельца файла .................................................................... 205

..

12.5.3. Определение прав доступа .............................................................. 205
12.5.4. Специальные права доступа ............................................................ 207



12.6. АТРИБУТЫ ФАЙЛА ..................................................................................................... 208

. . . . . - ... - - . - ... -... . - ....... - .. - - ........................ - . - . - ·.·. - - - - . - ... - . - - .. .

С 0.1t•р;юш 111.·
12.7. ПОИСК ФАЙЛОВ .......................................................................................................... 209
12.8. МОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ.......................................................... 212
12.8.1. Монтируем файловые системы вручную ....................................... 212
12.8.2. Имена устройств ............................................................................... 214
12.8.3. Монтируем файловые системы при загрузке ................................. 217
12.8.4. Автоматическое монтирование файловых систем......................... 218

12.9. РАБОТА С ЖУРН АЛОМ ............................................................................................. 218
12.10. ПРЕИМУЩЕСТВА ФАЙЛОВОЙ СИСТЕМЫ ЕХТ4 ........................................ 219
12.11. СПЕЦИ АЛЬНЫЕ ОПЕРАЦИИ С ФАЙЛОВОЙ СИСТЕМОЙ ....................... 220
12.11.1. Монтирование NТFS-разделов ...................................................... 220
12.11.2. Создание файла подкачки .............................................................. 221
12.11.3. Файлы с файловой системой.......................................................... 221
12.11.4. Создание и монтирование ISО-образов ........................................ 222

12.12. ФАЙЛЫ КОНФИГУРАЦИИ LINUX ...................................................................... 223
12.12.1. Содержимое каталога /etc .............................................................. 223
12.12.2. Конфигурационные файлы ............................................................ 224
12.12.3. Подкаталоги с конфигурационными файлами ............................. 232

12.13. ПСЕВДОФАЦЛОВЫЕ СИСТЕМЫ ........................................................................ 238
12.13.1. Псевдофайловая система sys/s ....................................................... 239
12.13.2. Псевдофайловая системарrос ....................................................... 240

ГЛАВА 13. УПРАВЛЕНИЕ ХРАНИЛИЩЕМ ............................ 244
13.1. ПОДКЛЮЧЕНИЕ НОВОГО ЖЕСТКОГО ДИСК А И ЕГО РАЗМЕТК А ....... 245
13.2. МЕНЕДЖЕР ЛОГИ ЧЕСКИХ ТОМОВ ................................................................... 251
13.2.1. Введение в LVM ................................................................................ 251
13.2.2. Уровни абстракции LVM .................................................................. 252
13.2.3. Немного практики ............................................................................. 253

13.3. РАСШИРЕНИЕ LVM-ПPOCTPAHCTBA ................................................................. 256

ГЛАВА 14. УПРАВЛЕНИЕ ЗАГРУЗКОЙ LINUX ...................... 260
14.1. ЗАГРУЗЧИКИ LINUX................................................................................................... 261
14.2. ЗАГРУЗЧИК GRUB2 ..................................................................................................... 262
14.2.1. Конфигурационные файлы ............................................................. 262

,

. ..

14.2.2. Выбор метки по умолчанию ............................................................ 268
14.2.3. Загрузка Windows .............................................................................. 268
14.2.4. Пароль загрузчика GRUB2 ............................................................... 269
__

-.... - . -..... -.. -.......... - - -- -- -. - - - - - -. - - -. -. - - - . -- . -. - .. - - - - - - - - - .. - - .. -

1.1'\1 :\

,,а 11p11\lep:l\. llpai,1 111,a
14.2.5. Установка загрузчика........................................................................ 271

14.3. СИСТЕМА ИНИЦИАЛИЗАЦИИ .............................................................................. 272
14.3.1. Принцип работы................................................................................ 272
14.3.2. Конфигурационные файлы systemd ................................................ 274
14.3.3. Uели.................................................................................................... 277
14.4. УПРАВЛЕНИЕ СЕРВИСАМИ ПРИ ИСПОЛЬЗОВАНИИ SYSTEMD ............ 278

ГЛАВА 15. УПРАВЛЕНИЕ ПРОЦЕССАМИ............................... 280
15.1. КОМАНДЫ PS, NICE И KILL ..................................................................................... 281
15.1.1. Получение информации о процессе................................................ 281
15.1.2. Изменение приоритета процесса..................................................... 286
15.1.3. Аварийное завершение процесса .................................................... 286
15.2. КОМАНДА ТОР .............................................................................................................. 288
15.3. ИНФОР МАЦИЯ ОБ ИСПОЛЬЗОВАНИИ ПАМЯТИ И ДИСКОВОГО
ПРОСТРАНСТВА ................................................................................................. 290
15.4. КОМАНДА FUSER ........................................................................................................ 291
15.5. ПЛАНИРОВЩИК И ЗАДАНИЙ ................................................................................. 292
15.5.1. Планировщик cron............................................................................ 292
15.5.2. Планировщик anacron...................................................................... 294

ГЛАВА 16. МАРШРУТИЗАЦИЯ И НАСТРОЙКА БРАНДМАУЭРА ... 296
16.1. ПРОСМОТР ТАБЛИЦЫ МАРШР УТИЗАЦИИ .................................................... 297
16.2. ИЗМЕНЕНИЕ И СОХРАНЕНИЕ ТАБЛИЦЫ МАРШР УТИЗАЦИИ .............. 299
16.3. НАСТРОЙК А БРАНДМАУЭРА IPTABLES ............................................................ 304
16.3.1. Преобразование сетевого адреса ..................................................... 305
16.3.2. Цепочки и правила............................................................................ 305
16.3.3. Команда iptaЫes................................................................................ 307
16.3.4. Практический пример ...................................................................... 309
16.4. НАСТРОЙК А БРАНДМАУЭРА UFW ....................................................................... 314
16.4.1. Проверяем состояние брандмауэра ................................................. 314
16.4.2. Базовая настройка ............................................................................. 315
16.4.3. Создаем правила для других приложений...................................... 317
16.4.4. Разрешаем IР•адреса......................................................................... 318
16.4.5. Запрещаем IР•адреса и службы ....................................................... 318
16.4.6. Удаление/сброс правил..................................................................... 318
16.4.7. Отключение файрвола ...................................................................... 319



.....................................................................................

Введение

Linux - удивительная операционная система. Впервые она появилась в 1991
году, а пик ее популярности приходится на начало 2000-х. Затем интерес к
ней пошел на спад и можно было подумать, что через пару лет о ней никто не
вспомнит. Но Linux подобен Фениксу, восставшему из пепла. Интерес к ней
появился не только у обычных пользователей (иначе бы я сейчас не писал
эту книгу), но и крупных корпораций, таких как Microsoft, IВМ и т.д.
Некоторые из книг бывают сугубо практическими, некоторые - сугубо тео­
ретическими. Книга, которую вы держите в руках, будет эдаким симбиозом
и содержать в себе, как теоретические, так и практические материалы. Тео­
рия и практика будут объединены в одно целое - не будет отдельных боль­
ших и скучных теоретических глав.
Книга ориентирована на пользователей разного уровня, но уже подго­
товленным пользователям (например, квалифицированным Windоws­
пользователям или администраторам), которым по долгу службы или ради
личного интереса предстоит разбираться с Linux, читать книгу будет немно­
го проще.

,

Графический интерфейс практически не рассматривается в этой книге - по
той лишь причине, что по простоте использования он уже дорос до Windows

..................................................................................

BHl',ll'lllll'

- все наглядно, просто и понятно. Зато мы рассмотрим практические ню­
ансы настройки операционной системы - от ее установки на локальный
компьютер до добавления второго жесткого диска - в общем все, что нужно
обычному пользователю для его обычного (домашнего или офисного) ис­
пользования в этой книге есть.
Далее мы рассмотрим выбор дистрибутива Linux. Ведь Linux - это только
"собирательное название", а по факту выбирать приходится между дистри­
бутивами Linux, которых очень и очень много. С 2001 года, согласно ресурсу
Distrowatch, было создано почти 800 дистрибутивов ... Понятно, что коли­
чество разрабатываемых дистрибутивов постоянно сокращается - слабые
уходят с рынка, но выбор по-прежнему огромен. Несколько сотен дистри­
бутивов. Только на главной странице Distrowatch есть список ТОР-100 - он
обновляется ежедневно. Следовательно, в мире есть как минимум 100 актив­
ных дистрибутивов, которыми пользуются люди ...
Самая первая версия Linux, появившаяся в 1991 году, представляла собой
ядро и несколько приложений. В ней запускались компилятор gcc и команд­
ный интерпретатор bash. Поставлялась эта версия Linux в виде двух дискет
- на первой было ядро, на второй - корневая файловая система с приложе­
ниями. Загружалась она тоже специфически - сначала нужно было вставить
в дисковод первую дискету и дождаться, пока загрузится ядро, затем был
запрос на вставку второй дискеты - с корневой файловой системой.
Первые дистрибутивы появились в 1992 году. Тогда отдельные энтузиасты
или группы энтузиастов выпускали разные дистрибутивы (каждый, есте­
ственно, под своим именем). Грубо говоря, они отличались второй дискетой,
на которой был немного другой набор программ. Далее, с развитием Linux,
необходимые программы уже не помещались на одну дискету и пришлось
устанавливать Linux на жесткий диск. Появились первые программы уста­
новки.
Чем отличаются разные дистрибутивы, кроме, разумеется, названия? Во­
первых, у каждого дистрибутива своя программа установки (если не считать
дистрибутивов-клонов, которые заимствуют инсталлятор у родительского
дистрибутива, меняя только название дистрибутива): Во-вторых, у каждого
будет свой набор программ - на усмотрение разработчика. По сути, с 1992
года ничего не поменялось.
Если копнуть дальше, вникнуть в набор программ, то начинаешь видеть бо­
лее глубинные изменения, например, разницу в менеджере пакетов и систе­
ме инициализации. По сути, что менеджер пакетов, что система инициализа­
ции - это тоже программы. Но программа программе - рознь.

,

__ - - - - -

- -- - - - - - - - -.. -... - . - . -........ - . - . -...... - . -.......... - . - ...... -

............

1.1'\1 \. на 11p11,н·11.l\. llpa1.:1 111.:a

Сейчас мы не будем вникать во всех технические тонкости. Для этого есть
соответствующие главы это книги. Лучше рассмотрим актуальные на дан­
ный момент дистрибутивы.
На данный момент Linuх-пользователям доступно несколько основных дис­
трибутивов:
. • Deblan - тот самый надежный Debian, появившийся в 1993 году. Это
единственный широко распространенный дистрибутив, доживший до на­
ших дней под оригинальным названием.
• Fedora - потомок популярного ранее дистрибутива Red Hat, существова­
ние которого было прекращено в 2004 году. Тогда пользователям предо­
ставили выбор: либо они мигрируют на корпоративный (коммерческий)
RНEL (Red Hat Enterprise Linux), либо на бесплатный Fedora (ранее
Fedora Core). На ·данный момент Fedora - развивающийся дистрибутив,
последняя рабочая версия которого вышла 2 ноября 2021 года, а выпуск
новых версий производится каждые 6-8 месяцев.
• Ubuntu - изначально основан на DeЬian, первая версия появилась в 2004
году, последняя актуальная - 14 октября 2021 года (версия 21.10). Об­
новляется каждые 6 месяцев. Как и Fedora, имеет несколько вариантов, в
том числе серверный. Популярным неофициальным (не от разработчиков
Ubuntu) форком является дистрибутив Mint- "доведенная до ума" версия
UЬuntu.
• openSUSE - изначально основан на дистрибутиве Slackware и первая его
версия вышла в октябре 2005 года (сравнительно молодой дистрибутив).
На данный момент доступна рабочая версия от 2 июня 2021 года, а об­
новляется дистрибутив примерно раз в год. В отличие от Ubuntu, исполь­
зует систему пакетов RPM, что делает его ближе к Fedora - со временем
в состав openSUSE включили некоторые решения из Red Hat - систему
пакетов RPM, использование sysconfig - что сделало больше похожим на
Red Hat, чем на Slackware.
• ALT Linux - как ни крути, но этот отечественный дистрибутив заслужи­
вает уважения - хотя бы за то, что дожил до наших дней и не развалился,
как многие другие. И .учтите, первая его версия появилась в 1999 году (то
есть ему больше 20 лет), а не в 2004-2005, как Ubuntu и openSUSE. По­
следняя версия от 16 декабря 2021 года.
• CentOS (Community ENTerprise Operating System)- общественная корпо­
ративная операционная система. Основан на RНEL и совместим с ним.

............

...... ··········.·········· ........... ············ ·····················'

Bllt',tt'llllt'

Содержит из свободного ПО с открытым кодом. Первая версия вышла
в 2004 году, на данный момент последней актуальной версией является
версия от 16 ноября 2021 года - дистрибутив развивается. Дистрибутив
очень надежный - иного от корпоративной ОС и не следует ожидать,
пусть и не содержит самых новых пакетов ПО, как, например, Fedora.
• Astra Linux - дистрибутив специального назначения на базе ядра Linux,
созданная для комплексной защиты информации и построения защищен­
ных автоматизированных систем. Сертифицирована в системах сертифи­
кации средств защиты информации Минобороны, ФСТЭК и ФСБ России.
Первая версия увидела свет в 2009 году, а последняя рабочая версия
вышла 7 сентября 2021 года.
Все эти дистрибутивы на момент написания этих строк (начало 2022 года)
обновлялись в прошлом году (2021 год), что говорит о том, что разработчики
дистрибутив не забросили, и он продолжает развиваться. Бывает так, что
по тем или иным причинам поддержка того или иного дистрибутива
прекращается. Так случилось с BlackCat Linux, Mandriva и многими други­
ми дистрибутивами.
Какой дистрибутив выбрать? Вопрос ДОВОЛЬНО распространенный, но одно­
значного ответа на него нет. Все зависит от применения и личных предпо­
чтений. Например, фанатов Ubuntu ни за что не заставишь установить Fe­
dora и наоборот. Если же у вас своего мнения относительно дистрибутива
не сформировалось, то можно выбирать один из следующих дистрибутивов
- Fedora, CentOS, Ubuntu, DeЬian. На сервере я бы рекомендовал более ста­
бильные CentOS и DeЬian, но поскольку вы только начинаете разбираться с
Linux, можно смело использовать Fedora и Ubuntu. С ними вам будет проще
и они более универсальные. Оба дистрибутива смело подойдут как для рабо­
чей станции (или домашнего компьютера), так и для сервера.
Когда же речь заходит о работе с персональными данными, то ненароком
вмешивается закон ФЗ-152 и расставляет все на свои места. Обработка и
хранение таких данных должно происходить только с использованием сер­
тифицированного ПО. Для Windows достаточный большой выбор различ­
ного сертифицированного ПО - и программы для шифрования, и антиви­
русы, и брандмауэры и т.д. Выходит, если вы создаете Интернет-магазин,
что подразумевает хранение и обработку персональных данных, то вы или
ограничены Windows (что не хочется), или же нужно смотреть в сторону
сертифицированных дистрибутивов Linux. Такими являются Astra Linux и
ALT Linux. Здесь уже выбирается не по личным предпочтениям, а из-

'

................................. -........ -. -. -·- ................................ ...

за "бумажки". Мы не будем рассматривать использование Linux на пред­
приятии, а поговорим об использовании этого дистрибутива на домашнем
компьютере - исключительно для домашнего применения. Свой выбор оста­
новим на Ubuntu 21.1О - самой актуальной версии UЬuntu на данный момент.
А на предприятии, как правило, есть высокооплачиваемый специалист­
администратор, который сможет без проблем разобраться с любым дистри­
бутивом Linux .

...

"

- " - "." """"" - " - " - - - - - - " - - - " - " -". - " -. -.. - -.. - - - ". - ..... - ".". """ ...""."".·."."."" ..

'

Глава 1.

Установка системы

11'\1''\ 11:1 111111,it·pa,. llp:11.:1111.:a

Несмотря на то, что у всех дистрибутивов Linux собственный инсталля­
тор, свой интерфейс пользователя, разный набор программного обеспече­
ния, устанавливаемого по умолчанию, все они устанавливаются по единому
принципу. В этой главе мы рассмотрим попарно установку UЬuntu и Astra
Linux.

1.1. Загрузка с инсталляционного диска
Первое с чего нужно начинать установку системы - с получения инстал­
ляционного носителя. Поскольку рассматриваемые дистрибутивы Linux
распространяются абсолютно бесплатно, нет никакого смысла загружать
ISО-образы со сторонних ресурсов. В нашем случае необходимые 1S0файлы можно получить с сайтов https://ubuntu.com и https://astralinux.ru/.
Далее нужно создать сам инсталляционный носитель. В качестве такового
носителя может выступать либо DVD-диск, либо USВ-флешка. Эра DVD­
дисков давно прошла ( сейчас даже в продаже их найти сложно), а вот USВ­
флешка, как правило, всегда под рукой.
Для подготовки загрузочного USВ-диска нам нужна флешка с размером от
4 Гб и компьютер под управлением Windows. Скачайте приложение Rufus
(https://rufus.ie/) и выполните следующие действия:
1. Если на флешке есть данные, скопируйте их на жесткий диск, поскольку
в процессе создания загрузочного носителя они будут уничтожены.

................................................................................

:.,

1:ia11a ,. Ус1шю11ю1 CIICICMЫ

2. Запустите Rufus.
3. Из списка Устройство выберите флешку. Убедитесь, что вы выбрали пра­
вильную флешку, если подключено несколько устройств.
4. Нажмите кнопку Выбрать для выбора ISО-образа, который будет запи­
сан на флешку.
5. Остальные параметры оставьте как есть. Схема раздела должна быть
MBR, целевая система - BIOS или UEFI, файловая система - FAT32, раз­
мер кластера - 4096.
6. Нажмите кнопку СТАРТ.
7. Дождитесь, пока программа запишет ISО-образ на флешку.
8. Подключите USВ-флешку к целевому компьютеру (на который будет про­
исходить установка Linux)
9. Перезагрузите целевой компьютер.
10.Войдите в ВIOS SETUP (обычно для этого используется клавиша DEL
или F 2, но нужная комбинация может отличаться- обратитесь к руковод­
ству по материнской плате).
11.В качестве загрузочного устройства выберите созданную флешку.
12.Выйдите из BIOS SETUP с сохранением изменений.
х

j/' Rufw 3.8.1S80(Port11Ыe)

Свойства диска -------УО:ройство
, NO�LABН (�r�Гб1
МеТОА 38ГРУJIСИ

.;i 0

{or����ti!?
_
'"'.
Постоянны11 рuмер pa:tAen•
1

г 8Ы&РдТЬ

'i

л С�срыть расwмренные с11оi т"n f(tlfU �OP,lc:JIIOlllltl�- Фор�n"щ,.1н�.l Р111м•р Hl:l1'1111o>JLlll81tQ Сt�п•м•
/dev/sda

Уоро'4с1•0 Д/IА )l'CТ.IW08ot\4 снстемноrо urpyaчt11t1:
/de-v/,d1 VMW1te, vмw•reVittlJII S (2.1.5 GB)

•••••оо
Рис. 1.10. Начало ручной разметки диска

/dev/•d•
CI060AНOt "'1К'ТО

У(1рой(тао ,A11111ycr11мo,1t11 c1tct1м11oro иrру>Чм1С1
/dtV/1.dl VM\Wfl, VMwtrt VlrtUll i (l1,5 GB)
HIW,O,

•••••оо

Рис. 1.11. После создания таблицы разделов

Здесь мы создаем раздел размером около 19 Гб для точки монтирования /,
файловая система - ext4. На этом разделе будет содержаться и сама система,
и данные пользователя.



..................................................···········................ -...... .

r:ннщ 1. Ус�.шов�-.:а с11с1t'�1ы

О 81,1

IJ

,.,.,.,,,..

,_.

�•GAUll hl..fll•OO'flP',l.tНIIL

.._

,,....,_,..

"-·
,.,,.....

.,у,.
r
;
-·· --�·

0

(....-q)OltlWЦМII

д.t�-�

n..,.,,..,.....,
1мnot�

ho,18(�


"'°"""'

�ctf!Olill

Рис. 2.24. Раздел Система

В разделе Система много чего интересного. Здесь вы найдете следующие
утилиты:
• Автозапуск - позволяет управлять автозапуском различных приложений
GNOME;

...................................................................................

,

Г. �ава 2. Нхо,1 в с11с н•"�

• Планировщик заданий - позволяет просматривать и управлять задача­
ми cron, что очень удобно и подобных решений нет в других дистрибу­
тивах;
• Загрузчик GRUB2 - управляет параметрами загрузчика GRUB2 без
необходимости редактирования его файла конфигурации вручную;
• Система инициализации - позволяет управлять системными службами.

2.3. Автоматический вход в систему
Если вы не страдаете паранойей, существует возможность настройки авто­
матического входа в систему. При этом система не будет запрашивать па­
роль, а будет обеспечивать вход выбранного пользователя в систему сразу
после загрузки. Для пользователя домашнего компьютера, который работает
в гордом одиночестве - это идеальный вариант. Конечно, если этому пользо­
вателю нечего скрывать от других членов семьи:)
Для настройки автоматического входа в Astra Linux выполните следующие
действия:
1. Откройте Панель управления;
2. Перейдите в раздел Система;
3. Вызовите утилиту Вход в систему;
4. Перейдите на вкладку Дополнительно, включите параметр Разрешить
автоматический вход в систему;
5. Выберите пользователя, автоматический вход в систему которого нужно
обеспечить;
6. Нажмите кнопку Да;
7. Перезагрузите систему.
В Ubuntu нужно выполнить следующие операции:
1. Откройте экран Настройки;
2. Перейдите в раздел Пользователи;

'

3. Нажмите кнопку Разблокировать для разблокирования интерфейса
управления учетными записями;

................................................................................ ...

1,1:--.ILI:\ 11:1 11р1шt·р:1\. llp:11,1 111,a

4. Выберите пользователя, автоматический вход которого нужно обеспечить;
5. Включите параметр Автоматический вход
6. Закройте окно Настройки;
7. Перезагрузите систему.

1

-·-­

ilj ,ul)IW11t1>,81'QMfYИ...-C:•t1ll.11C°"'f(ЖН"')'

o�нpou,i.a...c

.,, 1;;>'>
,t:,i;м,i,н!
O"r.llW••
fpiщ;J..�

!

QA1rciмnм-�мMaQA1cжrвoyniм;,,e{aotl)I..U�
о,ЩЖl/кn.у�н.... с.«мм

Рис. 2.25. Настройка автоматического входа в Astra Linux

Примечание. Дистрибутив Astra Linux очень понравился и это
не реклама. Не смотря на неказистый интерфейс (современ­
ные версии Ubuntu выглядят довольно презентабельно, а Astra
Linux чем-то похож на дистрибутивы начала 00-вых), он доволь­
но удобен в настройке, а подобной панели управления очень не
хватает в той же Ubntu. Продумано множество мелочей, тот же
консольный вход при входе в систему - видно, что дистрибутив
создавался Linuх-пользователем для Linuх-пользователя.

2.4. Завершение работы из консоли
Ранее было рассказано, как завершить работу в графическом режиме. Но
Linux поддерживает ряд команд, позволяющих завершить работу системы из
консоли. Данные команды вы можете, как вводить вручную, так и использо­
вать их в сценариях командной оболочки.



....................................................................................

1:шва 2. Вхо.1 в c11c1t.·,1�

.....

vbvnt\l

•""-'i)"Of>...
___

� Нк'rроt!ц :жр11но•

• ubuntu

Ф Ком6мн1щим 1V1.taи111

-t eneциa.nw.w•-cкrм

*

Alll'OИllТМ'IKKMil8AOД

t[)

r1pl'/IOЖ
...MII ПО �О/tЧ8ИИIО

Рис. 2.26. Настройка автоматического входа в Ubuntu

Для завершения работы в Linux используются следующие команды:
• poweroff - завершает работу системы Linux и отключает питание
компьютера;
• hal t - завершает работу системы, но не отключает питание;
• reboot - перезагружает систему;
• shutdown - обеспечивает более гибкое завершение работы.
При завершении работы (в том числе и при перезагрузке) производится
ряд очень важных действий, а именно синхронизация буферов ввода/выво­
да и размонтирование смонтированных файловых систем. Именно поэтому
очень важно правильно завершить работу системы.
Программа shutdown может не просто завершить работу системы, а сделать
это в указанное время. Причем всем зарегистрированным в системе пользо­
вателям на их консоль будет отправлено сообщение (определяется админи­
стратором) о необходимости завершения работы или перезагрузки. Формат
вызова команды shutdown следующий:

,.

. -... - -. - ... -...... -. - . - - - - - .. -. -. - . - .... -..........................- ........... ...

I.INtl:X щ1 щ>11мерах. rlpai,111кa

shutdown [параметры]

[время]

[сообщение]

Пример вызова команды shutdown:
sudo shutdown -r now Вуе!
sudo shutdown -h 19:00

В первом случае система будет перезагружена (-r) моментально (время now), а всем пользователям будет отправлено сообщение "Вуе!". Сообщение
не обязательно и вы можете его не указывать, что и продемонстрировано на
примере второй команды. Во втором случае работа системы будет заверше­
на (-h) в 19:00. Пользователи получат стандартное сообщение, что работа
системы будет завершена.
Примечание. Команды завершения работы требуют полномо­
чий root, поэтому вводит их нужно через команду sudo.

Дополнительные параметры shutdown приведены в таблице 2.1.
Таблица 2.1. Параметры команды shutdown

Параметр

Описание

-Н (или --halt)

Завершает работу системы, питание не отключается

-Р (или --powerojf)

Завершает работу системы, питание отключается

-r (или --reboot)

Перезагружает компьютер

-h

Аналогично --poweroff, то есть завершение работы с
отключением питания

-k

Работа системы не завершается, просто каждый
пользователь получит указанное сообщение

--no-wall

При завершении работы системы (в том числе перезагрузке) пользователям не будут выводиться



Отменяет отложенное завершение работы ( если вы
передумали завершать работу или перезагружать
систему, но при условии, что процесс завершения
работы еще не начат)



................................................................... , ................ .

Глава 3.

Сразу после установки

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

3.1. Проверяем и устанавливаем обновления
Очень важно поддерживать систему в актуальном состоянии. Если вы не
выбрали установку обновлений при установке системы или не вы устанав­
ливали систему, самое время проверить наличие обновлений.
В Astra Linux щелкните по значку средства обновлений, откроется окно со
списком пакетов, требующих обновления. Нажмите Да, чтобы произвести
обновление системы.
В Ubuntu нажмите Alt + F2, в появившемся окне введите команду update­
manager. Откроется окно менеджера обновлений (рис. 3.2). Менеджер про­
изведен поиск обновлений и, если таковые будут найдены, предложит их
установить. Обычно обновления в Ubuntu устанавливаются автоматически,
поэтому при вызове менеджера вы можете часто увидеть картину, изобра­
женную на рис. 3.2. Она означает, что обновления уже установлены и для их
применения нужно перезагрузить компьютер.
CI-················································································'

1 тша

J.

Сра 1�

IIOC. lt' �t· 1 а IIIIBIOI

MчФirfi@k·i

Пакnы. 11;01орые fryдyr обновлены:

ore\: .кpl-supportamd64(0.142-&1stra2 ..-;. 0.14З-3a5tr".i1)
orel: acpi•support-ьase:amd64 (0.142-8astra2 •> 0,14З-3astra1)
orel: •ft-mcp-mount:.md64(3.7-0astra1--> З.9-0ilstr•11
orel: ark:.amd64(4:19.04.1-oastra1 •> 4:19,12.0-1astra2}
о� astra--rnx:hmodx-modu�ommon:amd64(4.1� 3 1- .astra4 ,.,. 4.15.3-2..astraS)
oret as.tra-nochmodx-moduk!..genenc-meta:amdб4 {4.15.3-1.иtra4 •> 4. 15,З-2.аstта5}
oret astr;1-nochmodx-modulto-hardened-mda:•md64 {4.t5.3-1..rstra4-> 4.15.3-2.astraS)
or.t astro1•nO(hmodx-modukнn�ta:amd64(4.1!..3-1.astt.a4 •> 4.15.З-2..1straS)
or� ,11stra-safepolicy:amcН>4(1.0 8З+Ь1 .,,. 1..0.88+ci6)
orel: astra-scripts:amd64(0.3 •> 0.5)
o,el: ascra-�rsion:amd6ol (2.14.22-> 8.1.2+v2. 12.29)
orel: chromtum:amd64(76.0,3809.100-1.utraЗ •> /I0.0.3�7.87-1astra6)
oret: chromlum 80.0.3987.87-1astra6)
oret compton:arnd64(6.2.-as:tr.12. .,. 6 .2-astraбl
оШ connm.1n:amd64 {1.D·3astra6 .,. t .ЗЭ-3-+deb9u1+ci2020041-41721"astra2)
oret cups:-iimd64 {2.Z.1-&astra7 ...,. 2.21-8,ii;stra11)
or�: cups-Ьsd:amd64(2.21-&astra7-> 2.21-&astr-i111)

Рис. 3.1. Обновление системы в Astra Linux

Рис. 3.2. Менеджер обновлений в Ubuntu

Нажмите кнопку Настройки (рис. 3.3), чтобы настроить периодичность
проверки обновлений. Если вы не хотите, чтобы система автоматически про­
веряла наличие обновлений, из списка Автоматически проверять наличие
обновлений выберите Никогда.
Если вы предпочитаете командную строку, то откройте терминал и введите
команду (для полного обновления системы):
sudo apt update && sudo apt full-upgrade

'·- --

- - .......... -. - ........ -. -.... -...-· .... - .. -..............-· ............. -

... ...

1.1:\1. :Х щ1111нl\1t•pa,. llpaю111,a

11:0fДII мн, oq4,ICll11ТN1t•"*''YA4" АН- •ранм�tЩ•""'°9'- &n-н .... ,..
н�•,.•п•е...оnщ11,1.м�rст--,...,а,ы�ж-н1Wм-1> processes.txt

Если файл processes.txt не существует, он будет создан. Если существует перезаписан. Если нужно дописать вывод программы в конец файла, не уда­
ляя существующий файл, тогда используйте два знака больше:

...

ps -А >> processes.txt



.. . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . . . .. . . . . . . . . . . .. . .. . . . . . . . . . . . . . . -- ............. .

·� 1ава ....

Основы

IOI\Hlll,IIIOii С I J)OIOJ

В этом случае, если файл не существует, то он будет создан, а если существу­
ет, то информация будет дописана в конец файла.

4.4. Справочная система тап
В Linux справочная система всегда под рукой. Например, если вы забыли
параметры команды df, просто введите команду:
man df

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

4.5. Команды для работы с файлами и
каталогами
4.5.1. Команды для работы с файлами
В каждой операционной системе есть команды для работы с файлами и ката­
логами. Linux - не исключение. Рассмотрим стандартные команды Linux для
работы с файлами (см. табл. 4.1).
Таблица 4.1. Стандартные команды Linux для работы с файлами

Команда
cat файл

•.

Описание
Выводит текстовый файл. Файлы могут быть довольно длинными, поэтому лучше использовать ее в
паре с командой less, например, cat /etc/services l less

.. . . . . -............ - - - .... -. - .... -..... -. - . - ........ ..... ..
""

"

"" "

... .......
"

"

. .. ...

1 l'\I '\ ••а ••IШ\Jt·pa,. llp:11.• ••••a

tac файл

Подобна команде cat, но выводит файл в обратном
порядке. Данная команда удобна для чтения журналов, в которых самые свежие сообщения заносятся
в конец файла, например, tac /var/log/messages l less

ер файл} файл2

Копирует файл1 в файл2. Если второй файл существует, программа спросит вас, нужно ли его перезаписать

mv файл 1 файл2

Используется для перемещения файла 1 в файл2.
Можно использовать для переименования файлов

rm файл

Удаляет файл

touch файл

Используется для создания нового пустого файла

locate файл

Быстрый поиск файла. Позже мы рассмотрим процесс поиска подробнее

which исполнимый
файл

Производит быстрый поиск программы (исполнимоrо файла). Если программа находится в пути
РАТН, то which выведет каталог, в котором находится программа

В таблице 4.1 представлены основные команды, которые используются для
создания (touch), копирования (ер), перемещения (mv) и удаления (rm) фай­
лов, а также несколько дополнительных команд.
Рассмотрим несколько примеров:
$
$
$
$

dmesg > kernel.messages
cat kernel.messages I less
ер kernel.messages krn.msg
rm kernel.messages

Первая команда выводит загрузочные сообщения ядра в файл kernel.
messages. Вторая выводит содержимое этого файла на экран, а команда less
организует удобный постраничный просмотр этого файла. Далее команда ер
копирует файл kernel.messages в файл krn.msg, а последняя команда удаляет



С8-------------------. -.----. -. -----.. -. -----.. -. -. -----.--------. -. ------. -------..

1. ia11a -1. Ос1ю11ы 1,1ш:ш 111oii t· 11юю1

наш исходный файл kemel.messages. В принципе, вместо последних двух ко­
манд можно было использовать одну команду mv:
mv kernel.messages krn.msg

При указании имени файла вы можете использовать маски* и?. Как обычно,
символ * заменяет любую последовательность символов, а ? - один символ.
Например:
rm
rm
ер
ер

*.tmp
/tmp/*
*.txt /media/ext-usb
???.txt /media/ext-usb

Первая команда удаляет все файлы, заканчивающиеся на ".tmp", в текущем
каталоге. Вторая - удаляет все файлы из каталога /tmp. Третья копирует все
файлы с "расширением" .txt из текущего каталога в каталог /media/ext-usb.
Четвертая команда копирует все файлы, имя которых состоит из трех любых
символов и заканчивается на ".txt", например, abc.txt, в каталог /media/ext­
usb.
Примечание. Как вы уже догадались, к каталогу /media/ext-usb
можно подмонтировать внешний USВ-диск и тогда копируемые
файлы физически окажутся на внешнем жестком диске. Подроб­
.нее о монтировании мы поговорим в других главах.
Примечание. Обратите внимание, что в таблице 4.1 команды
представлены без параметров. Хотя дополнительные параме­
тры есть у каждой команды. Вы не обязаны помнить все пара­
метры, для этого есть справочная система тап. Вам нужно пом­
нить только названия команд, а параметры вы всегда сможете
"подсмотреть" в тап.

Мы не рассмотрели команды редактирования текстовых файлов. Они не
являются стандартными (кроме программы vi, которой пользоваться очень
неудобно), но в вашей системе по умолчанию могут быть установлены следующие текстовые редакторы:
'-···················-·-·-·-·················-····································

...

l,l�llX 11а 111ш,1сра,. Гlрак1111,а

• nano - удобный текстовый редактор;
• joe - небольшой иудобный текстовый редактор;
• pico - текстовый редактор, устанавливаемый вместе с почтовым клиен­
том рше;
• mcedit - текстовый редактор, устанавливаемый вместе с файловым ме­
неджером mc.
Если у вас нет этих редакторов, вы можете установить их. Например, устано­
вите mc - и вы получите и файловый менеджер и текстовый редактор сразу:
sudo apt install mc

4.5.2. Команды для работы с каталогами
Аналогично командам для работы с файлами, команды для работы с катало­
гами представлены в таблице 4.2.
Таблица 4.2. Стандартные команды Linux для работы с каталогами
Команда

Описание

еdкаталог

Изменение каталога

ls каталог

Выводит содержимое каталога

rmdir каталог

Удаляет пустой каталог

rm -r каталог

Рекурсивное удаление непустого каталога

mkdir каталог

Создает каталог

ер каталог] каталог2

Команду ер можно использовать и для копирования каталогов. В данном случае ер копирует
каталог 1 в каталог 2

mv каталог! каталог2

Команду mv можно использовать и для перемещения каталогов. В данном случае mv перемещает каталог I в каталог 2



-·····-·-·-·-····-···-····-·-···-·-······-·-·-······-·--·······-·-············--···

1. 1ава -t. Ос1юв1,1 к1ш:111 111oii с I рою1

Обратите внимание, что команда rmdir не может удалить непустой каталог,
поэтому если не хотите удалять сначала файлы и подкаталоги из удаляемого
каталога, то лучше использовать команду rm -r каталог. Например:
$ mkdir /home/bagira/test
$ touch /home/bagira/test/test-file
$ rm -r /home/bagira/test
Как и в случае с командой rm, �ы можете задать параметр -r для команд ер
.и mv. В этом случае операция копирования или перемещения будет выпол­
няться рекурсивно.
Очень важной операцией является просмотр содержимого каталога, для ко­
торой используется команда ls. Поэтому сейчас сделаем исключением для
этой команды и рассмотрим ее параметры (табл. 4.3). А общий формат вы­
зова этой команды таков:
1s [параметры] [каталог]
Таблица 4.3. Параметры команды /s

Параметр

Описание



Выводит список файлов в колонках с вертикальной сортировкой

-F

Для каждого каталога добавлять суффикс'/', а для каждого
исполняемого файла -'*', а для каждого FIFО-канала -'1'

-R

Рекурсивный вывод, то есть команда ls будет выводить не
только содержимое каталога, но и подкаталогов



Показывать скрытые файлы

-i

-!

Показывать иноды для каждого файла (будет показан серийный номер файла)
"Длинный" формат вывода, в котором отображается тип
файла, права доступа, количество ссылок на файл, имя владельца, имя группы, размер файла, метка времени создания
файла и имя файла.
В колонке типа файла могут быть следующие значения: d
(каталог), Ь (блочное устройство), с (символьное устройство), 1 (символическая ссылка), р (FIFО-канал), s (сокет)

··················································································-818

IJNLIX на 11p11мt•pa,. llpai,1 111,a

1 Сортировка в обратном порядке

-r

В таблице 4.3 приведены не все параметры команды /s, а только самые ос­
новные.
При задании имени каталога можно использовать следующие специальные
имена:
• . - обозначает текущий каталог.
• .. - обозначает родительский каталог.
• ~ - домашний каталог пользователя, например, если вы вошли.под поль­
зователем bagira, то путь ~/file.txt равноценен /home/bagira/file.txt.

4.6. Команды системного администратора
Существуют команды, которые нужно знать каждому системному адми­
нистратору. В этой главе рассматривается необходимый минимум таких
команд. Нужно отметить, что команд системного администратора гораздо
больше в Linux, по сути, в каждой главе мы рассматриваем те или иные ко­
манды администратора. В этой главе мы рассмотрим некоторые базовые ко­
манды. Возможно, они не пригодятся вам прямо сейчас, но вы еще не раз
вернетесь к этой главе в будущем.

4.6.1. Команды для работы с устройствами и драйверами
В таблице 4.4 приведены некоторые команды, которые помогут вам обнару­
жить аппаратную проблему- проблему с устройством, либо с его драйвером.
Таблица 4.4. Команды, предоставляющие информацию об устройствах
Описание

Команда

Очень важная команда, сообщающая версию
ядра. Очень важно, чтобы устанавливаемые
модули были откомпилированы под вашу
версию ядра

uname -а







..................................................................................... .

1: шва ....

(ktlllBl,I I,IШatl,IIIOii t" 1

рш,11

lsdev

Выводит информацию об устройствах. По
умолчанию эта команда не установлена, нужно установить пакет procinfo

lshal

Выводит параметры всех устройств

lspci, lsusb, lshw·

Выводят соответственно список PCIустройств, USВ-устройств и список оборудования компьютера

lsrnod

Выводит список загруженных модулей ядра

drnidecode

Отображает информацию о BIOS компьютера

cat /proc/cupinfo

Выводит информацию о процессоре

cat /proc/rnerninfo

Отображает информацию о памяти

cat /proc/rnounts

Показывает точки монтирования

cat /proc/net/dev

Выводит сетевые интерфейсы и статистику
по ним

cat /proc/version

Похожа на uname, выводит версию ядра

cat /proc/interrupts

Отображает информацию по прерываниям

cat /proc/swaps

Выводит информацию о файлах подкачки

4.6.2. Команды настройки сетевых интерфейсов
Подробно настройка сети будет рассматриваться далее, а пока рассмотрим
таблицу 4.5, в которой представлен короткий список команд, которые вам
могут пригодиться при настройке сети.
Таблица 4.5. Некоторые команды настройки сети
Команда
route

Описание

...

Просмотр и изменение таблицы
маршрутизации

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .

1.1:\[':\ 11а 11p11,н·pa,. llpa1, 1 111,a

dmesg

1

Просмотр сообщений ядра, которые выводятся ядром при загрузке
системы

less

iwconfig

Выводит информацию обо всех
беспроводных интерфейсах

iwlist scan

Поиск беспроводных сетей

dhclient wlanO

Обновляет IР-адрес и другую сетевую информацию беспроводного
интерфейса wlanO

iwevent

Просмотреть события беспроводной сети

sudo /etc/init.d/dbus restart

Перезапуск всех сетевых служб (ра·ботает не во всех дистрибутивах)

sudo systemctl restart
или service restart

Перезапуск службы. Например,
sudo systemctl restart networking перезапускает сеть

4.6.3. Программы тестирования и настройки жесткого диска
Команды для тестирования и настройки жесткого диска, подобно ранее при­
веденным командам, также представлены в виде таблицы - табл. 4.6.
Таблица 4.6. Команды для тестирования и настройки жесткого диска
Команда
-v
badЬlocks


hdparm

Описание

Осуществляет проверку жесткого диска на наличие
"плохих" блоков. Параметр -v включает подробный
отчет
Тестирование производительности и настройка
жесткого диска. Например, параметр -t может протестировать производительность (hdparm -t /
dev / sda), а параметр -Е установить скорость привода CD/DVD:
hdparm -Е 2 /dev/srO

1'
.....................................................................................

1. 1.111а -t. ( k1юв1,1 1,11ча11 111mi t· 1 pm.:i1

hddtemp

Отображает температуру жесткого диска

bonnie

Тестирует производительность жесткого диска

cpuburn

Тестирование процессора (стресс-тест процессора)

screentest

Тестирование и настройка монитора

smartmontools

SМАRТ-мониторинг. Нужно, чтобы ваши жесткие
диски поддерживали S.M.A.R.Т

4. 7. Команды обработки текста
4.7.1. Редактор sed
Команда sed - мощный потоковый редактор и ему можно было бы посвятить
целую главу, но не вижу такой необходимости, поскольку в современных
дистрибутивах имеется документация на русском языке. Главное знать, что
такая программа есть. А чтобы вы заинтересовались, давайте рассмотрим
несколько примеров использования этой программы:
Заменить строку "stringl" на ""string2" в файле report.txt, результат вывести
на стандартное устройство вывода:
sed 's/stringal/stringa2/g' report.txt

вывести пятую строку файла report.txt:
sed -n '5p;5q' report.txt

Удалить пустые строки из файла:
sed '/ л $/d' report.txt



....................................................................................

l,l'iL :\ 11а 111111\lt·p:I\. llpai-1 111,a

Удалить строку "stringl" из текста, не изменяя всего остального:
sed -е 's/stringl//g' report.txt
Удалить пустые символы в в конце каждой строки:
/
sed -е 's/ *$//' report.txt
Удалить пустые строки и комментарии из файла:
sed '/ *#/d; /л$/d' report.txt
Преобразовать символы из нижнего регистра в верхний:
echo 'test' 1 tr ' [: lower: ] ' ' [: upper: ] '
Удалить первую строку из файла:
sed -е 'ld' report.txt

4.7.2. Подсчет количества слов/символов
Команда wc используется:
• для подсчета слов в текстовом файле:
wc /var/log/messages
• для подсчета количества строк (если задан параметр-\):
wc -1 /var/log/messages
• для подсчета количества символов (параметр-с):

...

wc -с /var/log/messages

. ···· · - . - . - -- . --· .. - . - . -..... . -



·- ........................................... ..... .

1. 1ав:1 �- ( k11он1,1 1,оча11 11ю11 t· 1 р,11-:11

4.7.3. Сравнение файлов
Команда стр используется для сравнения двух файлов. Если файлы иден­
тичны, то стр вообще никак не реагирует. А вот если файлы отличаются,
то стр выводит номер строки и номер символа в строке, откуда начинается
различие.
Команда стр более универсальна, поскольку она может использоваться как
для сравнения текстовых, так и двоичных файлов. А вот команда diff и ее
аналоги умеют сравнивать только текстовые файлы.
Формат вызова команды следующий:
cmp [параметры] файлl файл2

Параметры команды стр указаны в табл. 4.7.
Таблица 4. 7. Параметры команды стр

Параметр


-i п
-/

Описание
Вывод отличающихся символов
Игнорировать первые n символов
Вывод позиций всех отличий, а не только первого
Не выводить информацию на экран, при этом код возврата будет следующим:

-s

О - файлы одинаковые;
1 - файлы отличаются;
2 - ошибка при открытии одного из файлов

4.7.4. Разбивка текста на колонки
Команда со/итп используется для разбивки текста на несколько столбцов.
Текст может быть прочитан как из файла, так и со стандартного ввода, если
,;айл не указан.

....................................................................................

1.1'\1 \: 11a 11p11,1cpa\. llpa1.: 1 111.:a

Формат вызова команды:
colurnn [параметры] [файл]

Параметры команды column приведены в табл. 4.8.
Таблица 4.8. Параметры команды column

Описание

Пара.метр
-сп

Задает количество столбцов (число п)

-s символ

Указанный символ будет использоваться в качестве
разделителя столбцов

-t

Текст будет форматироваться как таблицы. По умолчанию разделителем полей считается пробел, но с
помощью параметра -s можно задать другой разделитель



Сначала будут заполняться столбцы, а потом строки

4.7.5. Команды dijfи dijfЗ
Команда используется для сравнения двух файлов. Формат вызова програм­
мы diff.
diff [параметры] файлl файл2

В выводе программы отличающиеся строки помечаются символами> и tЧe1Ьol!leTopt-.иenp11e1

Рис. 8.2. Програм.11tы и обновления

Формат вызова команды apt следующий:
sudo apt [опции] команды [пакет]
В качестве примера приведу команду установки пакета mc:
sudo apt install synaptic
Обратите внимание, что я запускаю команду от имени root. Если запустить
команду apt через команду sudo (sudo ар! install synaptic), нужно, чтобы
пользователь, который запускает sudo, был внесен в файл /etc/sudoers.
По умолчанию пользователь, которого вы создаете при установке Debiaп, не
вносится в этот файл, поэтому нужно или получать права root командой su,
или добавить пользователя в файл /etc/sнdoers.

...

Основные команды apt приведены в таблице 8. 1.

- - - - . - - - . - - - - - - - - - - - - - - . - . . - - - - - - - - - - - - - . .. - - . - . - - - . . - .. - - - - . - - - - - - . - - - - . - - - . - . -



..

1. 1а11а Х. Yt· 1 :111с111ю1 111ю1 ра\1,1 11 l .i1111x

Таблица 8.1. Основные команды менеджера пакетов apt-get
Команда

Описание

install

Устанавливает пакеты из списка. Элементы
списка разделяются пробелами

remove

Удаляет пакеты из списка. Элементы списка
разделяются пробелами

purge

Удаляет не только пакеты, но их конфигурационные файлы. Это означает, что если вы
установили какую-нибудь программу, настроили ее, а потом удалили командой apt remove,
то конфигурационный файл этой программы
останется в системе. Если вы теперь установите эту программу снова, то можно будет использовать предыдущий конфигурационный
файл, так как он не был удален

check

Поиск нарушенных зависимостей

clean

Очищает локальное хранилище полученных
пакетов. При установке пакеты из репозитария загружаются в каталог var/cache/apt/
archive. При интенсивной установке программного обеспечения в этом каталоге накапливается довольно много пакетов, поэтому
очистка хранилища помогает сэкономить дисковое пространство

Обновляет указанные пакеты, если пакеты не
upgrade [список пакетов] заданы, обновляет все пакеты, требующие обновления
full-upgrade

Обновляет всю систему

update

Синхронизирует внутреннюю базу данных о
пакетах с источниками пакетов, которые описаны в /etc/apt/sources.list



··-·-·--···-···-···-····-·-·-·······································-·-·-·········Clt

1 1"-1:\11:1111111,1ера,. llpa,,1111,a

autoremove

Когда вы устанавливаете пакет, то часто устанавливаются дополнительные пакеты, являющиеся его зависимостями. Если теперь вы
удалите этот пакет, то зависимости останутся
в системе. Команда apt autoremove удаляет эти
зависимости, но только те, которые не нужны
другим установленным пакетам
Выводит список пакетов, соответствующих
какому-то критерию. Примеры приведены далее.
Вывести список установленных в системе пакетов:
apt list --installed

list

Вывести список пакетов, которые требуют обновления (у которых вышла новая версия):
apt list --upgradaЫe

Вывести список всех пакетов доступных для
вашей системы:
apt list --all-versions

show

Выводит информацию о пакете

search

Данная команда выполняет поиск указанного
слова в названии пакетов и в описании пакетов. Поддерживаются регулярные выражения

edit-sources

Открывает файл /etc/apt/sources.list в текстовом редакторе для редактирования, после сохранения изменений и закрытия редактора,
выполняет проверку файла на предмет ошибок. В случае наличия ошибок, выводит предложение на повторное редактирование файла,
чтобы исправить ошибки

.... .



... . ... . ..... --- . ........................................................... .

1. ,ава Х. � t·, :111m11,a 11pm р:ш\1 в l .i1111,

8.5. Графические средства установки программ
Установка программ из пакетов имеет свои недостатки. Самый главный из
них - вам нужно знать имя пакета, в котором находится нужная вам
програмlvfа. Если вы следуете какому-то руководству, то особых проблем нет
- открыл терминал, ввел команду установки нужного пакета и все. Когда вы
знаете имя пакета или команду установки, все хорошо. Но если таких
познаний у вас нет, тогда вам нужно или найти имя пакета в Интернете или
же воспользоваться графическими средствами для установки программ.
В состав дистрибутива Astra Linux входит, на наш взгляд, один из самых
удобных графических менеджеров пакетов - Synaptic. Вы найдете его в
программной группе Системные. Использовать Synaptic очень просто (рис.
8.3). Слева отображаются группы пакетов и фильтры (под группами паке­
тов), позволяющие отфильтровать список пакетов по разделам, состоянию,
архитектуре и т.д. В правой верхней части находится список пакетов в вы­
деленной группе. Если выделить любой из пакетов, в область ниже будет
загружено его описание.
м М�но:джuр llJll(Croo synnptн:

...

о

Обноать

_

1Z

Отмеiитьасеобноалени,�

fly
fl'y (не свободный)
fly {соnутст�ющий)
Администрирование системы
N:tминистрмровани11 сж:темы {не с
БибnиоN1:и
Библиоте-ки(несвободный)
БибАиоте.«.и- р.uрабоl'ка
6и6лиотни- раэрабоtка(Ж?сеобо.
6и6лиотки-старые

nромсхQЖАенне

; .. ---�--��-�:-��-�-�•тры
Результ•ты nоис,;.а

1
},то1�0&11�н.u� пОСJ)еднцнt)(� оn�сание�

-- -



mariadb-sel'V@f•10,1

10,1.37-0+deb9u1

mariadb-serwr-core-10.t

10.1.37-0+deb9u1

MariaDBdat.tЬ.S@corese!'V1М"f�es

О

mariadЬ-test

10.1.37-4>+deb9u1

MariaDBdataЬaS@.re,grбSiontest suite

О

m.ari,;idЬ-t@St.-dat:a

10,1.З7-О+dеЬ9u1

Ma(iaDB dataЬil!S@regr@SSIOn tnt suite. da

О

odЬc-postgresql

О

pgadmin3

О

pgadmin3-data

MariaOBd,Шth.:lse-serverblnaries

k,

pgpool2

О

pmtgresql

for PostgreSQJ

Ьо1 for PostgreSQL.
�L

pgage:nt

О

r replication pro�
Ьа.sе (supported v,
se, version 9.б se,

Своikтв а ·
or�•�7 p�к

f• UI 1 Н, ! lj i ja\

Н,1( l{H>.H Принтеры

Здесь отображается производитель и модель принтера, а также его состо­
яние (в данном случае - Готов). При нажатии на шестеренку открывается
меню операций с принтером. Здесь можно назначить устройство принтером
по умолчанию, если у вас несколько принтеров. Команда Удалить принтер
позволяет удалить устройство, если оно вам не нужно. Команда Пара­
ме тры печати открывает окно с настройками принтера (рис. 11.3 ).

- -

:j_ Пробная страница

1

Параметры страницы
качество июбраж.ения
Дополнительно

о
СТран11ц на сторону
Двусторонняя nеч.ать
Ориентация
Media Slze
источники бумаrи
тиn бумаrи

1 1 v
Односторонняя печать
Книжная
1 А4

··--··

-·--------··--- ---

j

! Выбрать автоматически ...,.

----

Use Prlnter Defautt v

--- ------

Рис. 11.3. Настройки принтера

Здесь нет ничего интересного - разве что можно выбрать размер бумаги,
если вы хотите печатать не на стандартных листах А4. В разделе Качество
изображения можно выбрать качество печати, если принтер поддерживает
такую настройку (рис. 11.4).

ID---.......... ----...... _.__ .... -...... -... -........----......--................... '

1.�ава ll. llt·•1ai1,,щк��н·111111111 l,i1111x

О

ML•11150-Serles

Ton.er SaNi':

Use Prlnter Derautt ...,,,

Ра,решение:

Рис. 11.4. Качество изображения

В дополнительных настройках самый полезный параметр - Power Save, за­
дающий время неактивности принтера. По умолчанию принтер выключает­
ся (переходит в режим сна) через 5 минут, что не всегда удобно,

О

ML•21150-Serles

Параметры страницы
Качество изображения
дополнительно

Air pressure
Pщversave

Tner Density
Reprint When Jam

,

High V

SMlnutes V

1

Me-dium v

а~

Рис. 11.5. Дополнительные настройки принтера

Нажмите кнопку Дополнительные настройки принтера - откроется окно
Принтеры, в котором вы увидите список установленных принтеров в ва­
шей системе. Щелкните правой кнопкой на принтере, чтобы открыть его
контекстное меню, Выберите команду Просмотр очереди печати для
просмотра очереди печати принтера. Здесь вы можете управлять заданиями
на печать.

•..-----.--.-----.----------..--.----.-------..-.-...--..--.-.-...---.-.-.-........-tD

1 l'\I. :\ 11 а 11p11\1t·pax.llpai,1 111,а



Рис. 11.6. Ок110 При11теры

--

-

о

�Мl.·!IIO

n,,.,,,.,.�..t

- с О

�r'IPМмlf'PNO..,._.-

0.o.ltwn.

,.

С

�. kк�

Рис. 11. 7. Управление задания.ми на печать

11.2. Осуществление печати из приложения
Как правило, в любой программе, подцерживающей печать, есть команда
Печать и обычно она находится в меню Файл. На рис. 11.8 изображено окно
печати приложения LibreOffice Writer - в нем есть область предварительного
просмотра, позволяющее оценить результат печати. В большинстве случаев
вам нужно просто нажать кнопку Печать.



.....................................................................................

1. 1:111:1

11.

l ll"l:t 11. ,ю1,� Ml'II I ов

в

l ,i111н

',:::

t !k * "1• Разделение элементов пути осуществляется с помощью символа /, а не
\, как в Windows. В Windows мы привыкли к путям вида C:\Users\John, в·
Linux используется прямой слэш: /home/john.
• Если имя файла начинается с точки, он считается скрытым. Пример:
.htaccess.

12.3.2. Файлы устройств
Уникальность файловой системы Linux в том, что для каждого устройства в
Linux создается собственный файл в каталоге /dev. Загляните в каталог /dev
- в нем вы найдете множество файлов для всех устройств вашей системы.
Вот примеры некоторых файлов устройств:

....



.................. .................... ......................................... ..

l.1ава 12. Фа1i.юв:ш е11t·1еча

• /dev/sda - первый жесткий диск, как правило, подключенный к первому
SАТА-контроллеру.
• /dev/sdal - первый раздел на первом жестком диске. Нумерация разделов
жестких дисков в Linux начинается с 1.
• /dev/mouse- файл устройства мыши.
• /dev/cpu - файл устройства процессора;
• /dev/cdrom - ваш С D/DVD -привод;
• /dev/random - файл устройства-генератора случайных чисел;
• /dev/ttyl- первая консоль (терминал).
Файлы устройств бывают двух типов: символьные, обмен информацией с
которыми осуществляется посимвольно, и блочные, обмен информацией с
которыми осуществляется блоками данных. Пример символьного устрой­
ства-/dev/ttySO- последовательный (СОМ) порт, пример блочного устрой­
ства-/dev/sdal- раздел жесткого диска.

12.3.3. Корневая файловая система и основные подкаталоги
первого уровня
С амое большое отличие, к которому придется вам привыкнуть- это наличие
корневой файловой системы. Вспомните, как Windows управляет жесткими
дисками. Представим, что у нас есть жесткий диск с двумя логическими дис­
ками (разделами). Первый будет в Windows называться С:, а второй- D:. У
каждого из этих логических дисков будет свой корневой каталог- С:\ и D:\.
В Linux все иначе. Представьте, что мы разбили жесткий диск /dev/sda на
два раздела (как и в случае с Windows). Первый будет называться/dev/sdal
(Windows бы его назвала С:), а второй -/dev/sda2 (в Windows он был бы D:).
Мы установили Linux на первый раздел/dev/sdal. Точка монтирования этого
раздела будет/, что соответствует корневой файловой системе. Второй раз­
дел вообще никак не будет отображаться, пока вы его не подмонтируете.
Подмонтировать можно к любому каталогу. Например, вы можете подмон­
тировать раздел/dev/sda2 к каталогу/home и тогда домашние каталоги поль­
зователей будут храниться физически на другом разделе. Точка монтирова­
ния- это каталог, через который осуществляется доступ к другому разделу.



·----·--·------------·-----·-·-··-----··---·-----·-·········-·····················-&t

1.1:\t :\ 11:1 щн1\lt'pax. llpa1.:1111-.:a

Правильнее сказать даже к другой файловой системе, которая физически
может находиться на другом разделе, на другом жестком диске, на внешнем
жестком диске, флешке и т.д.
Корневая файловая система содержит стандартные каталоги. У каждого ка­
талога есть свое предназначение, например, в каталоге /Ьin хранятся стан­
дартные программы, в каталоге /home - домашние каталоги пользователей,
в каталоге /tmp - временные файлы и т.д. Назначение стандартных каталогов
приведено в таблице 12.1.

Таблица 12.1. Назначение стандартных каталогов корневой файловой
системы Linux
Каталог

Описание

/

Каталог корневой файловой системы

/Ьin

Содержит стандартные утилиты (cat, ls, ер и т.д.)

/Ьооt

Содержит конфигурационный файл загрузчика и некоторые
модули загрузчика

/dev

Содержит файлы устройств

/etc

В этом каталоге находятся конфигурационные файлы системы и программ

/home

Здесь хранятся домашние каталоги пользовател�й

/lib

Содержит библиотеки и модули

/lost+found

В этом каталоге хранятся восстановленные после некорректного размонтирования файловой системы файлы

/misc, /opt

Опциональные каталоги, могут содержать все, что угодно.
Некоторые программы могут устанавливаться в каталог /
opt

...

/media

Некоторые дистрибутивы монтируют сменные устройства
(оптические диски, флешки) к подкаталогам этого каталога

. . - . - . - . . - ..... - . - - . - - - . - - - - .. - ... - ... - . - . - -... - . -.... -.......... - .. - - - . - .. - ... -

•..

1.rава 12. Фаii.юваs1 c11c1r,1a

/mnt

Содержит точки монтирования. Как правило, здесь хранятся стационарные точки монтирования, которые обычно
описываются в файле /etc/fstab

/proc

Каталог псевдофайловой системь1 procfs

/root

Каталог пользователя root

/sЬin

Содержит системные утилиты. Запускать эти утилиты имеет право только пользователь root

/tmp

Содержит временные файлы

/usr

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

/var

Содержит постоянно изменяющиеся данные системы почтовые ящики, очереди печати, блокировки (locks) и т.д.

12.4. Ссылки
Ссылки позволяют одному и тому же файлу существовать в системе под раз­
ными именами. Ссылки бывают жесткими и символические. Сейчас разбе­
ремся в чем разница. Если на файл указывает хотя бы одна жесткая ссылка,
вы не сможете его удалить. Количество ссылок на файл можно узнать коман­
дой ls -!. Что касается символических ссылок, то вы можете удалить файл,
если на него указывает хоть 100 символических ссылок. После этого они
будут "оборваны" - ссылки, как файлы, останутся на жестком диске, но они
будут указывать на несуществующий файл.
У жестких ссылок есть одно ограничение. Они не могут указывать на файл,
находящийся за пределами файловой системы. Представим, что каталог /tmp
находится физически на одном и том же разделе, что и /. Тогда вы сможете
создать ссылки на файлы, которые находятся в каталоге /tmp. Но если /tmp
- это точка монтирования, к которой подмонтирован другой раздел, вы не
сможете создать жесткие ссылки.
Для создания ссылок используется команда ln:

'.--·---... --.---.--.. -..... ---.. -----.-----..-.------.......---... ·-.-.-. -...... :С18

l,l'\I '\ 11а 11p11\1epa,. llpa1, 1111,a

ln [-s] файл ссылка

Если параметр -s не указан, то будет создана жесткая ссылка на файл. Если
параметр -s указан, то будет создана символическая ссылка.

12.5. Права доступа
12.5.1. Общие положения
В Linux, как и в любой многопользовательской системе, есть понятия вла­
дельца файла и прав доступа. Владелец - это пользователь, которому при­
надлежит файл. В большинстве случаев -это пользователь, создавший файл.
Права доступа определяют, кто и что может сделать с файлом. Права
доступа файла может изменять владелец файла или пользователь root. Вла­
делец может назначить, например, кто имеет право читать и изменять файл.
Владелец также может "подарить" файл другому пользователю. После этого
владельцем станет уже другой пользователь.
Права доступа у пользователя root максимальные, а это означает, что он мо­
жет изменить владельца любого файла (вы можете создать файл, а root может
сделать владельцем любого другого пользователя) и изменить права доступа
любого файла. Пользователь root может удалить и изменить любой файл, мо­
жет создать файл в любой папке и т.д. С одной стороны, это хорошо, но если
злоумышленник завладеет паролем root, то хорошего в этой ситуации мало.
Права доступа в Linux по умолчанию настроены так, что пользователь вла­
деет только своим домашним каталогом /hоmе/. ·
Поэтому создавать файлы и выполнять другие операции по работе с файла­
ми (удаление, редактирование, копирование и т.д.) пользователь может толь­
ко в этом каталоге и то при условии, что файлы принадлежат ему.
Если в домашнем каталоге пользователя root создался файл, пользователь не
сможет удалить или изменить его, поскольку-он не является его владельцем.
Сможет ли он прочитать этот файл, зависит от прав доступа к файлу (о них
мы поговорим позже).
Остальные файлы, которые находятся за пределами домашнего каталога,
пользователь может только просмотреть и то, если это не запрещено права­
ми доступа. Например, файл /etc/passwd пользователь может просмотреть,
а /etc/shadow - нет. Также пользователь не может создать файлы в корневой
...................................................................................

'

1: rана 12. Фaii. юна11 t·11t· H'\la

файловой системе или в любом другом каталоге, который ему не принадле­
жит, если иное не установлено правами доступа к этому каталогу.

12.5.2. Смена владельца файла
Команда chown используется для изменения владельца файла/каталога. Фор­
мат такой:
chown

Здесь пользователь - это новый владелец файла. Чтобы подарить другому
пользователю ·файл, вы должны быть или его владельцем, или пользовате­
лем root.

12.5.3. Определение прав доступа
Для изменения прав доступа используется команда chmod. Для изменения
прав доступа вы должны быть владельцем файла/каталога или же пользова­
телем root. Формат команды следующий:
chmod

Права доступа состоят из трех наборов: для владельца, для группы владель­
ца и для прочих пользователей. Первый набор задает возможности владель­
ца файла, второй - для группы пользователей, в которую входит владелец и
третий - для всех остальных пользователей.
В наборе может быть три права - чтение (r), запись (w) и выполнение (х).
Для файла право на выполнение означает возможность запустить этот файл
на выполнение (обычно используется для программ и сценариев). Право вы­
полнения для каталога - возможность просматривать этот каталог.
Права доступа в наборе определяются четко в определенном порядке и мо­
гут быть представлены, как символьном, так и числовом виде (в двоичной
или восьмеричной системе). Рассмотрим несколько наборов прав доступа:
• 100 - только чтение

•.

. -. -. -. - -..... -. -...... -. -. -... -.... -. -. -...... -. - -- . -... -.. - - -. - - -.. - - - - -. -

........

1.1 '\ 1 :\ на II/III\Jt•11.1,. l lpa1, 1111--.1

• 11О - чтение и запись
• 1О 1 - чтение и выполнение
• 111 - чтение, запись, выполнение
Учитывая, что права доступа задаются для владельца, группы и остальных
пользователей, полный набор прав доступа может выглядеть так:
111 100 ООО

В этом наборе мы предоставляем полный доступ (в том числе и выполнение)
владельцу, группе владельца разрешено только чтение, остальным пользова­
телям доступ к файлу/каталогу вообще запрещен.
В двоичной системе права доступа мало кто записывает. В основном их
преобразуют в восьмеричную систему. Если вы забыли, то вам поможет сле­
дующая таблица (табл. 12.2) .
Таблица 12.2. Преобразование из двоичной в восьмеричную систему
Двоичная система

Восьмеричная система

ООО

о

001

1

010

2

011

3

100

4

101

5

11О

6

111

7

Если вы видите право доступа 666, то никакой дьявольщины в нем нет, это
всего лишь полный доступ к обычному файлу (не к программе и не к сцена­
рию). Для каталога полные права доступа выглядят как 777 - чтение, изме­
нение и просмотр каталога для владельца, группы и прочих пользователей.



---·-····-·-······-·······················-·······-··-·-·-··-···-·-·-···············

1. �.ша 12. Фaii. юн:ш t·11t· 1 t'\la

Просмотреть текущие права доС'l)'Па можно командой 1 s -1 ,
например:
# 1s -1 config
-rw-r--r--. 1 root root 110375 янв 2 08:28 config
Как мы видим, задано три набора rw-, r--, r--. Выходит, владельцу разрешена
запись и чтение файла, остальным пользователям ( группа и прочие) - только
чтение. В восьмеричной системе этот набор прав доступа выглядит как 644.
Первый символ (в нашем случае это -) является признаком каталога. Если
бы мы выводили права доступа каталога, то вместо - здесь был бы символ d.
Для файла выводится просто "-".
Символьный способ задания прав доступа немного проще, но лично я пред­
почитаю числовой. Рассмотрим, как использовать символьный:
# chmod +х config
Просмотрим опять права доступа:
# 1s -1 config
-rwxr-xr-x. 1 root root 110375 sep 2 08:28 config
Как видите, право выполнение было добавлено во все три набора прав
доступа.

12.5.4. Специальные права доступа
В Linux есть еще специальные права доступа SUID (Set User ID root) и SGID
(Set Group ID root), позволяющие обычным пользователям запускать
программы, которые требуют для своей работы прав root.
В современных дистрибутивах Linux вам придется изменять эти права до­
ступа чрезвычайно редко (может быть даже вообще никогда), но вам нужно
знать, как их изменить. Например, если программу /usr/sЬin/program вы хо­
тите разрешить запускать с правами root обычным пользователям, установи­
те права доступа так:

,

. - - -. -. - -. -. -. - . -. -.. -. - . - . -. - .. - ... -...... - . -.......... -... -. -.... -. -...

•,•.

-. -

....

1,1'\[':\ 11а 111111чt·рах. llpa1..:1 111..:a

# chmod u+s /usr/sbin/program

Использование SUID - плохое решение с точки зрения безопасности. Пра­
вильнее использовать команду sudo, если какому-то пользователю будут
нужны права root.

12.6. Атрибуты файла
В Linux кроме прав доступа есть еще и атрибуты файла, подобно атрибутам
файла в других операционных системах. Изменить атрибуты файла можно
командой chattr:
chattr +/-

Просмотреть установленные атрибуты можно командой /sattr:
lsattr

Некоторые полезные атрибуты файлов приведены в таблице 12.3.
Таблица 12.3. Полезные атрибуты файлов
Атрибут

Описание

Запрещает изменение, переименование и удаление файла. Этот
атрибут можно установить для критических конфигурационных файлов или для каких-либо других критических данных.
Установить (как и сбросить) этот атрибут может только пользователь root или процесс с возможностью САР_LINUX_IMMUTABLE. Другими словами, сбросить этот атрибут просто
так нельзя - нужны только права root
и

При удалении файла с установленным атрибутом u его содержимое хранится на жестком диске, что позволяет легко воестановить файл



&:t·· ....---. ---..--.......... ·····-----..... --............. ···-.................---'

1. �.ша 12. Фа1i. юв,н1 r11t· 1 t·,1a

с

Файл будет сжиматься. Можно установить этот атрибут для
больших файлов, содержащих несжатые данные. Доступ к
сжатым файлам будет медленнее, чем к обычным, поэтому
плохое решение устанавливать этот атрибут для файлов базы
данных. Этот атрибут нельзя устанавливать для файлов, уже
содержащих сжатые данные - архивы, JРЕG-фото, МРЗ/МР4файлы и т.д. Этим вы не только не уменьшите его размер, но и
замедлите производительность

s

Данные, записываемые в файл, сразу будут сброшены на диск.
Аналогично выполнению команды sync сразу после каждой
операции записи в файл

s

Прямо противоположен атрибуту и. После удаления файла,
принадлежащие ему блоки будут обнулены и восстановить их
уже не получится

Пример установки атрибута:
# chattr +i config

Пример сброса атрибута:
# chattr -i config

12.7. Поиск файлов
Для поиска файлов вы можете использовать команды which, locate и find.
Первая используется только для поиска программ. Она позволяет опреде­
лить, в каком каталоге находится исполнимый файл той или иной програм­
мы, например:
# which pppd
/sЫn/pppd



································-·················································-f!D

1,1:\[ :\ 11а 11p11\lt·pa,. llpa1..:1 111..:a

Данную программу очень удобно использовать администратору, когда нуж­
но вычислить месторасположение программы, например, чтобы указать точ­
ный путь к программе в каком-то сценарии или конфигурационном файле.
Команда locate позволяет произвести быстрый поиск файла. Однако команда
locate будет работать не во всех дистрибутивах, а только там, где доступен
updatedb, который и формирует базу данных, по которой производит поиск
команда locate. Если файл будет на диске, но его не будет в базе данных, то
locate его не найдет - вот в чем основной недостаток этой команды. Для об­
новления базы данных нужно ввести команду updatedb (или дождаться, пока
планировщик обновит базу данных).
Преимущество команды locate в том, что поиск файла производится практи­
чески мгновенно, особенно по сравнению с командой.fiпd. Однако если фай­
ла не будет в базе данных (файл был создан после обновления базы данных
locate), команда locate его не найдет.
Конфигурация updatedb хранится в файле /etc/updatedb.conf (листинг 12.1).
Листинг 12.1. Файл /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9р afs anon_incxJefs auto autofs tx:Jev binfmt_misc cgroup cifs coda configfs

cpuset deЬugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 hugetlЬfs
inotifyfs iso9660 jffs2 lustre rrqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs
rpc_pipefs securityfs selinuxfs sfs sockfs sysfs t:лpfs uЬifs udf usЬfs"
PRUNENAМES = ".g i t .hg .svn"
PRUNEPATHS = "/afs /media /mn t /net /sfs /tmp /udev /var/ca che/cca che
/var/liЬ/yum/yumdЬ /var/spool/cups /var/spool/squ id /var/tmp"

Если параметр PRUNE_BIND_MOUNТS равен yes, файловые системы,
смонтированные в режиме blnd не исследуются при помощи updatedb. Па­
раметр PRUNEFS задает типы файловых систем, которые не будут исследо­
ваться updatedb. Аналогично, параметры PRUNENAMES и PRUNEPATHS
задают имена файлов (у нас заданы "расширения") и пути (каталоги).
В листинге 12.1 приведен пример файла update.conf по умолчанию из
Fedora Server. Вы можете отредактировать его под свои нужды, например,
закомментировать параметр PRUNENAMES, отредактировать параметр
PRUNEPATHS и т.д.

..

Теперь перейдем к третьей и самой универсальной команде поиска - find.
Формат вызова следующий:



........... ........ ............. ... .... ... . ... .. ....... .......... .......... . ..... .

l .I,111a 12. Фаii. юваsI t·I1t· 1 t·,ia

$ find список_поиска выражение

Полное описание командыjiпd вы найдете в справочной системе (команда
тап mount), а мы рассмотрим несколько примеров.
$ find / -name test.txt

Мы ищем все файлы с именем test.txt, начиная с корневого каталога/. Если
нужно найти все текстовые файлы (*.txt), на,чиная с корневого каталога, тог­
да команда будет такой:
$ find / -name '*.txt'

Следующая команда ищет только пустые файлы (параметр -empty):
$ find . -empty

Если нужно задать размер файла, тогда можем указать размер явно. В следу­
ющем примере мы задаем размер файла - от 500 до 700 Мб:
$ find ~ -size +SOOM -size -700М

Командаjiпd может не только находить файлы, но и выполнять действие для
каждого найденного файла. В следующем примере мы находим все старые
резервные копии ("расширение" .bak) и удаляем их:
# find / -name *.bak -ok rm {} \;

Поиск с помощью find занимает немало времени - ведь нет никакой базы
данных. Команде find нужно "пройтись" по всем каталогам и проверить в
них наличие искомых файлов.



12.8. Монтирование файловых систем
12.8.1. Монтируем файловые системы вручную
Ранее было сказано, что такое точка монтирования - это каталог, через ко­
торый происходит доступ к файловой системе, физически размещенной на
другом носителе (другом разделе жесткого диска, флешке, оптическом диске
или даже на другом компьютере).
Для монтирования файловой системы используется команда mount, для раз­
монтирования - umount:
# rnount [опции]
# urnount

Для монтирования файловой системы нужны права root, поэтому команды
mount и umount нужно вводить с правами root.
Представим, что мы подключили флешку. Если у вас один жесткий диск (/
dev/sda), то флешке будет назначено имя /dev/sdb, если жестких дисков два,
то флешке будет назначено следующее имя - /dev/sdc и т.д.
На одном носителе (это касается жестких дисков, флешек и подобных но­
сителей) может быть несколько разделов, которым назначаются номера, ну­
мерация начинается с единицы. Поэтому вы не можете подмонтировать все
устройство /dev/sdc. Вы должны указать номер раздела.
Подмонтируем нашу флешку (пусть это будет устройство /dev/sdc и на нем
будет всего один раздел с номером 1 ):
# rnount /dev/sdcl /rnnt/usb

Каталог /mnt/usb - это и есть точка монтирования. Точка монтирования
должна существовать до вызова команды mount, то есть вы не можете под­
монтировать файловую систему к несуществующему каталогу.
После этого вы можете обращаться к файлам и каталогам на флешке через
каталог /mnt/usb:
# 1s /rnnt/usb

fJII-----------------------------� --------------------------------------------------_,

1. 1ава 12. Фа11. юва11 t·11t· 1 еча

Итак, последовательность действий такая: создание точки монтирования
(один раз), монтирование файловой системы, работа с файловой системой
и размонтирование. Размонтирование осуществляется командой umount. В
качестве параметра команды umount нужно передать или название точки
монтирования или имя устройства:
#
#
#
#

mkdir /mnt/usb
mount /dev/sdcl /mnt/usb
ер test.txt /mnt/usb
umount /mnt/usb

Очень важно размонтировать файловую систему, особенно это касается
внешних файловых систем. При завершении работы система автоматически
размонтирует все смонтированные файловые системы.
Думаю, в общих чертах операция монтирования должна быть понятной. Те­
перь поговорим о параметрах команды mount. Самый часто используемый
параметр - это параметр -t, позволяющий задать тип монтируемой файловой
системы. Обычно команда mount сама в состоянии распознать тип файловой
системы, но в некоторых случаях ей нужно указать его вручную. Вот наи­
более распространенные типы файловых систем:
• vfat- файловая система Windows (FAT/FAT32);
• ntfs - файловая система Windows NТ;
• ntfs-Зg- драйвер ntfs-Зg для чтения и записи NТFS (рекомендуется);
• ext2/ext3/ext4 - различные версии файловой системы Linux;
• iso9660 - файловая система оптического диска CD/DVD;
• udf - иногда Windows форматирует оптический диск как UDF;
• reiserfs - файловая система ReiserFS;
• smЬfs - файловая система Samba;
• nfs - сетевая файловая система.
Например, в случае с NТFS рекомендуется использовать драйвер ntfs-Зg:

•·-

# mount -t ntfs-Зg /dev/sdcl /mnt/usb
-----------

-- - - - ---- - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - -- - - - - - -

----

1.1'\L :Хна ЩНШl'рах. Прак111ка

Параметр -r позволяет смонтировать файловую систему в режиме "только
чтение", параметр -w монтирует файловую систему в режиме "чтение/за­
пись", но обычно в этом режиме файловая система монтируется по умолча­
нию, поэтому в нем нет необходимости.
Параметр -а монтирует все файловые системы, перечисленные в файле /etc/
fstab, за исключением тех, для которых указана опция noauto.

12.8.2. Имена устройств
Интерфейсов жестких дисков довольно много - IDE (АТА/РАТА), SATA
(Serial АТА), SCSI, USB. Раньше жесткие диски с интерфейсом IDE назы­
вались в Linux /dev/hd? (? - буква, которая зависит от того, как подключен
жесткий диск). Жесткие диски с интерфейсом SATA и SCSI назывались /dev/
sd? (? - буква диска, соответствующая его порядковому номеру при подклю­
чении к интерфейсу).
Сейчас даже IDЕ-диски называются /dev/sd? (как и SATA/SCSI), что сначала
вносило некую путаницу. Но жесткие диски с интерфейсом IDE вышли из
моды и практически не используются. Мода на SСSI-диски также практи­
чески закончилась, поскольку SАТА-диски такие же быстрые, как и SCSI
- некоторые обеспечивают такую же производительность, как и SCSI - в
некоторых случаях чуть меньше, в некоторых - даже больше. Так что SCSI
уже можно списывать со счета - если вам достался сервер со SСSI-диском,
отказываться от него не стоит, а вот новый сервер будет поставляться или с
интерфейсом SATA или с интерфейсом SAS.
Интерфейс SAS (Serial Attached SCSI) обратно совместим с интерфейсом
SATA и позволяет последовательно подключать SАТА-диски и обеспечивает
пропускную способность в 6 Гбит/с. Если вы купите сервер с интерфейсом
SAS, то в большинстве случаев он будет оснащен высокопроизводительны­
ми SАТА-дисками, а не SСSI-дисками. Поэтому никакой путаницы уже нет.
Что же касается USВ-дисков (флешки и внешние жесткие диски), то они
также получают обозначение /dev/sd?.
Оптические диски (приводы CD/DVD) в большинстве случаев называются /
dev/sr?, где ? - номер привода, нумерация начинается с О.
Чтобы узнать, какие жесткие диски и оптические приводы установлены в
вашем компьютере, введите команды (рис. 12.1):

...................................................................................

,

r:1ана 12. Фаii.ншаs1 сиеI сш1
1s /dev/sd?
1s /dev/srO

Рис. 12.1. Жесткие и оптические диски

Если у вас один оптический диск, можно смело использовать ссылку /dev/
cdrom. Из рис. 12.1 видно, что унас установлено два жестких диска - /dev/
sda и /dev/sdb, а также один оптический привод /dev/srO.
Для монтирования не достаточно указать имя всего устройства, нужно уточ­
нить номер раздела. Когда разделов много, вы можете забыть (или не знать),
какой именно раздел вам нужен. Вы можете использовать команду fdisk:
запустите fdisk , а затем введите команду р для вывода
таблицы разделов и команду q для выхода из fdisk.
Посмотрите рис. 12.2. Из него становится понятно, что на нашем жестком
диске есть два раздела - /dev/sdal и /dev/sdЫ.



Рис. 12.2. Программа fdisk

.....................................................................................

Кроме коротких имен вроде /dev/sd? в современных дистрибутивах часто
используются идентификаторы UUID. Загляните в файл /etc/fstab и в нем в
большинстве случаев вместо привычных имен /dev/sd? вы обнаружите вот
такие "страшные" имена:
# В Fedora, Debian, UЬuntu
UUID=2f149af9-3bff-44bd-dlбs-ff98s9a7116d / ext4 defaults О
# openSUSE
/dev/disk/by-id/dm-name-suse-server-root / ext4

1

defaults 1 1

Преимущество идентификаторов UUID в том, что они не изменяются, если
вы иначе подключите жесткий диск . Представим, что у вас есть два жестких
диска - /dev/sda и /dev/sdb. На первый вы установили Linux (в раздел /dev/
sdal ), а второй используете для хранения данных (на нем всего один раздел
/dev/sdЫ, который монтируется, как /home). Вы отключили оба диска, а за­
тем, подключая, перепутали их местами. В итоге второй диск стал диском /
dev/sda, а первый - /sdb. При загрузке может случится конфуз, точнее, систе­
ма вообще не загрузится. Даже если вы выберете в ВIOS SETUP загрузку со
второго жесткого диска, тоже ничего хорошего не выйдет. С UUID достаточ­
но выбрать загрузку со второго жесткого диска и система будет загружена.
Вы можете использовать обычные стандартные имена, а можете использо­
вать UUID-идентификаторы. Узнать, какие UUID-идентификаторы соответ­
ствуют каким обычным именам, можно с помощью команды:
1s -1 /dev/disk/by-uuid/

Вывод этой команды представлен на рис. 12.3.

'1Иtl1•1tf1 ',H,'tl 11l'1 1,'1'11 l1l)bl1',.11!1111!1
,\ IН?',1 ?И

!, },

1-'i.-',t 'Jt,I,; 1'1/111 11;'11),Н 1

1 /f,'J'Jt,/IJ .'f,41 4h,'/ 1!',1И t,t,lt Hll1',t,\�1

,-

(11,1

,l,1.'

,l,11

Рис. 12.3. Соответствие UUID-идентификаторов обычным и.менам



.....................................................................................

1. 1:111:1 12. cl)aii. ю11ш1 t·11t· 1 e\la

12.8.3. Монтируем файловые системы при загрузке
Вводить команды mount при каждой загрузке не очень хочется, поэтому про­
ще "прописать" файловые системы в файле /etc/fstab, чтобы система смон­
тировала их при загрузке.
Формат файла /etc/fstab следующий:
устройство точка тип опции флаг_копирования флаг_проверки

Первое поле -это устройство, которое будет монтироваться к точке монти­
рованию -второе поле. Вы можете использовать, как обычные имена, так и
UUID. Третье поле -тип файловой системы. Четвертое поле -параметры
файловой системы (табл. 12.4), последние два поля -это флаг резервной
копии и флаг проверки. Первый флаг определяет, будет ли файловая система
заархивирована командой dump при создании резервной копии (1 -будет,
О - нет). Второй флаг определяет, будет ли файловая система проверяться
программойfiсk на наличие ошибок (1, 2 -будет, О -нет). Проверка произ­
водится, если достигнуто максимальное число попыток монтирования для
файловой системы или если файловая система была размонтирована некор­
ректно. Для корневой файловой системы это поле должно содержать 1, для
остальных файловых систем -2.
Таблица 12.4. Параметры файловой системы
Опция
defaults

•..

Описание

Параметры по умолчанию

user

Разрешает обычному пользователю монтировать/размонтировать данную файловую систему

nouser

Запрещает обычному п�шьзователю монтировать/размонтировать данную файловую систему. Смонтировать эту ФС может
только root. Используется по умолчанию

auto

ФС будет монтироваться при загрузке. Используется по умолчанию, поэтому указывать не обязательно

noauto

ФС не будет монтироваться при загрузке системы

............................................ . ............ . ... . ................

. ...

lJ:\t'X шt 11р11мерах. Прак111ка

ехес
поехес

Разрешает запуск исполнимых файлов на данной ФС. Используется по умолчанию. Для Windows-фaйлoвыx систем (vfat,
ntfs) рекомендуется использовать опцию поехес
Запрещает запуск исполнимых файлов на данной ФС

rw

ФС будет монтироваться в режиме "только чтение"

rw

ФС будет монтироваться в режиме "чтение запуск". По умолчанию для файловых систем, которые поддерживают запись

utf8

Для преобразования имен файлов будет использоваться кодировка UTF8

data

Задает режим работы журнала (см. ниже)

12.8.4. Автоматическое монтирование файловых систем
В современных дистрибутивах Linux сменные носители вроде USВ-дисков и
оптических дисков монтируются автоматически:
• DeЬian, Ubuntu, Fedora, CentOS - монтирование производится к катало­
гу /mеdiа/. В качестве метки может использоваться
или метка, установленная при форматировании, или серийный номер
устройства, если метка не устанавливалась.
• openSUSE - монтирование будет производиться к каталогу /var/run/
mеdiа//.
За автоматическое монтирование отвечает демон automount, который вы мо­
жете отключить, если автоматическое монтирование вам не нужно.

12.9. Работа с жур!lалом
Существует три режима работы журналируемой файловой системы ехtЗ/
ext4:journal, orderedи writeback. По умолчанию используется режим ordered
- оптимальный баланс между производительностью и надежностью. В этом

............. - .......... ...... - ................................. .. .................

'

1.�ава 12. Фaii.111вas1

l:IICICШI

режиме в журнал будет заноситься информация только об изменении мета­
данных.
Самый медленный режим journal. В этом режиме в журнал записывается
максимум информации, которая понадобится при восстановлении в случае
сбоя. Режим очень медленный и использовать его следует только, если
безопасность для вас важнее, чем производительность.
Самый быстрый режим writeback, но в нем, по сути, журнал не будет исполь­
зоваться и у вас не будет никакой защиты, например, от той же перезагрузки.
Режим работы журнала задается параметром data, например:
/dev/sdЫ /horne ext4 data = journal 1 2

12.10. Преимущества файловой системы ext4
Поговорим о преимуществах файловой системы ext4. Возможно, она вас
полностью устроит и вам не придется искать другую файловую систему для
своего компьютера.
Впервые файловая система ext4 появилась в ядре версии 2.6.28. По срав­
нению с ехtЗ, максимальный размер раздела был увеличен до 1 эксбибайта
(1024 петабайтов), а максимальный размер файла составляет 2 Тб. По произ­
водительности новая файловая система ext4 превзошла файловые системы
ехtЗ, Reiserfs, XFS и Btrfs (в некоторых операциях).
Так, ext4 опередила знаменитую XFS в тесте на случайную запись. Файло­
вая система Btrfs провалила этот тест с огромным "отрывом" от лидеров XFS и ext4. Производительность ext4 была примерно такой же, как у XFS,
но все-таки немного выше, чем у XFS. В Интернете вы найдете множество
тестов производительностей - просмотрите их, если вам интересно.
Основной недостаток ехtЗ заключается в ее методе выделения места на
диске. Ее способ выделения дискового пространства не отличается произ­
водительностью, а сама файловая система эффективна для небольших фай­
лов, но никак не подходит для хранения огромных файлов. В ext4 для более
эффективной организации данных используются экстенты. Экстент - это
непрерывная область носителя информации. К тому же ext4 откладывает
выделение дискового пространства до последнего момента, что еще более
увеличивает производительность.



. .. . . . . .. . . . . . . . . . . .. .. . . .. . . . .. . . . . . . . . -................. -.. .. -. -... - .... -. - . -. -

....

Файловая система ехtЗ может содержать максимум 32 ООО каталогов, в ext4
количество каталогов не ограничено.
В журнале ext4 тоже произошли изменения - в журнале ext4 используются
контрольные суммы, что повышает надежность ext4 по сравнению с ехtЗ.
Выходит, по сравнению с ехtЗ, у ext4 есть следующие преимущества:
• Улучшена производительность - производительность почти достигла
XFS, а в некоторых тестах даже превышает ее.
• Улучшена надежность - используются контрольные суммы журналов.
• Улучшена масштабируемость - увеличен размер раздела, размер файла и
поддерживается неограниченное количество каталогов.

12.11. Специальные операции с файловой
системой
12.11.1. Монтирование NТFS-разделов
Не думаю, что на сервере вам придется монтировать NТFS-разделы, но ситу­
ации бывают разные. Для монтирования NТFS-раздела используется модуль
ntfs-Зg, который в большинстве случаев уже установлен по умолчанию. Если
он не установлен, для его установку введите команду (замените уит на имя
вашего менеджера пакетов):
# yum install ntfs-Зg

Команда монтирования NТFS-раздела выглядит так:
# mount -t ntfs-Зg раздел точка_монтирования

Например, вам кто-то принес флешку, отформатированную как NТFS. Для
ее монтирования введите команду (измените только имя устройства и точку
монтирования):
# mount -t ntfs-Зg /dev/sdЫ /mnt/usb

1:�ава 12. Фaii.lOBШI Cllt"lt'\1:1

Модуль ntfs-Зg выполняет монтирование в режиме чтение/запись, поэтому
вы при желании можете произвести запись на NТFS-раздел.

12.11.2. Создание файла подкачки
При нерациональном планировании дискового пространства может воз­
никнуть ситуация, когда раздела подкачки стало мало или вы вообще его
не создали. Что делать? Повторная разметка диска требует времени,
а выключать сервер нельзя. Сервер тормозит, поскольку ему не хватает вир­
туальной памяти, а ждать от начальства подписи на дополнительные модули
оперативной памяти придется еще неделю. А за это время пользователи вас
окончательно достанут своими жалобами.
Выход есть. Он заключается в создании файла подкачки на жестком диске.
Такой файл подкачки будет работать чуть медленнее, чем раздел подкачки,
но это лучше, чем вообще ничего. Хотя, если у вас SSD-диск, никакой раз­
ницы в производительности практически не будет.
Первым делом нужно создать файл нужного размера. Следующая команда
создает в корне файловой системы файл swapOl размером 1 Гб:
# dd if=/dev/zero of = /swapOl bs =lk count = 1048576

После этого нужно создать область подкачки в этом файле:
# mkswap /swapOl 1048576

Наконец, чтобы система "увидела" файл подкачки, его нужно активировать:
# swapon /swapOl

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

12.11.3. Файлы с файловой системой
Только что было показано, как создать файл произвольного размера, а потом
использовать его в качестве файла подкачки. При желании этот файл можно



··················································································-at

11\[ \. 11а 1 1JHl\1t'pa,. llpa1,1111,a

отформатировать, как вам угодно. Даже можно создать в нем файловую
систему.
Рассмотрим небольшой пример. Давайте опять создадим пустой файл раз­
мером 1 Гб:
# dd if=/dev/zero of=/root/fsOl bs=lk count=l048576

После этого нужно создать файловую систему в этом файле:
# mkfs.extЗ -F /root/fsOl

Чтобы не заморачиваться, я создал самую обычную файловую систему ехtЗ.
После этого файл с файловой системой можно подмонтировать и использо­
вать как обычных сменный носитель, то есть записывать на него файлы:
# mkdir /mnt/fsOl
# mount -t ехtЗ -о loop /root/fsOl /mnt/fsOl

После того, как закончите работу с файлом, его нужно размонтировать:
# umount /mnt/fsOl

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

12.11.4. Создание и монтирование 1S0-образов
Все мы знаем утилиты, позволяющие в Windows подмонтировать ISО­
образ диска. В Linux все подобные операции делаются с помощью штатных
средств и никакие дополнительные программы не нужны.
Представим, что нам нужно создать образ диска. Если диск вставлен в при­
вод, для создания его ISО-образа выполните команду:

&t---. -. ·-.-. -. -.-.... -. -. -. -..-. -. --------... -. -. ----------.... -·-·-. ---·----... _,

1. �.ша 12. Фaii. ю11а11 t·11t·, t'\la

$ dd if=/dev/cdrom of=~/dvd.iso

Здесь, /dev/cdrom - имя устройства (в Linux это имя соответствует любому
оптическому приводу-СD или DVD), а dvd.iso-файл образа.
Иногда ставится другая задача: есть папка, по которой нужно создать 1S0образ. То есть у нас диска, но есть файлы, которые нужно записать на диск,
но прежде вы хотите создать его 1S0-образ.
Пусть у нас есть папка ~/dvd и нужно создать 1S0-образ, содержащий все
файлы из этой папки. , Файл образа будет опять называться ~/dvd.iso. Для
этого используйте команду mkisofs:
$ mkisofs -r -jcharset utf8 -о ~/dvd.iso ~/dvd

Чтобы проверить, что образ был создан корректно, его нужно подмонтиро­
вать к нашей файловой системе:
# mkdir /mnt/iso-image
# mount -о loop -t iso9660 dvd.iso /mnt/iso-image

Здесь все просто: опция -о loop означает, что будет монтироваться обычный
файл, а не файл устройства, опция -t задает тип файловой системе, далее
следуют название файла и название папки, к которой будет выполнено мон­
тирование.

12.12. Файлы конфигурации Linux
12.12.1. Содержимое каталога /etc
Думаю, среди читателей этой книги, нет таких, которые бы не знали о
реестре Windows. В реестре Windows хранятся настройки самой системы
и практически всех программ (исключения составляют лишь устаревшие
программы, хранящие свои параметры в ini-файлах).
Так вот, в Linux есть свое подобие реестра - это каталог /etc. И вы можете
быть уверены, что в /etc находятся все настройки системы и всех программ.

•..................................................................................tD

1.1'\t '\ на 111111\ll'(l:I\. llp:11,1111,a

Да, некоторые программы также хранят персональные настройки в домаш­
них каталогах пользователя, но глобальные настройки обычно хранятся в
каталоге /etc.
Преимущество каталога /etc перед реестром - в том, что для его редактиро­
вания вам не нужен какой-то особый редактор. В каталоге /etc просто хра­
нится набор текстовых конфигурационных файлов. Вы можете просмотреть
или отредактировать файл с помощью любого текстового редактора. Так­
же можно легко скопировать файлы/каталоги, например, перед изменени­
ем. Единственный недостаток - вам нужно знать формат каждого файла, но
обычно с этим проблем никаких нет, поскольку файлы снабжены подробны­
ми комментариями, путь и на английском языке.

12.12.2. Конфигурационные файлы
Чтобы эффективно настраивать систему, нужно ориентироваться в содержи­
мом конфигурационного каталога. Если загляните в /etc, то кроме подката­
логов в нем вы обнаружите и файлы, которые находятся непосредственно в
/etc. Описание этих файлов приведено в таблице 12.5. Содержимое каталога
может отличаться в зависимости от используемого дистрибутива и установ­
ленного программного обеспечения. Но общая картина будет примерно оди­
наковой во всех дистрибутивах.
Таблица 12.5. Файлы из катш�ога /etc

Файл

Описание

DIR-COLORS

Конфигурация цвета для утилиты 1s. Здесь вы можете указать, каким цветом будут выводиться каталоги, файлы, ссылки и т.д.

GREP-COLORS

Конфигурация цвета для утилиты grep

adjtime

Содержит параметры для корректировки аппаратных часов

...

aliases

База данных псевдонимов для почтовых агентов
(МТА)



. ----.-.-.-.. - . -........-...-.-.----.-.-.-. -.. -.-.-. -.. ---. -.-.-. - --- . -- -.-.-. - -- .

1. 1ава 12. Ф:111. юв:ш t·11t· l l'\la



at.deny

Содержит пользователем, которым запрещено использовать планировщик at. Дополнительная информация доступна в man at

anacrontab

Конфигурация (таблица расписания) планировщика anacron

bash.bashrc

Глобальный файл конфигурации оболочки bash.
Локальные файлы конфигурации находятся в домашнем каталоге каждого пользователя

Ыnd.keys

Содержит ключи для DNS-cepвepa Ьind9

Ыndresvport. Ьlacklist

Содержит список номеров портов в диапазоне от
600 до 1024, которые не могут быть использованы Ыndresvport, который обычно вызывается IRCслужбами. По умолчанию запрещены порты 623,
631,636,664,774,921,993 и 995,которые используются различными сетевыми службами.

cron.deny

Список пользователей, которым запрещено использовать cron

crontab

Таблица расписания демона crond

crony*

Конфигурация NTP (сервер времени)

csh.cshrc

Файл конфигурации для оболочки С Shell

csh.login

Глобальный файл конфигурации для С Shell. Определяет поведения во время регистрации пользователя (login) в системе. На самом деле - это сценарий, который запрещено редактировать вручную.
Он должен изменяться только время обновления
системьt. Вместо этого лучше редактировать /etc/
csh.login.local, если вам нужно внести изменения в
настройки вашего локального окружения

crypttab

Содержит информацию о зашифрованных томах

.....................................................................................

defaultdomain

Содержит доменное имя для сервисов NIS и NIS+

dhclient.conf

Файл конфигурации для DНСР-клиента

dhclientб.conf

Файл конфигурации для DНСР-клиента, версия
IPvб

dhcpd.conf

Файл конфигурации для DНСР-сервера

dhcpdб.conf

Файл конфигурации для DНСР-сервера, версия
IPvб

dialogrc

Конфигурационный файл для пакета dialog, определяет цветовую схему диалоговых интерфейсов,
построенных с помощью пакета dialog

dnsmasq.conf

Конфигурационный файл для dnsmasq (DNSмаскарадинга)

dracut.conf

Содержит параметры dracut - средства, которое
формирует initramfs
Конфигурационный файл для репозитария DRI

drirc

cvs

environment

Файл используется РАМ-модулем pam_env. Содержит переменные окружения, описанные в виде пар
КЛЮЧ=ЗНАЧЕНИЕ, по одной паре в одной строке

esd.conf

Параметры EsounD (Enlightened Sound Daemon),
который используется для смешивания вместе некоторых цифровых аудио потоков для проигрывания на одиночном устройстве

ethers

Содержит 48-битные Ethernet-aдpeca и соответствующие им IР-адреса или имена узлов. Может
использоваться некоторыми сетевыми службами
для разрешения М АС-адресов в IР-адреса

----

exports

Содержит список экспортируемых файловых
систем



-------------------------------------------- ----·- ·---· ..... -------- -- ·--.----- - .

fedora-release

Информация о релизе Fedora

filesystems

Информационный файл, содержит некоторые характеристики и атрибуты файловых систем. В нем
нет ничего интересного

fstab

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

ftpusers

Список пользователей, которые НЕ могут войти в
систему по FTP. Среди них вы найдете пользователя root и многие другие системные учетные записи, которые используются для сетевых сервисов
и обычно обладают повышенными привилегиями

group

1111t· ш1 р� 1кoii l,i1111,

search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
linuxlб /boot/memtest86+.Ьin
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
linuxlб /boot/memtest86+.Ыn console= ttyS0,115200n8
menuentry "Memory test (memtest86+, experimental multiboot)"
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
multiboot /boot/memtest86+_mul tiboot.Ыn
menuentry "Memory test (memtest86+, serial console 115200,
experimental multiboot)" {
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
multiboot /boot/memtest86+ multiboot.Ьin console= ttyS0,115200n8
### КОНЕЦ /etc/grub.d/20_memtest86+ ###
# Далее этот файл я немного сократил, поскольку дальше в нем нет
ничего интересного

Файл огромный и его синтаксис напоминает синтаксис Ьаsh-сценариев. Если
вы просмотрели этот конфигурационный файл, то вы уже догадались, что
делает программа grub-mkconfig: она собирает воедино все файлы из ката­
лога /etc/grub.d (кстати, в листинге 14.1 перечислена большая часть из этих
файлов) и вносит в общий конфигурационный файл из /etc/default/grub.
Основная запись из всего листинга 14.1 - это запись menuentry. Именно в
таких записях описываются элементы меню загрузчика GRUB.
menuentry 'DeЬian GNU/Linux, Linux 4.2.0-4-amd64' --class deЫan --class gnu­
linux --class gnu --class os
load video

, ... ····�······................................................................. fD

insmod gzio
insmod part msdos
insmod ext2
set root=' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
echo 'Loading Linux 4.2. 0-4-amd64 ... '
linux /boot/vmlinuz-4.2.0-4-amd64 root=UUID=b7300e54-fff5-4f31-8002bea43c64f344 ro initrd=/install/gtk/initrd.gz quiet
echo 'Loading initial ramdisk ... '
initrd /boot/initrd.img-4.2.0-4-amd64

В одинарных кавычках после menuentry указывается название загрузоч­
ной метки. Далее идут параметры, которые вообще можно не указывать и
от этого Debian загружаться не перестанет. В фигурных скобках - основная
конфигурация. Директива load_video - это ни что иное, как вызов функции
load_video, которая также описана в этом файле конфигурации. Функция
вставляет некоторые модули (команда insmod), необходимые для работы
графического режима. Обратите внимание, что команды insmod загружают
не модули ядра Linux, а модули GRUB2, которые находятся в каталоге /Ьооt/
grub.
Внутри {} можно использовать команду echo для обозначения различных
этапов загрузки, что и сделано в нашем примере. Можете отказаться от echo,
на загрузку это никак не повлияет.
Основные команды - это linux и initrd. Первая указывает путь к ядру Linux
и задает параметры ядра. В нашем случае параметр ядра root указывает
устройство, на котором находится корневая файловая система. Устройство
указано в виде UUID. UUID-имeнa очень удобны. Представим, что у вас есть
один жесткий диск SATA и два контроллера. Если вы подключите его ко вто­
рому контроллеру, обычное имя изменится (например, было /dev/sda, а стало
/dev/sdb), а UUID-имя - нет. При желании, вы можете указать имя в старом
формате, например, root=/dev/sda 1. Параметр ядра root задает монтирование
корневой файловой системы в режиме "только чтение" (это нормально, поз­
же она будет перемонтирована), initrd - задает файл RamDisk, а последний
параметр ядра quiet задает "тихую" загрузку ядра, при которой будут выво­
диться только самые важные сообщения.
Команда initrd задает путь к файлу initrd.

.... .

Теперь рассмотрим файл /etc/default/grub (листинг 14.2)



-- - -- - - - . - - - - - -- - ...... .... - - - -.............. - . -.... -....... -....... -.. -..... .

Г.1ава 14. У11равлс11ис за� рушoii l,inux

Листинг 14.2. Файл /etc/default/grub
# После редактирования этого файла запустите команду 'update-grub' для
# обновления файла /boot/gruЬ/grub.cfg.
# Для получ ения полной информации об этом файле введите команду
#
info -f grub -n 'Simple configuration'
# Загрузочный элемент (menuentry по умолчанию)
GRUB DEFAULT=0
# Таймаут
GRUB TIMEOUT=S
# Задает название дистрибутива, не изменяйте эту строку
GRUB DISTRIBUTOR='lsb release -i -s 2> /dev/null 11 echo Debian'
# Параметры ядра Linux по умолчанию
GRUB_CMDLINE LINUX_DEFAULT="quiet"
# Еще одна строка для задания параметров ядра
GRUB_CMDLINE LINUX="initrd=/install/gtk/initrd.gz"
# Раскомментируйте эту строку, если вы хотите отключить графический режим
#GRUB TERMINAL=console
# Разрешение в графическом режиме
# Вы можете использовать только те режимы, которые ваша видеокарта
# поддерживает через VBE. Просмотреть список
# таких режимов можно с помощью команды 'vbeinfo'
#GRUB GFXMODE=640x480
# Расскомментируйте эту строку, если вы не хотите
# использовать UUID-имeнa устройств
#GRUB DISABLE LINUX UUID=true
# Расскомментируйте, если хотите запретить генерирование меток восстановления
#GRUB DISABLE RECOVERY="true"
# Расскомментируйте, если хотите получить гудок при загрузке GRUB
#GRUB INIT TUNE="480 440 1"

Как видите, параметры из файла /etc/default/grub понятны и не нуждаются в
особых комментариях. Но в нем мы узнали о еще одной команде - update­
grub. Так какую из них использовать - update-grub или grub-mkconfig?
На самом деле это почти одна и та же команда. Дело в том, что команда grub­
mkconfig по умолчанию выводит конфигурацию GRUB2 на экран, поэтому,
чтобы она записалась в файла /boot/gruЬ/grub.cfg, запускать ее нужно так:



sudo grub-mkconfig > /boot/gruЬ/grub.cfg

.....................................................................................

IJ'liti\: 11.1 111ншt•рах.llpa1,1111,а

Или же вы можете ввести команду update-grub, которая сделает то же са­
мое. Другими словами, команда update-grub - это сценарий, который вызы­
вает только что приведенную команду. Как по мне, то использовать команду
update-grub удобнее.
Так какую стратегию GRUB2 использовать? Редактировать шаблоны и пара­
метры или сразу конфигурационный файл? Если вы работаете за компьюте­
ром в гордом одиночестве и нет и не предвидится других администраторов,
тогда можете выбрать ту стратегию, которая вам больше нравится.
Если же есть или планируются другие администраторы, то нужно редакти­
ровать шаблоны и параметры вместо редактирования конфигурационного
файла вручную. Дело в том, что если вы внесете изменения непосредствен­
но в конфигурационный файл, а потом другой администратор захочет из­
менить какой-то незначительный параметр, например, добавить гудок при
загрузке GRUB2, то команда update-grub перезапишет все сделанные вами
изменения.

14.2.2. Выбор метки по умолчанию
Как правило, даже если у вас установлена одна только Linux, у вас будет
несколько загрузочных меток (несколько записей menuentry). Выбрать метку
по умолчанию можно с помощью параметра GRUB_DEFAULT. Нумерация
меток начинается с О, то есть первой метке соответствует значение О.
После того, как вы установите другой номер метки по умолчанию нужно
ввести команду update-grub и перезагрузить систему.
Другими словами, последовательность такая: редактируем файл /etc/default/
grub, изменяем значение параметра GRUB DEFAULT и вводим команду
update-grub.

14.2.3. Загрузка Windows
Упор в этой книге делается на серверы и прочее производственное примене­
ние Linux, однако вдруг вы захотите установить Linux на домашний компью­
тер, скорее всего, ей придется "сожительствовать" с Windows.
Чтобы добавить возможность загрузки Windows из GRUB2, нужно отредак­
тировать файл /etc/grub.d/40_custom и добавить в него следующие строки:



.....................................................................................

1. 1ава 1-t. � 11pa11.1t·1111t· 1:11 р� 11,oii l .i1111,

menuentry "Win�ows (on /dev/sdal)"
insmod part_msdos
insmod ntfs
set root=' (hdO, msdos 1) '
search --no-floppy --fs-uuid --set UUID
drivemap -s (hdO) ${root}
chainloader +1

Здесь Windows находится на /dev/sdal и адрес этого раздела указывается в
set root. Значение UUID нужно заменить на UUID вашего Windows-paздeлa.
Остальные параметры можете оставить без изменения ( еще не забудьте
исправить hdO в drivemap, если Windows установлена не на первом жестком
диске).

14.2.4. Пароль загрузчика GRUB2
Загрузчик GRUB позволял только установить пароль - или общий или на
загрузку определенной метки. Загрузчик GRUB2 более гибкий в этом плане,
поскольку вы можете настроить не только пароли, но и логины. Также есть
минимальная система разграничения прав доступа.
Итак, в GRUB2 есть суперпользователь, который может редактировать
загрузочные метки. Существует возможность восстановить пароль root пу­
тем передачи ядру параметра init. Но для этого нужно отредактировать кон­
фигурацию GRUB2. Если вы установите пароль суперпользователя, то изме­
нить конфигурацию загрузчика вы сможете только после ввода этого пароля.
Также в GRUB2 есть обычные пользователи, которые имеют право только
выбирать загрузочную метку. Они не имеют права редактировать конфигу­
рацию загрузчика. В принципе, можно обойтись одним паролем суперполь­
зователя, но при желании GRUB2 может довольно гибко разграничить права
пользователей.
Давайте сначала добавим пароль суперпользователя. Для этого в файл /etc/
grub.d/OO_header добавьте строки:
set superusers ="main_admin"
password main_admin 123456789



.....................................................................................

Первая команда задает суперпользователя main_admin, а вторая - задает для
него пароль. Старайтесь избегать общепринятых имен вроде admin, root и
т.д. Так у злоумышленника, который хочет изменить конфигурацию GRUB2
будет две неизвестных.
Пароль пока в незашифрованном виде и это не очень хорошо. Поскольку
если загрузиться с LiveCD или LiveUSB, то его можно будет увидеть. Позже
я покажу, как зашифровать пароль.
Обычные пользователи задаются инструкцией password, например:
password me 12345

По сути main_admin - тоже был бы обычным пользователем, если бы не
инструкция set superusers, которая делает его суперпользователем.
Представим, что у нас есть следующие строки:
set superusers="main_admin"
password main_admin 123456789
password me 12345

Пользователь main_admin может загружать операционные системы и редак­
тировать конфигурацию GRUВ2. Пользователь те может только загружать
операционные системы.
Если вы хотите, чтобы определенные метки могли загружать только опреде­
ленные пользователи, добавьте к menuentry параметр --users:
menuentry "Windows" --users me {
insmod part_msdos
insmod ntfs
set root= ' (hdO, msdos 1) '
search --no-floppy --fs-uuid --set UUID
drivemap -s (hdO) ${root}
chainloader +1

...

Теперь зашифруем пароль. Введите команду:



- - - - - - . - -. - . - - - - - - - - - - - - - - - - - . - - .. - - - . - - - - - - - - - - ., .. - . - . - - - - - - - - .. - - - - - . - - - . - . - - - .

grub-mkpasswd-pbkdf2

Программа запросит пароль, зашифрует его и выведет на экран его кэш. Вы
увиюпе что-то подобное:
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659
211B7FC076F2D27080136.887CFF169EA83D5235D8004742AA7D6187A41E31
87DFOCE14E256D85ED97A979080136.887CFF169EA8335235D8004242AA7D6
187A41E3187DFOCE14E256D85ED97A97357AAA8FFOA3871AB9EEFF458392F4
62F495487387F685B7472FC6C29E293FOAO

Данный хэш нужно указать вместо пароля пользователя. Однако вместо
инструкции passwd нужно использовать password_pbkdj2. Например:
password_pbkdf2 me grub.pbkdf2.sha512.10000.9290F727ED06C38BA4
549EF7DE25CF5642659211B7FC076F2D27080136.887CFF169EA83D5235D80
04742AA7D6187A41E3187DFOCE14E256D85ED97A979080136.887CFF169EA8
335235D8004242AA7D6187A41E3187DFOCE14E256D85ED97A97357AAA8FFOA
3871AB9EEFF458392F462F495487387F685B7472FC6C29E293FOAO

После изменения файлов из каталога /etc/grub.d не забудьте ввести команду
upgrade-grub для обновления основного файла конфигурации.

14.2.5. Установка загрузчика
Команда установки загрузчика такая же, как и в случае с GRUB:
# /sbin/grub-install

Например:
# /sbin/grub-install /dev/sda

Поскольку GRUB2 у вас уже установлен, вряд ли вам придется вводить эту
команду. Исключение может поставить разве что переустановка Windows,
которая перезапишет загрузочный сектор своим загрузчиком. Поэтому вам

. ,. --.. ---. -. -. ----. -. -. ----... -. -. ----. -·. -. -. -. --. -. -. -. -. --.. -. -------------. ----tD

1.1'\t \: 11а 111111,н·ра,. llpa1.:1111.:a

придется загрузиться с LiveCD, выполнить chroot для вашей старой корне­
вой системы и ввести команду grub-install для установки загрузчика GRUB2.

14.3. Система инициализации
После своей загрузки ядро передает управление системе инициализации.
Цель этой системы- выполнить дальнейшую инициализацию системы. Са­
мая главная задача системы инициализации - запуск и управление систем­
ными службами.
Служба (сервис, демон) - специальная программа, выполняющаяся в фо­
новом режиме и предоставляющая определенные услуги (или, как говорят,
сервис - отсюда и второе название). Что превращает обычный компьютер,
скажем, в FТР-сервер? Правильно, запущенная служба FTP- тот же ProFTPD
или подобная. Вы можете установить программу ProFTPD и настроить ее
на автоматический запуск системой инициализации. Тогда при каждой
загрузке наш компьютер будет превращаться в FТР-сервер. Аналогично и
с другими сервисами - достаточно установить определенную программу,
чтобы превратить компьютер в веб-сервер или почтовый сервер. Но стоит
вам отключить ее и компьютер уже прекращает предоставлять обеспечива­
емые программой услуги, следовательно, превращается в самый обычный
компьютер.
В мире Linux существовало очень много разных систем инициализации init, upstart, init-ng. Все их рассматривать уже нет смысла, поскольку в совре­
менных дистрибутивах используется современная система инициализации
systemd.
systemd - подсистема инициализации и управления службами в Linux,
фактически вытеснившая в 2010-е годы традиционную подсистему init.
Основная особенность - интенсивное распараллеливание запуска служб
в процессе загрузки системы, что позволяет существенно ускорить запуск
операционной системы. Основная единица управления - модуль, одним
из типов модулей являются «службы» - аналог демонов - наборы про­
цессов, запускаемые и управляемые средствами подсистемы и изолируемые
контрольными группами.

14.3.1. Принцип работы
Система инициализации systemd используется во многих современных дис­
трибутивах, в частности в Fedora, Ubuntu, CentOS и openSUSE. На данный
момент- это самая быстрая система инициализации.



-----------------------------------------------------------------------------------·

l.1a11a 1-f. �щ1а11.1t·11щ• 1a1p�1ю111 l.i1111,

Давайте подумаем, как можно ускорить запуск Linux? Можно пойти по пути
upstart - параллельно запускать службы. Но параллельный запуск - не всег­
да хорошо. Нужно учитывать зависимости служб. Например, сервис d-bus
нужен многим другим сервисам. Пока сервис d-bus не будет запущен, нельзя
запускать сервисы, которые от него зависят.
Если сначала запускать основные сервисы и ждать, пока они будут запуще­
ны, а потом уже запускать службы, которые от них зависимы, особого вы­
игрыша в производительности по сравнению с init вы не увидите. Но если
сервис d-bus (или любой другой, от которого зависят какие-то другие серви­
сы) запускается долго, то все остальные службы будут ждать его.
Как обойти это ограничение? При своем запуске службы проверяют, запу­
щена ли необходимая им служба, по наличию файла сокета. Например, в
случае с d-bus- это файл /var/run/dbus/system_bus_socket. Если мы создадим
сокеты для всех служб, то мы можем запускать их параллельно, особо не
беспокоясь, что произойдет сбой какой-то службы при запуске из-за отсут­
ствия службы, от которой они зависят. Даже если несколько служб, которым
нужен сервис d-bus, запустятся раньше, чем сам сервис d-bus: ничего страш­
ного. Каждая из этих служб отправит в сокет (главное, что он уже открыт!)
сообщение, которое обработает сервис d-bus после того, как он запустится.
Вот и все.
Но это не единственное «ухищрение», посредством которого осуществля­
ется ускорение запуска компьютера, инициализацию которого производит
systemd. Эта система инициализации запускает только необходимые сер­
висы. Остальные же будут запущены по мере необходимости. Концепция
отложенного запуска используется и в других операционных системах например, в Мае OS Х (там система инициализации называется taunchd) и в
Windows (концепция отложенного запуска служб). Так что решение не очень
новое, но зато проверенное.
Основными функциями systemd являются:
• Активация на основании сокетов - система инициализации systemd про­
слушивает сокеты всех системных служб. Сокеты передаются системным
службам сразу после запуска сервисов. Благодаря этому осуществляется
параллельный запуск сервисов. Также это позволяет перезапускать сер­
висы без потери любых отправленных им сообщений, то есть пока сервис
перезапускается, отправленные ему сообщения накапливаются, и он смо­
жет их обработать после того, как будет запущен.



.....................................................................................

1,11\ll:\ 11а щшмерах. llра8'111ю1

• Активация на основании устройств - systemd может запустить опреде­
ленные службы, когда станет доступным определенный тип оборудова­
ния. Например, вы подключили Bluetooth-aдaптep, может быть запущен
сервис Ыuetootl1.
• Активация на основании d-bнs - служба инициализации может запустить
сервисы, которые используют d-bus д.r1я межпроuессного взаимодей­
ствия, например, когда клиентское приложение попытается связаться с
системной службой.
• Активация на основании путей - systemd может запустить службу, если
изменится содержание каталога.
• Управление точками монтирования и автоматическим монтированием система инициализации отслеживает и управляет точками монтирования
и автоматического монтирования.
• Снимки системных состояний - благодаря этой возможности systemd мо­
жет сохранить состояние всех модулей и восстановить предыдущее
состояние системы.
• Параллелизация - systemd запускает системные службы параллельно
благодаря активации на основании сокетов. Параллельная активация су­
щественно сокращает время загрузки системы.
• Обратная совместимость с SysV - поддерживаются сценарии инициа­
лизации SysV, что упрощает переход на systemd. Однако все устанавли­
ваемые в современных дистрибутивах пакеты служб уже адаптированы
под systemd, поэтому не нужно надеяться, что во время установки пакета
какого-то сервиса будут установлены SуsУ-сценарии. Будут созданы фай­
лы, необходимые для запуска сервиса посредством systemd.

14.3.2. Конфигурационные файлы systemd
Обилие различных конфигурационных файлов systemd может ввести в сту­
пор даже бывалого линуксоида, не говоря уже о пользователе, который впер­
вые видит systemd. Когда я впервые познакомился с systemd, у меня было
только одно желание - снести ее и установить вместо нее init. Но мы это не
будем делать. Чтобы разобраться со всеми файлами, нужно понимать, как
работает эта система.



1:1ава 14. Yнpaшtt'tlllt' ш1p�11-:oii l,i1шx

В systemd используется концепция модулей (юнитов). Существующие типы
модулей описаны в таблице 14.1.
Таблица 14.1. Типы модулей системы ини1{иализации systemd
Тип

Описание

service

Служба (сервис, демон), которую нужно запустить. Пример
имени модуля: network.service. Изначально systemd поддер­
живала сценарии SysV (чтобы управлять сервисами можно
было, как при использовании init), но в последнее время в ка­
талоге /etc/init.d систем, которые используют systemd прак­
тически пусто (или вообще пусто), а управление сервисами
осуществляется только посредством systemd

target

Цель. Используется для группировки модулей других типов.
В systemd нет уровней запуска, вместо них используются
цели. Например, цель multi-user.target описывает, какие мо­
дули должны быть запущены в многопользовательском ре­
жиме

snapshot

Снимок. Используется для сохранения состояния systemd.
Снимки могут использоваться для перевода системы из од­
ного состояния в другое, например, в состояние сна и про­
буждение

mount

Точка монтирования. Представляет точку монтирования. Си­
стема инициализации systemd контролирует все точки мон­
тирования. При использовании systemd файл /etc/fstab уже
не главный, хотя все еще может использоваться для опреде­
ления точек монтирования

аиtотоипt

Автоматическая точка монтирования. Используется для мон­
тирования сменных носителей - флешек, внешних жестких
дисков, оптических дисков и т.д.

socket

Сокет. Представляет сокет, находящийся в файловой си­
стеме или в Интернете. Поддерживаются сокеты AF_INET,
AF_INETб, AF UNIX. Реализация довольно интересная.
Например, если сервису service l .servive соответствует со­
кет service l .socket, то при попытке установки соединения с
service l .socket будет запущен service l .servive

11'\(,:\ 11а 11111 1\1t·1.1 I\. llp:11.:1 111.:a

device

Устройство. Представляет устройство в дереве устройств.
Работает вместе с udev: если устройство описано в виде правила udev, то его можно представить в systemd в виде модуля
device

path

Файл или каталог, созданный где-то в файловой системе

scope

Процесс, который создан извне

slice

Управляет системными процессами. Представляет собой
группу иерархически организованных модулей

swap

Представляет область подкачки (раздел подкачки) или файл
подкачки (свопа)

timer

Представляет собой таймер системы инициализации systemd

Модули хранятся в следующих каталогах:
• /etc/systemd/system/ - обладает самым высоким приоритетом. Здесь со­
держатся модули, которые созданы и управляются системным админи­
стратором.
• /run/systemd/system/ - модули, созданные во время выполнения. Приори­
тет этого каталога ниже, чем каталога /etc/systemd/system/, но выше, чем
у /usr/liЬ/systemd/system.
• /usr/liЬ/systemd/system/ - модули, которые установлены из пакетов.
Типичный файл модуля типа service приведен в листинге 14.3.
Листинг 14.3. Типичный файл модуля типа service
[Unit]

Description = Daemon to detect crashing apps
After=syslog.target
[Service]
ExecStart=/usr/sbin/abrtd
Type = forking

•················································································'

l .1ава 1-f. У11рав.1t·1111е �а• р� �1,oii l.i1111,

[ Install]
WantedBy=multi-user.target

В секции Unit содержится общая информация о сервисе. Эта секция есть и в
других модулях, а не только в сервисах.
Секция Service содержит информацию о сервисе. Параметр ExecStart опи­
сывает команду, которую нужно запустить. Параметр Туре указывает, как
сервис будет уведомлять systemd об окончании запуска.
Секция lnstall содержит информацию о цели, в которой должен запускать­
ся сервис. В нашем видно, что сервис будет запущен при активации цели
multi-user.target.
Вы можете использовать эту «болванку» для написания собственного серви­
са, который потом нужно поместить в файл /etc/systemd/system/имя_cepвиca.
service. После этого нужно перезапустить саму systemd, чтобы она узнала о
новом сервисе:
# systemctl daemon-reload

14.3.3. Цели
Теперь поговорим о целях. Файлы целей *.target предназначены для груп­
пировки вместе других юнитов systemd через цепочку зависимостей. Так,
модуль цели graphical.target, который используется для запуска графическо­
го сеанса, запускает системные службы GDM (файл gdm.service) и Accounts
Service (accounts---daemon.service), а также активирует цель multi-user.target.
В свою очередь, цель multi-user.target запускает другие системные службы,
например, D-Bus (dbus.service) и активирует другие цели вроде basic.target.
В systemd имеются предопределенные цели, которые напоминают стандарт­
ный набор уровней запуска.
Некоторые цели называются runlevelN.target, чтобы упростить переход быв­
ших пользователей init на systemd, а именно:
• poweroff.target (runlevelO.target) - завершение работы и отключение
системы;

,

• rescue.target (runlevell .target) - однопользовательский режим, среда вос­
становления;
_" -"" - """ - " - " - - " - " - " - " - """. - . - " - ·-". ". - . - " - " - - """ - " - " - " - "-

-· - ..

"""

- "

"."

...........

l,l�UX 1ia 11римерах. Пракr11ка

• multi-user.taгget (runlevel2.taгget, runleve!З.ta'rget, п.шlevel4.target)- много­
пользовательский режим, без графического интерфейса;
• graphical.target (runlevel5.taгget)- многопользовательский режим с графи­
ческим интерфейсом
• reboot.target (nшlevelб.target)- завершение работы и перезагрузка системы
Управление службами осуществляется с помощью программы systemctl.
Подробнее о службах мы поговорим в следующем разделе, а пока разберем­
ся, как использовать systemctl для завершения работы системы:
• systemctl halt -- останавливает систему;
• systemctl poweroff - выключает систему;
• systemctl геЬооt - перезагружает систему.
Многим пользователям будет удобнее использовать старые команды halt,
poweroffи reboot. Но все же теперь вы знаете, что есть альтернативные спо­
собы завершения работы.

14.4. Управление сервисами при использовании
systemd
При использовании системы инициализации systemd управление службами
осуществляется посредством программы systemctl. Команда systemctl ис­
пользуется для разных целей, поэтому в таблице 14.2 представлены не все
ее параметры, а только те, которые имеют отношение к сервисам.
Таблица 14.2. Параметры програлtмы systemctl
Параметр

Описание

start

Запускает сервис

stop

Останавливает сервис

restart

Перезапускает сервис

..........

· · · · - · · · · ······ .. · · ·· ·· · ·· ····· ··· · · · ·· ·····



r:1ава 14. У11рав.1ение Jarp� зкоii [,inux

try-restart

Перезапуск сервиса только, если он запущен

reload

Перезагружает конфигурацию сервиса

status

Отображает подробное состояниесервиса

is-active

Отображает только строку active (сервис
запущен) или inactive (остановлен)

list-units --type service --а!!

Выводит состояние всех сервисов

епаЬ!е

Включает сервис (обеспечивает его автоматический запуск)

disaЬ!e

Отключает сервис (сервис не будет автоматически запускаться при запуске системы)

rеепаЬ!е

Деактивирует сервис и сразу его использует

list-unit-files --type service

Выводит список всех сервисов и сообщает,
какие из них активированы, а какие - нет

Примеры:
# systemctl start httpd.service
# systemctl stop httpd

Первая команда запускает сервис httpd ( веб-сервер), вторая - останавливает.
Обратите внимание, что «.service» можно не указывать.
Бывалые пользователи Linux сразу заметят удобства. Ранее, чтобы отклю­
чить службу на определенном уровне запуска, нужно было удалить ее сим­
волическую ссылку из определенного каталога. Аналогично, чтобы служба
запускалась на определенном уровне запуска (например, в графическом ре­
жиме), нужно было создать символическую ссылку. Сейчас всего этого нет,
а есть только команды епаЬ!е и disaЬ!e, что гораздо удобнее .



·-·-·-··---·-·------·-···-······-·-········---·--····--·-·---·-······-·----------·-tll

Глава 15.

Управление процессами

1�шва 15. У11рав:н·1111t· щннtl.'l.'t'a\111

15.1. Команды ps, nice и kill
15.1.1. Получение информации о процессе
Современные операционные системы устроены так, что каждому процессу
присваивается уникальный номер - PID (Process ID, ИД процесса), исполь­
зуя который можно управлять процессом, например, можно завершить про­
цесс или изменить его приоритет.
Узнать PID можно с помощью команды ps. Команда ps, введенная без па­
раметров, просто показывает список процессов, запущенных на текущем
терминале. Видно, что сейчас запущен bash и сама команда ps (правда, на
момент завершения вывода процесс с ID 975 уже не будет существовать, но
на момент самого вывода такой процесс существовал), см. рис. 15.1.



Рис. 15.1. Командарs

. . . ... . ... .. . . .. ..... .. .. .. .. . ... . ... . .... . . . . . . . . .. . .. . .. . . . . . . . . . . . . . . . . . ·.·

. . ....

Ll�UX ш111р11мерах. Пракпша

Параметр -а позволяет вывести список всех процессов пользователя.
Посмотрите на рис. 15.2 на консоли ttyЗ запущена программа nano, на кон­
соли ttyl - программа ps.

Рис. 15.2. Команда ps -а

Если нужно вывести процессы какого-то определенного пользователя, тогда
используйте параметр -и:
$ ps -u root
Вывести абсолютно все процессы можно с помощью опции -А. Обратите
внимание на регистр опции! Поскольку в системе процессов будет очень
много, лучше перенаправить вывод программы на команду less для более
удобного просмотра (рис. 15.3):
$ ps -А I less

.....

Рис. 15.За. Кол1анда ps -А I less (начало вывода)

- --· ......... - . . ..................... - . .... ······· ................. ____ ; __ ....

,

Глава 15. Управление процессами

Рис. 15.36. Команда ps -А I less (завершение вывода)
Примечание. Для выхода из программы less нажмите q на кла­

виатуре. Листать вывод можно стрелками вверх и вниз.

Команда ps сортирует процессы по PID. Колонка ТТУ - это терминал, к ко­
торому привязан процесс. Если в этой колонке вы видите знак ?, значит, про­
цесс не привязан ни к одному из терминалов. Как правило, это системные
процессы-службы. Они запускаются без привязки к терминалу. Чтобы
отобразить только процессы без привязки к терминалу, используется опция
-х (рис. 15.4).



Рис. 15.4. Команда ps -х I less

···················-····························-···--····························-t!D

1,1:\[':\ 11:1 щншt·рах. llра1,1111,а

Колонка STAT - это состояние, в котором находится процесс. Возможные
значения для этой колонки приведены в таблице 15.1. Обратите внимание:
колонка STAT есть только, когда программа запущена с параметром -х. Если
программа запущена с другими параметрами, например, -А, вместо нее бу­
дет колонка TIME, которая сообщает занимаемое процессом процессорное
время.
Таблица 15.1. Возможные состояния процесса

Состояние

Описание

D

Процесс в непрерывном сне (как правило, ожидает ввода/
вывода)

R

Выполняется в данный момент

s

Ожидание (то есть процесс "спит" менее 20 секунд, после
чего он переходит или в состояние R или в состояние D)

т

Процесс остановлен

t

w
х
z

То же, что и Т, но причина остановки - остановка отладчиком

Процесс в свопинге (подкачке)
Процесс мертв, вы его никогда не увидите
Процесс-зомби - он уже завершен, но не "похоронен" его
родителем, то есть процесс-родитель еще не считал код завершения

У команды ps есть несколько синтаксисов установки параметров. Мы ис­
пользовали ВSD-синтаксис. Например, для вывода всех процессов в стан­
дартном синтаксисе используется команда -е, а в нашем случае - -А. Вы
вольны использовать любой синтаксис, но в случае с ВSD-синтаксисом
программа ps выводит дополнительное состояние процесса (работает по­
добно программе ps в системе BSD). Дополнительное состояние процесса
описано в таблице 15.2.



at--............................................................................... .

1: ,ава 15. � нpaB. ll'lllll'

llj)OЩ'l"l":1\111

Таблица 15.2. Дополнительное состояние процесса (ВSD-синтаксис)
Состояние

Описание

<

Высокий приоритет

N

Низкий приоритет

L

У процесса есть страницы, заблокированные в памяти

s

Это лидер сессии

l

Процесс является многопотоковым

+

Находится на первом плане в группе процессов

Последняя колонка вывода ps - это смо. Она содержит команду, которой был
запущен процесс. Не просто название исполнимого файла, но путь (если он
был указан в команде) и переданные программе параметры.
Если программа была запущена без указания полного пути к исполнимому
файлу, и вы хотите знать, где он находится, введите команду which, напри­
мер:
$ which nano
/Ьin/nano
Если вам нужно узнать PID определенного процесса, но вам не хочется
просматривать длинный список системных процессов, используйте команду
grep, как фильтр. Например, следующая команда позволит нам узнать PID
процесса sshd (это SSH-cepвep):
# ps -А I grep sshd
Если такой процесс не запущен, вывод будет пуст. Или же вы получите вы­
вод вроде этого:
929 ?



00:00:00 sshd

··················································································-

1.1'\1 1'\ 11а 111111,н·11a,. llpai-1111.:a

15.1.2. Изменение приоритета процесса
Когда мы знаем PID процесса, мы можем изменить его приоритет. В неко­
торых случаях полезно изменить приоритет процесса. Например, можно по­
высить приоритет процесса, выполняющего резервное копирование, чтобы
программа успела за ночь создать все необходимые резервные копии, и что­
бы этот процесс утром потом не мешал нормальной работе сервера.
Запустить программу с определенным приоритетом можно командой nice:
# nice -n команда аргументы
Здесь приоритет задается от -20 (максимальный приоритет) до 19 (мини­
мальный). Если процесс уже был запущен, и вы не можете его прерывать, но
повысить приоритет нужно, используйте команду renice:
# renice -n -р PID

15.1.3. Аварийное завершение процесса
Если процесс завис и его нельзя завершить, как обычно, тогда для его ава­
рийного завершения используется команда kill. Формат вызова этой ко­
манды следующий:
$ kill [опции] PID
Конечно, перед этим нужно узнать PID процесса. На рис. 15.5 изображена
команда kill в действии: сначала я вывел список процессов, чтобы узнать
PID процесса папа (1191), затем я ввел команду kill 1191, чтобы "убить"
этот процесс. Наконец, я вывел список процессов еще раз, чтобы убедиться,
что процесс папа завершен.
Используя параметры программы, можно по-разному завершить процесс.
Самый эффективный сигнал 9 (КlLL) - означает аварийное завершение
процесса. Программа не может игнорировать или как-либо обработать этот
процесс

...

.. - . - . . - -- . -· - ·-- - - . - --· - - . - -· . -- - . ---- - - -- ·-. -· - . - - . - . -· -· - . ----· -. - ·-- - . -----

_,

П�ава 15. У11равJ1с1111с 11р(щссс;ш11

Рис. 15.5. Использование команды kill

Если нужно попытаться корректно завершить работу программы, ей отправ­
ляют сигнал 15 (ТЕRМ), означающий, что программа должна освободить
все занятые ресурсы, сохранить все данные. Вот только если программа за­
висла и не отвечает на запросы пользователя, этот сигнал мало чем поможет,
но попытаться стоит.

Сигнал 19 (STOP) позволяет временно приостановить работу программы, а
сигнал 18 (СОNТ) - возобновить приостановленный ранее процесс.

Для сетевых служб полезен сигнал 1 (HUP), означающий, что процесс дол­
жен перезапуститься и перечитать файл конфигурации. Полезно, когда вы
изменили файл конфигурации и хотите, чтобы демон был перезапущен (хотя
для этого правильнее использовать команду service). Обычная программа
при получении сигнала 1 завершает работу.
Пример отправки сигнала:
$ kill -9 1035
Если вам лень получать PID процесса, можно завершить его и по имени, ис­
пользуя команду killall, например:
$ killall nano

•.

-- -- - - -- . -- -- - .... - .... -- . -- ...-.. - -.. - -- ... -.. - - - . - ....... - .. - . -... -...... -...

- --

IJ'\L :\ 11а 111111\Jl"pax. llpa1,111h"a

Вот только если в вашей системе есть два процесса с именем папо, например,
один на консоли tty2, а другой - на tty4, то будут завершены оба процес­
са. Если это то, что вам нужно, используйте killall, в противном случае
лучше использовать команду kill для завершения именно того процесса,
который можно завершить.
Еще есть команда xkill, позволяющая "убить" программу, имеющую гра­
фический интерфейс. Такие программы можно завершить и командой kill,
но программа xkill предоставляет графический метод завершения. После
ввода этой команды указатель мыши примет вид черепа. Для завершения
программы нужно щелкнуть по ее окну.

15.2. Команда top
Как было отмечено ранее, программа ps по умолчанию сортирует процессы
по колонке PID, а не по колонке TIME. Конечно, можно использовать раз­
личные параметры программы, чтобы добиться нужного нам вывода, но все
равно программа не будет показывать ситуацию в реальном времени. Если
же вам нужно знать, что происходит с вашими процессами в реальном вре­
мени, вам нужно использовать программу top (рис. 15.6).

Рис. 15. 6. Команда top

Назначение колонок программы описано в таблице 15.3.



at--······---·-·-····---··--·······················-·--··-····-·-·-···-··-·-······-··

1.1:111:t 15. �11pa11.lt'llllt' IIJIOЩ•t·ca\111

Таблица 15.3. Колонки программы top

Колонка

Описание

PID

PID процесса

USER

Владелец процесса (пользователь, запустивший программу)

PR

Приоритет процесса

N1

Значение nice (см. ранее)

VIRT

Виртуальная память, которая используется
процессом

RES

Размер процесса, который не перемещается в
область подкачки

SHR

Разделяемая память, используемая процессом

s

Состояние процесса (см. табл. 15 .1)

%CPU

Процессорное время, занимаемое процессом в
данный момент

%МЕМ

Память, используемая процессом

ТIМЕ+

Процессорное время, которое было потрачено
с момента запуска процесса

COMМAND

Команда запуска процесса

При просмотре списка программы top вы можете управлять сортировкой
процессов с помощью нажатия клавиши F, которая изменяет колонку, по ко­
торой сортируется список процессов (рис. 15.7). По умолчанию сортировка
выполняется по колонке %CPU.
Нажатие клавиши показывает только процессы определенного пользо­
вателя. После нажатия нужно будет ввести имя пользователя, процессы
которого вы хотите просмотреть, или нажать Enter, чтобы просмотреть про­
цессы всех пользователей.

•. ---------------------------------------------------------------------------------t!D

I.INtlX

11:1

щншср:�х. llp:1 1,1111,a

Рис. 15. 7. Выбор колоики, по которой осуществляется сортировка

15.3. Информация об использовании памяти и
дискового пространства
Хотя управление памятью и дисковым пространством не совсем относит­
ся к управлению процессами, но эти самые процессы активно "поедают",
как память, так и дисковое пространство, поэтому иногда полезно знать, как
просмотреть информацию об использовании памяти (команда free) и дис­
кового пространства (команда df), см. рис. 15.8.

Рис. 15.8. Ко.манды free и df -Н

лава - .

ЩHIВJJCIIIIC IIJ)OЦCCC:IMII

Программа free выводит информацию об использовании памяти (Mem) и
подкачки (Swap). Колонка total -это общее количество памяти в килобай­
тах, used -использованное количество памяти (тоже в килобайтах), free свободно памяти, shared - разделяемая память, buff/ cache -размер кэша,
availaЫe -общий объем доступной памяти.
Параметр -Н команды df означает вывод информации об объеме в удобных
для восприятия человеком единицах, то есть в мегабайтах и гигабайтах.
Обратите внимание на значение buff/ cache в выводе команды free. Оно
показывает сколько памяти задействовано под буфер ввода/вывода и кэш. В
нашем случае (рис. 15.8) -примерно 323 Мб. На реальном сервере это зна­
чение будет гораздо выше. Немного освободить память можно, очистив кэш.
Для этого введите команду:
sync; echo 3 > /proc/sys/vm/drop caches
Сначала мы командой sync сбрасываем содержимое буферов на диск, а за­
тем уничтожаем кэш. Если просмотреть затем информацию об использова­
нии памяти, то вы увидите, что размер кэша был уменьшен почти в три раза
(рис. 15.9). Однако помните, что эта команда может негативно отразиться
на стабильности системы и на скорости ее работы. Не всегда очистка кэша
таким вот варварским образом - это хорошо.

Рис. 15.9. До и после ввода команды sync; есЬо З > /proc/sys/vm/
drop_cacbes

15.4. Командаj'иsеr



Команда fuser позволяет узнать, какой процесс открыл тот или иной ресурс,
например, файл или сетевой порт. Примеры использования программы:

··················································································-al

fuser -va 23/tcp
fuser -va /chroot/etc/resolv.conf

В первом случае мы получим идентификатор процесса, открывшего ТСР­
порт 23, во втором - идентификатор процесса, открывшего файл /chroot/etc/
resolv.conf. Что делать далее - решать вам, например, можно "убить" этот
процесс командой kill.

15.5. Планировщики заданий
15.5.1. Планировщик cron
Планировщик заданий нужен для периодического выполнения каких-либо
заданий. Задания могут быть самыми разнообразными - очистка временного
каталога для экономии места, очистка кэша, обновление баз антивируса, за­
пущенного на почтовом сервере и т.д. Никаких ограничений нет - вы можете
написать на bash небольшой сценарий с необходимыми вам действиями, а
затем настроить планировщик для его периодического выполнения.
Самый древний планировщик заданий - cron. Он появился еще во времена
первых версий UNIX. Но примечательно то, что в современных дистрибу­
тивах используются его модифицированная версия, которая настраивается
практически так же. Так, в современных версиях дистрибутивов openSUSE
и Fedora используется демон cronie, который является потомком того самого
демона cron.
Не будем вникать в тонкости новой версии, а просто разберемся, как ее
настроить. Как и в том самом cron есть файл /etc/crontab - это таблица рас­
писания планировщика задач. Формат записей в этом файле следующий:
минуты (0-59) часы (0-23) день (1-31) месяц (1-12) день_недели
(0-6, О - Вс) команда

В листинге 15.1 приведен пример этого файла по умолчанию.
Листинг 15.1. Пример файла /etc/crontab
SHELL=/Ьin/bash
PATH=/usr/Ьin:/usr/sЬin:/sЬin:/Ьin:/usr/liЬ/news/Ьin
МAILTO=root

..



.......................... ..... ----.............................................. .

1.�.ша IS. �11ра11.н·1111t· 11р1щеtта,111

-*.15 * * * * root test -х /usr/liЬ/cron/run-crons && /usr/liЬ/cron/run­
crons >/dev/null 2>&1

Примечание. Просмотреть (даже просмотреть, не говоря уже
о модификации!) файл /etc/crontab может только пользователь
root. Поэтому сначала нужно получить права root, а затем уже
что-либо делать с файлом /etc/crontab.

Переменная SHELL задает путь к оболочке, РАТН - путь поиска программ,
а MAILTO определяет имя пользователя, которому будет отправлен отчет о
выполнении расписания. В таблице расписания всего одна запись - она про­
веряет наличие сценариев в каталогах cron.hourly, cron.daily, cron.weekly и
cron.monthly и их выполнение. Об этом мы поговорим чуть позже.
Представим, что вам нужно выполнять какой-то сценарий каждый день в
8:30. Для этого в /etc/crontab нужно добавить строку:
30 В * * * /usr/Ыn/script arguments

Однако планировщик предлагает более удобный способ изменения таблицы
расписания. Представим, что у вас есть команда, которую нужно выполнять
периодически. Создайте файл myscript со следующим содержимым:
#/ Ьin/bash
/путь/ myscript аргументы

Сохраните файл и установите право выполнения для этого файла:
chmod +х myscript

Только что вы создали простейший сценарий, который просто выполняет
вашу команду с заданными аргументами. При желании, необходимости и
знании bash (информацию по этой оболочке вы без особых проблем найдете
в Интернете) вы можете усовершенствовать этот сценарий.

...

После того, как сценарий создан, его нужно поместить в один из каталогов:

•..

.................. ........... ....... . ........................... ................

l,l�lJX ш1 примерах. Пра�-:111ю1

• /etc/cron.hourly- содержит сценарии, которые будут выполняться каждый
час;
• /etc/cгon.daily - содержит сценарии, который будут выполняться ежеднев­
но;
• /etc/cron.weekly- сюда нужно поместить сценарии, которые будут выпол­
няться еженедельно;
• /etc/cгon.monthly - содержит сценарии, которые будут выполнены раз в
месяц.
Просто поместите сценарий в один из этих каталогов и положитесь на аоп
- далее вашего вмешательства не требуется.
Также существует возможность создать отдельное расписание для каждого
пользователя. Для этого используется команда crontab. Однако такая воз­
можность на современных серверах (когда пользователи не работают с тер­
миналом сервера непосредственно) используется довольно редко. При этом
в файл /etc/cron.deny заносятся пользователи, которым запрещено использо­
вать планировщик аоп. Если вам нужно отредактировать таблицу расписа­
ния для каждого пользователя, используйте команду crontab. В большин­
стве случаев команда будет такой:
crontab -е -u
После этого откроется текстовый редактор ( определенный в переменной
окружения EDITOR) для редактирования таблицы расписания указанного
пользователя. Синтаксис такой же, как для общесистемной таблицы распи­
сания.

15.5.2. Планировщик anacron
Планировщик anacron - еще один форк старого-доброго планировщика 0·011.
Ситуация с anacron такая: когда стало понятно, что cron устарел, начали
появляться альтернативные планировщики, подобные ему. У каждого из них
были свои преимущества и недостатки, но некоторые разработчики дистри­
бутивов остановили свой выбор на планировщике anacron. Однако прошло
время и сейчас этот планировщик практически не используется. В основном
используется планировщик cmnie, который настраивается практически так
же, как и cron, что и было показано ранее.



Глава 15. Управление процессами

Конечно, вам могут встретиться дистрибутивы, в которых по каким-то при­
чинам используется апааоп. Как правило, это устаревшие версии дистрибу­
тивов. Если же вы обнаружили anacron в современной версии дистрибутива,
то, скорее всего, это личное предпочтение разработчиков дистрибутивов.
Основное "визуальное" отличие этого планировщика - наличие файла /etc/
anacrontab вместо просто /etc/crontab. Формат записей также другой:
Период

Задержка

ID

Команда

Пример таблицы расписания anacrontab:
1 5
7 10
30 75

cron.daily
cron.weekly
cron.monthly

run-parts /etc/cron.daily
run-parts /etc/cron.weekly
run-parts /etc/cron.monthly

Принцип прост: как и в предыдущем случае, вам нужно поместить ваш
сценарий в один из каталогов /etc/cron.daily, /etc/cron.weekly или /etc/cron.
шoпthly (каталога croп.houгly для этого планировщика не было предус­
мотрено).
По сути, как только вы увидели каталоги c1·on.daily, cгon.,veekly или cron.
шoпthly, можете сразу помещать в них свои сценарии, особо не разбираясь,
какой планировщик установлен. Самое главное, чтобы служба cron была
включена.



Глава 16.

МарПiрутизация и
настройка брандмауэра

1. 1а11а I l•. Маршр� 1 111а11ш1 11 11ас 11111111..:а fipa11,1�1a� 1ра

16.1. Просмотр таблицы маршрутизации
Отправляемые данные, как вы знаете, не отправляются целиком - они раз­
биваются на меньшие части - пакеты. Маршрутизация - это процесс перена­
правления пакета по различным сетям вплоть до места назначения.
В сетях TCP/IP информация маршрутизации хранится в виде таблицы марш­
рутизации. Таблица маршрутизации содержит ряд простых правил. Напри­
мер, если пакет отправляется в сеть 1 он должен быть отправлен на марш­
рутизатор Ml, если пакет отправляется в сеть 2, то его нужно отправить на
маршрутизатор М2. Пакет, отправляемый на любую другую сеть (не 1 и не
1), нужно отправить на маршрутизатор М (шлюз по умолчанию). Получив
пакеты, маршрутизаторы Ml, Ml и М сами знают, что с ними делать. Воз­
можно, передать дальше другому маршрутизатору, а может отправить узлу­
получателя пакета. Все зависит от такой же таблицы маршрутизации, но уже
на тех маршрутизаторах. Что будут делать маршрутизаторы с полученными
пакетами - это их дело, наше дело - доставить пакеты до этих маршрутиза­
торов.
Таблица маршрутизации ядра Linux хранит данные о маршрутизации. Каж­
дая строка в этой таблице содержит несколько параметров - адрес сети
назначения, маска сети, флаги, интерфейс и т.д.

'.

-.- -. --"-·-·-.. - - -.- -.--- ".- - - --. -- - - - - "

"

"

"

"

"

"

- -"-· - - .. - - - -... - -

"" """" "

"

"

" "

"

"

....

l,INLl:X 11:1 щншсрах. llpai.•·•• ..a

Ядро при отправке пакета исследует таблицу маршрутизации: оно опреде­
ляет, в какую сеть направляется пакет - если она есть в таблице маршру­
тизации, то пакет отправляется через заданный в таблице интерфейс. Если
нужной сети в таблице нет, пакет отправляется или на шлюз по умолчанию
или же (если он не задан), отправителю пакета передается IСМР-сообщение
«Network UnreachaЬ\e» (сеть недоступна).
Просмотреть таблицу маршрутизации ядра можно или командой �etstat
-rn или командой route:
# netstat -rn
# route
Вывод команд немного отличается, как видно из рис. 16.1. Здесь видно, что
шлюз по умолчанию - 192.168.52.2. По сути, это самая простая таблица
маршрутизации, какая только может быть.

Рис. 16.1. Команды netstat -rn и route

Разберемся, что содержится в столбцах таблицы маршрутизации. Столбец
Destination хранит адрес сети назначения, Gateway- шлюз (маршрутизатор),
которому нужно отправить пакеты, чтобы они достигли сеть из колонки
Destination.
Столбец Genшask содержит маску сети, а Flags - флаги маршрута. Флаги
могут быть следующими:
• U - маршрут активен;
• Н - маршрут для хоста (Н- host), а не для сети;
• G - флаг шлюза (G- gateway);
• D - динамический маршрут, который был установлен демоном маршру­
тизации;

a:t----.............. -. -. -...... -...... -... -... -........ -··•· ..... -. -. -.... -. -... -.. ,

IJШШI

16. Маршр� 111ш11ш111 шн:1роiiю1 бршщм:1� 1ра

• М - маршрут, который был модифицирован демоном маршрутизации;
• С - запись кэширована;
• ! - запрещенный маршрут.
Колонка MSS (Maximum Segment Size) содержит значение MSS - макси­
мальный размер сегмента для ТСР-соединений по этому маршруту. Столбец
Window показывает размер окна по умолчанию для ТСР-соединений по это­
му маршруту. Столбец irtt- это начальное время RТТ. В большинстве сетей
время RTT не нужно изменять, но в некоторых медленных сетях время RTT
можно увеличить, чтобы избежать лишних повторений пакетов. Система от­
правляет пакет и ждет некоторое время (RTT) от получателя подтверждения
получения. Если подтверждение получения не было, тогда система отправ­
ляет пакет еще раз. В медленных сетях подтверждение получения может не
успеть дойти до отправителя пакета, поэтому RTT увеличивают (это можно
сделать с помощью команды route). Столбец Iface задает интерфейс, исполь­
зуемый для отправки пакета.
В выводе команды route вместо столбцов MSS и Window есть колонки
Metric и Ref. Первая содержит метрику, то есть расстояние до маршрутиза­
тора в хопах (переходах): один хоп - это один маршрутизатор. Столбец Ref
содержит - это количество ссылок на маршрут. Ядром Linux этот параметр
не учитывается.

16.2. Изменение и сохранение таблицы
маршрутизации
Для редактирования таблицы маршрутизации используется команда route.
Записи в таблице маршрутизации бывают статическими (добавляются ко­
мандой route) или динамическими (добавляются по мере работы системы
демоном маршрутизации).
Вот как можно добавить маршрут по умолчанию командой route:
# route add default gw 192.168.1.1 ethO

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

1.1'\1 '\ 11а 11p11\1epa,. llpa1.:1111.:a

маршрутизации, то эти команды нужно добавить в конфигурационные фай­
лы сети или сценарии инициализации системы, чтобы внесенные вами из­
менения не были потеряны.
Шлюз по умолчанию можно сохранить в файле /etc/sysconfig/networking­
scripts/ifcfg-имя_интepфeйca. В листинге 16.1 приводится пример этого фай­
ла.
Листинг 16.1. Файл /etc/sysconfig/networking-scripts/ifcfg-имя_
интерфейса
DEVICE=ethO
HWADDR=00:0C:29:E8:F0:C4
TYPE=Ethernet
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=l92.168.l.101
GATEWAY=192.168.1.1

NETWORK=l92.168.l.0
8ROADCAST=l92.168.l.255
BOOTPROTO=none
NM CONTROLLED=no

Параметр GATEWAY позволяет указать IР-адрес шлюза. Но обычно вам не
придется редактировать файлы настройки сетевых интерфейсов обычных
компьютеров, поскольку такая общая информация как IР-адрес шлюза за­
дается ПНСР-сервером примерно так:
subnet 192.168.1.0 netmask 255.255.255.0 {
# Список маршрутизаторов (через пробел)
option routers
192.168.1.1;
Теперь рассмотрим общий формат вызова команды route:
# route [операция] [тип] адресат gw шлюз [метрика] [dev интерфейс]
Параметр операция может принимать значения add и del. Первый добав­
ляет маршрут, а второй - удаляет. Второй параметр (тип) необязательный
- он позволяет задать тип маршрута: default (маршрут по умолчанию), -net
(маршрут к сети), -host (маршрут к узлу).

CD-····· ······· ............... -······.. -.-·-··· ... -.... ····-..... -·· ---... -·-· ----. -.

1: шва 16. \lаршр� 1 111:111ш1 11 11ас I p11iiю1 бр:111.1,�а� 1ра

Третий параметр, адресат, содержит адрес сети, если вы задаете маршрут
к сети, или адрес узла, если добавляется маршрут к узлу).Если вы задаете
маршрут по умолчанию, то этот параметр вообще не нужно указывать.
Параметр шлюз задает IР-адрес шлюза. Можно также указать и доменное
имя, но обычно указывается IР-адрес.Параметр метрика задает число пере­
ходов (маршрутизаторов) на пути к адресату. Параметр dev нужно указы­
вать, если в системе установлено несколько сетевых интерфейсов и нужно
указать, через какой именно сетевой интерфейс нужно отправить пакеты.
Оба последних параметра не являются обязательными.
Рассмотрим несколько примеров использования команды route:
#
#
#
#

route add -net 192.168.16.0 netmask 255.255.255.0 dev еnsЗЗ
route add -net 192.168.16.0 netmask 255.255.255.0 gw 192.168.16.1
route add -net 10.100.0.0 netmask 255.0.0.0 reject
route del 10.100.0.0

Первая команда добавляет маршрут к сети 192.168.16.0 через устройство
ens33. Как видите, мы не указываем IР-адрес шлюза, а просто указали имя
интерфейса - все пакеты, адресованные сети 192.168.16.0, будут отправлены
через интерфейс еnsЗЗ.
Вторая команда добавляет маршрут к сети 192.168.16.0 через шлюз
192.168.16.1.Все пакеты, адресованные этой сети, будут отправлены марш­
рутизатору с IР-адресом 192.168.16.1.В этом случае сетевой интерфейс ука­
зывать не обязательно.
Третья команда задает запрещающий маршрут. Отправка пакетов в сеть
1 0.1 0 0.0.0 запрещена (параметр reject). Последняя команда удаляет ранее за­
данный запрещающий маршрут.
Удаление маршрутов в Linux заслуживает отдельного разговора. Команда
удаления маршрута выглядит так:
# route del IР-адрес
В Linux нет параметра :f (как в FreeBSD), который позволяет удалить сразу
все маршруты (то есть очистить таблицу маршрутизации), поэтому вам при­
дется ввести ряд команд route .



.....................................................................................

l,l"ltlX на примерах. [lpai-11 1кa

Как уже было отмечено, таблица маршрутизации очищается при перезагруз­
ке. Чтобы этого не произошло, маршруты нужно определить в файлах кон­
фигурации сети.
В Debian/Astra Linux/cтapыx версиях Ubuпtu настройка статических маршру­
тов производится в файле /etc/network/interfaces. Просто добавьте в секцию
настройки интерфейса команду ир и укажите команду route, которую нужно
выполнить. Допустим, для настройки маршрутов вы ввели три команды:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.14.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.22.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

Тогда в файл /etc/пetwork/interfaces нужно добавить следующие строки:
up route add -пеt 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

В этом примере пакеты ко всем трем сетям направляются на шлюз
192.168.17.254, а он уже сам решает, что с ними делать. Прежде, чем мы
рассмотрим настройку брандмауэра, нужно отметить, как превратить
компьютер в шлюз. Для этого нужно разрешить пересылку пакетов прото­
кола IPv4 (1Pv4 for\\1arding). Для этого добавьте значение / в файл /proc/sys/
net/ipv4/ip_forwaгd:
# echo 1 > /proc/sys/net/ipv4/ip forward

Конечно, после перезапуска это значение будет потеряно. Чтобы его сохра­
нить, добавьте в файл /etc/sysctl.conf следующую строку:
n et.ipv4.ip forward=0

Итак, ваш компьютер теперь превращен в шлюз. Но сам по себе перенаправ­
лять пакеты он не будет. Нужно задать ряд правил перенаправления пакетов.
Для этого мы будем использовать брандмауэр iptaЫes, который имеется во
всех современных дистрибутивах. Именно о нем и пойдет речь в следующем
�--·-···-·--·-·- -----------·-·····-- ·-·-·-·-···· ····-·-· -· ---·-·-·----·-·····-·-





l�шва l6.1\1аршру11ва111н111 11ac1poiiкa бра�11tш1у)ра

разделе. Забегая наперед, скажу, что iptaЫes можно использовать не только
для настройки шлюза, но и просто для защиты сервера или рабочей станции
от нежелательных подключений.
В новых версиях Ubuntu (начиная с версии 18.04) настройка маршрутов осу­
ществляется через файл /etc/netplan/01-netcfg.yaml. Откройте этот файл:
sudo nano /etc/netplan/01-netcfg.yaml

В нем вы найдете конфигурацию по умолчанию, которая может быть при­
мерно такой:
# This file describes the network interfaces availaЬle on your
system
# For more information, see netplan(S).
network:
version: 2
renderer: networkd
ethernets:
enol:
dhcp4: yes
Добавьте следующие строки:
routes:
- to: 192.168.44.0/24
via: 192.168.0.1

Данная конфигурация означает, что маршрут к сети 192.168.44.0/24 (маска
255.255.255.0) будет проходить через маршрутизатор 192.168.0.1. Полная
конфигурация будет выглядеть так:
# This file describes the network interfaces availaЬle on your
system
# For more information, see netplan(S).
network:
version: 2
renderer: networkd
ethernets:

1.1'\L :\ 11а 111111\н·ра,. llpa1.:111i..1

enol:
dhcp4: true
routes:
- to: 192.168.44.0/24
via: 192.168.0.1

Обратите внимание, что УАМL-файл очень требователен к отступам и раз­
метке. Убедитесь, что оператор «routes» находится на расстоянии двух про­
белов от имени интерфейса (в нашем случае enol), к которому вы применя­
ете маршрут.
Сохраните изменения в файле и примените их посредством команды:
sudo netplan apply

Проверим, все ли хорошо:
ip route show

Убедитесь, что вы видите эту строку в выводе предыдущей команды:
192.168.44.0/24 via 192.168.0.1 dev enol proto static

Если вы не видите данный статический маршрут в выводе, значит, что-то не
так с вашей конфигурацией. Вернитесь к УАМL-файлу и проверьте размет­
ку/отступы. Вы также можете проверить конфигурацию командой:
sudo netplan try

16.3. Настройка брандмауэра iptaЫes
Брандмауэр iptaЫes на данный момент считается устаревшим, но до сих пор
используется даже в самых новых версиях дистрибутивах. От него пытают­
ся отказаться последние лет 5, но до сих пор этого не произошло и, на наш
взгляд, в ближайшие лет 5 он будет все еше актуален. В следующем разделе
мы рассмотрим современный брандмауэр ifw, который, судя по всему, вы­
теснит iptaЫes в будущем, хотя на данный момент он даже не устанавлива­
ется по умолчанию.

...................................................................................

,

1:1а11а 16. \1ар111р� 1111:1111и1 11 11.1c1poiiкa fip,111,t\la� 1ра

16.3.1. Преобразование сетевого адреса
Что такое брандмауэр, я надеюсь, объяснять не нужно. А вот о преобразо­
вании сетевого адреса(NAT, Network Address Translation) поговорить стоит,
чтобы не было лишних вопросов. Пространство IР-адресов не безразмерное.
Рано или поздно 1Рv4-адреса закончатся. Именно поэтому и был разработан
протокол 1Pv6. Учитывая тенденции роста Интернета, думаю, что переход на
1Pv6 состоится в ближайшие годы, но пока будем говорить исключительно
о 1Pv4, поскольку новый протокол 1Pv6 пока практически не используется.
Если бы реальные IР-адреса раздавались бы всем желающим, они бы уже
давно закончились. Поэтому обычно при подключении к Интернету клиенту
выдается всего один IР-адрес, даже если у вас целая организация. Этот один
реальный IР-адрес, как правило, используется на шлюзе. А во внутренней
сети используются локальные IР-адреса: 1О.*.*.*(сеть класса А), 172.16.*.*172.31.*.*(класс В) и 192.168.*.*(сеть класса С). Эти IР-адреса не могут
пройти через маршрутизатор Интернета - как только маршрутизатор увидит
локальный IР-адрес, пакет сразу же будет отброшен. Но зато такие IР-адреса
вполне подойдут для использования в локальных сетях. Данные IР-адреса
уникальны только в пределах вашей организации. В соседней организации
могут использоваться такие IР-адреса, как и у вас, но поскольку между ком­
пьютерами организаций нет взаимодействия, в этом нет ничего страшного.
Когда компьютер с локальным IР-адресом 192.168.1.102 отправляет пакет
компьютеру, обладающему реальным IР-адресом, например, веб-серверу
www.example.com, наш шлюз должен выполнить NAT. То есть он должен
перезаписать локальный IР-адрес так, чтобы он выглядел как реальный.
Поскольку в нашем распоряжении только один реальный IР-адрес (IР­
адрес шлюза), то веб-сервер www.example.com будет «думать», что запрос
hришел от нашего шлюза, и он ничего не будет подозревать о компьюте­
рах, которые находятся за шлюзом. Веб-сервер обработает запрос и отпра­
вит пакет. Наш шлюз получит этот пакет (с ответом) и отправит его
компьютеру 192.168.1.102, перезаписав поле отправителя так, что компью­
тер 192.168.1.102 будет «думать», что ответ пришел непосредственно от
www.example.com.

16.3.2. Цепочки и правила
При настройке брандмауэра iptaЫes очень важно разобраться с цепочками
и правилами. Ведь основная задача брандмауэра - это фильтрация пакетов,
проходящих через сетевой интерфейс. Когда брандмауэр получает пакет, он
анализирует его и затем принимает решение - принять его или уничтожить.

,

_

- - - . - - - . -. - - - - -.. -....... -. - -. -. -. - ........ -.......... -..... - -. -..... -.. -. -...

--

J,l:\t1.'\ 11:1 11p11\1rpax. llpai,111i-a

Брандмауэр может выполнять и более сложные действия, но обычно доста­
точно этих двух.
Обработка пакета заключается в его прохождении по цепочке правил. Каж­
дое правило состоит из условия и действия. Если пакет соответствует усло­
вие, то выполняется указанное действие. Действие также называется целью.
Если пакет не соответствует условию правила, то он передается следующе­
му правилу. Если же пакет не соответствует ни одному из правил цепочки,
выполняется действие по умолчанию .
Цепочки правил существует не сами по себе, а собираются в таблицы. Та­
блицаfi/tеr является основной таблицей, отвечает за фильтрацию пакетов, в
ней содержатся правила фильтрации пакетов. Таблица nat используется при
преобразовании сетевого адреса. Есть еще одна таблица - mang/e, которая
используется, если нужно произвести специальные действия над пакетом,
отличные от фильтрации и NАТ.
В состав каждой таблицы входят три цепочки: INPUT, OUTPUT и FOR­
WARD . Первая используется для входящих пакетов, вторая - для исходя­
щих, а третья для пересылаемых пакетов. При желании вы можете создать
собственную таблицу, но в ней все равно будут цепочки INPUT, OUTPUT и
FORWARD .
Теперь поговорим о действиях над пакетом. Действие АССЕР Т принима­
ет пакет, DROP - уничтожает пакет. Действие MASQUERAD E позволяет
скрыть JР-адрес пакета. Если же в качестве действия указано имя цепочки,
то пакет будет отправлен для обработки в указанную цепочку.
Рассмотрим процесс обработки входящего пакета. Сначала пакет поступает
в цепочку PREROUПNG таблицы mangle. После чего, если он не был унич­
тожен правилами таблицы mang/e, он попадает в цепо с1ку PREROUTING
таблицы nat. Здесь правила проверяют, нужно ли модифицировать
назначение пакета или нет. После этого пакет направляется или в цепочку
FORWARD (если его нужно передать дальше - другому компьютеру) или в
цепочку INPUT (если пакет адресован этому компьютеру).
Если пакет был адресован этому компьютеру, то он передается правилам
цепочки JNPUT таблицы mang/e и .filta. Если эти правила не уничтожили
пакет, то он отправляется приложение, например, веб-серверу. Приложение
получает данные, обрабатывает их и отправляет ответ. Ответ приложения
преобразуется в пакет, который сначала обрабатывается цепочкой OUTPUT
таблиц mang/e, nat иfi/ta, а затем отправляется в цепочку POSTROUTING
и обрабатывается правилами таблиц mang/e и nat. Если после всего этого
пакет еще жив, он становится исходящим пакетом и отправляется в сеть.
........................................ ......................... . ...................

,

l .1a 11a 16. \lap111p� 111 шшн1 11 шн·1poiiкa fipa11,1ш1� 1ра

16.3.3. Команда iptahles
Для управления правилами брандмауэра используется команда iptaЫes. У
этой команды очень и очень много различных параметров. В этой книге не
будет полного руководства по iptaЫes, потому что есть документация (тап
iptaЬles), доступная каждому пользователю. Вместо переписывания руко­
водства другими словами мы остановимся на практическом применении
iptaЫes. Сначала рассмотрим часто используемые параметры (чтобы вы по­
нимали, что происходит), а затем настроим шлюз для небольшой организа­
ции.
Чтобы добавить правило в цепочку, нужно использовать параметр -А:
# iptaЫes -А
По умолчанию правило будет добавлено в таблицу filter. Если нужно указать
другую таблицу, то для этого используется параметр -t:
# iptaЬles -t -А
Параметр -Р позволяет задать действие по умолчанию:
# iptaЬles -Р INPUT DROP
# iptaЬles -Р FORWARD АССЕРТ
# iptaЬles -Р OUTPUT DROP
В таблице 16.1 указываются возможные действия, которые вы можете ис­
пользовать с iptaЫes.
Таблица 16.1. Возможные действия над пакетами
Действие

Описание

АССЕРТ

Принимает пакет и передает его дальше - в следующую цепочку

DROP

Уничтожает пакет, как будто бы его никогда не было
Уничтожает пакет, а отправителю пакета сообщается об этом
с помощью IСМР-сообщения. Параметр --reject-with позволяет уточнить тип IСМР-сообщения:

REJECT

icmp-host-unreachaЫe - узел недоступен;
icmp-net-unreachaЫe - сеть недоступна;
icmp-port-unreachaЫe - порт недоступен;

о

icmp-proto-unreachaЫe - протокол недоступен

l,l:\ill:X

11:1

щmмt·рах.llpai-1111,а

LOG

Протоколирует информацию о пакете в протокол. Полезно из
соображений отладки, когда вы настраиваете шлюз

RETURN

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

SNAT

Выполняет подмену IР-адреса источника (Source NAT, SNAT).
Данное действие используется в цепочках POSTROUTING и
OUTPUT таблицы nat

DNAT

Выполняет подмену IР-адреса получателя (Destination NAT,
DNAT). Поддерживается только в цепочке POSTROUTING
таблицы nat

МASQUERADE

Используется в таблице POSTROUTING таблицы nat. Чем-то
похоже на SNAT, но используется при работе с динамическими IР-адресами, когда возможна «потеря» интерфейса при
изменении IР-адреса

Прежде, чем мы начнем создавать наш собственный шлюз, нужно рассмо­
треть параметры, касающиеся фильтрации пакетов (табл. 16.2).
Таблица 16.2. Параметры, касающиеся фильтрации пакетов
Параметр

Описание

--source

Указывает источник пакета. Вы можете указывать, как доменное имя, так и IР-адрес или даже целую подсеть,
например, 192.168.5.0/255.255.255.О

--destination

Указывает получателя пакета. Аналогично, можно указывать, как доменное имя, так и IР-адрес

--protocol (-р)

Позволяет указать протокол. Вы можете использовать
идентификаторы, определенные в файле /etc/protocols

--source-port
(--sport)

Указывает порт отправителя. Опцию можно использовать
вместе с параметром -р

...

--destination-port
(--dport)

Указывает порт получателя. Можно использовать вместе
с параметром -р



............... ......... .. . ... -... - .............................................. .

l.1a11a 1(1. \lap111p� I1I1а11111I 11 IIж·IршI1.:а iipa111\1:t� ,ра

--state

Позволяет указать состояние пакета. Фильтр по состоянию возможен только при загрузке модуля state (-m state).
Возможны следующие состояния пакета: NEW (новое соединение), ESTABUSHED (установленное соединение),
RELATED (связанные с соединением пакеты), INVALID
(неопознанные пакеты)

--in-interface (-i)

Указывает входящий интерфейс

--out-interface (-о)

Указывает исходящий интерфейс

В таблице 16.2 указаны далеко не все параметры, но для организации соб­
ственного шлюза представленных параметров будет более чем достаточно.

16.3.4. Практический пример
Сейчас рассмотрим практический пример - настройку шлюза небольшой
сети с нуля на базе дистрибутива DeЬian. У нас есть следующие вводные
данные:
• Внешняя сеть - интерфейс ethO, реальный IР-адрес 88.99.88.99 (IР-адрес
приведен для примера).
• Внутренняя - интерфейс ethl, IР-адрес сети 192.168.1.0/24 (у вас, скорее
всего, будет другой адрес).
Простым «перебросом» пакетов мы не ограничимся, а постараемся решить
попутные задачи, а именно:
• Запретить доступ сотрудников к некоторым сайтам. Администрации
доступ к этим сайтам будет разрешен.
• Запретить ICQ для сотрудников, но не для администрации
• Запретить некоторые нежелательные приложения.
• Открыть доступ к порту 80 извне для доступа к будущему веб-сайту. Все,
что вам останется сделать - это установить nginx (или Apache) и ваш сайт
будет виден из Интернета.
• Открыть доступ к шлюзу извне для его администрирования по SSH.
• Открыть порты 25 и 11О, необходимые для работы будущего почтового
сервера.



... -. -· ........................................................................... ...

l,li\.L':\ 11а щннн•рах. llpai-.:111ю1

• Администратору (его IР-адрес 192.168.1.1 О) открываем все, что ему будет
нужно.
Создайте каталог /etc/firewall, в котором мы будем хранить все необходимое
для организации нашего шлюза. Сейчас создайте в ней два файла - admins.
txt и Ыack.txt. В первый нужно внести IР-адреса администрации (по одному
IР-адресу в одной строке) - им будут доступны все сайты. Это может быть
сотрудники IТ-отдела, директор, его зам и т.д. - в общем, все вышестоящее
начальство. В файл Ыack.txt нужно внести сайты, доступ к которым нужно
ограничить (тоже по одному сайту в одной строке).
# mkdir /etc/firewall
# touch /etc/firewall/admins.txc
# touch /etc/firewall/Ьlack.txt

После этого можно приступить, собственно, к настройке шлюза. Первым де­
лом нам нужно отключить Network Manager инастроить наши интерфейсы
статически. На сервере (шлюзе) Network Manageг не нужен, а сетевые интер­
фейсы можно легко настроить с помощью /etc/пetwork/interfaces.
Сначала введите команду:
# runlevel

Вы узнаете текущий уровень запуска:
# runlevel
N 2

Далее переходим в каталог /etc/rcX.d, где Х - это уровень запуска и удаляем
ссылку на netнюrk-manager. Можно также использовать команду:
# update-rc.d -f network-manager remove

Далее остановите Network Manager:
# /etc/init.d/network-manager stop

...........................



.. .. . . . . . . . . . . . . . . . . .. . .. . . . . . . .. . . .. . . . . . . ... .. . . ... . . . .
,,

l .1ава Н,. \Jap111p� II11а1111и 11 11:к1 po1i1,a iip:111 1,1а� 1ра

После этого отредактируйте файл /etc/network/interfaces и сконфигурируйте
сетевые интерфейсы (лист. 16.2).
Листинг 16.2. Файл /etc/network/interfaces
# Локальный интерфейс lo
auto lo
iface lo inet loopback
# Внешняя сеть
auto eth0
iface eth0 inet static
address 88.99.88.99
netmask 255.255.255.0
network 88.99.88.99
dns-nameservers 8.8.8.8
# Внутренняя сеть
auto ethl
iface ethl inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

Перезапустим сеть
# service networking restart

Теперь создайте каталог /etc/firewall и поместите туда файл firewall.sh, кото­
рый будет содержать команды, превращающий нащ обычный компьютер в
шлюз:
# touch /etc/firewall/firewall.sh
# chmod +х /etc/firewall/firewall.sh
# nano /etc/firewall/firewall.sh

Код файла firewall.sh приведен в листинге 16.3.
Листинг 16.3. Файл firewall.sh
#!/bin/bash
# Определяем некоторые переменные, чтобы облегчить редактирование
# конфигурации в будущем
# Внешний IР-адрес и внешний интерфейс
WAN IPl=BB.99.88.99
WAN IFACEl=ethO



·------·---·--·-·-·-··-·-----·------·----------------····-------·----------······--tllt

1 l'\I \. ••а ••111•\Jepa,. llpa•••••• •a

# Внутренний адрес сервера и внутренний интерфейс
LAN IP=l92.168.l.l
LAN IFACE=ethl
# Внутренняя сеть
LOCAL NET=l92.168.l.0/24
# loopback
LO IFACE=lo
LO IP=l27.0.0.l
# Путь к iptaЫes
ip=/sbin/iptaЫes
# Черный список
Ьlacklist=( $(cat "/etc/firewall/Ыack.txt")
admins=( $(cat "/etc/firewall/admins.txt") )
# Очищаем
$ip -F -t
$ip -F -t
$ip -F -t
$ip -F

все таблицы iptaЫes
filter
nat
mangle

# Правила по умолчанию: запрещаем все, что явно не разрешено
$ip -Р INPUT DROP
$ip -Р OUTPUT DROP
$ip -Р FORWARD DROP
# Превращаем компьютер в шлюз, на всякий случай, если мы забыли сделать
# это раньше
echo 1 > /proc/sys/net/ipv4/ip forward
# Включаем NAT, чтобы локальные узлы могли получать доступ к Интернету
$ip -t nat -А POSTROUTING -о $WAN IFACEl -s $LOCAL NET
-d
$LOCAL NET -j SNAT --to-source $WAN IPl
# Отбрасываем INVALID-пaкeты
$ip -А INPUT
-m state --state INVALID -j DROP
$ip -А FORWARD -m state --state INVALID -j DROP
# Разрешаем трафик через loopback
$ip -А INPUT -р all -i $LO IFACE -j АССЕРТ
$1р -А OUTPUT -р all -о $10 IFACE -j АССЕРТ
# Разрешаем трафик через внутренний адаптер
# Между сервером (шлюзом) и локальной сетью разрешаем все



4111:t----....... -...... -.. ---... -. -.... ---. -. ----......... -·--· -.-. -. -.... -. ---. -.. -·..

l.1a11a 16. i\lapшp� 1111а111ш 11 11ж·1р11111,а iip:1 11 1,1а� 1ра

$ip -А INPUT -р all -i $LAN IFACE -s $LOCAL_NET --match state --state
NEW,ESTABL ISHED -j АССЕРТ
# Разрешаем исход ящие новые и уже установленные сое динения
# в внутреннюю сеть с адаптера локальной сети
$ip -А OUTPUT -р all -о $LAN_IFACE -d $LOCAL_NET --match state --state
NEW,ESTAВLISHED -j АССЕРТ
# Разрешаем новые и уже установленные соединения извне (с внешней сети)
# к портам 80 (веб-сервер) и 22 (ssh):
$ip -А INPUT -р tcp -i $WAN_IFACEl -m multiport --dports
80,22,25,110 --match state --state NEW,ESTABLISHED -j АССЕРТ
$ip -А O UTPUT -р tcp -о $WAN_IFACE1 -m multiport --sports
80,22,25,110 --match state --state ESTABLISHED,RELATED -j АССЕРТ
# Разрешаем выход с сервера во внешнкю сеть, но только на определенные порты
# Разрешаем порты 80 (НТТР), 443 ( SSL) и 53 (DNS)
$ip -А INPUT -i $WAN_IFACE1 -р tcp -m multiport --sports 80,53,443 -j АССЕРТ
$ip -А ОUТРUТ -о $WAN_IFACE1 -р tcp -m multiport --dports 80,53,443 -j АССЕРТ
$ip -А INPUT -i $WAN_IFACE1 -р udp -m multiport --sports 53 -j АССЕРТ
$ip -А OUTPUT -о $WAN_IFACE1 -р udp -m multiport --dports 53 -j АССЕРТ
# Открываем админу (192.168.1.10) доступ ко всему, что будет нужно
# Просмотрите список портов и откройте то, что вам будет нужно
# tcp
$ip -А FORWARD -р tcp -s 192.168.1.10 ! -d $LOCAL_NET -m multiport
--dports 80,53,443,22,25,110,5190 -j АССЕРТ
$ip -А FORWARD -р tcp -d 192 .168.1.10 ! -s $LOCAL_NET -m multiport
--sports 80,53,443,22,25,1 10,5190 -j АССЕРТ
# udp
$ip -А FORWARD -р udp -s 192.168.1.10
53 -j АССЕРТ
$ip -А FORWARD -р udp -d 192.168.1.10
53 -j АССЕРТ

-d $LOCAL NET -m multiport --dports
-s $LOCAL NET -m multiport --sports

# Резрешаем ICQ только администраторам
i=0
for i in "${admins[@] }"
do
$ip - А FORWARD -р tcp -d $i --sport 5190 -j АССЕРТ
$ip -А FORWARD -р tcp -s $i --dport 5190 -j АССЕРТ
done
# Резрешаем избранным (список admins) доступ к сайтам из черного списка
j=0
for j in "${Ыacklist[@] }"

, _ ---. -.... -... -. -. -.. -. -. -. -. -. --.-. -. -... -......-...... -... -.... -... -. -. -...... 811

1,1-.;t \. 11.1 11рю1с1>ах.llpai-111ка
do
i=0
for i in "${adrnins[@]}"
do
$ip -А FORWARD -d $i -s $j -j АССЕРТ
done
done
# Всем остальным запрещаем доступ к сайтам из списка Ьlacklist
i=0
for i in "${Ьlacklist[@]}"
do
$ip -А FORWARD -s $i -j DROP
done
# Разрешаем транзит
$ip -А FORWARD -р tcp
80,53,443 -j АССЕРТ
$ip -А FORWARD -р tcp
80,53,443 -j АТЕРТ
$ip -А FORWARD -р udp
53 -j АССЕРТ
$ip -А FORWARD -р udp
53 -j АССЕРТ

некоторых пакетов (80, 443 и 53)
-s $LOCAL NET
-d $LOCAL NET -m multiport --dports
-d $LOCAL NET

-s $LOCAL NET -m multiport --sports

-s $LOCAL NET

-d $LOCAL NET -m multiport --dports

-d $LOCAL_NET

-s $LOCAL NET -m multiport --sports

После этого нужно обеспечить автоматический запуск нашего сценария /etc/
firewall/firewall .sh.

16.4. Настройка брандмауэра ufw
Традиционно в качестве брандмауэра (фильтра пакетов) в Ubuntu использу­
ется iptaЫes, но поскольку Ubuntu позиционируется как простой дистрибу­
тив, то и оболочка для iptaЫes была разработана соответствующая - UTF
(Uncornplicated Firewall) - несложный файрвол.

16.4.1. Проверяем состояние брандмауэра
Первым делом нужно убедиться, что пакет ufw вообще установлен или уста­
новить его, если это не так:
sudo apt install ufw

Как показано на следующей иллюстрации, уже установлена последняя вер­
сия пакета ufw.



a:t-·····........................... ······ ........................................... .


r�1ава 16. Маршрунващ1я 11 11ас1ройка бращJ.ма} ➔ра

Рис. 16.2. Установлена самая новая версия ufw

Теперь посмотрим состояние брандмауэра:
# ufw status verbose

По умолчанию фильтр пакетов выключен, поэтому вы получите сообщение
Состояние: неактивен

Не нужно спешить включать файрвол: сначала его нужно настроить. Ведь
если порт 22 окажется по умолчанию недоступен, то вы потеряете доступ
к своему серверу, если администрируете его удаленно. Об этом нужно пом­
нить!

16.4.2. Базовая настройка
По умолчанию брандмауэр запрещает все входящие соединения и разреша­
ет все исходящие. Такая политика идеальная с точки зрения безопасности
(дальше вы поймете почему) - ведь если кто-то (и вы в том числе) захочет к
нему подключиться, что у него это не получится. В то же время приложения
на сервере смогут создавать исходящие соединения.
Рассмотрим две команды:
'-·-·----·-·-·-··-···-·-············-·-···-····-----······---········-·---····-··-818

1.1'\1\.11:1 111111,1t·p:t\. llpa1,1 111,a

ufw default deny incoming
ufw default allow outgoing

Данные два правила как раз и задают политику по умолчанию - запрещают­
ся все входящие соединения и разрешаются все исходящие.
Итак, все входящие соединения запрещены. Чтобы к серверу можно было
«достучаться» по определенному порту, его нужно сначала открыть. UFW
хорош тем, что вам даже не нужно помнить номер порта - нужно знать толь­
ко название сервиса. Например, вот как можно разрешить подключение по
SSH:
ufw allow ssh

При этом UFW сам создаст правило для порта 22 - именно этот порт исполь­
зуется для SSH. Брандмауэр знает порты и имена всех распространенных
служб (http, ssh, ftp, sftp и т.д.).
Однако если вы перенастроили ssh на нестандартный порт из соображений
той же безопасности, нужно явно указать номер порта:
ufw allow 3333

После разрешения ssh (это главное, чтобы сейчас файрвол нам не разорвал
соединение) можно включить ufw командой:
ufw еnаЫе

Вы увидите сообщение о том, что межсетевой экран включен и будет за­
пускаться при загрузке системы.
Посмотрите на следующий скриншот (рис. 16.3).
Посмотрим, что произошло. Сначала мы разрешили ssh, на что получили
ответ, что правила обновлены:
Правила обновлены
Правила обновлены (vб)

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

411:8-----. ·-------···---.... -..-....... ---· ...·--. -·-..........··-........··-.......,

1:,1а�н1 16. Маршру11ващн1

11

11ac1poii1,a бра11.tш1� )ра

Рис. 16.3. Процесс настройки ufiv

На этом базовая настройка выполнена - ssh успешно работает, и мы можем
приступить к дальнейшей настройке фильтра пакетов.

16.4.3. Создаем правила для других приложений
Теперь нужно разрешить работу других приложений. Как правило, нужно
разрешить службу http (веб-сервер),ftр и постараться не забыть о https (что
очень важно в последнее время):
ufw allow http
ufw allow https
ufw allow ftp

Сделать то же самое можно было бы и по номерам портов:
ufw allow 80
ufw allow 443
ufw allow 21

-

При желании можно разрешить целый диапазон портов, указав при этом
транспортный протокол (UDP или ТСР):

•..

. ... . .. . . . . . . .... . .... . . . . .. . -............................................... -..

1,1'\( :\ ,,а 11p11\1epa,. llpa1, 1111,a

sudo ufw allow 2000:2200/tcp
sudo ufw allow 4000:4400/udp

16.4.4. Разрешаем IР-адреса
Ufw позволяет разрешить определенному IР-адресу доступ ко всем портам
сервера, например:
ufw allow from 46.229.220.16

Если нужно разрешить доступ конкретному IР-адресу только к определенно­
му порту, то делается это так:
ufw allow from 46.229.220.16 to any port 22

Здесь мы разрешаем не все подключения к ssh, а только подключения с IР­
адреса 46.229 .220.16.
Разрешить доступ целого диапазона IР-адресов (например, когда у админи­
стратора динамический IP), можно так:
ufw allow from 123.45.67.89/24 to any port 22

16.4.5. Запрещаем IР-адреса и службы
Запретить доступ с определенного IР-адреса можно аналогично:
ufw deny from 123.45.67.89

При желании можно запретить все подключения к определенной службе:
ufw deny ftp

16.4.6. Удаление/сброс правил
Сбросить все правила можно командой:

41111-----------. ----------. ----------· ----------. -·-------------------. --------·-·----.

Гтша 16. 1\lаршру,юащш 11 ш1crpoiiкa бра111{1ш1учи1
ufw reset

Но убедитесь, что на момент ввода этой команды вы отключили файрвол,
иначе вы потеряете доступ по ssh.
Удалить конкретное правило можно по номеру. Сначала введите следующую
команду, чтобы узнать номер правила:
ufw status numbered

Рис. 16.4. Список правил

16.4.7. Отключение файрвола
Отключить ufw можно командой ufiv disaЬ/e. Отключение может понадо­
биться, если какие-то из правил работают неправильно и нужно временно
отключить файрвол, чтобы разрешить работу тех или иных сервисов
Если вы ранее использовали iptaЫes, то наверняка заметили, что синтак­
сис ufw гораздо проще. Если же до этого вам не приходилось настраивать
брандмауэр, то ufw - оптимальное решение, с которым не составит труда
разобраться даже начинающему администратору.



··················································································CD

Колисниченко Д. Н.

LINUX

НА ПРИМЕРАХ

Практика, практика и только практика

Группа подготовки издания:
Зав. редакцией компьютерной литературы: М В. Финков
Редактор: Е. В. Финков
Корректор:А. В.Громова

ООО "Издательство Наука и Техника"
ОГРН 1217800116247, ИНН 7�11763020, КПП 781101001
192029, г. Санкт-Петербург, пр. Обуховской обороны, д. 107, лит. Б, пом. 1-Н
Подписано в печать 18.02.2022. Формат 70х 100 1/16.
Бумага газетная. Печать офсетная. Объем 20 п.л.
Тираж 1750. Заказ № 1034/22.


Отпечатщо в АО •Можайский полиграфическиН ко�1бн11ан
143200, Россия, г. Можайск, ул. Мира, 93.
,v,v\\•.oaompk.ru, тел.: (49638) 20-685