Uploaded by siriwssx

Весь Linux Для тех, кто хочет стать профессионалом

advertisement
Матвеев М. Д.
ВЕСЬ
Для тех, кто хочет стать профессионалом
"Издательство Наука и Техника"
Санкт-Петербург
УДК 004.42
ББК 32.973
ISBN 978-5-907592-43-8
Матвеев М. Д.
ВЕСЬ LINUX. Для ТЕХ, КТО ХОЧЕТ СГАТЬ ПРОФЕССИОНАЛОМ - СПБ.:
ИЗДАТЕЛЬСТВО НАУКА И ТЕХНИКА, 2024. - 704 С., ИЛ.
СЕРИЯ ''Для ТЕХ, кто ХОЧЕТ СТАТЬ ПРОФЕССИОНАЛОМ"
Эта книга содержит в себе как теоретические, так и практические материалы по
Linux, тем самым вы сразу сможете использовать полученную теорию на практике.
Диапазон рассматриваемых тем достаточно широк:
- Установка системы, вход и завершение работы, настройка системы, основы ко­
мандной строки;
- Настройка Интернета, установка программного обеспечения, обзор популярных
программ для Linux, как запускать Windоws-приложения в Linux;
- Локальное администрирование в Linux, управление файловыми системами, что
такое и для чего нужно Ядро Linix, системные процессы и основные группы поль­
зователей;
- Администрирование Linux-cepвepa, настройка серверов DNS, SSH, DHCP, FTP,
интеграция сервера в Windows-ceть, маршрутизация и настройка брандмауэра, по­
чему так важно резервное копирование, выбор и установка панели управления, как
обеспечить безопасность сервера, защита веб-сервера от сетевых атак. В дополни­
тельных приложениях будут рассмотрены командный интерпретатор bash и сетевая
файловая система NFS.
Важно, что одним из дистрибутивов (наряду с Ubuntu), на котором показывается
работа в Linux, выбран российский Astra Linux, сертифицированный и рекомен­
дованный к использованию на территории России.
Книга будет полезна для любого уровня читателей - как для тех, кто только заин­
тересовался Linux, так и для тех, кто хочет расширить свои навыки использования
этой операционной системы. Поэтому каждый найдет здесь для себя что-то полез­
ное и востребованное!
Все права защищены. Никаюu часть данной книги не может быть восnроюве:�.ена в nкоА бы то ни было форме без пис1оменноrо раэреwенн.с аладельцев
авторск11х прав.
Иuате.nьство не несет ответственности за 801.\IОЖНWЙ ущерб, причиненный в хще нсполl,)()UНКJI: материалов данной Юlиnt, а таюrе за доступиость
матс:рна!юв. ссы.,1ки на кurорые вы можете найти в лой книге.На моJ.Сект полrотовки книги к изданию асе ссылки на интернет-ресурсы были деАсnую­
щ11мн. Информацн.11. содержашuся в данноА книге. получена нз источников, рассматриааемых н:шателl>СТВОМ как надежные. Тем не менее, име.11 в виду
возможные человеческие 11,111 техшtческие ошибки. издательство не может гарантировать абсолютную точность к полноту nркюдкмых саеденкА к не
несет ответственносп, за возможные ош11бки. сuзанные с 11спош,эоааиием книги.
Контактные телефоны издательства:
(812)412 702§
Официальный сайт: www.nit.com.ru
© Матвеев М. Д.
© Издательство Наука и Техника (оригинал-макет)
https://t.me/it_boooks/2
Содержание
,,1"""""""""""""""""'"""""""""""'"'""""""""""'"'"''"'""""''""'"'1111,11,11111111111,111111111н,11>1111111,,,1,ш,1111,1111111111111111111111111111111111111111111111111111111i,111111111111111""''"""""'''"""'""""""'""""""""""""'''""''""""'""""'"''"""""""""''""'""lli
ВА 1. Выбор дистрибутива.............................................23 1
'""'""'""""'""""""""""""""""""""""'"'""""'""'"'""""'""""""""""•111111ll1tlllllllOlllll!lllll!ltllllHllll!lllll!l8llltllllllllllHШl!l!lll!llltlllll"lllll!llltllltlt"l!l!l!lll!l!llltlllllllltlllllllШllllllllll!lllltlll!llllllllll!lll!lllll!lll!lllllllllll!lllllll!lll<l!lllllllllllllll""l!lllllllllllllllrf
1.1. МНОГООБРАЗИЕ ВЫБОРА ........................................................................................... 24
1.2. ЧТО ТАКОЕ ДИСТРИБУТИВ ....................................................................................... 25
1.3. ЧТО ВЫБРАТЬ? ................................................................................................................. 27
"llll!IIUIIIOltlll!IIIIIIIIIIIIIIOlllllllllll!lll!lllllllllllilllШl!lll!IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOlll!IOIIIIIIIIIIIIIIIIIIIIIIIIIIOlllll"IIIIШIIIOIOIOIIIOllltllllllllllllllllllllOIIIIIIIIIIIIIHШIIIIIIIIIЩlllllllll"l!IOl!l!l!IIIIIIIIIIOIOIШIIIIIIIIIIIIIOIIIOl!IOIIIIIIIIIIIIIIIIIIOIOIOIOIШ"'"'"""""""""'"""""""""\I:
ГЛАВА 2. Установка системы.....................................................29 j
2.1. ЗАГРУЗКА С ИНСТАЛЛЯЦИОННОГО ДИСКА ..................................................... 30
2.2. ПРИНЦИП УСТАНОВКИ LINUX..........•...................................................................... 32
2.3. ЗАГРУЗКА С ИНСТАЛЛЯЦИОННОГО НОСИТЕЛЯ ........................................... 32
2.4. НАЧАЛО УСТАНОВКИ •..........••....••............................•........................................•......... 34
2.5. РАЗМЕТКА ДИСКА ...................••....•..........•..................•............•......•.............................. 36
2.5.1. Общие сведения о разметке диска..................................
... 36
2.5.2. Введение в точку монтирования....................................................... .. 37
2.5.3. Раздел подкачки .......................................... ......................................... 39
2.5.4. Как правильно разбивать жесткий диск? ........................................... 40
2.5.5. Ручная разметка в UЬuпtu .................................................................... 40
2.5.6. Ручная разметка в Astra Linux ............................................................. 44
•
2.6. УСТАНОВКА ПАРОЛЯ АДМИНИСТРАТОРА ......................................................... 50
··············································--·----·---········--·····-····-····tlll
lk1:1, [,i11ux
2.7. ПАРАМЕТРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ •.••.......••••...••••........•........•••.... 52
2.8. УСТАНОВКА ЗАГРУЗЧИКА .......••....•.•........••••......•...................••...••............................ 54
ГЛАВА 3. Вход в систему........................................................55
"'"""""""'""""'"""""·""""'"""""""""""''"""""""'"""""""""""""""'""""""""""""'""""""""""""""""'""""""""""""'""""""""""""""'""""""""""""'""""""""""""""""'"'"""""""""""'"""'"""""""""'""""""""""'
3.1. ВХОД В КОНСОЛЬ И ПЕРЕКЛЮЧЕНИЕ МЕЖДУ РЕЖИМАМИ •................••• 56
3.2. ОСНОВНЫЕ ЭЛЕМЕНТЫ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА .......................... 60
3.2.1. Интерфейс UЪuntu ................................................................................ 60
3.2.2. Интерфейс Astra Linux ......................................................................... 69
3.3. АВТОМАТИЧЕСКИЙ ВХОД В СИСТЕМУ ............................................................... 75
3.4. ЗАВЕРШЕНИЕ РАБОТЫ ИЗ КОНСОЛИ ................................................................... 76
ГЛАВА 4. Сразу после установки..........................................
4.1. ПРОВЕРЯЕМ И УСТАНАВЛИВАЕМ ОБНОВЛЕНИЯ .......................................... 80
4.2. НАСТРОЙКЕ LIVEPATCH (ТОЛЬКО ДЛЯ UBUNTU) ............................................ 82
4.3. ОТКЛЮЧАЕМ УВЕДОМЛЕНИЯ ОБ ОШИБКАХ.................................................. 82
4.4. НАСТРАИВАЕМ ПОЧТОВЫЙ КЛИЕНТ ................................................................... 83
4.5. УСТАНОВИТЕ ВАШ ЛЮБИМЫЙ БРАУЗЕР ........................................................... 84
4.6. УСТАНОВКА ПРОИГРЫВАТЕЛЯ VLC...................................................................... 89
4.7. УСТАНОВКА КОДЕКОВ................................................................................................. 89
4.8. ВКЛЮЧЕНИЕ НОЧНОГО РЕЖИМА ......................................................................... 90
4.9. УСТАНОВКА WINE ДЛЯ ЗАПУСКА WlNDОWS-ПРИЛОЖЕНИЙ................... 91
•
4.10. УСТАНОВКА ДОПОЛНИТЕЛЬНЫХ АРХИВАТОРОВ ....................................... 91
1111----------------------------------------------------------------------------------·
4.11. ПОПРОБУЙТЕ ДРУГИЕ ГРАФИЧЕСКИЕ ОКРУЖЕНИЯ ................................. 91
4.12. УСТАНОВИТЕ ПОЛЕЗНЫЕ УТИЛИТЫ ................................................................. 93
4.13. ТОНКАЯ НАСТРОЙКА GNOME. УСТАНОВКА ТЕМЫ ОФОРМЛЕНИЯ В
СТИЛЕ macOS ........................................................................................................•. 93
'"'""'""""""""""'"""""""""""""'"""'""""""''""'""""""""'"'""""'""'"""""""""""""""'"""""""'"""'""""""""""""""'"""""""''""""""""""'"""""'"""""'""""'""""""'""""'"'"""""'"""""''"""""""''""''""""""""""""""""'
1 ГЛАВА�· О����андной строки ...................................99
5.1. ВВОД КОМАНД ................................................................................................................ 100
5.2. АВТОДОПОЛНЕНИЕ КОМАНДНОЙ СТРОКИ ........................................................ 102
5.3. ПЕРЕНАПРАВЛЕНИЕ ВВОДА/ВЫВОД А ................................................................ 103
5.4. СПРАВОЧНАЯ СИСТЕМА MAN ..........,..................................................................... 104
5.5. КОМАНДЫ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ ............................ 105
5.5.1. Команды для работы с файлами ........................................................ 105
5.5.2. Команды для работы с каталогами .................................................... 108
5.6. КОМАНДЫ СИСТЕМНОГО АДМИНИСТРАТОРА ............................................... 110
5.6.1. Команды для работы с устройствами и драйверами ...... ................. 111
5.6.2. Команды настройки сетевых интерфейсов ................ ........,............ 112
5.6.3. Программы тестирования и настройки жесткого диска ................. 113
5.7. КОМАНДЫ ОБРАБОТКИ ТЕКСТА ......................................................................,......114
5.7.1. Редактор sed......................................... .................... .......................... 114
5.7.2. Подсчет количества слов/символов....................... .
·················· .. 115
5.7.3. Сравнение файлов ........ ...................... ............................................... 116
•
5.7.4. Разбивка текста на колонки .....
............................................... 117
5.l.5. Команды _dijfи diffЗ ...................
········································ .... 118
5.7.6. Команда grep ...............
······································· ..... 120
5.7.7. Замена символов табуляции пробелами .......................•........... ....... 120
5.7.8. Форматирование текста......
···································· ......... 120
·---··-··---··-··-······-·················································-··-···---
lkt:I, (,illll\
5.7. 9. Команды постраничного вывода more и less ................................... 121
5.7.1 О. Команды head и tail: вывод первых и последних строк файла .... 122
5.7.11. Команда split ...................................................................................... 122
5.7.12. Команда unexpand ............................................................................ 123
[" '" " '" " "' " " " " " " '" '" " " " " "' " "' " " "' " " " " " '" " '" " " " " " " " '" " '" "'"' "' "' " " " " " '" " '" '" " "' " " " '" " " " " " " " " " " " " "'" "' " " " " " " " "' " ]
ГЛАВА 6. Локальная сеть.................................................... 125
111,н11nш""'"'""''"'""'""""'""""''"""'"''""""'"'""""'"'""'ll"Ш"""'""''""''""'""жшn1111нщ1111111111111111n1111w•w111111111111ш1т111111111111ш111ш111111111ш11111111н111111111м1111111ш111ш11111111111111ш1111111111w1111111w,..,w11н111111111м111w1н1нw11111мн11111111н111N
6.1. ФИЗИЧЕСКАЯ НАСТР ОЙКА СЕТИ ETHERNET................................................. 126
6.2. НАСТР ОЙКА СЕТИ С ПОМОЩЬЮ ГРАФИЧЕСКОГО КОНФИГУРАТОРА ...128
6.3. КОМАНДА IFCONFIG ................................................................................................... 135
6.4. ИМЕНА СЕТЕВЫХ ИНТЕРФЕЙСОВ В LINUX. .................................................... 139
6.5. ОБЩИЕ КОНФИГУРАЦИОННЫЕ ФАЙЛЫ .......................................................... 141
Файл /etc/hosts ...................................................................................... 142
Файлы letc/hosts.allow и letc/hosts.deny ............................................. 142
Файл /etc/host.conf............................................................................... 143
Файл /etc/hostname .............................................................................. 143
Файл /etc/motd ...................................................................................... 143
Файл letc/resolv.conf ............................................................................ 144
Файл /etc/services ................................................................................. 145
Файл /etc/protocols ............................................................................... 145
Файл /etc/networklinterfaces: конфигурация сети в Astra Linux ...... 145
Каталог /etc/NetworkManager/system-connections: конфигурация сети
в UЬuntu........................ ........................................................................... 146
t111,,1,.............,..,,..,,,.,,,.,,,,,,,.,,,.,,,,,,,.,.,,,,,.,,,,.,111,11111111111110IIIOlllll!ltltl!IШIIIIIIIIIIIIIOIOIOl<lllll""""""""""""'"""""''"'""""""""'""""""""""""""""""""""""""''""""''"wн11н11nш111111н11nн1111нш1111111t1tHllltHHШIIMIIIШIШIШIIIШIIIINIIMШIIIШl'J;
АВА 7. Беспроводная Wi-Fi -сеть .................................. 149 1
11,11111t1"llllllllllllllltltlll!IHillllllllllllOllltl!l""""""""""'"""'""""'""""""'l!lllllltlllllll�ШllllltllllltlltlHlltllllllllllll!ltlllllllltl!l!lll!l!llllllllllllltlШHIHllll"!lllllflШIIIIIIHHllllllll!IШlll!IШl�lllllllltl!lll!ltlIOIIIIIIIIH\ltltlM!IIIIHIIIIJlt1!1Шlllt"HIIМШIMIЖIIШf
7.1. НАСТРОЙКА БЕСПР ОВОДНОЙ СЕТИ С ПОМОЩЬЮ ГРАФИЧЕСКОГО
ИНТЕР ФЕЙСА ....................................................................................................... 151
•
.....................................................................................
7.2. НАСТРОЙК А БЕСПРОВОДНОГО СОЕДИНЕНИЯ В КОМ АНДНОЙ СТРОКЕ
(WЕР-ШИФРОВАНИЕ) ........................................................................................ 156
7.3. СОЕДИНЕНИЕ С ТОЧКОЙ ДОСТ УП А ПО WРА-ШИФРОВАНИЮ .............. 158
ГЛАВА 8. VРN-соединение...................................................161
(""""'""'""'""""""'""'"""""""""'""""'"""'""'""""""'"""""""""""""""'""""""""""""""""'""""'
Olll!ltlltWllllllll!l!l!l!ltl!l!IIOHIIIIHtlllH!lll"!IIIIIOHH!llllllltltl!l!l!l!IШl!lllllllllltltl!lll.lilll!l!l!HIIIIOlllltJlllla!IIIIIШlll!IJIIIIHШЖIIIHtl!l!ltlil!lillllllllllllllllllllllll!l!IIIWlllltl!l!lll!llltl+l'l!IIIIIIIШIIOl!IOlll+l!l"ltllllllllOIOIOllltl!l!lllll!llllllllllllll!IIIOl�ltl!l!lllllllllll"IIIOltlOIOlllll!l!l"IHI
8.1. ЗАЧЕМ НУЖНА VPN ...................................................................................................... 162
8.2. НАСТРОЙК А VРN-ПОДКЛЮЧЕНИЯ В UBUNTU ................................................ 163
8.3. НАСТРОЙК А VРN-ПОДКЛЮЧЕНИЯ В ASTRA LINUX ...................................... 165
ГЛАВА 9. DSL-соединение...................................................1
9.1. НЕСКОЛЬКО СЛОВ О DSL-ДOCTYПE ................................................................... 170
9.2. НАСТРОЙК А DSLIPPPOE В UBUNTU 23.10 ............................................................ 171
9.3. ПРОГРАММ А PPPOECONF: НАСТРОЙ К А DSL-СОЕД ИНЕНИЯ НА
СЕРВЕРЕ БЕЗ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА .................................... 176
9.4. ПРОГРАММ А PPPOE-SETUP....................................................................................... 179
10.1. СПОСОБЫ УСТАНОВКИ ПРОГРАММ ................................................................. 186
10.2. Т ИПЫ П АКЕТОВ И ИХ СОДЕРЖИМОЕ .............................................................. 187
10.3. ИСТОЧНИК И П АКЕТОВ............................................................................................ 188
10.4. МЕНЕДЖЕРЫ П АКЕТОВ .............................:............................................................ 189
10.5. ГРАФИЧЕСКИЕ СРЕДСТВА УСТАНОВКИ ПРОГРАММ ............................... 195
10.6. СНАПЫ ............................................................................................................................. 199
·-----------------------------------------------------------------------------------
Всс1, Li1111x
10.7. ОШИБКА ПРИ ВЫПОЛНЕНИИ АРТ: UNABLE ТО ACQUIRE ТНЕ DPKG
LOCK IVARILIBIDPKGILOCK ...•••........••.............•.•••......••••...••••.......••.................. 203
10.8. НЕВОЗМОЖНО НАЙТИ ОПРЕДЕЛЕННЫЙ ПАКЕТ••.....••.....••••.......•••••.•....... 205
'""""'""""'""""""""""""""'""'"""""-"""'"""""'''"""""""""""'"'"""''""'"""""'"""'"'""""""'"""""'"""""""'""""'""'""""""'""""·'""""'"""'"'"""""""""""'"""'""""""""""-'"'""""""'""'"'""""""""""'"""''"'"""
ГЛАВА 11. Популярные программы...................................207
--·- ---··--·---·--··------,----------·----------..,
11.1. ОФИСНЫЕ ПАКЕТЫ .................................................................................................. 208
11.2. ГРАФИЧЕСКИЕ ТЕКСТОВЫЕ РЕДАКТОРЫ ........................•........................•••• 209
11.3. КОНСОЛЬНЫЕ ТЕКСТОВЫЕ РЕДАКТОРЫ .................................................•••••.211
11.4. ПРОГРАММЫ ДЛЯ РАБОТЫ С ИНТЕРНЕТОМ ...........................................••... 216
11.5. LINUX-AHAЛOГИ WINDOWS-ПPOГPAMM ..............................•.......................... 218
ГЛАВА 12. Запуск Windоws-приложений в Linux.............
12.1. УСТАНОВКА ИЗ ОФИЦИАЛЬНОГО РЕПОЗИТАРИЯ ................•....•.•••••........ 231
12.2. НАСТРОЙКА ПОСЛЕ УСТАНОВКИ............••••.••••.......•..•••.............•••.........••..••••.•• 232
12.3. УСТАНОВКА И ЗАПУСК WINDOWS-ПPOГPAMMЫ..........................•.....••..... 233
12.4. СПИСОК ИГР И ДРУГИХ ПРИЛОЖЕНИЙ, РАБОТАЮЩИХ ЧЕРЕЗ WINE •.236
12.5. ИСПОЛЬЗОВАНИЕ ОТДЕЛЬНЫХ ПРЕФИКСОВ.......................................•••.... 237
13.1. КАКИЕ ФАЙЛОВЫЕ СИСТЕМЫ ПОДДЕРЖИВАЕТ LINUX........•................ 240
...
13.2. КАКУЮ ФАЙЛОВУЮ СИСТЕМУ ВЫБРАТЬ? ...•.•........•.••....•••.......•••••.....•••....... 242
•
13.3. ЧТО НУЖНО ЗНАТЬ О ФАЙЛОВОЙ СИСТЕМЕ LINUX ..•••.......•••••.....•••....... 243
····-----··-----------------------------------------····--···-··--·-·--···-------·
Со 1ерж:11111t'
13.3.1. Имена файлов и каталогов ... ........................................................... 243
13.3.2. Файлы устройств .............................................................................. 244
13.3.3. Корневая файловая система и основные подкаталоги первого
уровня ............................................................................................................ 244
13.4. ссылки .......................................................................................................................... 247
13.5. ПРАВА ДОСТУПА ......................................................................................................... 247
13.5.1. Общие положения............................................................................. 247
13.5.2. Смена владельца файла .................................................................... 249
13.5.3. Определение прав доступа .............................................................. 249
13.5.4. Специальные права доступа ............................................................ 252
13.6. АТРИБУТЫ ФАЙЛА ..................................................................................................... 252
13.7. ПОИСК ФАЙЛОВ .......................................................................................................... 254
13.8. МОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ.......................................................... 257
13.8.1. Монтируем файловые системы вручную ....................................... 257
13.8.2. Имена устройств ............................................................................... 259
13.8.3. Монтируем файловые системы при загрузке................................. 262
13.8.4. Автоматическщ монтирование файловых систем ......................... 264
13.9. РАБОТА С ЖУРНАЛОМ ............................................................................................. 264
13.10. ПРЕИМУЩЕСТВА ФАЙЛОВОЙ СИСТЕМЫ ЕХТ4 ........................................ 265
13.11. СПЕЦИАЛЬНЫЕ ОПЕРАЦИИ С ФАЙЛОВОЙ СИСТЕМОЙ ....................... 266
13.11.1. Монтирование NТFS-разделов ...................................................... 266
13.11.2. Создание файла подкачки .............................................................. 267
13.11.3. Файлы с файловой системой.......................................................... 268
1.3.11.4. Создание и монтирование !SО-образов ........,............................... 269
13.12. ФАЙЛЫ КОНФИГУРАЦИИ LINUX....................................................................... 270
•
13.12.1. Содержимое каталога /etc .............................................................. 270
·----------------------------------------·----------------·------------·--·------·--
lkt:1,l,i1шx
13.12.2. Конфигурационные файлы ............................................................ 270
13.12.3. Подкаталоги с конфигурационными файлами ......
........ 279
13.13. ПСЕВДОФАЙЛОВЫЕ СИСТЕМЫ ........................................................................ 286
13.13.1. Псевдофайловая система sysfs ....................................................... 287
13.13.2. Псевдофайловая системарrос ....................................................... 289
14. Управление хранилищем..................................293
14.1. ПОДКЛЮЧЕНИЕ НОВОГО ЖЕСТКОГО ДИСКА И ЕГО РАЗМЕТКА ....... 294
14.2. МЕНЕДЖЕР ЛОГИЧЕСКИХ ТОМОВ ................................................................... 302
14.2.1. Введение в LVM................................................................................ 302
14.2.2. Уровни абстракции LVМ.................................................................. 303
14.2.3. Немного практики................... ......................................................... 304
14.3. РАСШИРЕНИЕ LVM-ПPOCTPAHCTBA ................................................................. 307
15. Управление загрузкой ОС .................................
15.1. ЗАГРУЗЧИКИ LINUX ................................................................................................... 312
15.2. ЗАГРУЗЧИК GRUB2 ...................................................................................................... 313
15.2.1. Конфигурационные файлы ............................................................. 313
15.2.2. Выбор метки по умолчанию ............................................................ 320
15.2.3. Загрузка Windows.............................................................................. 320
15.2.4. Пароль загрузчика GRUB2............................................................... 321
15.2.5. Установка загрузчика ........................................................................ 323
15.3. СИСТЕМА ИНИЦИАЛИЗАЦИИ .............................................................................. 324
•
15.3.1. Принцип работы.............................. ................................................. 325
....................................................................................
15.3.2. Конфигурационные файлы systemd................................................ 327
15.3.3. Цели............................ .......................... .................................. ......... 330
15.4. УПРАВЛЕНИЕ СЕРВИСАМИ ПРИ ИСПОЛЬЗОВАНИИ SYSTEMD ............. 331
ВА 16. Управление процессами...................................333
16.1. КОМАНДЫ PS, NICE И KILL ..................................................................................... 334
16.1.1. Получение информации о процессе. ................................ .......... 334
16.1.2. Изменение приоритета процесса.....
16.l.3. Аварийное завершение процесса
......... 339
.................... ....... 340
16.2. КОМАНДА ТОР .............................................................................................................. 342
16.3. ИНФОРМАЦИЯ ОБ ИСПОЛЬЗОВАНИИ П АМЯ Т И И ДИСКОВОГО
ПРОСТРАНСТВА .................................................................................................. 344
16.4. КОМАНДА FUSER ........................................................................................................ 346
16.5. ПЛАНИРОВЩИКИ ЗАДАНИЙ ................................................................................. 347
16.5.1. Планировщик cron............................................................................ 347
16.5.2. Планировщик апасrоп.•.•.•.••••••••••..•••••••.......•......•••••....•.................... 349
17.1. ВВЕДЕНИЕ В УЧЕТНЫЕ ЗАПИСИ LINUX .......................................................... 352
17.2. ПОЛУЧЕНИЕ ПОЛНОМОЧИЙ ROOT.................................................................... 355
17.3. УПРАВЛЕНИЕ УЧЕТНЫМИ ЗАПИСЯМИ ПОЛЬЗОВАТЕЛЕЙ..................... 362
17.3.1. Создание учетной записи пользователя....................... ..
•
........ 362
17.3.2. Файлы /etc/passwd и /etc/shado,v ............................................. ....... 363
17.3.3. Изменение и удаление учетных записей ...................
....... 367
17.3.4. Группы пользователей ..................
.. ....... 371
·---------------------------------------------------------------------------------tllll
Ik,1, Linux
17.4. ГРАФИЧЕСКИЕ КОНФИГУРАТОРЫ ..................................................................... 372
17.5. МОДУЛИ РАМ ................................................................................................................ 373
17.5.1. Ограничиваем дocryn к системе по IР-адресу ............................... 377
17.5.2. Ограничиваем время входа в систему............................................. 379
17.5.3. Ограничение системных ресурсов с помощью РАМ .................... 380
ГЛАВА 18. Его величество Ядро........................................383
,..........,..,.,,,... ,,..,,.,..,.,,.,..•.,.,,....,.,.,.,.,.....,.,...,.••.,., ••.,............,. ....,..............,.................. ,.., ............,........,,....,,.....,...............,.............,......,,,,......,...........,.....,,,,.,..............,,,,,... ,.., •.нш•••• ....••...,••..•'"•'
18.1. ЧТО ТАКОЕ ЯДРО ........................................................................................................ 384
18.2. ПАРАМЕТРЫ ЯДРА ...................................................................................................... 388
18.3. ОБНОВЛЕНИЕ ЯДРА ДО ВЕР СИИ 5.7 ............•..................................•.........••...•..•• 391
:l,IIIIIIIOlll+IOlll"lllllllllllllllltlOlllllllll!lllllll!IIIIIIЖIIIHlllilllllllllltlll!IOIIIIIIIIIIIIIIIШIIШIIIIIIHIIШIIIIIIIIUllll!ltlllllilililШIIIIIIHIIIIUUlllllllll!llltlllll!IIIIIIIIIIIIIIIIIIM"IIHHthllllUШIШЦIIHHIИIW............,...........................
,
................................,..,,_,......... ,,,.......,
ГЛАВА 19. Маршрутизация и настройка брандмауэра...395
19.1. ПРОСМОТР ТАБЛИЦЫ МАРШРУТИЗАЦИИ .................................................... 396
19.2. ИЗМЕНЕНИЕ И СОХРАНЕНИЕ ТАБЛИЦЫ МАРШРУТИЗАЦИИ .............. 398
19.3. НАСТРОЙК А БРАНДМАУЭРА IPTABLES ............................................................. 404
19.3.1. Преобразование сетевого адреса ..................................................... 405
19.3.2. Цепочки и правила............................................................................ 406
19.3.3. Команда iptaЬ/es ................................................................................ 407
19.3.4. Практический пример ...................................................................... 410
19.4. НАСТРОЙК А БРАНДМАУЭРА UFW ....................................................................... 416
19.4.1. Проверяем состояние брандмауэра ................................................. 416
19.4.2. Базовая настройка .........:................................................................... 417
19.4.3. Создаем-правила для друтих приложений...................................... 419
•
19.4.4. Разрешаем IР-адреса......................................................................... 420
19.4.5. Запрещаем IР-адреса и службы ....................................................... 420
-----------------------------------------------------------------------------------·
С'о 11�р:,ю11111с
19.4.6. Удаление/сброс правил........ ............................................................. 421
19.4.7. Отключение файрвола ...................................................................... 422
;!1•-1111111111111111111ш111111М111...111111111ЖIIIIWIIIIIIIIIIIIIIIIIIIIIIIIIIJIIIIIIIIIIIIIIШIIIJIIIIIHHHIIIIIIIIIIIIIIШIIIIIIIIIIЖl!lllllll•111111111111111111111111111111111111ш1111,1111111111111111щ1111ж11"IIIIIЖIIIШllll•111111,""""''""""'"""""'""'""""'"""'"'""""""'"""'"'" ''"""'"'""'"""'
1 ГЛАВА 20. Удаленный вход в систему по SSH................
1
!iш111111111ш1111111111111ш111ш1111111,11111111ш1111111111111нш1111111ш1ш1111111ш11w,,11111111111ш111111111ш1111111111111111111111111111111,о""""""""'"'"""""""""""'"""'""'"""""'"""""""""""""""""'""'"""''"""""'"""""""""""""""'"""""""""""""'"""""""""""''
20.1. ПРОТОКОЛ SSH ............................................................................................................ 424
20.2. SSН-КЛИЕНТ .....................................................•............................................................ 426
20.3. Н АСТРОЙК А SSH-CEPBEPA ..................................................................; .................. 428
20.4. ЗАЩИЩЕННОЕ КОПИРОВАНИЕ ФАЙЛОВ ...................................................... 431
20.5. ОПТИМИЗАЦИЯ SSH.................................................................................................. 432
:jlltlllllЖtllNIIIIIIIIIIШ""'""""""""""""'"'"'""""''"""""'"'""""'"""'""""""'""""""""""""'""""""""""'"'"""""""""""""""""'"""""""""'""'"""""""""""""""""'"""""""""""'"""""""""""""""""''"'"""""""""""""""''"'""""''""""'
1 ГЛАВА 21. Общие вопросы администрирования веб1 сервера ..................................................................................
435
.
"11111Nltl<n1111,_""'"'"""""UИIIIIIIIIIIUIIНIIИIIHHUllttllQINnlllllllJIIIIIIII.IIIЖ!IIIIIIIIЖIIIIIIIHlllll!tlllllllllИlllll,.__,,,,,..,11ж11111n11aш11nn1ш111111111111,11111111111111111111,...........uuнш11111шж111111111.....ш,1111111111111111ш1111111ш11ж111111111•11
21.1. ВЫБОР ДОМЕННОГО ИМЕНИ ............................................................................... 436
21.2. ВЫБОР ТИП А СЕРВЕРА ................_............................................................................. 437
21.3. ВЫБОР ОБЛАЧНОГО ПРОВАЙДЕРА .................................................................... 441
21.4. ВЫБОР КОНФИГУРАЦИИ СЕРВЕРА .................................................................... 443
21.5. ПЕРЕЕЗД С ХОСТИНГА НА СЕРВЕР ..............................................................:..···· 444
21.5. l. Этапы переноса ................................................................................. 444
21.5.2. Копирование файлов сайта на локальный компьютер .................. 444
21.5..3. Экспорт базы данных на локальный компьютер ............... ........... 445
21.5.4. Установка веб-сервера, СУБД и другого ПО на VPS
............. 446
'21.5.5. Загрузка файлов с локальной системы на VPS ....... ................... 450
21.5.6. Редактирование конфигурации движка сайта ......... ...................... 45 l
•
21.5.7. Импорт базы данных на VPS .................................. ........................ 452
21.5.8. Перенос доменного имени .................................... .......................... 452
·-----------·---·-------··---·---·:---··--·--·-·-·-·------------···-·---------···-811
lk.:1, l.i1111,
. . . . . ,. . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . .. .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . ..-.. . .. ,. . .. . . . . . . . ,. . . . . ,. . . . . . . 1
АВА 22. Файловый сервер FTP......................................455 1
. . . . .. . . . .. . . . . . . . . ,. . . . . . . . . . . . . . . , . . , . . . . . . . . . . . . . . . . . . . . . . . . , . . , . . , . . . . . . . . . . . . . . . . ,.. . . . . . . . . . . ,. . . . . . . . . . . . . ... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .,. . . . . . . . . . . . . . . . . . . . . . . . . . . . ,. . . J
22.1. ВЫБОР FTP-CEPBEPA ................................................................................................. 456
22.2. УНИВЕРСА ЛЬНЫЙ СОЛДАТ - PROFTPD ............................................................ 457
22.2.1. Установка и управление сервером.................................................. 457
22.2.2. Редактируем конфигурацию сервера ........ ..................................... 458
22.2.3. Обеспечение безопасности FТР-сервера ................................... ... 465
Ограничение доступа к системным файлам ................................. 465
Ограничение количества регистраций пользователя. Защита
от DОS-атаки .................................................................................... 465
Настройки дЛЯ медnенных соединений .......................................... 467
Настройки дnя анонимных пользователей ..... ............................... 468
Аутентификация пользователей . ................... .......................... ..... 469
22.2.4. Аутентификация с ПОМОЩЬЮ MySQL ...................................... ...... 471
22.3. ОЧЕНЬ БЕЗОПАСНЫЙ VSFTPD ............................................................................. 473
ГЛАВА 23. Доменная система имен...................................
23.1. РАЗНООБРАЗИЕ DNS-CEPBEPOB ........................................................................... 478
23.2. НАСТРОЙКА КЭШИРУЮЩЕГО DNS-CEPBEPA UNBOUND ........................ 479
23.3. НАСТРОЙКА КЭШИРУЮЩЕГО СЕРВЕРА НА БАЗЕ BIND.......................... 481
23.4. НАСТР ОЙКА ПОЛ НОЦЕННОГО DNS-CEPBEPA .............................................. 486
23.5. НАСТР ОЙКА ВТОРИЧНОГО DNS-CEPBEPA...................................................... 490
АВА 24. DНСР-сервер.......................................................4
24.1. НАСТРАИВАТЬ DHCP-CEPBEP ИЛИ НЕТ? ......................................................... 494
-----··---··--·---···--··-········-·····················-···························
24.2. ПРИНЦИП РАБОТЫ ПРОТОКОЛА DHCP............................................................ 494
24.3. РЕД АКТИРОВАНИЕ КОНФИГУРАЦИИ DHCP.................................................. 495
24.4. DHCP-CEPBEP В БОЛЬШИХ СЕТЯХ ...............................,..................................... 499
24.5. СТАТИЧЕСКИЕ IР-АДРЕСА. ДИРЕКТИВА HOST ............................................. 500
24.6. Н АСТРОЙК А DНСР-КЛИЕНТА В UBUNTU......................................................... 502
"'
Г��;�;..;·;·: ·�;·�·.�·�;·;�·;;�·�·;ь Linux к Windows-
1 инфраструктуре ...................................................................505
"ll"lll"Шl!IIIIIIЖШIIIIIIWWIIHШIWШIWIUIHHIINЖIH�IIHIКIШIШIHШIIIIHШIM"IIIIIHHШIШIIIIIШl!IЩllltllHlltllllllllllllllllllll!IШIIIIIIIШIIIIIIIIIIWIIOlllllllll!OIHlllllll""'Мllllllllll!l!lll"'IIIINIIIIШl•lllllllllllllll"lll�l"IH<llllllllllllljlllllll•li,1tllllllllllllllllllllll!lll<IШo,1!1110i,11l1
25.1. ЗНАКОМСТВО С SAMBA ........................................................................................... 506
25.2. УСТАНОВК А НЕОБХОДИМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ .... 507
25.3. ПОДГОТОВИТЕЛЬНАЯ НАСТРОЙК А.................................................................. 507
25.4. Н АСТРОЙК А KERBEROS .....................................................................................,..... 509
25.5. Н АСТРОЙК А SAMBA ................................................................................................... 510
,......, ,..............,................, ,..................................................,,,.................................................................................................................................,,,,,..............................................................................,,, .....................................................,
! ГЛАВА 26. Резервное копирование....................................513
I.,, ........ ........._....-................. .., ,........... ... ... . . . . . . . . ........ . . . . . . . . . . . . . . . ...... .. . . . .. .... ., ,... . . . . . . ... . . . . . . . . . . . . . .. ... . . . . . . . . . . .... , ,. . . . . . ... . , ,. . . . . . .. . . .
26.1. СРЕДСТВА РЕЗЕРВНОГО КОПИРОВАНИЯ ....................................................... 514
26.2. РАЗРАБОТК А ПЛАНА РЕЗЕРВНОГО КОПИРОВАНИЯ ДЛЯ ВЕБСЕРВЕРА ............................................................................................................. 515
26.3. РАЗРАБОТК А СЦЕНАРИЯ РЕЗЕРВНОГО КОПИРОВАНИЯ ......................... 517
,..........,,,,. ..............,,,.......,,,..................,,,..................................,,,............,...................................,,,........................................................,,,............,,,.............,.,.,.........,,,.........,.............,,,........,,,.,....,,,..............................................,
ГЛАВА 27. Обеспечение безопасности..............................525
.., ,.-.. ...............,,,................,,,....,...............,,,....................,....,,...........................................,....................................................
........................,......................................,,,..,.,.................. ...............,....,,,
,
27.1. ЛОКАЛЬНАЯ БЕЗОПАСНОСТЬ СЕРВЕРА ......................................................... 527
....................................'............................................ ..
lkc:1, l,i1111x
27.2. ЗАЩИТА ОТ СЕТЕВЫХ АТАК ................................................................................. 530
27.2.l. DoS- и DDоS-атаки ........................................................................... 531
27.2.2. Обнаружение атаки ........................................................................... 532
27.2.3. Специальные настройки ядра .......................................................... 533
27.2.4. Блокируем все подозрительное ....................................................... 535
27.2.5. Блокируем пакеты из-под приватных подсетей (спуфинr)........... 536
27.2.6. Дополнительные правила................................................................. 537
27.2.7. Полный список анти-DDоS правил ................................................. 538
27.2.8. Защита от брутфорса SSH ...... ......................................................... 539
27.2.9. Запрет сканирования портов ............................................................ 540
27.2.lО. Определение источника атаки ....................................................... 540
27.3. ЗАЩИТА СЕТЕВЫХ СЛУЖБ ................................................................................... 541
27.4. ШИФРОВАНИЕ ДАННЫХ ......................................................................................... 545
27.5. Н АСТРОЙКА VPN-CEPBEPA .................................................................................... 547
27.5.l. Создание всех необходимых сертификатов и ключей ................... 549
27.5.2. Настройка сервера ............................................................................ 552
27.5.3. Подключаем клиентов ...................................................................... 557
ГЛАВА 28. Настройка веб-сервера.....................................559
28.1. УСТАНОВКА И НАСТРОЙКА АРА СНЕ ....................•••......•••...•••••......••••.....•••...... 561
28.2. УСТАНОВКА СЕРВЕРА БАЗ ДАННЫХ. СОЗДАНИЕ БАЗЫ ДАННЫХ И
ПОЛЬЗОВАТЕЛЯ ......................................................................•....•.....•.....••.••...... 564
28.3. УСТАНОВКА И Н АСТРОЙКА РНР. ВЫБОР ВЕРСИИ •............••••.•....••••••..••... 565
28.4. ДИРЕКТИВЫ ФАЙЛА КОНФИГУРАЦИИ АРА СНЕ...................•...•.....•............ 571
28.5. ОПРЕДЕЛЕНИЕ ВИРТУА ЛЬНЫХ УЗЛОВ ..................................•••.•.....•.............. 584
•
---------------·----·--------·---------------···--··---·······-·-·-·········-···-····
( tl l<'(l,l·«IIIIIL'
28.6. ПОЛЬЗОВАТЕЛЬСКИЕ КАТАЛОГИ....................................................................... 586
28.7. ОПТИМИЗАЦИЯ ВЕБ-СЕРВЕРА ............•......................•........••••......••••.......•.....•••... 587
28.8. ЗАЩИТА СЕРВЕРА АРА СНЕ ..................................................................................... 588
29.1. ЗАКАЗ СЕРТИФИКАТА .............................................................................................. 592
29.2. НАСТРОЙКА АРА СНЕ................................................................................................. 595
29.3. НАСТРОЙКА NGJNX.................................................................................................... 596
29.4. ГЕНЕРИРОВАНИЕ СЕРТИФИКАТА LEТ'S ENCRYPT..................................... 598
29.4.1. Установка клиента Let's Encrypt ...................................................... 598
29.4.2. Кэ:rалог webroot-path/.well-known/acme-challenge/ ........................ 598
29.4.3. Файл конфиrурации .......................................................................... 599
29.4.4. Заказ сертификэ:rа ............................................................................. 599
29.4.5. Автомэ:rнческое обновление сертификата...................................... 600
29.5. НАСТРОЙКА РЕДИРЕКТА ........................................................................................ 601
29.6. ГОТОВИМ ДВИЖОК СА ЙТА К SSL ....................................................................... 601
29.7. КОНВЕРТИРОВАНИЕ СЕРТИФИКАТОВ РАЗНЫХ ФОРМАТОВ ...•.....•••.... 601
30.1. КОММЕРЧЕСКИЕ РЕШЕНИЯ ................................................................................. 606
30.1.1. Привычная cPanel ............................................................................. 607
30.1.2. Конкурент cPanel - DirectAdmin ................................................... 608
30.1.3. ISPManager ........................................................................................ 610
•
30.1.4. Plesk............................................, ....................................................... 611
··················································································tll8
lkll. 1 illll\
30.1.5. Рекомендации .................................................................................... 613
30.2. БЕСПЛАТНЫЕ РЕШЕНИЯ ........................................................................................ 615
30.2.1. Стандартная Webmin ........................................................................ 615
30.2.2. VestaCP ............................................................................................... 616
30.2.3. Бесплатная и открытая ISPConfig ................................................... 616
30.2.4. Ajenti................................................................................................... 617
30.2.5. Рекомендации .................................................................................... 618
30.3. УСТАНОВКА ПАНЕЛИ УПРАВЛЕНИЯ WEBMIN НА СЕРВЕР ..................... 619
30.3.1. Знакомство с Webmin ...... ................................................................. 619
30.3.2. Установка Webmin.......... .................................................:................ 620
30.3.3. Вход в панель управления................................................................ 621
,..,,,.,.,,,.,.,.,.,,,,,,,,.,,111111111111110IOl!l!lllll!l>IIIIIIIIIIHIIIIIIIIIIIIIIIIIINllllll!lllll!IIIIIIWIIIINlllllllll ...........,н1111ш111ю1111нщ111111111111111111111111н11нш11111111нш111шкн1111111111111шн1m,111н111111111н111,111111,111,11111ю1•1111,111ш11111m11111111ш11111,,ш11н111111111111111"""'""'""""""�
1 ГЛАВА 31. Повышение производительности сервера
1 ·································································································625
,
-.... . ...... . ........... . . ........... . ..................... ............... . . . ........................................... . ..................... ....... . ..... . .......................................... ...... ............................,........ ......... . . . . . . . . . . .............,,,,........................
31.1. ЧЕК-ЛИСТ ПРОИЗВОДИ ТЕЛЬНОСТИ СЕРВЕРА ............................................ 626
31.2. СМЕНА ВЕРСИИ РНР И ЕГО НАСТРОЙКА ....................................................... 629
31.3. НАСТРОЙКА СЖАТИЯ И КЭШИРОВАНИЯ ....................................................... 632
31.3.1. Настройка nginx................................................................................ 633
31.3.2. Настройка Apache............................................................................. 635
31.4. ВКЛЮЧЕНИЕ КЭШИРОВАНИЯ НА СТОРОНЕ СЕРВЕРА ............................ 639
31.4.1. Настройка Pagespeed........................................................................ 639
31.4.2. Настройка Memcached ..................................................................... 640
31.5. УСКОРЕНИЕ CMS ........................................................................................................ 641
31.5.1. Включение кэша
................... ............................................. 642
31.5.2. Включаем сжа;гие и объединение JavaScript и CSS ................... ... 643
31.5.3. Оптимизируйте изображения ..........
................... ..... 644
31.5.4. Использование Flаt-категорий и продуктов
................... .... 644
•
31.5.5. Переводим Magento в production-peжим ............... ........................ 645
---·····················-···--····-········-···-········-············-············-·
( ·о 1t·p,i.a11ш·
31.5.6. Настройка MySQL
.. .............................. 645
f'""""""""""""'"'"""""""""""'"'"'""""""""""""""'"'""""""""'"'"'"'""'"'"' """"""""""'"""""""""'"""''"""""'"""""""""""'"""""'""""""""''""'"'""'"""""""'"""""'"""""""""""""""'"""'""'""'""""""""""""""'"""""l
, ГЛАВА 32. Настройка почты на веб-сервере....................647 1
l1111111111ш111111111111111111м1111ж11101t1111i,111ш1•1111t10101tl110111111"ж"'"'"""""""""""'""'""'"''"'""""""''""""'"""'"""''"""""""""''""""'"""""""' "'"'""""""""""""""""'""""""'""""""'""'""'"'"'""""""""""'•""""''""'"""""""""""""'"'J
32.1. ПРОВЕРЯЕМ, РАБОТАЕТ ЛИ ПОЧТА ................................................................... 648
32.2. ПРИНЦИП НАСТРОЙКИ ........................................................................................... 649
32.3. УСТАНОВКА И НАСТРОЙКА SSMTP.................................................................... 649
32.4. НАСТРОЙКА РНР ......................................................................................................... 650
32.5. ВОЗМОЖНЫЕ ПРОБЛЕМЫ ..................................................................................... 651
33.1. САЙТ НЕДОСТУПЕН. ПОИСК ПРИЧИНЫ......................................................... 654
33.1.1. Закончилось дисковое пространство/свободные иноды ............... 655
33.1.2. Нехватка прочих ресурсов ..........
33.1.3. Неправильная конфигурация сервера
.... 657
......... 657
33.2. СЦЕНАРИИ АВТОМАТИЧЕСКОГО ПЕРЕЗАПУСКА СЛУЖБ В СЛУЧАЕ
СБОЯ ......................................................................................................................... 659
33.2.1. Проверка работоспособности веб-сервера.............................. ...... 660
33.2.2. Проверка работоспособности MySQL........................
33.2.3. Если падают процессы"
33.2.4. Monit: если нет таланта программиста
..... 661
.................... 662
.......... 662
33.3. БОРЬБА С СЕССИЯМИ MAGENTO: ЗАЩИТА ОТ ПЕРЕПОЛНЕНИЯ
ДИСКА...................................................................................................................... 663
33.3.1. Решение 1: сценарий
33.3.2. Решение 2: смена файловой системы"
............... 664
........... 665
33.4. РОТАЦИЯ ЖУРНАЛОВ СЕРВЕРА .......................................................................... 666
•
33.5. ДЕСЯТКА УТИЛИТ ДЛЯ МОНИТОРИНГА СЕРВЕРА .................................... 669
··················································································--
lkc1, 1 i111п
33.5.1. htop- ииформативная версия top.................................................. 670
33.5.2. atop- продвинутый монитор процессов ........................................ 671
33.5.3. apachetop - мониторинг веб-сервера в реальном времени ......... 672
33.5.4. mytop - мониторинг MySQL .......................................................... 672
33.5.5. iotop- мониторинг ввода/вывода .................................................. 673
33.5.6. iftop- мониторинг сетевого интерфейса ...................................... 674
33.5.7.jnettop-eщe один монитор сетевого интерфейса ....................... 675
33.5.8. iptraf- мониторинг трафика .......................................................... 676
33.5.9. ngrep- утилита для профессионала ............................................. 677
33.5.10. птоп- швейцарский нож ............................................................ 678
01.1. НАСТРОЙКА BASH.......................................................................................................682
Пl.2. ЗАЧЕМ НУЖНЫ СЦЕНАРИИ BASH.......................................................................686
Пl.3. СЦЕНАРИЙ "ПРИВЕТ, МИР!" ................................................................................ 687
01.4. ПЕР ЕМЕННЫЕ В СЦЕНАРИЯХ ............................................................................. 688
Пl.5. ПЕР ЕДАЕМ ПАРАМЕТР Ы СЦЕНАРИЮ ......................................: ...................... 690
01.6. ОБРАБОТКА МАССИВОВ ........................................................................................ 691
Пl.7. ЦИКЛЫ FOR И WНILE............................................................................................... 691
01.8. УСЛОВНЫЕ ОПЕРАТОРЫ ....................................................................................... 693
Пl.9. ФУНКЦИИ В BASH...................................................................................................... 694
Пl.10. ПРАКТИ ЧЕСКИЕ ПРИМЕР Ы СЦЕНАРИЕВ.................................................... 695
"'"""l""'"""'"(IA"W"lllll"l"'"'"""''"H"""""'"'""""'"'"'""'""""'"''"..."'"''""'"llll"'''"'l"lt!l" '·'"'Мl"''"•111111n"1111н,,1м1"""11'"''""'.,,"""""'"'-"""'""11"''"•1!11•11•"'"'"'"'"щ"'"''""""IIIIMIIIIIIIIIIIIJIIMIIHIIIЖHIМIIШIIHHltMHII""""""'
:
f
}
! Приложение 2. Сетевая файловая си�тема NFS..............697 !
�Q""""".."'""a_lll.,,Q,m_..,..,_..,,. __..,._..,.._,..111111...._.....м,-•--··""-"1111•1111м,-•н•-·"''"'"'"''"lll"'"'-·"-""-"'--'''""'''"""'.. -'"""'"""""""WIIMJ
•
02.1. ВКРАТЦЕ О NFS И УСТАНОВКЕ НЕОБХОДИМЫХ ПАКЕТОВ ................. 698
E!lt----------·-·----------------················-··-·--·-····························
02.2. ФАЙЛ IETCIEXPORTS ••...........................•.•.........••......••••............................................ 699
02.3. ИСПОЛЬЗОВАНИЕ NFS-KЛИEHTA ....................................................-.................. 700
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ .......702
•
·-----------------------------------------------------------------------------------
Глава 1.
ВЫБОР ДИСТРИБУТИВА
л •
н�L 1, 1.i,111,
https://t.me/it_boooks/2
1.1. Многообразие выбора
n =-
с�
;; 5
�:
Проблема современного мира IТ - в его многообразии выбора. Для выполнения одной и той же задачи часто рынок предлагает множество самых разных
решений. Решения различны по своему функционалу, лицензии, стоимости ... И во всем этом нужно разобраться.
Порой выбор - не легкий. Ошибка на этапе выбора может стоить как ми­
нимум потраченного времени, как максимум вы потратите время, деньги,
а возможно, потеряете репутацию и работу. Например, начальство поручи­
ло вам выбрать программный продукт -для взаимоотношения с клиентами
(СRМ). Вы сделали неправильный, как потом окажется в будушем, выбор. В
результате компания потеряла огромные средства, потраченные на покупку
и внедрение этого программного продукта, не говоря уже о неудобствах для
клиентов и простое при переходе на другую, «правильную» СRМ.
Порой кажется, что лучше выбора бы не было. Одна задача - один инстру­
мент. Одна операционная система, один офисный пакет и т.д. Но, к счастью
или к сожалению, такая ситуация маловероятна даже в будущем.
Типичный пример- выбор операционной системы для веб-сервера. Что луч­
ше? FreeBSD, Windows Server или Linux? Вы мучаетесь всю ночь и при­
нимаете решение. Первая - слишком сложная, вторая - хороша, но за нее
нужно платить, третья- самый универсальный вариант. И не очень сложно,
и много документации, и всевозможное ПО. <;амое главное - бесплатная.
Собственно, какой выбор вы сделали, понятно еще и по тому, какую книгу
вы сейчас держите в руках.
•
....................................................................................
1 1,IВ,1 1
B1,1ii11p IIIC I IIIIU� I IIB�
После выбора в пользу Linux начинается самое интересное. Вы узнаете, что
Linux - это только собирательное название, а по факту выбирать приходится
между дистрибутивами Linux, которых очень и очень много. С 2001 года,
согласно ресурсу Distrowatch, было создано почти 800 дистрибутивов ... По­
нятно, что количество разрабатываемых дистрибутивов постоянно сокраща­
ется - слабые уходят с рынка, но выбор по-прежнему огромен. Несколько
сотен дистрибутивов. Только на главной странице Distrowatch есть список
ТОР-! 00 - он обновляется ежедневно. Следовательно, в мире есть как мини­
мум 100 активных дистрибутивов, которыми пользуются люди...
1.2. Что такое дистрибутив
Самая первая версия Linux, появившаяся в 1991 году, представляла собой
ядро и несколько приложений. В ней запускались компилятор gcc и команд­
ный интерпретатор bash. Поставлялась эта версия Linux в виде двух дискет
- на первой было ядро, на второй - корневая файловая система с приложе­
ниями. Загружалась она тоже специфически - сначала нужно было вставить
в дисковод первую дискету и дождаться, пока загрузится ядро, затем был
запрос на вставку второй дискеты - с корневой файловой системой.
Первые дистрибутивы появились в 1992 году. Тогда отдельные энтузиасты
или группы энтузиастов выпускали разные дистрибутивы (каждый, есте­
ственно, под своим именем). Грубо говоря, они отличались второй дискетой,
на которой был немного другой набор программ. Далее, с развитием Linux,
необходимые программы уже не помещались на одну дискету, и пришлось
устанавливать Linux на жесткий диск. Появились первые программы уста­
новки.
Чем отличаются разные дистрибутивы, кроме, разумеется, названия?
Во-первых, у каждого дистрибутива своя программа установки (если не
считать дистрибутивов-клонов, которые заимствуют инсталлятор у роди­
тельского дистрибутива, меняя только название дистрибутива). Во-вторых,
у каждого будет свой набор программ - на усмотрение разработчика. По
сути, с 1992 года ничего не поменялось.
Если копнуть дальше, вникнуть в набор программ, то начинаешь видеть бо­
лее глубокие изменения, например разницу в менеджере пакетов и системе
инициализации. По сути, и менеджер пакетов, и система инициализации это тоже программы. Но программа программе рознь.
'-----------------------------------------------------------------------------------
.,.
"
l\cci, l,illll\
Сейчас мы не будем вникать во все технические тонкости, а лучше рассмо­
трим актуальные на данный момент дистрибутивы.
На данный момент Linuх-пользователям доступно несколько основных дис­
трибутивов:
• Deblan - тот самый надежный Debian, появившийся в 1993 году. Это
единственный широко распространенный дистрибутив, доживший до на­
ших дней под оригинальным названием.
• Fedora - потомок популярного ранее дистрибутива Red Hat, суще­
ствование которого было прекращено в 2004 году. Тогда пользователям
предоставили выбор: либо они мигрируют на корпоративный (коммерче­
ский) RНEL (Red Hat Enterprise Linux), либо на бесплатный Fedora (ранее
Fedora Core). На данный момент Fedora - развивающийся дистрибутив,
последняя версия которого вышла 7 ноября 2023 года, а выпуск новых
версий производится каждые 6-8 месяцев.
• Ubuntu - изначально основан на Debian, первая версия появилась в
2004 году, последняя - 16 октября 2023 года (версия 23.10). Обновляется
каждые 6 месяцев. Как и Fedora, имеет несколько вариантов, в том числе
серверный. Популярным неофициальным (не от разработчиков UЬuntu)
форком является дистрибутив Mint - «доведенная до ума» версия UЬuntu.
"""
"
"""
• openSUSE - изначально основан на дистрибутиве Slackware, и первая
его версия вышла в октябре 2005 года (сравнительно молодой дистрибу­
тив). На данный момент доступна версия от 7 июня 2023 года, а обнов­
ляется· дистрибутив примерно раз в год. В отличие от UЬuntu, использует
систему пакетов RPM, что делает его ближе к Fedora: со временем в со­
став openSUSE включили некоторые решения из Red Hat - систему паке­
тов RPM, использование sysconfig - что сделало его больше похожим на
Red Hat, чем на Slackware.
• ALT Linux - как ни крути, но этот отечественный дистрибутив заслужи­
вает уважения - хотя бы за то, что дожил до наших дней и не развалился,
как многие другие. И учтите, первая его версия появилась в 1999 году (то
есть ему больше 20 лет), а не в 2004-2005, как Ubuntu и openSUSE.
Последняя версия от 19 сентября 2023 года.
• CentOS (Community ENTщprise Operating System)'- обшественная кор­
поративная операционная система. Основаfа на RНEL и совместима с
ним. Состоит из свободного ПО с открытым кодом. Первая версия вышла
в 2004 году, на данный момент последней является версия от 12 ноября
•
-----------------------------------------------------------------------------------·
•
1 1,111.1 1
В1,111<1р lllt' 1JIIIII�1 1111а
2020 года. Разработка дистрибутива завершена, а его преемником стали
сразу три новых дистрибутива: CentOS Stream, Alma Linux и Rocky Linux.
• Astra Linux - дистрибутив специального назначения на базе ядра Linux,
созданный для комплексной защиты информации и построения защи­
щенных автоматизированных систем. Сертифицирован системами сер­
тификации средств защиты информации Минобороны, ФСТЭК и ФСБ
России. Первая версия увидела свет в 2009 году, а последняя версия
вышла весной 2023 года.
1.3. Что выбрать?
Вопрос довольно распространенный, но однозначного ответа на него нет.
Все зависит от применения и личных предпочтений. Например, фанатов
UЬuntu ни за что не заставишь установить Fedora, и наоборот. Если же у вас
своего мнения относительно дистрибутива не сформировалось, то можно
выбрать один из следующих дистрибутивов - Fedora, CentOS, UЬuntu, Debi­
an. На сервере я бы рекомендовал более стабильные CentOS и DeЬian, но
поскольку вы только начинаете разбираться с Linux, можно смело использо­
вать Fedora и UЬuntu. С ними вам будет проще, и они более универсальные.
Оба дистрибутива смело подойдут как для рабочей станции (или домашнего
компьютера), так и для сервера.
Когда же речь заходит о работе с персональными данными, то ненароком
вмешивается закон ФЗ-152 и расставляет все на свои места. Обработка и
хранение таких данных должны происходить только с использованием сер­
тифицированного ПО.
Для Windows существует достаточно большой выбор различного сертифи­
цированного ПО: программы для шифрования, антивирусы, брандмауэры и
т.д.
Выходит, если вы создаете интернет-магазин, что подразумевает хранение и
обработку персональных данных, то вы или ограничены Windows (чего не
хочется), или же должны смотреть в сторону сертифицированных дистрибу­
тивов Linux.
...
Один из таких - Astra Linux. Именно поэтому он рассматривается в этой
книге вместе с UЬuntu. В книге, по понятным причинам, мы будем рассма­
тривать Astra Linux общего назначения, поскольку дистрибутив «особого
•
··················································································
lkcl, l.illll\
назначения» - платный. Забегая наперед, нужно отметить, что дистрибуrив
получился весьма неплохой, но имеет многочисленные проблемы с лока­
лизацией - некоторые элементы окон программ не переведены на русский
язык. Непростительная оплошность для отечественного дистрибутива, где с
локализации нужно было начинать.
В книге рассматриваются разные версии дистрибуrивов (для тех пользовате­
лей, у которых чуrь более старые версии), в том числе и одни из последних
на момент написания этих строк дистрибуrивы (для Astra Linux - 2.12, для
UЬuntu-23.10). В мире Linux новые дистрибуrивы выходят довольно часто,
поэтому нет смысла рассматривать со�сем старые версии.
•
Еа--------------------------------------------··----·-······-···················-···
Глава 2.
УСТАНОВКА СИСТЕМЫ
л •
!\се 1, 1 illll\
https://t.me/it_boooks/2
Несмотря на то, что у всех дистрибутивов Linux собственный инсталля­
тор, свой интерфейс пользователя, разный набор программного обеспече­
ния, устанавливаемого по умолчанию, все они устанавливаются по единому
принципу. В этой главе мы рассмотрим попарно установку UЬuntu и Astra
Linux.
2.1. Загрузка с инсталляционного диска
Первое, с чего нужно начинать установку системы, - с получения инсталля­
.ционного носителя.
Поскольку рассматриваемые дистрибутивы Linux распространяются абсо­
лютно бесплатно, нет никакого смысла загружать ISО-образы со сторонних
ресурсов. В нашем случае необходимые ISО-файлы можно получить с сай­
тов https://ubuntu.com и https://astralinux .гu/.
Далее нужно создать сам инсталляционный носитель. В качестве такового
носителя может выступать либо DVD-диск, либо USВ-флешка. Эра DVD­
дисков давно прошла (сейчас даже в продаже их найти сложно), а вот USВ­
флешка, как правило, всегда под рукой.
..
Для подготовки загрузочного µsв-диска нам нужна флешка размером от 4
Гб и компьютер под управлением Windows.
•
Скачайте приложение Rufus (https://rufus.ie/) и выполните следующие дей­
ствия:
···············-·····:···-···-·-·····-··-·······-···-·······-·-·····-···--········
1. Если на флешке есть данные, скопируйте их на жесткий диск, поскольку
в процессе создания загрузочного носителя они будут уничтожены.
2. Запустите Rufus.
3. Из списка Устройство выберите флешку. Убедитесь, что вы выбрали пра­
вильную флешку, если подключено несколько устройств.
4. Нажмите кнопку Выбрать для выбора ISО-образа, который будет запи­
сан на флешку.
5. Остальные параметры оставьте как есть. Схема раздела должна быть
MBR, целевая система - BIOS или UEFI, файловая система - FAT32, раз­
мер кластера - 4096.
6. Нажмите кнопку СТАРТ.
7. Дождитесь, пока программа запишет ISО-образ на флешку.
8. Подключите USВ-флешку к целевому компьютеру (на который будет про­
исходить установка Linux).
9. Перезагрузите целевой компьютер.
10.Войдите в BIOS SETUP (обычно для этого используется клавиша DEL
или F2, но нужная комбинация может отличаться - обратитесь к руководству по материнской плате).
х
,..,.,,,,.,,,.1">,,.ь•)
11.В качеd-ве загрузочного устройства выберите созданную флешку.
Свойства диска -------­
12.Выйдите из BIOS SETUP с сохранением
изменений.
НоNя tНШ тоwа
jUЬuntu 23.10.1 1md64
8192Wf(noyмoAQHИIO:"
.., Пoasan. �нренкwе nар,мnры форw1тиро1анНJ1
Рис. 2.1. Запись ISO образа с Linux на флешку
Если вы все сделали правильно, то увидите
начальный экран загрузчика Linux.
�NHltf обр,311: UЬIJnW-23.10.1-dtskrop-lmd64JSO
•
··············································---·-··----···--·-----··-----------·tllll
lk,1, 1 i1111,
2.2. Принцип установки Linux
Самое главное при установке Linux - выполнить разметку
жесткоrо диска и не забыть установленный пароль,
указанный при установке.
Неправильная разметка жесткого диска означает, что в процессе работы с
системой ее придется изменить, а это сделать не всегда просто, особенно
если сервер уже работает. Ну и пароль пользователя желательно тоже не за­
бывать, иначе придется попотеть, чтобы взломать собственную же систему.
А возможность такого взлома зависит, прежде всего, от настроек дистрибу­
тива по умолчанию - в одних дистрибутивах все будет хорошо, а в других у
вас ничего не получится. Хотя вряд ли можно назвать хорошей возможность
взлома локального сервера (к которому у вас есть физический доступ) - так
что все относительно.
2.3. Загрузка с инсталляционного носителя
Последние версии UЪuntu уже не позволяют выбрать язык в меню загрузчи­
ка, как это было раньше. Вам нужно выбрать команду Тrу or instaU UЬuntu
(рис. 2.2) из меню загрузчика, дождаться загрузки графического интерфейса,
и только потом у вас появится возможность выбора языка (рис . 2.3).
.
Рис. 2.2. Меню заzрузчика Ubuntu
•
-----------------------------------------------------------------------------------·
1 J,llbl 2 ) С I i\lH)ИKH CII(' 1 ('\lbl
Рис. 2.3. Выбор языка
В случае с Asta Linux танцев с бубном меньше - вы сразу видите начальное
меню загрузчика и можете выбрать или графическую установку, или уста­
новку в текстовом режиме (команду Установка), что подойдет для слабых
компьютеров или для серверов, где графический интерфейс не нужен.
•·----------------------------------------------------------------------------------Рис. 2.4. Меню загрузчика Astra Linux
11" 1, 1 i1111,
2.4. Начало установки
Сразу после запуска инсталлятора:
• UЬuntu: Нужно выбрать язык и для продолжения установки нажать кноп­
ку Следующая, после этого выбрать Установить Ubuntu и снова нажать
кнопку Следующая (рис. 2.5).
• Astra Linux: прочесть лицензионное соглашение и нажать кнопку
Продолжить.
luьuntu
_.-..... ·-··-
�--•-,__,.,,_._...,..,.,,__.
....
�...
,
1 O>n--
О no11po6oмn.UЬu11t11
.......atrt_,,.....,.,_� ..••..,..•,.,.h">____ ,.._.,
•.........
Рис. 2.5. Выберит
, е "Установить Ubuntu" и нажмите кнопку "Следующая"
Дмстрмбутм■ Astra Llnux основан на дистрибутиве Deblan и
использует такой же инсталлятор.
В некоторых моментах он удобнее, чем инсталлятор UЬuntu, в некоторых нет. Например, после нажатия Продолжить/Следующая в обоих случаях
инсталляторы предложат выбрать раскладку клавиатуры (рис. 2.6, 2.7). Вот
только в случае с Astra Linux вы можете выбрать комбинацию клавиш для
•
....................................................................................
1 1.11"1)
\,:1а1101н...1 ,·1н·н..·,11.1
переключения раскладки, что очень удобно. В UЬuntu вам 'придется это сде­
лать после установки, если стандартная вам не подходит.
�
u
Рис. 2.6. Параметры клавиатуры (Ubuntu)
=-���:�� �
Н11стрtlс1 кn•••■тr,w
н,амо r1r111,.. cnocoO ntptltЛ�tHIIIII ltЛI IIII Typw "88А)' н1цмонаnаноА plCIUll,QltOII II CТI HAIPTHOA nlТMHCW:OII
18М
ркм1акоll.
Нlмhlltl lj)tOHOlto!ЧKlltt сnосоОом CЧIIТlllfCA nplllill w:nltllWI Аnмnм CaptLOCk{I nосn1днtм cnrч•• д/lА ntpt1rn-..1н1111
�i� ��-�·��=H��� ��: n��::::��:or�;:.-:н;:c�-�.:r: :"lc�"!";;,;:�
11cnona1r-.мx ••• nporp,,..r.
ч
n
. Alt
IIHIЦМII
Н8 HI ICIX ltЛI IIIIТrP•• 1ст• ntplЧIICЛIHHl,8 кn11и111
Оккоf tмpHIНl'И№fll 1411W н.ц,fОН8/t.НОi н n•rннскоl p8'Kt1•A1tol:
C1p1Loek
np11Wi'IA1t(Alt0r)
np••..., Control
npt1wQ 8MI
npt1111 кn11н11 с nоrотмnом
..
..
u
....
.,С1.
........
Conll'at-,.A/1
Altt'CaplLOCk
n1•� Alt
n,,..., ContrCJI
j Снмнок 11rptн1 j G••к• ]
•
нr
[в.р т•с,�
]1
Рис. 2. 7. Параметры клавиатуры (Astra Linux)
....................................................................................
lkcl, l.illU\
2.5.1. Общие сведения о разметке диска
Один из самых важных моментов при установке любого дистрибутива Linux
- это разметка жесткого диска. Если вы в процессе установки, например,
забудете выбрать какой-то пакет, его очень просто установить после уста­
новки. Но вот если разметка диска будет вьшолнена неправильно, то испра­
вить ситуацию будет гораздо сложнее. В некоторых случаях придется даже
переустанавливать всю систему.
Linux использует свою файловую систему (некоторые дистрибутивы ис­
пользуют ext4, некоторые xfs, о файловой системе мы поговорим подробно
в дальнейших главах), поэтому ее нельзя установить в уже имеющиеся на
жестком диске разделы. Если вы устанавливаете Linux не на новый жесткий
диск, тогда желательно удалить все разделы сторонних операционных
систем. Не думаю, что на сервере будут сожительствовать две операцион­
ные системы. Понятно, что это не нужно делать на домашнем компьютере,
где, скорее всего, Linux придется сосуществовать с Windows.
Можно, конечно, полQжиться на автоматическую разметку инсталлятора, но
она не всегда правильна. Даже если вы устанавливаете Linux на новый жест­
кий диск, то инсталлятор в большинстве случаев создаст два раздела - один
под корневую файловую систему, а другой - для подкачки. Для домашнего
использования такая схема вполне возможна. Для сервера - нет. Да и сер­
веры бывают разными.
Если мы, например, создаем FТР-сервер (он же сервер хостинг-провайдера)
и основное его назначение - хранение данных (например, сайтов) пользо­
вателей, то для каталога /home нужно выделить львиную долю дискового
пространства. Например, если у вас жесткий диск размером 1 Тб, то для
самой системы более чем достаточно 15 Гб дискового пространства (все­
го 1.5% от емкости жесткого диска), а для каталога /home нужно выделить
оставшиеся почти 98% (почти - потому что понадобится еще место под
раздел подкачки).
Если же у нас - корпоративный почтовик или'сервер баз данных или эле­
ментарно прокси-сервер (или же корпоративный сервер, который сочетает
•
....................................................................................
1 1,Ш,1 � �ClalНIRh:a CIICIC\11.1
в себе все эти функции), тогда основное дисковое пространство нужно вы­
делить под точку монтирования /var. Именно в каталоге /var хранятся файлы
базы данных, кэш прокси-сервера Squid, почтовые ящики и т.д.
Недостаток автоматической разметки диска в том, что она не предполагает
установку назначения компьютера. Если можно было бы выбрать назначе­
ние компьютера, а уже потом выполнять саму разметку, все было бы совсем
иначе.
ПРИМЕЧАНИЕ ДЛЯ ДОМАШНИХ ПОЛЬЗОВАТЕЛЕЙ. Если
вы производите установку Linux на компьютер с уже установлен­
ной Windows, обязательно выполните резервное копирование
всех важных данных! Иначе знакомство с Linux начнется для вас
с потери данных. Linux нельзя установить на имеющийся раз­
дел. Нужно сначала уменьшить размер этого раздела, а затем
на освободившемся месте создать Liпuх-разделы. Для измене­
ния размера раздела рекомендуется использовать сторонние
приложения вроде Acronis, а не штатный инсталлятор Linux чтобы не ,было больно за потерянные данные.
2.5.2. Введение в точку монтирования
Точка монтирования - это каталог корневой системы,
через который осуществляется доступ к тому или иному
разделу.
По сути, раздел диска можно подмонтировать к любому из каталогов, но
обычно используются определенные каталоги, которые имеют определен­
ный смысл для системы, а именно:
• / - корневая файловая система, именно к подкаталогам этой файловой
системы и осуществляется монтирование;
• /home - здесь хранятся пользовательские файлы;
• /mnt - обычно этот каталог используется для монтирования с целью до­
ступа к данным, находящимся на другом разделе;
•
....................................................................................
"::,..
11" 1, 1 i1111,
• /usr - сюда обычно устанавливается программное обеспечение (за
исключением системного набора программ, который устанавливается в
каталоги /Ьin и /sbin);
• /tmp - каталог для временных файлов;
• /var - здесь хранится переменJiая информация. К такой относят базы
данных, почту, журналы и т.д.
Подробно о назначении каталогов и монтировании·мы поговорим позднее. А
пока вам нужно знать следующее.
Можно установить Linux на один большой раздел. Скажем, у вас есть жест­
кий диск (имя устройства /dev/sda), вы на нем создаете всего два раздела
- /dev/sdal и /dev/sda2. Первый будет занимать большую часть дискового
пространства, а второй будет размером несколько гигабайтов и использо­
ваться для подкачки (подробнее см. след. раздел).
В этом случае все эти каталоги (/home, /usr, /var) будут находиться на одном
разделе/диске. С одной стороны, ничего страшного, но правильнее будет.
разместить хотя бы каталоги /home и /var на отдельных разделах, а еще луч­
ше - на отдельных дисках или же организовать RАID-массив. Эти каталоги
содержат самое ценное - пользовательские данные, поэтому если они будут
все находиться на одном жестком диске и он выйдет со строя, приятного
будет мало.
Идеально иметь три жестких диска.
.,,,"'"'
.,,,"'
На первом жестком диске будет сама система и подкачка, на втором - поль­
зовательские данные (каталог /home), на третьем - каталог /var. Однако,
учитывая стоимость жестких дисков, такое расточительство можно себе
позволить, только если есть прямая необходимость. Если пользователи не
будут регистрироваться на сервере и тем более хранить на нем данные, то
нет смысла отводить отдельный жесткий диск под каталог /home. Пусть он
находится физически на том же диске, что и сама операционная система.
А вот каталог /var желательно разместить на отдельном жестком диске. Если
диск всего один, то хотя бы на отдельном разделе.
Даже если жесткий диск один, все равно имеет смысл создавать отдельные
разделы под системные точки монтирования. Ведь это позволяет на каждом
разделе использовать свою файловую систему. Для корневой файловой
системы, например, можно использовать файловую систему ReiserFS.
Изюминка этой файловой системы в том, что в одном блоке может быть
•
-----------------------------------------------------------------------------------·
J I,IН,I
2 �4.• 1 illlCtl\h'.:.I 4.'11(' 1 ('\11,1
несколько небольших файлов. Например, если размер блока равен 4 Кб, то в
нем может поместиться 4 файла по 1 Кб или 2 файла по 2 Кб. Такая файловая
система идеально подходит для корневой/, где много файлов конфигурации
- все они текстовые, и многие из них имеют небольшой размер. Так дис­
ковое пространство будет расходоваться экономнее.
А вот для каталога /var, где нужна высокая производительность, лучше ис­
пользовать XFS. Это высокопроизводительная файловая система, рассчи­
танная на большие носители и большие размеры файлов. В общем, если на­
думаете развернуть Oracle-cepвep - это правильный выбор.
Все сказанное ранее - хорошо для сервера. Для домашнего компьютера или
для рабочей станции можно использовать два раздела - один для корневой
файловой системы (которая будет содержать и данные, и программы), а вто­
рой - для подкачки.
2.5.3. Раздел подкачки
В отличие от Windows, Linux использует не файnь1, а
разделы подкачки. В принципе, если размера раздела
подкачки будет недостаточно, то можно создать и файл
подкачки, но правильнее создавать именно раздел - так
производительность будет выше.
Теперь о размере раздела подкачки. Если оперативной памяти достаточно
(например, 8 Гб или больше), тогда раздела подкачки в 8 Гб будет вполне
достаточно (размер раздела подкачки равен размеру ОЗУ).
Если оперативной памяти мало, например 4 Гб или меньше, тогда размер
раздела подкачки должен в 2 раза превышать размер оперативной памяти, то
есть 8 Гб будет достаточно. Увеличивать раздел подкачки больше не имеет
смысла - ведь производительность от этого выше не станет. Назначение
раздела подкачки - продолжение работы системы любой ценой. Когда за­
канчивается оперативная память, сервер должен продолжить работу, хоть и
за счет потери производительности (жестким дискам далеко до производи­
тельности оперативной памяти). При небольшом объеме ОЗУ лучший тю­
нинг производительности - дополнительный модуль оперативной памяти .
•
·-----------------------------------------------------------------------------------
lkcl, l.i1HI\
Когда оперативной памяти много, иногда возникает соблазн вообще отка­
заться от раздела подкачки. Этого не нужно делать. Если оперативной па­
мяти не хватит, возможны неприятные ситуации. При современных объемах
жесткого диска потеря 8-16 Гб дискового пространства (под раздел подкач­
ки) никак не отразится на работе всего сервера. Конечно, как уже было от­
мечено, в процессе работы системы можно создать и файл подкачки, но его
производительность, как показывает практика, ниже, чем производитель­
ность раздела подкачки.
::1
]""
2.5.4. Как правильно разбивать жесткий диск?
;;:
;:
Правильная разметка жесткого диска выглядит так:
• Для самой системы (точка монтирования /) будет достаточно всего 15 Гб
дискового пространства, если не хотите жадничать, можно выделить 20
Гб, но не более.
• Размер раздела подкачки должен быть равен размеру оперативной памяти
или превышать его в два раза.
• Разделы должны быть созданы исходя из выполняемых сервером функ­
ций. Об этом мы уже говорили.
Неправильная разметка чревата тем, что придется изменять конфигурацию
диска уже в процессе работы сервера, а это чревато только одним простоем. Потом вам придется выбирать - или не спать какую-то ночь, или
же получать недовольные звонки от пользователей и/или начальства - если
придется перенастраивать сервер в рабочее время.
2.5.5. Ручная разметка в Ubuntu
Если вы не планируете использовать целевой компьютер для других опе­
рационных систем, можете вь1брать вариант Стереть диск и установить
Ubuntu (рис. 2.8). Идеальный выбор для нового домашнего/персонального
компьютера.
•
-----------------------------------------------------------------------------------·
1 1,11<,12 �ClalIOHh:a CIICll'\11,1
Рис. 2.8. Тип установки
Если же Linux будет использоваться вместе с другой операционной систе­
мой или же вы производите настройку сервера, где нужно создать отдельные
разделы для разных точек монтирования, нужно выбрать Создание разде­
лов вручную.
Рис. 2.9. Начало ручной разметки диска
·---------------------------------------------------------------------------------818
I\" 1, 1 illll\
Инсталлятор UЪuntu довольно удобен для ручной разметки диска.
На рис. 2.9 показано, что жесткий диск абсолютно новый и на нем еще не
была создана таблица разделов.
Для ее создания нажмите кнопку Новая таблица разделов (если она уже
создана, то кнопка не будет активной). В появившемся окне нажмите кнопку
Продолжить для подтверждения.
После этого вы увидите, что у вас появилось свободное место (рис. 2.10).
Нажмите кнопку + для создания нового раздела. Введите размер создавае­
мого раздела, выберите точку монтирования и файловую систему (рис. 2.11).
С1о6од-...«10
УпроА(Тtо
1 ...
2141Г6
2141П5
+
Устро�<Тао для устс1ноsк11 эс1rруэ11ик11
.......•...
Рис. 2.10. После создания таблицы разделов
•
1118---------------------------------------------------------------------------------·
1 1.1в 1 ' �,·1а11шн"а ,·1н·1t.·,11.1
�
u
Рис. 2.11. Создание нового раздела
Здесь мы создаем раздел размером около 19 Гб для точки монтирования/,
файловая система - ext4. На этом разделе будет содержаться и сама систе­
ма, и данные пользователя.
Затем снова щелкните на свободном пространстве и снова нажмите+.
•
Рис. 2.12. Создание раздела подкачки
··--------------------------------------------------------------------------------8111
lk", l.ini1x
Теперь нужно создать раздел подкачки, как показано на рис. 2.12. Аналогич­
ным образом нужно создать раздел для точки монтирования /Ьооt (файловая
система ext4)- на нем будут храниться файлы загрузчика и ядра.
Созданная схема разметки изображена на рис. 2.13.
Нажмите кнопку Следующая, а затем - Установить для начала установки
системы.
,•_
СIО6оДt10f:,..КТО
"'
"'"
@ "'''
1о1 ..,..,
1о1
1о1
L'.I
L'.I
L'.I
c,o6oдt-Oi!',.,!Xl"t>
+
,w,.,......,......... o,c,_8QU'Pf"""I••
sd• vмw,rt V11tu.al s vмw.rt, !21.-47 п,J
Пpt.i:�•
..........
,,..,,,,...
Рис. 2.13. Разметка завершена
2.5.6. Ручная разметка в Astra Linux
Менеджер установки в Astra Linux такой же, как в Debian.
Debian - неплохой дистрибутив, но у него самый неудобный для разметки
диска установщик. Наверное, над ним работали профессионалы по самым
неудобным GUI. И у них это получилось!
Хорошо, если вы настраиваете персональный компьютер, на котором не бу­
дет никаких друтих операционных систем.,Тогда можно выбрать вариант
Авто - использовать весь диск и не заморачиваться (рис. 2.14).
•
llllt---------------------------------------------------------------------------------·
1 1,\В,1 �
� ..·1а1ннн�а t'llt'H'\lbl
�:��мl: :�:•:.н��:�:•��:ч::�=:•,:;�: м��:,,м::::,:: :нl���:��� ,�:���н��•�:��:11��•':!/:с1
р11но 6JAIT IOJICIIЦIOCT!. ПOIU nос№тр1т�. 11 ПOAl"IPIIMT!. р11уn�.т,т.
1
с
1
11
Ecn11 1w6p11i. нс nоn•1011нм, мнструN1нt1 7nр11n1ни11 р,11"11011 1c1ro д11с11, то nn11 "' nonpocttт ук111т• нyaнlill
ДНСI.
lfltOA ра.н.rки:
Alto -мсnоn•1011т• 11с• диск и н1строить LVМ
Allтo -нсnоnь1011ть IICb АИСI С IIIIIITH� nр106р11011нм1н "' LVM
Вручну•
'----------...-,-=----------------·
j 04ннок 11р1на//
' Вtрнутьс11
сnр11к1
Рис. 2.14. Разметка в Astra Linux
11 "'OДOIW!fb 1
В противном случае выбираем Вручную. Далее выбираем ваш жесткий диск
и нажимаем кнопку Продолжить (рис. 2.15).
P11,_1'1f8 AJIClfOI
Лlp•II •� CIIIКo« н.сrро._ fnJ11,e/JN • •1t точк W:ЖT"fI08�11. IAINp•r• ра,11м. .,ro&I •:ьенмr• ero �c,poliкlf
{тlfil фWIOeoi. сж:rе� ro•1 монr•роеаж,11 lf rм, Aa/lH}, с10601fЖН lfКto, .,,o6w coэ,111ri. нo1wl р1э,R111, ycrfННkreo, что6w co1,111r• н1 нМ -1• та&wцу р13Д81Ю1.
1
Автонатнчес1111 р13"111
Настроить тома !SCSI
отмен111ь11,мен1н1111раtдll\01
Э81ончмт� р1,мет1у 11 '8ПНС1ТЬ M]Мl!HtHHII на АИСI
1 01ннок ••рана\ 1
сnр11к1
J
j
Сnр11к1
Рис. 2.15. Выберите жесткий диск и на:нсмите кнопку "Продолжить"
·-----------------------------------------------------------------------------------
Н, с,. 1 i,111,
Создай'I'е новую таблицу разделов (рис. 2.16). Затем выделите свободное
место (как показано на рис. 2.17) и снова нажмите кнопку Продолжить.
,.,....тr, AМCICOI
f�вw �раnи р11нет1еу 1ctro дмск1 Есnм tw сt11час nродоммт,. то 6уд1т со1д1н1 но1а11 т16n1щ1 р11дmо1 и 1с1
cy•ecт■yllll!l,ИI p11д1nw 6удут уничто•1н1,1.
1'1и.-ч1н111. nрн ••ntним 11,1 сме1•1те отмtмм,1, атм н1нен1ни11.
Со.Jдат• Жllflf пупу• rа6пнцу р11дмо1 на ,тон ycтpoicr111
j Сни№к 1кранi1] [ справка
[ 811рнут1ос11
11 �одоnамт1о
Р11с. 2.16. Новая табл11царазделов
г.-;::;;::-;;�
�
ОЛfРАЦИОt-lНАЯ СИСТЕМА ОбЩЕfОНАЗНАЧЕНИЯ
A<.TAALltJIJXCOMMONfDJТtON
П.ред BI* спнсок насrроеюшх ра,деrюв" нх то1.1н ,юнтнрованм11.8№1рнт1 раздел. "IT06w н1иеюн1, его насrродки
(тнп файпово/f снстещ точку нtЖrнрованнff н так д;,пее), сво6одно1 иесто, 111061,1 со:,µт& ж,1.М разд,п, нпн
ycrpoдcr■o, чro6w со1д1r• н. нlи на.у• r•Апнцу paэдe/lQI.
AIJTOl'WITИЧICICIII ра,метка
1-/icтpoiiкa nporpa-oro RAID
Н..СJройка �н,д..tра лоrическм• томов fLVMJ
настроить31-.итно, пр106ра3011ание AПII тока
настроитьтома ISCSI
v SCSIЗЗ (О,0,0) (sda) • 32.2 GB vмware, vмware Vlrtual S
�
n�p&nor
ЗZ:�GB
СВОfjфНОЕ IECTO
ОтменИТЬИ3Мl!Нl!НИ11р1JДМО8
закончитьраэметку и,1писатьи3менени11на дмск
L_
[енимок Jкрана 1 (
О1ра11ка
1j
сnрввка
Рис. 2.17. Выберите свободное Jltecmo II на:нсJ11111пе кнопку "Продолжить"
•
....................................................................................
В появившемся меню (рис. 2.18) выберите команду Создать новый раздел
и снова нажмите сами знаете какую кнопку. Нужно будет ввести размер раз­
дела (рис. 2.19), выбрать его, тип (первичный/логический), расположение
(начало/конец), далее появится возможность установить другие параметры
раздела (рис. 2.20). Вы можете изменить точку монтирования, параметры
монтирования, метку и т.д. Параметр Использовать как позволяет изме­
нить файловую систему раздела.
bT0"'8fM'ltCICM р11метмто, с1060А1101 NICTO
Гl,l(lllfO, r101о111тр111О Ai!CKI !c.+IISI
Рис. 2.18. Разметка диска
NIIКC1tМilJ0,1tl,-1 p8'1Wp Aflll Jtoro ptJ_ц.t!I р11111 32.208.
н.11"1кr11106w11A11•мa•c11-11Wp11мepмoaнo11tct11"m..._•• ,,1ue-oJ8ANlt•npoц.11т1I01 1111чt1111t
(н1nрм•р,"20%"),которо1 сщщ11тс11 от N8Jtt!"8fll,11oro р11мtр1
Нo-..lp'114ppl1Aflll"
•
Рис. 2.19. РазJ11ер создаваемого раздела
....................................................................................
lkc1, l,illll\
a.,i IIIIWIUltтt PIJl811 '1Ht ,с,роQст11 SCSl33(0,0,0){ICI� Н1 IТОМ Pll,1181\t HI HlilДIIIO ♦•h- �СТIМ.
НКTpohlf fnlJltм:
Точка
1t1111п1ро11111111:
Гllpl"'8Tp1,1№HTIIPOIIIIIIII
dtfМJ�
061,NHOI 11cnon�101111111:
ПIIIAIPT
3'p8'tpl11p0ttllllWII 6/IOKII
МITKI ·11rp,1011нw1�
отс,тст,,,,.
15,-.
У1аn11н, p1J111n
Нlстройор11.о.еn11а,сонц1н1
Рис. 2.20. Настройка раздела
Изменение происходит путем выделения нужного параметра и нажатия
кнопки Продолжить. Когда все будет готово, используйте команду
Настройка раздела закончена. Аналогичным образом создайте раздел
подкачки (рис. 2.21) и раздел для точки монтирования /Ьооt (файловая систе­
ма ext4, размер 300-500 Мб).
� ,�
�
ОПfРД.ЦИОН1«11(ИСНЦАОЫЦ[ГОНА11iАЧf><IIЯ
A'>IRAUNU)l(OMMON[OIПON
"'
PtlМITltl АМСОI
JIJpмan11pJ1№11♦1Wlo11,ic11cтeмiaEx\4
lyplllЛllflJl"11 ♦1WJ01111CMCтtNI &\3
ФIЙIIOBIIICMCТINIExt2
lypн11111pJt№11♦1W101111cмc11М11t:,1rts
IJрнаnинеи�а11 ♦1К1'101111 сметена JFS
IJPIIIIIMPJl№II♦1MOIIII CIICTIICII XfS
Ф,W1ов111 CMCTt№
FATHJ
ФаМ/101а11систе"8 FАП2
i♦и�мw1скмilтондn1111аитноrоnр106ра�о11нн11
i+111м111c•мilтoм11n11RAJO
1 ♦мамчес.к"� том дn11 LV"4
jllfll(.ПOlll>J0IITl>pHAef'I
L
!0иtмокмр1и1l(=-:.§11к1!�
Рис. 2.21. Выбор файловой системы для раздела подкачки
•
---------------------------············-··-·············-···---······--··--···---·-·
J 1,\В,1 2 �Cl:\IHН\h:a t'IICH'\11,1
Когда все будет готово, используйте команду Закончить разметку и запи­
сать изменения на диск. На следующем экране нужно согласиться с форма­
тированием разделов (рис. 2.23;). Средство разметки диска очень неудобное,
но и к нему можно привыкнуть.
.....
u
<,
ft11Mtтl'8 AMCIIOI
_,lff'N_lf "
п,р,11 ,,..... Cffll(o« н1сrрое1Жш р1J111м1 н 1111 rоч,11 ионrнро,-11.�1р;,т1 р1Jд111,что61,111,,,.Н1tt• ,ro н,ст!)Оlk11
(TWI ,ипс.о.� CHCТl/ol,( ,_,
fl.(' /f8flll), Clo&iRНH ,-нто, чrOl!w COJAJt• НOlwf plJJltlf, Wllf
1cтrюllcr10, что61.1 со,д,,., н, нlн но1у11 т,dпнцу р11дмо1.
�Н1тмч1ск11,р11нетк1
Нlстроl1к1нен111,1С1р1nоrич1скм1тома1(lvt.l)
Нlстро•н� 11t,.11тно1nр106разо11нн1 111111 то№■
Нlстромт� тома ISCSI
v SCSl33 (О.О.О) (ldl) - 32.2 GB VМ.are, VNwatl Vi�&I S
11 n1р1мчн
2t.2GB
"2
n1р1м1111
399.SlrdB
113 nер1ичн
36GB
I
exw
,tюot
I nowc
О'тнен1н� мэ""н1м1111 раздело■
Ell§Iiiiiiildliili&: 1613
�11�1кр1"•
11 сnраво ] ( �
Рис. 2.22. Готовая разметка
,..
� �
�
",.
оnЕРЩКОННАЯ(V.СПМА0БЩЕf0Н"3НдЧЕНЩI
.....,яAUNUX[OMMONfDIJIOr,
Р11н.тr1 AMCll:01
Е<:nн 1111npoAO(laltт1.ro 1оне..енн11.nер1ц1к11,ннwt нu,,6уА)'т J81'1HtilHW на AIICICll."'1M и 11,1 мо•етt сдtnан, 1ct
н1Н1н1ння1ручну�о
,
110 .
м1мен,нw та6nмцw pa1At 1
НI���
{o���gi1\'.;:,j•
_
сn,�:н�
=���е;�т����.�,��tо:��Щ(,-,,1 KIIC «к\(
р.111дм nна устроliст1, SCSl:S:I {0,0,О) (lda) как .w
р11дел fS н1 устроliствt scs,:,3 (0.0,0) (lda) ок под.к
""'"'
,.""
"
u
•
,
l)loДOIWITlo
Рис. 2.23. Подтверждаем изменения
................................................................................. ..
lk, 1, 1 illll\
2.6. Установка пароля администратора
Раньше при установке Linux предлагалось создать пароль пользователя
root - пользователя с максимальными правами - и создать обычного поль­
зователя.
Сейчас же дистрибутивы отошли от использования пользователя root по со­
ображениям безопасности, а э'та учетная запись часто оказывается заблоки­
рованной. Делается это по понятной причине - имя root знают все, поэтому
злоумышленнику нужно подобрать только один параметр - пароль, а если
он не будет знать имя пользователя, то придется угадывать еще и логин, что
усложняет задачу.
Современные дистрибутивы предлагают создать так называемого админи­
стративного пользователя - пользователя, которому разрешено выполнять
команду sudo для получения максимальных полномочий. Это и безопасно, и
удобно для самого пользователя -:-- ему нужно помнить один пароль, а не два
(пользователя root и обычного пользователя).
При создании административного пользователя (рис. 2.24) вь1 задаете имя
пользователя и его пароль. UЬuntu допускает использование слабого пароля:
если пароль является слабым для подбора, инсталлятор просто сообщает об
этом. А вот Astra Linux не позволяет использовать пустые пароли - пароль
должен быть минимум 8 символов и содержать хотя бы буквы с цифрами.
Рис. 2.24. Создание пользователя в Ubuntu
....................................................................................
1
l,IB,I -i
.'
�,
.. 1 :111в1н�а t IH.' 1 (.'\11,1
ХорО111а n,pon� l'lfltl(Тlll'lflef мt с,611 см.с� &Jltl, цм♦р II IHIKOI nptn14НIHHfl, 11 АМUН nlpllOAIIЧICl(II мtllflf�CII.
вн.,,r, napo/11, 1t1• _о,о
1..........
�,,,.,,р•:
�011р11, np11iw1W4ocт1111011,1 ocr.-cтan11trc11 IIJftMnotтopмoro 11011,1 n19on1111 ср111111111• р11rn�Т1то1
.
.....,. ,,.,,,,,. ... ,,.J:.
j........мi
Рис. 2.25. Простые пароли в Astra Linux использовать нельзя
Также обратите внимание на параметр Входить в систему автоматически
(UЬuntu). Он позволяет не вводить пароль при входе в систему, что хорошо
для домашних компьютеров. В Astra Linux подобный параметр доступен
после установки системы - он называется Включить автологин в графи­
ческую сессию (рис. 2.26). В следующей главе будет показано , как вклю­
чить/выключить автовход уже после установки системы.
�оn,111111,м�""' 11,crpoi1t11 ос
·-•r• Ofкn.r,1111� llfOМlttlЧICMJ•111c1po�y CITM.
ДМ.-t--lf«TP,,l«IIOC
□ Вi:n-т�6noopo11(Jl(OHC011M
О вкn"11,� 6nок11ро1кr 11Нтtрnрt11торо1
0 llкn_..111� NUClтtlOii )Крlн ufw
О lkn"111� с11с11�.. оrр1н""•""• ulimlts
О Oan"111� IOl№AНOCT� 1р1сснро1к11 ptrac,
О З.пр1тм1� rc11нotкr 61111 мсnо,ж1н1111
0 C11c11�wt WICWfCTIHOIПIHWHI мtстноt lplllll
0 о,,v�..мт� IIТOМITIIЧtCKJII HICTpOii•r Ctfll
1
О rстtно1мr� 32·• 6мrнr,iii ,,rpy1w11к
•
�IUCIK 1кр111111 _Сnр,1к1
]
Рис. 2.26. Включение автовхода в Astra Linux
·----------------------------------------------------------------·-----------·-----
..с.
lkc1, 1 illll\
2.7. Параметры программного обеспечения
В Astra Linux позволяют выбрать наборы программного обеспечения (рис.
2.27). В принципе любой пакет можно доустановить после установки систе­
мы, но при желании вы можете сразу выбрать нужную группу. Опять-таки,
если вы заботитесь о дисковом пространстве, лучше не устанавливать гото­
вые наборы, а установить только те пакеты, которые вам нужны. Некоторые,
например Игры, можно сразу отключать - вы ими не будете пользоваться.
�•1�
��
ОllЕРАЦИОННАЯ СИСТЕМА OliЩEfO НдЗН.t. H:H�HI
A!>fRAtiNt.lXCOMMUNtOIIION
Bw6op nроrремммоrо 06tсnеч,нм11
В данн�.й НО"41НТ устаноВ!lене тмько осно1а снстенw. ис1ор,я и, еа.мх nот р,6носте11, но•ет, •�рать один м боле, м,
rотоеwхна 6оров n роrра14+!оrоо61сnеч1ни11.
�ернr, устанамива,,,.,, nporpa-o, 06еспеч11нне:
� Рабочнll стоп Ау
@ Грмло•енм11 д1111 ар ботw с ес нсорн� 1к ранон
R:I Иrpw
R) Средства работw в 1-\tтернет
0о+иснwесредства
о СУ6Ц
О Средства удаленного доступа SSН
О Cp11!ACtaa &.ртуаnизацнм
О Средст11 разрабопсм и отnар,ки
0 Средства Нуnьтннедна
1 Снннок )Крана 11
Справка
�одоnDп•
Рис. 2.27. Доступные по умолчанию наборы ПО
В UЬuntu ничего такого нет. При установке можно выбрать только обыч­
ную или минимальную установку, а также выбрать обновление ПО во время
установки и опцию установки стороннего ПО. Рекомендую включить этот
переключатель (рис. 2.28), чтобы сразу у вас заработали мультимедиафор­
маты. Кодеки нельзя по условиям лицензии распространять вместе с Linux,
но их можно установить посл� установки системы (бесплатно). Этот пере­
ключатель как раз и производит данную устано�ку.
•
-----·---·--·------------------··-----------·---------·---·---··--·----------------·
1 _,а�ы 2 Ус I аноиt.:а сне I с\11,1
"
fa YCТl'tOSU 11роrр,,ц.,.,юrо oбt<l!E'Чtlo,111 (Торо,!11�• npCЖJ8CДl1Tflle>I дл11rР<1Ф1•,1111 WH1 OOOj))'дONi◄i\.11
... ,, --·--·.,,�-
----••)_,, __ ..,_...,.,,....,...•,_,-~· __
... ,_....
11 3�fP')')i11ьll'f(Ta'fOIIМТ'l>l10Дl!IL'i))I.')' AOfJOl'H'11t,,�..ы•..w.1»<�TOtl
....... ___ $
..-;,,,,,.,,.,._,_____ ,.,,,.••_ •..,,.,
........ ...,......._ ....
�--·--...-·
Рис. 2.28. Настройки ПО в Ubuntu
--
Сразу после установки Ubuntu предложит вам доустановить необходимые
программы (рис. 2.29). Вы можете сделать это сразу, а можете по мере не­
обходимости.
...�
.....
m
Всё готово к р•ботеl
а -�
-
Vou�UWЩ(ft(,er(Vimt,l.pps��tnt,,r-
)(1
""'
•
�
""'
�
-·�
•
"'
!Jtw1rd"1
OpмAppC.-nm-
•
с.
о;
с.
= .,_ ""' ""',............
=- ""'"""
,...м,,�оn
ее\
""""""'
•
-- о..... еэ DJ
->.netooclstudio
i5.
:::
Рис. 2.29. Предло:нсение уста11ови111ь некоторые программы
·-----------------------------------------------------------··--··--------·-------
"'
"
...
1 \с l 1, ( j 1111 \
2.8. Установка загрузчика
UЬuntu устанавливается проще. По сути, самое сложное - это разметка дис­
ка. Но в Astra Linux нужно еще выбрать, куда устанавливать загрузчик Linux.
Обычно его нужно установить в /dev/sda. Но если у вас есть уже друтая опе­
рационная система и вы хотите загружать Linux не с помощью родного
загрузчика GRUB2, а посредством стороннего загрузчика, тогда нужно или
установить загрузчик в друтое место, или же не устанавливать его вов·се.
�-�
�
ОПЕРАЦИОННАЯ СИ{.JfMA ОЬЩНО НАЗНАЧЕНИЯ
A'>TRAIIHUXC::OMMnN[l)lllt)N
YCTIHOIICI смстеНноrо 11rpJIЧMICI ORUB HI •lсн:мА AMCI(
�..8Ло ереНА н1учмт1о тоn1око что устаноаленну�о систему s1гру•ат1ос11.Дnя 1тоrо на aarpysoчнot устройстао 6JАет
устаноеnен систе�� s1rруsчик GRUВ. 06i.,.iнo он уст1на1лмвается а rлаану�о эагрr1очну111 эапись �ВR. Masl•Вooe
Record)nep1oro •iсткого дмск1.�м •.,,,ним но.но усаноамте GRUBв л1116ое другое "'8сто на дмске.лм6о н1 другом
д,иск.nм6о 1006•• на д,искету.
Усrройстsо Rnlf усr,жоекм снст,�оrо ааrруsчнк,:
Ук111н, устроl!стао еручну�о
,
jI
1 СНмнок 1кран1
сnра1к1
Рис. 2.30. Выбор устройства для установки загрузчика
Мы рассмотрели все основные моменты, на которые нужно обратить внима­
ние при установке Linux, В следующей главе мы поговорим о входе в систе­
му и о завершении работы.
•
-----------------------------------------------------------------------------------·
Глава 3.
ВХОД В СИСТЕМУ
л •
https://t.me/it_boooks/2
lk,ь l.iпux
В этой небольшой главе мы рассмотрим вход в систему, основные элементы
графического интерфейса, а также правильное завершение работы в системе.
3.1. Вход в консоль и переключение между
Вход в систему Linux ничем не отличается от входа в любую другую опе­
рационную систему. Нужно ввести имя пользователя и пароль. Вход может
быть как в текстовом, так и в графическом режиме. На сервере графический
интерфейс, как правило, не устанавливается, чтобы не расходовать драго­
ценные системные ресурсы на никому не нужный графический интерфейс.
На рис. 3 .1 изображен вход в Astra Linux. На рис. 3 .2 изображен графический
вход в Astra Linux.
Рис. 3.1. Вход в систе.му (Astra Linux)
•
------------------------·-·-···--···-········-········-···-····-···-···-····-···-···
1 l,IB,1 �
Вхо,1 11 CIIC lt'\I�
Рис. 3.2. Графический вход (Astra Linux)
Давайте разберемся, что есть что,
Самая первая строка (рис. 3.1)-название и версия дистрибутива. Далее вы­
водится имя терминала, на котором вы сейчас находитесь (ttyl). Некоторые
другие дистрибутивы еще сообщают версию ядра и архитектуру системы.
Здесь разработчики посчитали лишним вывод этой информации.
Далее нужно ввести логин (в нашем случае root) и пароль. Обратите внима­
ние, что пароль не отображается при вводе, не отображаются даже звездоч­
ки. В графическом режиме вместо введенных символов могут отображаться
звездочки или точки.
После входа в систему вы увидите или приглашение командной строки, или
графический интерфейс. В первом случае приглашение будет иметь вид #
(если вы вошли как root) или$ (если вы вошли как обычный пользователь).
Перед приглашением командной строки выводится время и дата последнего
входа в систему, а также терминал, на котором был осуществлен вход (в на­
шем случае - ttyl). Значение :О означает, что последний вход был в графи­
ческом режиме.
•
·-----------------------------------------------------------------------------------
С­
,:;
l!cc,
1 i1111,
Строка You have mail означает, что у вас есть новые сообщения электронной
почты. Для их чтения нужно или использовать какую-то почтовую 'програм­
му, настроенную на чтение системных сообщений e-mail, или же команду
mail. Для переключения между терминалами используются комбинации кла­
виш Alt + Fl ... Alt + Fб. Комбинация клавиш Alt + F7 переключит вас из
консоли в графический режим, если система Х11 запущена.
Находясь в графическом режиме, вы можете нажать комбинацию клавиш
Ctrl+ Alt + Fn, где п - это число от 1 до 6 для переключения на нужную вам
консоль.
Функционал экрана входа в систему отличается в зависимости от дистри­
бутива - здесь все на усмотрение разработчиков. В UЬun tu он минимали­
стичен: выводятся только имена пользователей, после выбора пользователя
можно будет ввести пароль и войти в систему. Из полезных «фич» - только
смена раскладки клавиатуры (рис. 3.3)..
• АнrлиА ская (.1мермк11нск11я) en
Русск.вя
ru
-•
-•
"".,
.,,,,.,
ubuntu0
Рис. З.З. Вход в систему (Ubuntu)
В Astra Linux можно выбрать,тип сессии (рис. 3.4), а также открыть меню
(рис. 3.5), в котором будут полезные команды" такие как переключение на
консоль (на случай, если вы не знаете ничего о комбинации Ctrl + Alt + Fl),
вызов экранной клавиатуры, перезапуск Х-сервера и команда выключения
системы .
•
-----------------------------------------------------------------------------------·
1 1,IВа 1
Вхо 1 11 Cllt" 1 t'\I�
Рис. 3.4. Выбор типа сеанса (Astra Linux)
Перезапустить графический вход
Alt+E
Виртуальная клавиатура
Alt+K
Alt+N
Рис. 3.5. Меню входа в систему (Astra Linux)
·-----···-···--···-····-···-········-·······--········-···-···-···--········-···-·--
lkt:1, \,irшx
3.2. Основные элементы графического
интерфейса
Вы вошли в систему, но что делать дальше? Для бывшего Windоws­
пользователя слегка непривычно. Далее мы рассмотрим основные элементы
интерфейса пользователя UЬuntu и Astra Linux.
3.2.1. Интерфейс Ubuntu
По умолчанию в UЬuntu установлена графическая среда GNONE. Интер­
фейс минималистичен. Ничего лишнего.
Слева выводится панель, на которую можно поместить кнопки вызова часто
используемых приложений (рис. 3.6), - она называется панелью прило­
жений.
Рис. 3.6. Рабочий стол Ubuntu 23.10
В самом низу этой панели есть кнопка, позволяющая открыть экран При­
ложения (рис. 3.7).
•
....................................................................................
1 1,IВ,1 , В\О 1 В CIICI t'\I�
!ii
i..l
Рис. 3. 7. Прш,ожения
Обратите внимание: по умолчанию этот экран отображает только популяр­
ные приложения (те, которые вы чаще всего использовали), и может пока­
заться, что приложений очень мало. На самом деле зто не так. Перейдите на
вкладку Все (внизу экрана) и вы увидите все установленные приложения.
Поле Найти вверху экрана позволяет быстро найти то или иное приложение.
Чтобы добавить значок приложения на панель слева, просто _перетащите его
в нужную позицию или же щелкните по значку правой кнопкой мыши и вы­
берите команду Прикрепить к панели приложений. Аналогично, команда
Открепить удаляет этот значок с панели избранного - только щелкнуть
нужно на значке приложения на панели приложений.
По умолчанию на панели избранного находятся следующие приложения
(сверху вниз):
• браузер Firefox;
• почтовый клиент Thunderbird;
• файловый менеджер;
• текстовый процессор Writer;
•
• кнопка вызова справочной системы;
···············-·-···························-·······-·········-···----···········--
".,
с.
с.
�
l\,c 1,
1 illll\
• центр установки ПО UЬuntu Software;
• кнопка быстрого доступа к DVD;
• кнопка вызова Корзины.
Когда вы запускаете приложение, его значок также добавляется на панель
избранного. Другими словами, она исполняет рол_ь еще и панели задач, кото­
рую вы можете использовать для переключения между приложениями.
Запущенные приложения отмечаются кружочком слева от значка кнопки. На
рис. 3.8 показано, что запущены браузер, файловый менеджер и терминал
(средство для ввода команд).
• •. . • • • .•
• • •
�
об:�осту
�INIIII
до�у"tм1.,.
3.,rpy.t(M
l'lю(\iц•t"
.,.�
uu6ro""'
Рис. З.8. Демонстрация запущенных приложений
Существует несколько способов переключения между запущенными прило­
жениями:
1. Нажатие на кнопку приложения на панели избранного.
2. Комбинация клавиш Alt + ТаЬ, выводящая все запущенные приложения
(как в Windows).
•
3. Кнопка Обзор в верхнем левом углу экрана (рис. 3.9) - в новой версии
название Обзор заменили значком кнопки.
....................................................................................
1 тша I
Вхо,1 11 CIIC Н'\1�
Рис. 3.9. Экран "Обзор"
В верхнем правом углу экрана находятся довольно важные элементы графи­
ческого интерфейса: переключатель раскладки клавиатуры и меню, позво­
ляющее управлять сетью, звуком и завершением работы. Нажмите на него
(рис. 3.10).
о
.'. Проводное
-�· Ночной свет
........ ,.,............. ,
,,.,
•
ИR
<.!)
)
(I) Режим пи...
Сб,мансироо ...
() Темный стиль
,.,, ..............
Рис. 3.10. Системное меню
·---------------------------------------------------------------------------------tl!III
с.
".,
с.
�
Н<:ёl, l.itJUX
В верхней части меню находятся кнопки (слева направо) для создания
скриншота (рис. 3.11), кнопка вызова настроек, кнопка блокировки сеанса
и кнопка завершения работы. Под ними находится ползунок, позволяющий
регулировать громкость.
Далее расположены четыре больших кнопки:
1. Кнопка выбора соединения - позволяет выбрать другое подключение,
например, подключиться к другой Wi-Fi-ceти.
2. Кнопка выбора режима питания - выбор режима питания (не имеет
смысла, если у вас не ноутбук).
3. Ночной свет - активирует режим ночного света, делая изображение бо­
лее мягким, чтобы ночью ваши глаза меньше напрягались.
4. Темный стиль - переключает цвета интерфейса в темный стиль.
1
Рис. 3.11. Выделение фрагмента экрана
Для завершения работы нажмите кнопку с изображением значка питания.
Вы увидите меню завершения работы:
• Режим ожидания - переводит компьют,ер в ждущий режим для эконо­
мии электричества. Компьютер не завершает работу, приложения не
закрываются, но отключать его от питания нельзя, иначе все несохраненные изменения будут потеряны.
•
....................................................................................
1 1,IН,1 '
В\(11 11 t'IIC I t'\I�
• Перезапуск - перезаrружает компьютер (ранее эта команда бьша в
меню, вызываемом при завершении работы, сейчас перезапуск произво­
дится быстрее - без перех<Ща в дополнительное меню).
• Выключение - выключает питание компьютера.
• Выйти - производит выход пользователя из системы, но не выключает
компьютер. Если компьютер используется не только вами, данная коман­
да используется, когда вы закончили работу и готовы передать компьютер
другому пользователю.
Рис. 3.12. Завершение работы
Выберите команду Настройки. Сейчас «пройдемся» по наиболее полезным
настройкам графического интерфейса. Настроек очень много, но, учитывая,
что интерфейс достаточно качественно переведен на русский язык, не
составит особого труда разобраться со всеми ими самостоятельно. Однако
на некоторые следует обратить внимание.
В разделе Внешний вид можно изменить фон рабочего стола (рис. 3.13).
Кнопка Добавить изображение позволяет добавить в галерею пользова­
тельское изображение, если стандартные вам не нравятся.
r
·
1
: ПРИМЕЧАНИЕ. Много хороших (и, главное, бесплатных) обоев :
: можно найти по адресу https://unsplash.com/wallpapers. На этом :
1
1
:
: сайте вы найдете обои на любой вкус.
1
1
'----------�-----------------------------------------------------------------------.
lkc1, l.i1111,
""' (1) •••••••••
Рис. 3.13. Раздел "Внешний вид"
Раздел Внешний вид также позволяет выбрать модную нынче темную тему
оформления. Нужно отметить, что темная тема впервые появилась в UЬuntu
20.04, поэтому на сегодняшний день это не новинка.
��--:,о---,
A"QAЦ-Чotб"QQl)OU&���rv-.i�•aw'-1<4<"!дo,;1')11• -�1�1.п.-•�
-,n
31.дtра,11о,1(11-11� •PIIW
AIIO.-.Тll'tf'UI� мо�;,ро1�• :i..p.111
•�·-•«1'1''
�·"'� ...
}/JMp;,,(Q.STO,ЦT"'lt(J(Oil6noк'lf)Ofl011)o.l)'tt.ll
&.,...н.
,.,,,., __..:,о�
,__,
Рис. 3.14. Раздел "Блокировка экрана"
•
.......................................................·----.------··--------·--·····
\ 1,11\,1 1
B\fl 1 11 t'llt' 1 t'\I�
В разделе Конфиденциальность, Блокировка экрана можно настроить
или вовсе отключить блокировку экрана. Задержка выключения экрана в 5
минут просто раздражает - отвлекся, и экран уже потух и заблокировался,
после чего нужно вводить пароль заново.
Поэтому, если вы не страдаете паранойей, задержку выключения экрана
можно установить в 15 минут, остальные параметры оставьте без измене­
ния. Так будет комфортнее.
В разделе Конфиденциальность также находится раздел История файлов
и корзина. UЬuntu хранит историю использования файлов. Здесь можно за­
дать продолжительность хранения истории и очистить ее. Также здесь мож­
но очистить корзину и временные файлы, а также задать интервал автомати­
ческого удаления, который по умолчанию равен 30 дней.
Q
HlnJNIIП
Нсторм111♦1А.1101
1 81ue-t.ooth
ф 8ttt'Wl!Mk8мд
��=::-"l<JILМ
ИСТО9м1♦1А11о,м1tОf1ЖК11
. . , - :,м�ф,tlt,
1М' �l�J'f,ti<NI. ..OH)pwe�>Ч.IIOJll>IOM"•' )•1w,«tюp",11,1;,!I
tt ЦITl,)p� �,1 <.>6f!tNlt'! n.)..,� ф;,нr
��:������;'t
С)
CJ Pt6oчмйcтo11UЬuntu
1-IIЫiliill·MA
QJ MIIOfO)l,JИЧ,,oa1o
Кop:lfl!Цi 11 •�-11wt♦1111iw
1(� '1"
" Pt'"
olf,W,;,,....
'" f]Wс:,д"Р,••!ТЬ/1"�"1' """
.-.:,,._i,.,дf'>'.;)'Jn1,, ,1-�ф(JP,,,J<;•
..,�,,�t:"->t�д�rt�.o-,•т,.•4,Ji4-.,,u,.-i
....,_.. }.!...,.1..·1o,'»'),IAl"t<'..1><��""I0(1t.
=
!"
:2
;
·-----------
iп КонФМДttщ11111.ноtf1о
F.PiiiiiiiliiiдM
с.
Рис. 3.15. История файлов и корзина
Раздел Настройка экранов позволяет выбрать разрешение экрана монито­
ра, если разрешение по умолчанию выбрано неправильно (рис. 3.16).
•
....................................................................................
"'.,
с.
"'
Нс·с:1, l,i1111,
1280•800(1�!0}-,
,Qpo6,,oe-1«<wт16"pou11,,e,
���;,�·••"• ..•-;=�·,;,t� ""'"""('·,.,,,,,..-,_.,,,�t-:.:-c·•·
Рис. 3.16. Настройка экранов
Добавить дополнительные раскладки, а также изменить комбинацию кла­
виш для переключения языков можно в разделе Клавиатура (рис. 3.17).
......,,..
на-wu•и.,.
&,-..:;.,t�rp.кt,цд�l'>..IWe>'.Jl)'PWMNf:ro:iw&e0д-1.
n.-,.-и--••-...•
tlf,P'!"�""'":Ъ"C1"""'"�" flOO� ...,
..,,,;, O(\!Mбl,>!J<t"№ ,CN,t,,tw s�•SNC�
Эту .,.,..6,,,..�цмю "4•1'о.'<() >!J..�Mfl, fl 1'�<1!)(\111Э,� ...:;14�..а,,
.... Ul'>!!МШ.
11tnol!Ь3011,1'1'1,C80>\МCTOЧH>IKAl!�UJICД()roOll:ШI
IIНAtneцll&ll..,.W•-
Мtero..:..,'6<>.<:i ,..,.,.e�w.><-.i,>>!.JlflG�I:),.._ �C!'>GJll>!)>l"n�w.irypi.,
Рис. 3.17. Пара.метры клавиатуры
•
....................................................................................
Раздел Звук позволяет изменить параметры звука, например, задать выход­
ное устройство, изменить баланс и т.д. В разделе Дата и время можно
выбрать часовой пояс, установить дату и время. Разделы Сеть и Пользова­
тели будут рассмотрены в других главах этой книги.
3.2.2. Интерфейс Astra Linux
Интерфейс Astra Linux пытались максимально заточить под Windows.
Панель задач снизу, меню в стиле Пуск, только открьiвается окно не кнопкой
с логотипом Windows, а кнопкой с лого Astra (рис. 3.18). Бывшие Windоws­
пользователи оценят такое решение - для них такой интерфейс будет при­
вычнее интерфейса UЬuntu. Вот только выглядит он как Windows 98 - это в
2024 году, конечно же, недостаток.
Рис. 3.18. Рабочий стол и главное .11,еню Astra Linux
Рассмотрим содержимое панели задач. Первая кнопка открывает главное
меню, изображенное на рис. 3.18. Вторая кнопка - сворачивает все окна,
предоставляя доступ к рабочему столу. Третья запускает Менеджер файлов
(рис. 3.19).
•
....................................................................................
,,
::;
;:
:,
с.
с.
1::
ф
V
о о 0 с • - т li!J ... 111 6\
V
11 Аоtсум�тw
• 3.lr�•м
ёиd�1t11
• 3.lrруим
" 06щtAOCтynHwt
"'l'i6oЧIМCТOJIW
81'.бочий,tОIII
-;. 06щ.доnуnн�.н
)
1tc1КY..."weoao..
l'...IМCfOII..
• ,...111.icron,
) il CиCftMHt,,18 обом
7 61 Гli с806од..о
10 ._..._,.08
Рис. 3.19. Менеджер файлов
Снизу справа отображаются системные значки - менеджера сети, средства
проверки обновлений, менеджера внешних устройств хранения, регулятора
громкости, переключателя раскладки клавиатуры и средства вывода даты и
времени.
Все эти значки - интерактивные, то есть вы можете щелкнуть по значку
менеджера сети, чтобы отключиться от текущего соединения.
Если щелкнуть по нему правой кнопкой мыши, появится команда Изме­
нить соединения - для управления соединения. Нам понравилась команда
Включить поддержку сети, которая включает/выключает поддержку сети.
Она может понадобиться, если Wi-Fi-соединение неожиданно «отвалится»
- не перезагружать же компьютер из-за этого?
Щелчок по регулятору громкости открывает микшер громкости, позволяю­
щий регулировать громкость для динамиков и микрофонов.
Отдельный регулятор предусмотрен для звуковхведомлений (рис. 3.20) .
•
....................................................................................
1 1.11<.1 ,
...
ES1371/
ES1373/
...
ES1371/
ES1373/
Creative Labs
Creative Labs
Creative
Creative
СТS803/
СТS806
СТS803/
СТS806
Blasteг PCI))
Blaster PCI])
АналоговыR
стерю
Аналоговый
стерю
Н,(11 11 t·ш· 1 t·,1�
о
Звуки
уведоМ11ениR
СТ2518 (Audio СТ2518 (Audio
Р0б4V/
P064V/
128/5200/
128/5200/
СТ4810/
ti
[Sound
Рис. 3.20. Регулятор громкости
СТ4810/
(Sound
•
Много полезных утилит вы найдете в программных группах Утилиты и
Системные.
Так, здесь вы найдете:
• Терминал Fly - средство для ввода команд Linux.
• Политика безопасности - здесь можно добавлять. других пользовате­
лей Linux и изменять пароль уже имеющихся.
• Менеджеров пакетов Synaptic - используется для установки программ­
ного устройства.
• Менеджер устройств - позволяет просматривать имеющиеся в системе
устройства.
• Редактор разделов Gparted - графический редактор разметки, который
может использоваться для разметки жесткого диска, например, при под­
ключении нового жесткого диска.
• Запись 1S0-образа на USВ-носит�ль - название этой утилиты вполне
описывает ее назначение.
•
• Менеджер файлов МС - запускает двухпанельный менеджер файлов
Midnight Commander, очень популярный у Linuх-пользователей.
·------······-····-············-·····-··-····--···-··--··--··-·-···--··-········----
-',..
lkc:1, l,iпu,
Команда Завершение работы открывает меню, в
котором будут различные варианты завершения работы
- выключение, перезагрузка, сон, блокировка, выход,
гибернация.
Последний режим позволяет сохранить состояние компьютера. При следу­
ющей загрузке состояние компьютера будет восстановлено. Режим гиберна­
ции похож на режим сна, но поскольку состояние оперативной памяти будет
сохранено на жестком диске, вы можете выключить питание компьютера,
что никак не повлияет на состояние системы, в отличие от режима сна. Не
все компьютеры поддерживают режим гибернации, также для перехода в
этот режим нужно, чтобы на жестком диске было достаточно свободного
места - ведь нужно сохранить состояние оперативной памяти. Если в ва­
шем компьютере установлено 8 Гб оперативной памяти, то на жестком дис­
ке должно быть как минимум 8 Гб свободного пространства для перехода в
режим гибернации.
Откройте главное меню и выберите команду Панель управления. Откроет­
ся панель управления системой (рис. 3.21).
-N
-----------
�
"'~"'
IF
_,,,...
• -·- -·_,,..
"'
го�:--�
..
�
�
-�"'
о
СttКорнм -11'- �метрw OII.OИ
"-'ti.61.кrporo
....,,u
ир,�
Рис. 3.11. Панель управления
=-.,,,..
•
.........................._. ........................................................ .
J 1,11!,1 '
В\О I В t'IIC I t•\J�
Раздел Оформление Fly позволяет изменить оформление рабочего стола выбрать другие обои, настроить блокировку экрана, выбрать тему оформле­
ния, выбрать различные графические эффекты.
--•
-т
tt
0
:.
Рис. 3.22. Изменение оформления
Раздел Настройка монитора позволяет выбрать разрешение монитора (рис.
3.23).
[:]
•
Рис. 3.23. Выбор разрешения монитора
·----------------------,------------------------------------------------------------
lkc1, l.illll\
В разделе Безопасность вы найдете утилиту Политика безопасности,
позволяющую управлять учетными записями пользователями. Утилита
Изменить пароль позволяет сменить пароль текущего пользователя.
В разделе Система много чего интересного. Здесь вы найдете следующие
утилиты:
• Автозапуск - позволяет управлять автозапуском различных приложе­
ний GNОМЕ.
• Планировщик заданий - позволяет просматривать и управлять зада­
чами cron, что очень_удобно, к тому же подобных решений нет в других
дистрибутивах.
• Загрузчик GRUB2 - управляет параметрами загрузчика GRUB2 без
необходимости редактирования его файла конфигурации вручную.
• Инициализация системы - позволяет управлять системными служ­
бами.
..
СистtМН!IИ-
Прочм
a/16>Tepн•ntllel
...,,..��
�et4HWI
►!◄
"
+
Проwрк.11
o6WOIIJlt!I-IИA
�
AITONnyc:IC
111
..
�.
� ,
nмнировщи11,:
"""'"
�Гру)ЧИIС GRU82 Му11ьт111терNИНV1•.•
Q
Q
ИНМЦИМ\IU.1Ц1411
@
Д.П.аи�WI
f)
синхрон�ЦИJI
l!peMetilll
[1]
вход• сиаему
rz
ПриnОЖ.МК!IДМ
nino1фaA11oe
ь
м.м,джер IЧKITOI
s,,...ptx
-::,
Рис. 3.24. Раздел "Систе.111а"
•
....................................................................................
1 1.111.1 \
В\111 11 CIIC 1 ('\1�
3.3. Автоматический вход в систему
Если вы не страдаете паранойей, существует возможность настройки авто­
матического входа в систему. При этом система не будет запрашивать па­
роль, а будет обеспечивать вход выбранного пользователя в систему сразу
после загрузки. Для пользователя домашнего компьютера, который работает
в гордом одиночестве, это идеальный вариант. Конечно, если этому пользо­
вателю нечего скрывать от других членов семьи:)
Для настройки автоматического входа в Astra Linux выполните следующие
действия:
1. Откройте Панель управления.
2. Перейдите в раздел Система.
3. Вызовите утилиту Вход в систему.
4. Перейдите на вкладку Дополнительно, включите параметр Разрешить
автоматический вход _в систему.
5. Выберите пользователя, автоматический вход в систему которого нужно
обеспечить.
6. Нажмите кнопку Да.
7. Перезагрузите систему.
--
Внмм•н"'е!
"""·--·­
Прочитайте aiJNi•кy!
.. �TCll�""Jl.f!"
!j)!'�и,-..Aao,11•cмnN)'
o�pou�fSЧC
O�t•st
"
(1)�1"n.+о,сус,ц,11ОМ.о,u�
--
0Aat_,_A•OiA•aм:'fNyl'IOCМ(6ollX-u,pwpa
□ ,flPNl4",.. >-_,....;....,«°""
•
Рис. 3.25. Настройка автоматического входа в Astra Linux
··················································································--
"'с...,
с..
,.,
lkLI, l.i1111x
В UЬuntu нужно выполнить следующие операции:
1. Откройте экран Настройки.
2. Перейдите в раздел Пользователи.
3. Нажмите кнопку Разблокировать для разблокирования интерфейса
управления учетными записями.
4. Выберите пользователя, автоматический вход которого нужно обеспечить.
1
t
5. Включите параметр Автоматический вход.
6. Закройте окно Настройки.
7. Перезагрузите систему.
< обшиl<,IЮ("Туfl
п ....
ф nианме
О 1-!Итl)Ol'кf)l:l),JltO•
.......,,,..
0 МЬ11111,МС�О9Н1111'14Нt11Ь
.,
*
•
ПpМJIQIQНIIJI ПOY"'Q/l�ltlflO
ф QOJ('!e,,tt
Рис. 3.26. Настройка автоматического входа в Ubuntu
3.4. Завершение раб�пы из консоли
Ранее бьшо рассказано, как завершить работу в графическом режиме. Но
Linux поддерживает ряд команд, позволяющих завершить работу системы
------------------------------------------------------------------------------------·
J 1,IВ,1 '
В\111 В C\IC lt'\I�
из консоли. Данные команды вы можете как вводить вручную, так и исполь­
зовать в сценариях командной оболочки.
Для завершения работы в Linux используются следующие команды:
• poweroff - завершает работу системы Linux и отключает питание
компьютера;
• hal t - завершает работу системы, но не отключает питание;
t
с,;
• reboot - перезагружает систему;
• shutdown - обеспечивает более гибкое завершение работы.
При завершении работы (в том числе и при перезагрузке) производится
ряд очень важных действий, а именно синхронизация буферов ввода/выво­
да и размонтирование смонтированных файловых систем. Именно поэтому
очень важно правильно завершить работу системы.
Команда shutdown может не просто завершить работу
системы, а сделать это в указанное время.
Причем всем зарегистрированным в системе пользователям на их консоль
будет отправлено сообщение (определяется администратором) о необхо­
димости завершения работы или перезагрузки. Формат вызова команды
shutdown следующий:
shutdown [параметры] [время] [сообщение]
Пример вызова команды shutdown:
sudo shutdown -r now Вуе!
sudo shutdown -h 19:00
В первом случае система будет перезагружена (-r) моментально (время now), а всем пользователям будет отправлено сообщение «Буе!». Сообще­
ние необязательно, и вы можете его не указывать, что и продемонстрировано
на примере второй команды. Во втором случае работа системы будет завер-
•
....................................................................................
""'
с.
с.
lk, 1. 1 i1111,
шена (-h) в 19:00. Пользователи получат стандартное сообщение, что работа
системы будет завершена.
1
r
i ПРИМЕЧАНИЕ. Коман ды завершения работы требуют полно- i
1
: мочии- гооt, поэтому вводить их нужно через команду sudо.
:'
t ______________________________________________________________ J
Дополнительные параметры shutdown приведены в таблице 3.1.
Таблица 3.1. Параметры команды shutdown
Параметр
Описание
-Н (или --halt)
Завершает работу системы, питание.не отключается
-Р (или --powerojj)
Завершает работу системы, питание отключается
-r (или --reboot)
Перезагружает компьютер
-h
Аналогично --poweroff, то есть завершение работы с отключением питания
-k
Работа сuстемы не завершается, просто каждый
пользователь получит указанное сообщение
--no-wall
При завершении работы ·системы (в том числе
перезагрузке) пользователям не будут выводиться
сообщения
-с
Отменяет отложенное завершение работы (если
·вы передумали завершать работу или перезагружать систему, но при условии, что процесс завершения работы еще не начат)
�
о
:.,
"'..,
..
.
, .
········································································:·········
Глава 4.
СРАЗУ ПОСЛЕ УСТАНОВКИ
л •
lkc1, 1,iщп
Есть некоторые вещи, которые нужно настроить сразу после установки
системы. В прошлой главе мы разобрались, как войти в систему, как завер­
шить ее работу, как вызвать средства конфигурации системы. В этой главе
мы изменим под себя некоторые параметры системы и установим некоторое
важное программное обеспечение. Подробно об установке программ мы по­
говорим чуть позднее.
4.1. Проверяем и устанавливаем обновления
Очень важно поддерживать систему в актуальном состоянии. Если вы не
выбрали установку обновлений при установке системы или не вы устанав­
ливали систему, самое.время проверить наличие обновлений.
В Astra Linux щелкните по значку средства обновлений, откроется окно со
списком пакетов, требующих обновления. Нажмите Да, чтобы произвести
обновление системы.
g:;щ;;. ,.,
nн-,,,,i.�fi111(fJ�
Of«�(0.1"2..&иtr�•:,,0.\�81)
or.t«pi-suppgft-Ь.S..-..-nd6ol{0.1'2�<12-•0.1U,J.иa.t1J
tn1: 1111:�(J.7-0eКr,1-> J.9-48str.t1J
an,t��IIJм.1�1 •> ...
19.11.0-lиtr�
Of«���IU-1.нtr..->.._l:U•1-m)
Ol"llt���'4,1SЗ-1.мtrM->._1U-2.иa'eSJ
cnt.кrr1-t1i0Chmodll���ISЗ-1.МЬ.М•>-&.1U�tr.15)
ont��..-mdblt.._1s.3-t.J!SU»41•>4.1S�i.мtr•S)
or.tutr�..-mdbl(l.0.U•bl•>l.tl.l8,+o6)
oretиtr�(1.1.t.22•>8.f.2•,,1.I�
cntdltotl'lium:.lmcl6(76,.0.»0'll.100-I./IIU.Э->IO.OЗ987.P-1ИUil6J
j
cцtdlr�(76.CI.ЭIOt.lOl).l-,tr.i->80.Q.3087.17•1.CТ"'6)
o,.tdvomium-t10n:Jrl'ldbl(}ЫUIQ9.100-1.мtJ;a]->8a.o.30l7.17-1�1
OtScompa:,,u,ndll,l(bl-мtn2-u..tr-61
o,et.�{1.3J.1-tr
.. _l»J+o.Ь9ul+d202004141П1+.stJ.z)
cnl:a,ps:,wnd6,1{1.2.l-&ntr•7->U.l-&lstт111)
j
or.t�Q..1.t..a.str•7->U1.._,.,,11
�Г-:J
Рис. 4.1. Обновление системы в Astra Linux
•
....................................................................................
Г.1ава 4 CpaJ) 11ос.1с �сга1tовю1
В UЬuntu нажмите Alt + F2, в появившемся окне введите команду update­
manager. Откроется окно менеджера обновлений (рис. 4.2). Менеджер про­
изведет поиск обновлений и, ,если таковые будут найдены, предложит их
установить. Обычно обновления в UЬuntu устанавливаются автоматически,
поэтому при вызове менеджера вы можете часто увидеть картину, изобра­
женную на рис. 4.2. Она означает, что обновления уже установлены и для их
применения нужно перезагрузить компьютер.
обное.11енме nркложенмй
Для этого компьютера доступны обновления
программного обеспечения. Установить их сейчас?
> Сведения об обновлениях
зв.з МБ будет заrружено.
Рис. 4.2. Менеджер обновлений в Ubuntu
Нажмите кнопку Параметры (рис. 4.3), чтобы настроить периодичность
проверки обновлений. Если вы не хотите, чтобы система автоматически про­
веряла наличие обновлений, из списка Автоматически проверять наличие
обновлений выберите Никогда.
Рис. 4.3. Параметры обновле11ий по умолчанию
•
·---------------------------------------------------------------------------------81111
Если вы предпочитаете командную строку, то откройте терминал и введите
команду (для полного обновления системы):
sudo apt update && sud_o apt full-upgrade
4.2. Настройке Livepatch (только для Ubuntu)
Livepatch (или Canonical Livepatch Service) позволяет
пользователям Ubuntu применять критические исправления
ядра без перезагрузки.
Livepatch также помогает поддерживать безопасность вашей системы, при­
меняя обновления безопасности без перезагрузки системы.
Сервис бесплатный (до 3 компьютеров), и все, что вам нужно для его акти­
вации, - настроить учетную запись UЬuпtu.
4.3. Отключаем уведомления об ошибках
Для отключения оповещения об ошибках откройте экран Настройки, пе­
рейдите в раздел Конфиденциальность, затем - в раздел Диагностика,
для параметра Отправлять отчеты об ошибках в Canonical выберите зна­
чение Никогда.
Результат можно увидеть на рисунке 4.4.
•
....................................................................................
1 1,IВ,1 -f ( ра 1� llot·.1t• �t· 1 :llltllll<II
1 рс��....
-1, r.:.;�• )·...•.!"
, ,�.-·· ut,�,,t,
,..
�' �..-р_-,.....,.- ..,.,, ':'�-D-( �
Рис. 4.4. Отключаем уведо.11шения об о,иибках
4.4. Настраиваем почтовый клиент
На панели задач UЬuntu есть кнопка вызова почтового клиента ThunderЬird.
В Astra Linux команда вызова почтового клиента находится � программной
группе Сеть. Запустите почтовый клиент и просто введите ваш e-mail и па­
роль от почтового ящика. Почтовый клиент ThunderЬird умный и сам уста­
новит остальные параметры почтового сервиса (SMTP, !МАР, порты и т.д.).
r--------------------------------------------------------------,
1
1
: ПРИМЕЧАНИЕ. Если у вас почтовый ящик на Gmail, нужно в :
: настройках аккаунта включить использование небезопасных :
1
1
: приложений - таковыми считаются все нe-Google приложения, :
: иначе вы не сможете подключиться к своему почтовому ящику! :
t ______________________________________________________________J
Некоторые пользователи предпочитают использовать веб-интерфейс в брау­
зере, а не почтовую программу. В этом случае можно смело удалить кнопку
вызова почтового клиента, чтобы она даром не занимала пространство на
панели задач. Для этого щелкните по ней правой кнопкой мыши и выберите
•·------··--·--------·-·-···--··-·--·--·······.. ··-..······--··--···· ..·······--·--8111
lki:1, l.iriux
команду Удалить из избранноrо. Вы освободите пространство для одной
полезной для вас кнопки!
"
BНКTl)<)ЙQ�T>IOМ)Мlll(il х
IIIThur'oderЫrdPrN.cyNotitt )(
Настройка имеющейся у вас учётной записи электронной почты
\ffoб... иcno.'ll>ЗOUfЬ те'-УЩ11А � 1/Wk.Тронной rкмы, ВIК'.йКN C80t\ )ЧtТNЬlt д,)ЖW.
Тhundiнwd .11П»4i!ТИЧ@Сl(М ВЫ/'IОJIНКТ nома Рiбочt>М н peКOМftfДO�Юlof! сонф+tгурацмм с•1)8f1М.
ТhundffЬird llВТом.tтмчкки &ь1nо11нмт rюмск раоочt'М к рекомеttд0ванмо.i конфмrурецмн с,рве-ра.
ПO")"IIIП.-i l,Ap8C :tJIO.тpolOIIOillOOIТW
• Зlllомн""'�
&щrм )"4tntlllt Мнн.�оl' 6у.цутхр1111ПЬО1 TO�ЫOIIOQIIЬНO на
blWtM�OМПЬIOTtpe.
Рис. 4.5. Почтовый агент Thunderhird в Astra Linux
4.5. Установите ваш любимый браузер
По умолчанию в Linux используется браузер Firefox. Это очень хороший
браузер, но он нравится далеко не всем. Установить Chrome можно путем
загрузки его пакета с официального сайта и его установки. Рассмотрим весь
процесс подробнее.
Откройте Firefox и перейдите по ссылке:
https://www.google.com/intl/ru/chrome
Далее проделайте следующее:
1. Нажмите кнопку Скачать Chrome (рис. 4.6).'
•
....................................................................................
I .Ia11a -1 Сра!� пос.,с �с• а11овю1
..
с
....-
Go gi<Chrome
О 8
r,_.., СТрrенмцА
.
...
е r,
Браухр ОТ Googie
Ф),4щмм �
1'\оддер.Q\ВI "
..
"'��-"'��Pf"�•--••� 111o-•�•""6ot
�
Goo,;1t---,.тR11.... c:oot1t •n;,6,,,otж,,-p,a�.t<>r,ca.;-,o,._.,.
... �......,._....,._,. ...,�
�
Везде как дома с Chrome
Рис. 4.6. Стран1ща загрузки Chrome
2. Выберите DЕВ-пакет (рис. 4.7) и нажмите кнопку Принять условия и
продолжить.
е r, =
9'Q091ecom
_.. chrome
х
Скачайте Chrome для Linux
&,,6,tJжт•n81111'Aflll'CК8ЧMIIIIHМII
-c.-�--..
...
:rчew------·­nr­
----------tlp8pop.
•o.-.�-�.....,�ftln ...........,........,..... i.,..
__
JIC1-0oiфew-,_6f..,.,..__.,._a....,. &:.._ ...
�'81'•�....,.,n-._,, _ _.,..,.IOl.dl
_,..
�'l... �-..
41#Ы+ 111ЧI 1· 111►
Рис. 4. 7. Выбор типа пакета
•
··················································································88
lkc 1, 1 i1111\
3. В окне браузера, когда файл будет скачан, выберите команду Показать
все загрузки (рис. 4.8).
ос •
Google
-скачайте C�rome дnя теJ'iе<!Юна
Google
CмtЩXЖIOaмpyliТWi д,ннwt Chromt,
.,,обw l'ЩJIIIIC'tll
�tl(RЦll.11, IICfOP",O, � • .сруп1е ИКJl)OlilUI М8
ммФО<
ОТспнмрrмтепоткод,.
ltCl'IOlW'p-P'fT�
мус:т�С!Уаmе-
Рис. 4.8. Загрузка завершена
Рис. 4.9. Загрузки_.
,
4. В окне менеджера загрузок нажмите значок папки напротив загруженно­
го DЕВ-файла, чтобы перейти в папку Домашняя папка / Загрузки, или
..................................................................................
1 Jialla 4. Cp:t!� IIOCJIC �Cl:IIНIIIIOI
откройте файловый менеджер и перейдите в эту папку самостоятельно
(рис. 4.9).
5. Щелкните правой кнопкой мыши и выберите команду Открыть в тер­
минале. Введите команду sudo dpkg -i *.deb (убедитесь, что в каталоге
Загрузки у вас нет других dеЬ-файлов, поскольку эта команда устанавли­
вает все dеЬ-файлы из текущей папки, что может быть нежелательно), см.
рис. 4.10.
она
Рис. 4. 1 О. C/,rome уста11овле11
6. Введите пароль своего пользователя и дождитесь завершения установки.
Пакет довольно большой (65 Мб), поэтому его установка может занять
несколько минут.
7. Откройте экран Приложения (кнопка в самом низу на панели задач) и
щелкните правой кнопкой на Chrome (рис. 4.11).
8. Выберите команду Прикрепить к панели приложений, чтобы добавить
кнопку запуска нового браузера на панель задач.
9. Осталось дело за малым - использовать Chrome (рис. 4.12).
•
....................................................................................
:i:
Весь Linux
Рис. 4.11. Запуск Chrome
..
·····
•
-
Н-йте браузер за несколько простых шагов.
Настройте Chrome для себя
Рис. 4.12. Chrome в Linux
-----------------------------------------------------------------------------------·
] .1а11а-! CpaJ� IIOC.IC �CI а1юв..:11
4.6. Установка проигрывателя VLC
VLC - культовый медиапроигрыватель, поддерживающий множество са­
мых разных медиаформатов. В UЬuntu для его установки нужно ввести ко­
манду:
$ sudo snap ins all vlc
Теперь проигрыватель распространяется в виде снапа, а не пакета, что упро­
щает его установку.
Пользователям Astra Linux· повезло больше: VLC уже установлен по умол­
чанию, поэтому все, что нужно, - запустить его из программной группы
Мультимедиа.
:: "е: 6:::'
Рис. 4.13. Проигрыватель VLC
4.7. Установка кодеков
Разработчики UЬuntu включают в состав дистрибутива только бесплатное
ПО с открытым исходным кодом. К таковому не относятся кодеки - сnеци-
·-----------------------------------------------------------------------------------
lkc1. l .i1111\
альное ПО для кодирования/декодирования мультимедиаформатов. Кодеки
бесплатные, но их разработчики не хотят публиковать исходные коды, поэто­
му по умолчанию кодеки не включены в состав UЬuntu. Для воспроизведе­
ния распространенных аудио- и видеофайлов, таких как МРЗ, AVI, MPEG4,
нужно установить кодеки вручную.
Чтобы установить их, вам нужно установить метапакет ubuntu-limited­
extras, выполнив следующую команду:
$ sudo apt install ubuntu-restricted-extras
::1
�
=
�
4.8. Включение ночного режима
�
Чтобы глаза меньше уставали при работе ночью, рекомендуется включить
ночную подсветку, которая сделает цвета более теплыми. Для этого развер­
ните системное меню и нажмите кнопку Ночной свет, также можно вклю­
чить Темный стиль - самое то для ночи (рис. 4.14).
!"'):
�:
:,: ''
"'
r:,
•
"С
:
Р11с. 4.14. Аютша1(11я ночного peJ1CIIJ\ta
.................. .........
.
•
11111
1 < р.1,, 11tн. н н_·1.111111а,11
В Astra Linux, к сожалению, подобного режима нет. В нем есть возможность
цветовой коррекции, и вы сами можете установить более теплые цвета, но
автоматической смены оттенко11 там нет, и вам придется менять цветовые
настройки дважды в сутки - днем и ночью, что ?чень неудобно.
4.9. Установк� wine для запуска Windows/
приложений
u
\:;
1
Подробно о ·запуске Windоws-приложений в Linux мы поговорим далее,
а пока установите Wine - средство, обеспечивающее запуск Windоws­
приложений.
Для его установки введите команду:
----------------�-..
$ sudo ap_t install wine · winetricks
4.10. Установка дополнительных архиваторов
Поддержка дополнительных форматов архивов никогда не бывает лишней.
Для установки дополнительных архиваторов введите команду:
$ sudo apt install rar unrar p7zip-full p7zip-rar
4.11. Попробуйте другие графические окружения
.,
с.
UЬuntu поставляется только с рабочим столом Gnome, но вы можете устано­
вить другие графические окружения и выбрать то, которое больше нравится
вам.
Например, следующая команда устанавливает графическую среду Cinnamon:
•
$ sudo apt install cinnamon-desktop-environment
....................................................................................
lkc1, Linux
.:::.
� �:
;; �
.:::
,:;
Рис. 4.15. Графическая среда Cinnamon
"'�
.,
-,
Ё
�"'
�
�
А эти команды устанавливают графическую среду МАТЕ:
$ sudo apt install tasksel
$ sudo tasksel install ubuntu-mate-desktop
=
............
Рис. 4.16. Графическая среда МАТЕ
•
-·-·····································································
1 1,11\,1 4 ( ра!� IIOC.lt' �t'I.IIIOl\h:11
Какую из них использовать - дело вкуса, и здесь каждый решает сам,
4.12. Установите полезные утилиты
Установите двухпанельный файловый менеджер Midnight Commander (рабо­
тает только в консоли) и менеджер пакетов Synaptic, который облегчит поиск
нужного пакета при установке программного обеспечения:
t
u
sudo apt install mc
sudo apt install synaptic
4.13. Тонкая настройка GNOME. Установка
темы оформления в стиле щасОS
Множество настроек графической среды GNOМE скрыто от глаз пользова­
теля. Для более тонкой настройки GNOМE вы можете использовать утилиту
Gnome Tweaks, позволяющую легко кастомизировать ваш рабочий стол. Для
ее установки введите команды:
$ sudo add-apt-repository universe
$ sudo apt install gnome-tweaks
Первая команда включает репозиторий universe, в котором находится нуж­
ный нам пакет. Вполне возможно, что он уже включен у вас, но лучше убе­
диться в этом явно. Вторая - устанавливает сам пакет.
Далее запустите средство командой или выберите из меню команду Допол­
нительные настройки GNOME:
$ gnome-tweaks
Данная утилита - настоящая находка для любителей кастомизации. Кстати,
только с ее помощью можно изменить тему оформления в UЬuntu на любую
другую . Перейдите в раздел Внешний вид и выберите другую тему оформ-
•
···.-··············································································--
..
"
с.
с.
<,
u
lkc1, l.i111н
ления, как показано на рис. 4.17. Далее будет показан пример наиболее попу­
лярного «тюнинга» Ubuntu - установка темы оформления в стиле macOS.
..
(j
�
Рис. 4.17. Приложение Gnome Tweaks
Установить новую тему достаточно просто. Скачайте архив с темой.
r
1
1 ПРИМЕЧАНИЕ. Много тем оформления доступно на сайте 1
1
1 https://www.gnome-look.org/, например, по адресу:
1 https:/lwww.gnome-look.org/p/1275087/
1
1
1
1
1
1
1
1 доступна тема в стиле macOS.
1
t______________________________________________________________J
1
1
Перед установкой этой темы нужно установить два пакета:
"
]
-=
r",
�
�
�
�
�
$ sudo apt initall gtk2-engines-murrine gtk2-engines�pixbuf
Далее нужно скачать архив с темой и распаковать его в каталог .themes:
$ tar xf Mojave-dark.tar.xz
$ mkdir ~/.themes
$ mv Mojave-dark ~/.themes/
•
•
---------------------------------------------------------------------------------.--·
1 l ll 1 \ ( 1),1 �\ IHH. Н .' Н. l,IIIOBl,11
Затем откройте Gnome Tweaks и в качестве темы приложений выберите
Mojave-dark. Закройте Gnome i:weaks.
Следующий шаг - скачать значки в стиле macOS.
Они доступны по адрес)i':
https:/lwww.gnome-look.org/p/1210856/
;:;
u
Аналогично, значки нужно распаковать:
$ tar xf Mojave-CT-Night-мo·de.tar. xz
$ mkdir ~/.icons
$ mv Mojave-CT-Night-Mode ~/.icons/
После этого опять запустите Gnome Tweaks и в качестве темы значков вы­
берите Mojave-CT-Night-Mode. Наконец, нужно установить тему для курсо­
ров мыши. Скачайте архив по адресу https://www.gnome-look.org/p/11 48748/
и распакуйте архив в соответствующий каталог:
$ unzip -qq macOS\ Cursor\ Set.zip
$ mv macOS\ Cursor\ Set ~/.icons/
Опять запустите Gnome Tweaks и выберите MacOS Cursoi: Set в качестве
темы курсоров.
Следующий шаг (по желанию)-скачать и установить в качестве фонового
следующее изображение:
https:/lwww. reddit.comlrlwallpapers/comments/e4ft6s/a_more_purpleish_version_
of_the_тас_os_mojave/
Щелкните правой кнопкой по файлу изображения в папке Загрузки и вы­
берите команду Установить как фон.
Вишенка на торте-панель задач в стиле macOS.
Установить ее можно командой:
$
•
sudo apt install plank
·····················-·--···-························-·-····-···············-.----·--
""
"'=
с:,.
u
Запустите новую панель задач:
plank
В нижней части экрана вы увидите ту самую панель (рис. 4.18).
Рис. 4.18. Панель задач в стиле macOS
Откройте Gnome Tweaks и перейдите в раздел Автозапуск.
Нажмите кнопку + и добавьте в автозапуск приложение Plank. Так мы обе­
спечим автоматический запуск нашей панели при входе в систему пользова­
теля.
Осталось удалить стандартную панель задач. Для лого введите команду:
$ sudo apt remove gnome,shell-extensian-ubuntu-dock
После этой команды нужно выйти из системы и снова в нее войти. В резуль­
тате у вас должна получиться «почти» macOS (рис. 4.19).
....................................................................................
..
1
;
Приложе1111я
Сервер
Я11ро
Пользоватет,
;
:!
�
�.,.
....)С
'!>,.
Програ'1МЫ
Сеть
Глава 5.
ОСНОВЫ КОМАНДНОЙ
СТРОКИ
л •
lkё1, l.i1111x
Командная строка - одна из важнейших частей Linux.
Посредством командной строки осуществляется
выполнение команд Linux.
Эффективно сможет работать с Linux только тот, кто освоил принципы рабо­
ты в командной строке.
5.1. Ввод команд
Ввод команд осуществляется в приложении Терминал. Это эмулятор
консоли Linux, позволяющий вводить команды. Можно переключиться из
графического режима в консоль (нажав Ctrl + Alt + Fl) и вводить команды
непосредственно в консоли Linux. Но для большинства пользователей будет
удобнее работа с эмулятором терминала в графическом режиме. Приложе­
ние Терминал изображено на рис. 5.1.
Для ввода команды нужно ввести ее в приглашение командной строки и на­
жать Enter. После чего вы увидите результат выполнения команды. Обычно
приглашение командной строки имеет вид:
пользователь@компьютер:текущий_каталог<$1i>
•
....................................................................................
1 1.ш.1 , Ос1111ны �-ош111 11ю11 с 11ю�-11
Рис. 5.1. Приложение Терминал (Ubuntu)
Посмотрите на рис. 5.2. В первом случае наш пользователь называется
ubuntu, имя компьютера ubuntu-vhome, каталог - (так сокращенно обознача­
ется домашний каталог пользователя), далее следует символ$.
Символ $ обозначает, что вводимая команда будет вьmолняться с привилеги­
ями обычного пользователя.
Далее мы выполняем команду sudo bash. Команда sudo запрашивает приви­
легии суперпользователя root для командной оболочки bash. По сути, после
этого мы получим командную строку с привилегиями root. Все вводимые
данные команды будут выполняться с максимальными правами.
Посмотрим, как поменялось приглашение командной строки.
Мы видим, что пользователь уже не ubuntu, а root и что каталог выводится
как /home/ubuntu - это домашний каталог пользователя ubuntu, в котором
мы находимся.
Символ - не выводится, поскольку домашний каталог пользователя root на­
зывается /root .
•
·---------------------------------------------------------------------------------ID
Рис. 5.1. Разные формы приглашения командной строки
Как только мы перейдем в этот каталог, то получим - вместо имени каталога.
Последний символ # обозначает, что вводимая команда будет выполняться с
максимальными правами. С максимальными правами нужно быть осторож­
нее и стараться как можно реже использовать данный режим во избежание
нанесения системе вреда.
5.2. Автодополнение командной строки
Linux содержит множество команд.
Если вы забыли точное название команды или просто хотите
ускорить ее ввод, вы можете использовать автодоnоnнение
командной строки. Для этого введите первые буквы
названия команды и нажмите ТаЬ.
•
ID-------------------------------------------·······--·------------·---------------·
] 1 11, ! ' « )\'IIOIH,I 1,0\1.111 111011 \' 1 pol,11
Далее система или автоматически дополнит команду, или выведет список
доступных вариантов, если доступно несколько вариантов по введенной ко­
манде.
Аналогично, автодополнение может использоваться для имен файлов и ка­
талогов.
Например, вы хотите перейти в каталог applications/xntъdh73/puЫic;_html.
Вместо того чтобы вводить этот длинный путь (и помнить его!), вводите
команду так:
cd а <нажмите ТаЬ> / х <нажмите ТаЬ> / р <нажмите ТаЬ>
В конечном нтоге вместо ввода 33 символов пути вам нужно будет ввести 5 !
Рассмотрим следующую команду:
cat very_long_file. txt I less
Здесь мы пытаемся просмотреть очень длинный файл very_long_file.txt.
Поскольку он очень длинный и не помещается на одном экране, мы перена­
правили вывод первой части команды (cat very_long_file. txt) на стандартный
вывод команды /ess, которая обеспечивает удобный просмотр длинных фай­
лов.
Синтаксис следующий:
команда_l I команда_2
Особых ограничений не существует, и вы можете передать вывод второй ко­
манды на ввод третьей и т.д.:
•
команда_l
команда_2 · 1 команда_ З
·---------------------------------------------------------------------------------1118
t
u
с помощью такого перенаправления можно автоматизировать некоторые ко­
манды, что важно в сценариях bash, например, вот как можно уrвердителъно
ответить на запрос об удалении файла:
echo у I rm file.old
Очень часто перенаправление ввода/вывода используется в таком контексте,
в котором использовали его мы: большой вывод перенаправляется на про­
грамму просмотра (less) или на программу-фильтр, такую как grep.
Кроме перенаправления вывода программы на ввод друrой программы, его
можно перенаправить в файл; например:
ps -А > processes.txt
Если файл processes.txt не сушествует, он будет создан. Если сушествует перезаписан. Если нужно дописать вывод программы в конец файла, не уда­
ляя сушествующий файл, тогда используйте два знака больше:
ps -А >> proc.esses. txt
В этом случае, если файл не сушествует, то он будет создан, а если сушеству­
ет, то информация будет дописана в конец файла.
5.4. Справочная система тап
1"')
.g"'
..,"'
В Linux справочная система всегда под рукой.
Например, если вы забьmи параметры команды df, просто введите команду:
man df
•
....................................................................................
1 1,111,1 ' Ос1ю111.1 1,11\1.111 111011 с I poi.:11
Откроется страница руководства (в большинстве случаев - на русском язы­
ке), в котором будут описаны все возможные параметры по интересующей
вас команде и даны рекомендации по их применению. Для работы справоч_­
ной системы не требуется соединение с Интернетом, поскольку все страни­
цы справочного руководства уже загружены на ваш компьютер.
Далее будут рассмотрены некоторые полезные команды, знание которых
просто обязательно для каждого пользователя Linux.
t;
u
5.5. Команды для работы с файлами и
каталогами
5.5.1. Команды для работы с файлами
В каждой операционной системе есть команды для работы с файлами и ка­
талогами. Linux - не исключение. Рассмотрим стандартные команды Linux
для работы с файлами (см. табл. 5.1).
Таблица 5.1. Стандартные команды Linux для работы с файлами
•
Команда
Описание
саtфайл
Выводит текстовый файл. Файлы могут быть довольно длинными, поэтому лучше использовать ее
в паре с командой less, например cat /etc/services 1
Iess
tacфайл
Подобна команде cat, но выводит файл в обратном
порядке. Данная команда удобна для чтения журналов, в которых самые свежие сообщения заносятся
в конец файла, например tac /var/log/messages I Iess
ер файл 1 файл2
Копирует файл1 в файл2. Если второй файл существует, программа спросит вас, нужно ли его перезаписать
·---------------------------------------------------------------------------------11!8
"'"'"'­
�
u
11" ,. 1 i,111,
mv файл] файл2
Используется для перемещения файла} в файл2.
Можно использовать для переименования файлов
rm файл
Удаляет файл
touch файл
Используется для создания нового пустого файла
locate файл
Быстрый поиск файла. Позже мы рассмотрим процесс поиска подробнее
which исполнимый
файл
Производит быстрый поиск программы (исполнимого файла). Если программа находится в пути
РАТН, то which выведет каталог, в котором находится программа
В таблице 5.1 представлены основные команды, которые используются для
создания (touch), копирования (ер), перемещения (mv) и удаления (rm) фай­
лов, а также несколько дополнительных команд.
Рассмотрим несколько примеров:
$
$
$
$
dmesg > kernel.messages
cat kernel.messages.l less
ер kernel.messages krn.msg
rm kernel.messages
Первая команда выводит загрузочные сообщения ядра в файл kernel.
messages. Вторая выводит содержимое этого файла на экран, а команда less
организует удобный постраничный просмотр этого файла.
Далее команда ер копирует файл kernel.messages в файл krn.msg, а последняя
команда удаляет наш исходный файл kernel.messages.
В принципе, вместо последни� двух команд можно было использовать одну
командутv:
mv kernel.messages krn.msg
•
•
....................................................................................
1 1,111,1 , ( k1ю111.1 "'"1:111 111с,11 ,· 1 р,11,11
При указании имени файла вы можете использовать маски* и?. Как обычно,
символ* заменяет любую последовательность символов, а ? - один символ.
Например:
rm *.tmp
rm °!tmp/*
ер *.txt /media/ext-usb
ер ???.txt /media/ext-usb
Первая команда удаляет все файлы, заканчивающиеся на ".tmp", в текущем
каталоге.
Вторая - удаляет все файлы из каталога /tmp.
Третья копирует все файлы с расширением .txt из текущего каталога в ката­
лог /media/ext-usb.
Четвертая команда копирует все файлы, имя которых состоит из трех лю­
бых символов и заканчивается на ".txt", например abc.txt, в каталог /media/
ext-usb.
�--------------------------------------------------------------1
1
1
1
1
1
:
:
ПРИМЕЧАНИЕ. Как вы уже догадались, к каталогу /media/ext- 1
usb можно подмонтировать внешний· USВ-диск, и тогда копиру- 1
1
емые файлы физически окажутся на внешнем жестком диске. :
Подробнее о монтировании мы поговорим в дальнейших главах. :
t______________________________________________________________J
ПРИМЕЧАНИЕ. Обратите внимание, что в таблице 5.1 команды
представлены без параметров. Хотя дополнительные параме­
тры есть у каждой команды. Вы не обязаны помнить все пара­
метры, для этого есть справочная система man. Вам нужно пом­
нить только названия команд, а параметры' вы всегда сможете
"подсмотреть" в man.
Мы еще не рассмотрели команды редактирования текстовых файлов.
Они не являются стандартными (кроме программы vi, которой пользоваться
не очень неудобно), но в вашей системе по умолчанию могут быть установ­
лены следующие текстовые редакторы:
•
•·················································································ll!il
t;
u
• nano - удобный текстовый редактор;
• joe - небольшой и удобный текстовый редактор;
• pico - текстовый редактор, устанавливаемый вместе с почтовым клиен­
том рinе;
• mcedit - текстовый редактор, устанавливаемый вместе с файловым ме­
неджером mc.
Если у вас нет этих редакторов, вы можете установить их. Например, устано­
вите mc - вы получите и файловый менеджер, и текстовый редактор сразу:
sudo apt install mc
5.5.2. Команды для работы с каталогами
Аналогично командам для работы с файлами, команды для работы с катало­
гами представлены в таблице 5.2.
Таблица 5.2. Стандартные команды Linux для работы с каталогами
Команда
Описание
еdкаталог
Изменение каталога
ls каталог
Выводит содержимое каталога
rmdir каталог
Удаляет пустой каталог
rm -r каталог
Рекурсивное удаление непустого каталога
mkdir каталог
Создает каталог
ер каталог] каталог2
Команду ер можно использовать и для копирования каталогов. В данном случае ер копирует
каталог 1 в каталог 2
',
.�
1
mv каталог] каталог2
11, 1' ( )t 11ов1.1 1,оч.111 111011 t· 1 ро1,·11
Команду mv можно использовать и для пере­
мещения каталогов. В данном случае mv пере­
мещает каталог l в каталог2
Обратите внимание, что команда rmdir не может удалить непустой каталог,
поэтому если не хотите удалять сначала файлы и подкаталоги из удаляемого
каталога, то лучше использовать команду rm -r каталог.
Например:
$
$
$
mkdir /home/bagira/test
touch /home/bagira/test/test-file
rm -r /home/bagira/test
Как и в случае с командой rm, вы можете задать параметр -r для команд ер
и mv. В этом случае операция копирования или перемещения будет выпол­
няться рекурсивно.
Очень важной операцией является просмотр содержимоrо
катаnоrа, для которого используется команда /s.
Поэтому сейчас сделаем исключение для этой команды и рассмотрим ее па­
раметры (табл. 5.3). А общий формат вызова этой команды таков:
1s [параметры] [каталог]
Таблица 5.3. Параметры команды /s
•
-С
Выводит список файл-ов в колонках с вертикальной
'
сортировкой
-F
Для каждого каталога добавлять суффикс'/', а для каж­
дого исполняемого файла -'*', а для каждого FIFО­
канала- '1'
···················-···························-···-·-·--······················-··ID
1\, "· 1 i11tl\
-R
Рекурсивный вывод, то есть команда ls будет выводить
не только содержимое каталога, но и подкаталогов
-а
Показывать скрытые файлы
-i
Показывать иноды для каждого файла (будет показан
серийный номер файла)
-!
-r
"Длинный" формат вывода, в котором отображается тип
файла, права доступа, количество ссылок на файл, имя
владельца, имя группы, размер файла, метка времени
создания файла и имя файла.
В колонке типа файла могут быть следующие значения: d (каталог), Ь (блочное устройство), с (символьное
устройство), l (символическая ссылка),р (FIFО-канал),
s (сокет)
Сортировка в обратном порядке
В таблице 5.3 приведены не все параметры команды ls, а только самые ос­
новные.
а:
При задании имени каталога можно использовать следующие специальные
имена:
•
- обозначает текущий каталог;
•
- обозначает родительский каталог;
• - домашний каталог пользователя, например, если вы вошли под
пользователем bagira, то путь -/file.txt равноценен /home/Ьagira/file.txt.
5.6. :Команды систем_ного администратора
Существуют команды, которые полезно знать не только любому линуксо­
J:!дУ, но и весьма важно знать каждому уважающему себя системному адIПII···········.·······································································
министратору. В этой главе рассматривается необходимый минимум таких
команд. Нужно отметить, что команд системного администратора гораздо
больше в Linux, по сути, в этQЙ книге мы рассматриваем те или иные ко­
манды администратора. В этой главе мы рассмотрим некоторые базовые ко­
манды. Возможно, они не пригодятся вам прямо сейчас, но вы еще не раз
вернетесь к этой главе в будущем.
u
5.6.1. Команды для работы с устройствами и драйверами
В таблице 5.4 приведены некоторые команды, которые помогут вам обнару­
жить аппаратную проблему - проблему с устройством либо с его драйве­
ром.
Таблица 5.4. Команды, предоставляющие информацию об устройствах
•
Команда
Описание
uname -а
Очень важная команда, сообщающая версию ядра. Очень важно, чтобы устанавливаемые модули были откомпилированы
под вашу версию ядра
lsdev
Выводит информацию об устройствах. По
умолчанию эта команда не установлена,
нужно установить пакет procinfo
lshal
Выводит параметры всех устройств
lspci, lsusb, lshw
Выводят соответственно список PCIустройств, USВ-устройств и список оборудования компьютера
lsmod
Выводит список загруженных модулей
ядра
dmidecode
Отображает информацию о BIOS компьютера
··················································································ID
"'"'
"-
,::,.
u
cat /proc/cupinfo
Выводит информацию о процессоре
cat /proc/meminfo
Отображает информацию о памяти
cat /proc/mounts
Показывает точки монтирования
cat /proc/net/dev
Выводит сетевые интерфейсы и статистику по ним
cat /proc/version
Похожа на uname, выводит версию ядра
cat /proc/interrupts
Отображает информацию по прерывациям
cat /proc/swaps
Выводит информацию о файлах подкачки
5.6.2. Команды настройки сетевых интерфейсов
Подробно настройка сети будет рассматриваться в друтой главе, а пока рас­
смотрим таблицу 5.5, в которой представлен короткий список команд, кото­
рые вам могут пригодиться при настройке �ети.
Таблица 5.5. Некоторые команды настройки сети
Команда
Описание
route
Просмотр и изменение таблицы маршрутизации
dmesg
1
less
iwconfig
Просмотр сообщений ядра, которые выводятся ядром при загрузке системы
Выводит информацию обо всех беспроводных �нтерфейсах
•
.....................................................................................
1 1 11, l "
( )� IIOBl,I 1,0\1.111 111011 l l jJiH,11
iwlist scan
Поиск беспроводных сетей
dhclient wlanO
Обновляет IР-адрес и другую сетевую информацию беспроводного интерфейса wlanO
iwevent
Просмотреть события беспроводной сети
sudo /etc/init.d/
c!Ьus restart
Перезапуск всех сетевых служб (работает не
во всех дистрибутивах)
sudo systemctl restart <служба>
или servic_e <служба>
restart
Перезапуск службы. Например, sudo systemctl restart networking перезапускает сеть
5.6.3. Программы тестирования и настройки жесткоrо диска
Команды дшJ тестирования и настройки жесткого диска, подобно ранее при­
веденным командам, также представлены в виде таблицы - табл. 5.6.
Таблица 5.6. Команды для тестирования и настройки жесткого диска
badЫocks -v <имя
устройства>
hdparm
•
Осуществляет проверку жесткого диска на на­
личие "плохих" блоков. Параметр -v включает
подробный отчет
Тестирование производительности и настрой­
ка жесткого диска. Например, параметр -t
может протестировать производительность
(hdparm -t /dev/sda), а параметр -Е уста­
новит скорость привода CD/DVD:
hdparm -Е 2 /dev/srO
·---------------------------------------------------------------------------------1111
: с.
"'
.."
'
'
' ,:,.
'
;U
hddtemp
Оrображает температуру жесткого диска
bonnie
Тестирует производительность жесткого
диска
cpuburn
Тестирование процессора (стресс-тест процессора)
screentest
Тестирование и настройка монитора
smartmontools
SМАRТ-мониторинг. Нужно, чтобы ваши
жесткие диски поддерживали S.M.A.R.T
5. 7. Команды обработки текста
5.7.1. Редактор sed
g
g
�
=
Команда sed - мощный потоковый редактор, и ему можно было посвятить
целую главу, но не вижу такой необходимости, поскольку в современных
дистрибутивах имеется документация на русском языке. Главное знать, что
такая программа есть. А чтобы вы заинтересовались, давайте рассмотрим
несколько примеров использования этой программы.
Далее попробуем:
• Заменить строку "stringl" на "string2" в файле report.txt, результат выве­
сти на стандартное устройство вывода:
sed 's/stringal/stringa2/g' report.txt
• Вывести пятую строку файла report.txt:
sed -n 'Sp;Sq' report.txt
•
• Удалить пустые строки из файла:
•
1111···················································································
l 111 1" ()1.11овы 1,0\1:1111110111.·1ро1,11
• Удалить строку "stringl" из текста, не изменяя всего остального:
sed -е 's/stringl//g' report.txt
• Удалить пустые символы в конце каждой строки:
sed -е 's/ *$//' report.txt
• Удалить пустые строки и комментарии из файла:
sed '/ *f/d; /л$/d' report.txt
• Преобразовать символы из нижнего регистра в верхний:
echo 'test' 1 tr '[:lower:J' '[:upper:]'
• Удалить первую строку из файла:
sed -е 'ld' report.txt
5.7.2. Подсчет количества слов/символов
Команда wc используется:
• для подсчета слов в текстовом файле:
wc /var/log/messages
• для подсчета количества строк (если задан параметр-[):
wc -1 /var/log/messages
··················································································1111
•
..
"
с.
.,:,.
lkc 1, 1 i11tl\
• для подсчета количества символов (параметр -с):
wc -с /var/log/messages
5.7.3. Сравнение файлов
Команда стр используется для сравнения двух файлов.
�
1;
:::
Если файлы идентичны, то стр вообще никак не реагирует. А вот если файлы отличаются, то стр выводит номер строки и номер символа в строке,
откуда начинается различие.
Команда стр более универсальна, поскольку она может использоваться для
сравнения как текстовых, так и двоичных файлов.
А вот команда diff и ее аналоги умеют сравнивать только
текстовые файлы.
Формат вызова команды следующий:
cmp [параметры] файлl файл2
Параметры команды стр указаны в табл. 5.7.
Таблица 5.7. Параметры команды стр
Параметр
Опвсавие
-с
Вывод отличающихся символов
-i п
Игнорировать первые п символов
-!
Вывод позиций всех отличий, а не только первого
•
.....................................................................................
1 1,11 1 '
( )1.11ов1,1 1'-оч.111 111011 1.· 1 р111'-11
Не выводить информацию на экран, при этом код воз­
врата будет следующим:
О - файлы одинаковые;
-s
1 - файлы отличаются;
2 - ошибка при открытии одного из файлов
5.7.4. Разбивка текста на колонки
Команда column используется для разбивки текста на
несколько столбцов. Текст может быть прочитан как из файла,
так и со стандартного ввода, если файл не указан.
Формат вызова команды:
Параметры команды column приведены в табл. 5.8.
Таблица 5.8. Параметры команды column
•
-сп
Задает количество столбцов (число п)
-s символ
Указанный символ будет использоваться в качестве раз­
делителя столбцов
-t
Текст будет форматироваться как таблица. По умолча­
.нию разделителем полей считается пробел, но с помо­
щью параметра -s можно задать другой разделитель
-х
Сначала будут заполняться сто�бцы, а потом строки
··················································································tlll
1 {" 1, 1 11111 \
5.7.5. Команды dijfи dijfЗ
Команда используется для сравнения двух файnов.
Формат вызова команды diff.
diff [параметры] 'файл! файл2
В выводе программы отличающиеся строки помечаются символами > и <:
• строка из первого файла помечаете'! символом <;
• строка из второго файла - символом >.
Самые полезные параметры команды фffприведены в табл. 5.9.
Таблица 5.9. Параметры команды diff
Параметр
�
-а
Сравнение всех файлов, в том числе бинарных
-Ь
Программа будет игнорировать пробельные символы в конце строки
-В
Игнорирует пустые строки
-е
Применяется для создания сценария для редактора ed, который будет использоваться для превращения первого файла
· во второй
-w
Игнорирует пробельные символы
-у
Вывод в два столбца
-r
Используется для сравнения фай.пов в подкаталогах. Вместо первого файла указывается первый каталог, вместо второго файла - соответственно второй каталог
1
1 1,1в,1 , ( k1ю111,1 ,,.,ш111 1111111 t· 11н11.:�1
Команда diffЗ похожа на diff, только используется для
сравнения трех файnов. ·
Формат вызова команды таков:
diffЗ [параметры] файлl файл2 файлЗ
Программа выводит следующую информацию:
•
- все три файла разные;
• ==1
• =2
- первый файл отличается от второго и третьего;
• =3
- третий файл отличается от первого и второго.
- второй файл отличается от первого и третьего;
Параметры команды difJЗ указаны в таблице 5.10.
Таблица 5.10. Параметры команды difJЗ
..
Параметр
Описание
-а
Сравнивать файлы как текстовые, даже если они являются
бинарными
-А
Создание сценария для редактора ed, который показывает в
квадратных скобках все отличия между файлами
-е
Создает сценарий для ed, который помещает все отличия
между файлами файл2 и файлЗ в файл файлl (будьте осторожны!)
-i
Добавить команды w (сохранить файл) и q (выйти) в конец
сценария ed
-х
Создание сценария редактора ed, который помещает отличия между файлами в файл файл1
··················································································IID
lkc1, J,i1111\
-Х
То же, что и -х, но отличия выделяются
-3
Создает сценарий ed, который помещает все различия меж­
ду файлами файл 1 и файлЗ в файл 1
5.7.6. Командаgrер
".,
:::,
"С
Предположим, что у нас есть какой-то большой файл, и мы хотим найти в
нем все упоминания строки he/lo,
Сделать это можно так:
cat file.txt I grep hello
Команда cat.file,txt передаст содержимое файла file,txt на стандартный ввод
команды grep, которая, в свою очередь, выделит строки, содержащие строку
he/lo,
5.7.7. Замена символов табуляции пробелами
Команда expand заменяет в указанных файлах символы
табуляции на соответствующее количество пробелов.
Команде можно передать лишь один параметр -i, означающий, что замена
должна быть только в начале строки.
Формат вызова команды:
expand [-i] файлы
5.7.8. Форматирование текста
•
ID·---------·----------------------------------------------------------------------·
1 1.1в,1 , Ос1ю111.1 ..:н,1.1111111111с11111..:11
Команда fmt форматирует текст, выравнивает его по правой
границе и удаляет симвОIJЫ новой строки.
Синтаксис вызова команды:
t
u
fmt [параметры] файлы
П араметры командыftпt приведены в табл. 5.11.
Таблица 5.11. Параметры командыftпt
Параметр
Описание
-с
Не форматировать первые две строки
-р префикс
Форматировать только строки, начинающиеся с указанного префикса
-s
Не объединять строки
-t
Начинать параграф с красной строки
-wn
Задает максимальную длину строки в п символов (по
умолчанию 72)
5.7.9. Команды постраничного вывода more и less
Большой текстовый файл намного удобнее просматривать с
помощью команд less или тоге.
При этом less удобнее, чем more, если она есть в вашей системе:
•
tac /var/log/messages I grep ррр I less
··················································································ID
5.7.10. Командь1 head и tail: вывод первых и последних строк
файла
Команда head выводит первые десять строк файла, а tail последние десять. Количество строк может реrулироваться с
помощью параметра -n.
Пример использования:
head -n 10 /var/log/messages
tail -n 15 /var/log/messages
5.7.11. Команда split
Используется для разделения файлов на части. По
умолчанию создаются части размером в 1000 строк.
Изменить размер можно, указав количество строк, например:
split -200 файлl
В данном случае файл будет разбит на части по 200 строк в каждой (кроме,
возможно, последней части, где может быть меньше строк).
Команду можно также использовать· для разделения файлов на части по раз­
меру информации, а не по количеству строк, например, с помощью параме­
тра -Ь можно указать количество символов в каждой части. Примеры вызова
команды:
splй -ЫООЬ файл
split -ЫООk файл
split -ЫООm файл
,
Первая команда разделит файл на части по 100 байтов каждая, вторая - на
части по 100 Кбайт каждая, третья - по 100 Мбайт каждая .
....................................................................... :...........
S.7.12.,Команда unexpand
Заменяет последовательные пробелы символами табуляции.
По умолчанию 8 пробелов заменяются одним символом табуляции. Количе­
ство пробелов можно задать с помощью параметра -t п (где п - количество
пробелов).
Синтаксис вызова:
unexpand [параметры] файл
с..
"'
=
с.
•
·---------------------------------------------------------------------------------ID
Глава 6.
ЛОКАЛЬНАЯ СЕТЬ
л •
lkc1, l.i1111x
Следующую часть этой книги хотелось бы начать с настройки сети.
Будет рассмотрено, как настроить локальную Ethemet и беспроводную
Wi-Fi-ceть, как установить VРN-соединение. А уже после этого мы рассмо­
трим установку программного обеспечения, популярные программы и все
остальное. Без сети сейчас никак - даже программу не установишь, поэтому
приступим.
6.1. Физическая настройка сети Ethernet
Существует много сетевых технологий, но в этой книге мы будем рассматри­
вать настройку локальной сети, построенной на технологии Fast Ethemet.
Далее мы рассмотрим ее полностью - от обжатия кабеля до конфигуриро­
вания сети в Linux.
Несмотря на наличие уже стандарта Gigabit Ethemet (1ООО Мбит/с), стандарт
Fast Ethemet (100 Мбит/с) все еще актуален, и его скорости вполне хватает
для обеспечения работы локальной сети. А стандарт GigaЬit Ethernet пока
используется в качестве магистрали.
Прежде всего, вам нужно убедиться, что у вас есть сетевой адаптер, поддер­
живающий технологию FastEthemet. Большинство современных компьюте­
ров оснащены такими сетевыми адаптерами. Как правило, в современных
компьютерах и ноутбуках сетевые адаптеры являются интегрированными в
материнскую плату и устанавливать их отдельно не нужно.
После этого вам нужно подключить сетевой к�бель к вашему сетевому адап­
теру. Как правило, кабель обжимается администратором сети.
•
•
....................................................................................
Для создания Fast Ethemet сети вам нужны следующие устройства:
• сетевые адаптеры - с ниr,�и мы уже разобрались;
• коммутатор (switch) - его можно купить в любом компьютерном мага­
зине. Вместо него сойдет машрутизатор (router), который, как правило,
обладает 4-8 портами для подключения локальных компьютеров - этого
вполне достаточно для построения небольшой SОНО-сети (Small Office
Home Office);
• витая пара пятой категории - спрашивайте именно такой тип кабеля 1 ;
• коннекторы RJ-45 - таких конн�кторов вам нужно будет в два раза
больше, чем число компьютеров, поскольку кабель нужно будет обжать с
двух концов;
:а
.....
:;
:=
с,.
Q
с,.
• инструмент для· обжимки витой пары - хороший инструмент стоит
относительно дорого (примерно как коммутатор), а плохой лучше не по­
купать. Если не хотите выкладываться, возьмите у кого-нибудь на пару
дней.
Теперь приступим к самому процессу обжимки. Внутри кабеля будут 4 ви­
тые пары, причем у каждого провода будет своя цветовая маркировка. Суть
процесса обжимки заключается в том, чтобы подключить каждый из про­
водов к нужному контакту коннектора. Сначала нужно поместить провода
в коннектор (защищать их необязательно - за вас ,это сделает инструмент),
затем коннектор обратной частью (той, которой он будет вставляться в се­
тевой адаптер) поместить в инструмент для обжимки и крепко обжать. Ис­
пользуя приведенную ниже таблицу (табл. 6.1), вы без проблем сможете об­
жать кабель:
Таблица 6.1. Обжимка витой пары
Контакт
..........
1
Бело-оранжевый
2
Оранжевый
3
Зелено-белый
4
Синий
Для Gigablt Ethernet нужна витая пара 6-й категории
•
··················································································111
::
е:
..,,,..
Q
е:
..
.,
с,.
с..
lkL 1, 1 i1111�
'
5
Сине-белый
6
Зеленый
7
Бело-коричневый
8
Коричневый
Обжимать кабель нужно с двух сторон. Один конец подключается к концен­
тратору (или коммутатору), а второй - к сетевому адаптеру. Если вы непра­
вильно (или слабо) обожмете кабель, то ваша сеть работать не будет или же
будет работать только на скорости 1 О Мбит/с.
Проверить, правильно ли вы обжали кабель, очень про.сто: обратите внима­
ние на коммутатор. Возле каждого порта будет два индикатора. Если горят
оба, значит, все нормально. Если же горит только один из них, значит, дан­
ный порт работает в режиме 1 О Мбит/с. А если вообще не горит ни один из
индикаторов, значит, вам нужно переобжать кабель.
6.2. Настройка сети с помощью графического
конфигуратора
В каждом дистрибутиве Linux есть графические конфигураторы. Конечно,
на сервере далеко не всегда устанавливается графический интерфейс,
поэтому такие конфигураторы будут недоступны, однако не сказать о них
тоже нельзя. Сначала мы рассмотрим графические конфигураторы, а затем
рассмотрим настройку сети в консоли - с помощью конфигурационных
файлов.
Прежде чем приступить к настройке сети, ради справедливости нужно отме­
тить, что в большинстве случаев настраивать ничего не придется - во всех
современных сетях есть DНСР-сервер, который и настраивает все осталь­
ньiе компьютеры. Настройка сети может понадобиться разве что на самом
DНСР-сервере, но это только в том случае, когда вы настраиваете сеть с
нуля. Опять-таки, если вы подключили свои домашние компьютеры к марш­
рутизатору, то в качестве DНСР-сервера будет выступать сам маршрутизатор
и вам в большинстве случаев вообще не придется ничего настраивать.
•
•
18---------------------------------------------------------------------------------·
1 1,11ы (, •lою1.11,ш111 се 11.
В UЬuntu для настройки локальной сети щелкните по значку сети в правом
верхнем утлу (рис. 6.1). Выберите команду Параметры соединения, чтобы
открыть конфигуратор сети.
Л Проводное сеть
подключена
Выключить
Параметры соединения
О Настройки
i заблокировать
Выключить/ завершить сеанс
►
Рис. 6.1. Системное меню
В появившемся окне Сеть нажмите кнопку с изображением шестеренки на­
против строки Подключено - 1 ООО Мбит/с (рис. 6.2).
f1o--•1000"46.ilf<
� о
-.,,.,...,..., о
"'.,
:::,..
Рис. 6.2. Окно "Сеть"
•
·---------------····----·-···-·--········-··································-·····ID
lkcl, 1 illll\
В появившемся окне на вкладке Сведения о системе убедитесь, что
включен флажок Подключаться автоматически, чтобы соединение
устанавливалось автоматически при загрузке системы (или при входе в
систему, если выключен флажок Сделать доступным для других поль­
зователей).
АЩЖIМ 1'1.161.fol.,IJ.
J.,Q:lкlf'w fel0::11Ь.:617c:7a:1:2t2
.-,l!Npnttt,a1 Щ« ОМС:29'.-42:60:92
М.�WP.,TПOtMOJl'if>tO!IO 1,z.16&14.2
PN$ '19116&.f'l.2
■
c..u��A/МAP.,'!'IQIIOJI"IOМftJI,,.
j1�coмtetlorl.hмdtt1Ul!lltsotu11111Cwchlr1JfS
- ..-·---�
....... ------·---.. "18'..
Рис. 6.3. Сведения о системе
,,.,
-,:,
Далее перейдите на вкладку IPv4 для изменения параметров протокола IP.
Стоит отметить, что по умолчанию сеть настроена на использование протокола DHCP (рис. 6.4).
•
•
....................................................................................
Рис. 6.4. Используем DHCP
Для ручной настройки выберите Вручную и укажите (рис. 6.5):
• IР-адрес, маску сети, IР-адрес шлюза (все эти параметры можно полу­
чить у администратора сети);
• IР-адреса DNS-cepвepoв, рекомендуется использовать IР-адреса Google.
При указании несколько IР-адресов разделять их нужно запятыми, как
показано на рис. 6.5.
Для сохранения настроек нажмите кнопку Применить.
В Astra Linux настройка осуществляется аналогично, только интерфейс кон­
фигуратора немного другой.
•
·---------------------------------------------------------------------------------ID
lkё1, l,iriux
Рис. 6.5. Ручная настройка
Щелкните правой кнопкой мыши на значке сетевого соединения и выберите
команду Изменить соединения (рис. 6.6).
Включить уведомления
Сведения о соединении
Изменить соединения•..
Рис. 6.6. Вызов конфигуратора сети в Astra Linux
•
1111---------------------------------------------------------------------------------·
1 1,11<,1 r, .101,a.11,/IШI П'II,
В появившемся окне выберите сетевое соединение и нажмите кнопку с
изображением шестеренки (рис. 6. 7).
Рис. 6. 7. Конфигуратор сети
Далее нужно перейти на вкладку Параметры 1Pv4 и установить параметры
сети, как это было сделано ранее в UЬuntu.
IР-адреса DNS-cepвepoв также указываются через запятые. Для применения
настроек нажмите кнопку Сохранить.
В 99% случаев вам не нужно редактировать параметры Еthеmеt-соединения,
поскольку настройка данного соединения осуществляется. по протоколу
DHCP автоматически. Конечно, в некоторых случаях, например, когда вам
нужно по тем или иным причинам клонировать МАС-адрес устройства или
у вас нет DНСР-сервера и нужно определить конфигурацию интерфейса
вручную, придется редактировать параметры проводного соединения.
•
·················································c································ID
lk,,, 1 illll\
Также настройка интерфейса вручную может потребоваться на компьютере,
который используется в качестве DНСР-сервера.
М;ю�:.1tt!ТИ
WJIIOJ
DNS�s 1 8.8.8.8:U.4.4
DНCPctit-ntlO
о
TptбoNT'- .дрес.iЦИIО JPv,tдn,i )ТОГО CotДИМ.HIUI
Рис. 6.8. Параметры 1Pv4
На вкладке Ethernet можно (рис. 6.9):
• выбрать физическую сетевую плату, которая будет использоваться для
этого соединения (список Device);
• изменить МАС-адрес соединения (Cloned МАС address);
• задать MTU соединения.
•
ID-·················:································································
1 I.Iв,I (1 • lн1-..а 11,11ан 4,.•t.·11,
Рис. 6.9. Вкладка Ethernet в Astra Linux
6.3. Команда ifcon.fig
Команда ifconfig используется для настройки и отображения
параметров сетевого интерфейса.
� '(.. - - - -
Если ввести команду ifconfig без параметров, то мы получим список всех
активных интерфейсов, например:
еnsЗЗ
•
Link encap:Ethernet НWaddr OO:OC:29:C2:0D:D1
, inet addr:192.168.52.154 Вcast:192.168.52.255 Мask:255.255.255.0
inetб addr: fe80::20c:29ff:fec2:ddlt64 Scope:Link
UP BROADCAST RUNNING МULTICAST Мl'U:1500 Мetric:1
RX packets:425 errors:0 dropped:O overruns:O frarne:0
ТХ packets:406 errors:O dropped:O overruns:O carrier:0
·--------------------------------------------------------------·-·-···-···---··--·tD
lkc1,li1111,
collisions:O txqueuelen:1000
RX bytes:41540 (40.5 КЬ) ТХ bytes:39618 (38.6,КЬ)
lo
Link encap:Local LсюрЬасk
inet addr:127.0.0.1 мask:255.0.• 0.0
inet6 addr: ::1/128 Scope:Host
UP LСХ)РВАСК RUNNING мru:65536 Мetric:1
. RX packets:96 errors:O dropped:O overruns:O fraпe:O
ТХ packets:96 errors:O dropped:O overruns:O carrier:0
collisions:O txqueuelen:0
RX bytes:5760 (5.6 КЬ) ТХ bytes:5760 (5.6 КЬ)
r--------------------------------------------------------------,
1
1
1 ПРИМЕЧАНИЕ. Даже если сетевые интерфейсы не настрое- 1
1 ны, в выводе ifconfig должен быть интерфейс lo. Если его нет, 1
служба network не запущена. Для ее запуска введите команду от
1 пользователя root: service network start.
1
!
!
t______________________________________________________________J
Разберемся, что есть что.
У нас есть два сетевых интерфейса - ens33 (Ethemet aдaптep) и lo (интер­
фейс обратной петли).
0
Второй используется для тестирования работы сети и всегда имеет IР-адрес
127.0.0.l. Также он может использоваться для обращения к локальному
компьютеру.
Например, если на вашем компьютере установлен MySQL-cepвep, то в РНР­
сценариях можно смело указывать адрес 127.0.0.l или localhost, чтобы ука­
зать, что вы обращаетесь к MySQL-cepвepy, запущенному на этом компью­
тере.
Рассмотрим поля вывода ifconjig:
• HWaddr - содержит аппаратный МАС-адрес (в нашем случае это
00:0C:29:C2:0D:Dl);
• inet addr - содержит 1Рv4-адрес интерфейса ( 192.168.52.154);
• inetб addr - содержит IРvб-адрес интерфейса;
'
• Bcast - адрес для широковещательной пеР,едачи;
• Mask - маска сети;
• МГИ - значение MTU (Maximum transmission unit);
-:--···········-·························-····-····-···-·························'
• collisions - счетчик коллизий, если количество коллизий больше О, с ва­
шей сетью творится что-то неладное. Как правило, в современных ком­
мутируемых сетях коллизии отсутствуют вообще;
• RXpackets - количество принятых пакетов;'
• ТХpackets - количество переданных пакетов;
• RX bytes - количество принятых байтов;'
• ТХ bytes - количество переданных байтов.
Получить список всех интерфейсов, а не только активных, можно с помо­
щью параметра -а:
sudo ifconfig -а
С помощью команды ifcon.fig можно деактивировать (down) и активиро­
вать (up) любой интерфейс:
sudo ifconfig еnsЗЗ down
sudo ifconfig еnsЗЗ up
Иногда такой "перезапуск" интерфейса помогает наладить его работу. Осо­
бенно это полезно для "подвисших" беспроводных интерфейсов (wlan*).
Также с помощью ifcon.fig можно назначить IР-адрес и другие сетевые пара­
метры интерфейса, например:
sudo ifconfig еnsЗЗ down
sudo ifconfig еnsЗЗ 192.168.1.1 up
Сначала мы деактивируем интерфейс, затем назначаем новый IР-адрес и
"поднимаем" (параметр ир) интерфейс. Можно эту последовательность дей­
ствий выполнить и за три команды:
sudo · ifconfig еnsЗЗ down
sudo ifconfig еnsЗЗ 192.168.1.1
sudo ifconfig еnsЗЗ up
•
·---------------------------------------------------------------------------------111
lk, 1, 1 illll\
Аналогичным образом можно назначить маску сети и широковещательный
адрес:
sudo ifconfig eth0 10. О. О.1 netmask 255. 255. 255. 240 broadcast 10. О. О .15
После изменений параметров интерфейса не забудьте его активировать с по­
мощью команды up:
sudo ifconfig eth0 up
Изменить MTU интерфейса можно так:
sudo ifconfig eth0 down
sudo ifconfig eth0 mtu ХХХХ up
Одной из самых интересных возможностей ifconfig является
перевод интерфейса в так называемый promiscuous mode.
В обычном режиме сетевая карта, если принимает пакет, который был адре­
сован не ей, его просто отбрасывает. В promiscuous mode карта будет при­
нимать даже те пакеты, которые не были ей адресованы. Такая возможность
может понадобиться для перехвата трафика:
sudo ifconfig eth0 promisc
Перевести карту в обычный режим можно командой:
sudo ifconfig eth0 -promisc
Помните, что параметры, за�анные с помощью ifconfig, хранятся только до
следующей перезагрузки. Если вы хотите сохранить назначенные параме­
тры, нужно или использовать конфигураторь{ сети (описаны ранее), или ре­
дактировать файлы конфигурации (будут описаны далее).
•
•
•
1118--------------------------"------·-----------------------------------------------·
•
6.4. Имена сетевых интерфейсов в Linux
· В Linux у каждого сетевого интерфейса есть свое имя, чтобьi администратор
сразу понимал, что это за соединение.
Например, у всех РРР-соединений имя ррр?, где? -номер соединения: пер­
вое соединение называется рррО, второе - ррр 1 и т.д.
Нумерация соединений начинается с нуля. В таблице 6.2 приведены назва­
ния часто используемых сетевых интерфейсов.
Таблица 6.2. Имена сетевых интерфейсов в Linux
•
Название интерфейса
Описание
lo
Интерфейс обратной петли
eth, он же ens
Сетевой интерфейс Ethemet
ррр
Соединение РРР (Point-to-Point)
wlan
Беспроводной сетевой интерфейс
tr
Сетевой интерфейс Token Ring_
plip
Сетевой интерфейс PLIP (Perallel Line IP).
Очень старый интерфейс, вряд ли вы будете с
ним иметь дело
sl
Сетевой интерфейс SLIP (Serial Line IP). Тоже
"древний" интерфейс
fddi
Интерфейс к карте FDDI
ах
Сетевой интерфейс любительскQго радио
АХ.25
·--------------------------------------···-··-------------------------------------11!1
.
Интерфейсы создаются автоматически ядром для каждого обнаруженного
сетевого устройства. Исключения составляют разве что интерфейсы ррр,
которые создаются во время настройки сети. Например, у вас может быть
РРРоЕ-соединение к провайдеру и сетевая карта ethO.
Сетевой интерфейс ehtO для сетевой карты будет создан автоматически ядром.
Но ядро не знает, как вы будете использовать эту карту - для подключения
к локальной сети или как РРРоЕ-соединение с провайдером, поэтому оно не
может создать интерфейс рррО, прочитав ваши мысли. Поэтому интерфейс
рррО будет создан уже во время настройки РРРоЕ/АDSL-соединения с ва­
шим провайдером. О таких соединениях мы поговорим в других главах.
Все было бы хорошо, если по непонятным причинам в последних верси­
ях ядра интерфейсы не переименовали. Так, старый добрый ethO теперь
почему-то называется ens33, в некоторых дистрибутивах даже enp3s0. Логи­
ки в таких именах не очень много, да и хочется, чтобы имена интерфейсов
были такие же, как раньше - как-никак 20-летняя традиция. Ради справед­
ливости нужно отметить, что в Astтa Linux интерфейс называется как нужно
- ethO (рис. 6.10).
Рис. 6.1О. Вывод ifconfig в Astra Linux
....................................................................................
На самом деле, логика в новых названиях есть, но только с точки зрения
самого компьютера и разработчиков udev. Пользователям и администрато­
рам такая логика не очень понитна. Например, имена, вовлекающие предо­
ставленный BIOS индекс для встроенных в мэ_теринскую плату устройств
(ID_NET_NAМE_ONВOARD), выглядят так-еnоl.
Имена адаптеров, подключающихся к шине PCI Express, будут содержать
номер слота (ID_NET_NAМE_SLOT), например, ensl.
Имена, вовлекающие физическое/географическое расположение коннектора
(ID_NET_NАМЕ _рАТН), выглядят еще сложнее - enp2s0.
Ну и самые "страшные" - это имена с МАС-адресами интерфейсов
(ID-NET-NАМЕ-МАС). Пример такого имени: enx78e7dlea46da..
l
Конечно, можно оставить все как есть - все будет прекрасно работать. Но
если вам привычнее обычные имена, то есть несколько способов вернуть
все, как было раньше.
Первый способ заключается в редактировании файла /etc/udev/rules.d/70my-network.rules (или 70-persistent-net.rules). Если такого файла у вас нет,
значит, его нужно создать: Примерное содержимое файла следующее:
t PCI device (r8169).
SUBSYSTEМ=="net", ACTION=="add", ATTR{address)=="xx:xx:xx:xx:xx:xx",
NAМE="eth0"
/
# USB device (usb)
SUВSYSTEM=="net", ACTION=="add", ATTR{address)=="yy:yy:yy:yy:yy:yy",
NAМE="wlan0"
Здесь хх нужно заменить МАС-адресом вашей сетевой карты, а У.У-МАС­
адресом вашего беспроводного адаптера.
Есть и второй способ - передать ядру параметр net.ifnames = O. О том, как
это сделать, будет рассказано в дальнейшем.
6.5. Общие конфигурационные файлы
•
Наверняка вам интересно, куда конфигураторы сохраняют введенные вами
настройки? Об этом мы обязательно поговорим, тем более что файлы конфи-
··················································································1111
i5.
е\
::::
.,"'
с.
.,,
с.
гурации сети отличаются в зависимости от используемого дистрибутива. Но
сначала мы рассмотрим общие файлы конфигурации, имеющие отношение
к сети. Эти файлы есть во всех дистрибутивах Linux, и их назначение оди­
наково.
· Файл /etc/hosts
Когда еще не было системы разрешения доменных имен (DNS), в этом фай­
ле прописывались IР-адреса узлов и соответствующие им имена узлов. Эти
· файлы тиражировались от компьютера к компьютеру. Если в сеть добавлял­
ся новый компьютер, изменения нужно было внести в файлы /etc/hosts на
всех компьютера.
Сегодня этот файл пра.ктичесJ<И не используется и в нем содержится только
IР-адрес узла localhost - 127.0.0.1 и аналогичные IРvб-адреса. Формат за­
писей этого файла следующий:
IР-адрес
Имя
Например:
127.0.0.1
localhost
Файлы /etclhosts.allow и /etc/hosts.deny
Содержит IР-адреса узлов, которым разрешен (hosts.allow)
или запрещен (hosts.deny) доступ к сервисам данного узла.
Опять-таки - это устаревшие конфигурационные файлы. Вы можете их ис­
пользовать, однако в настоящее время ограничение доступа _к определенной
службе или узлу достигается путем редактирования правил брандмауэра, а
не путем редактирования этих,файлов. При желании, конечно, вы можете их
использовать, но среди своих коллег вы будете,выглядеть настоящим дино­
завром.
•
•
11!1---------------------------------------------------------------------------------·
Файл /etcihost.conf
Содержит параметры разрешения ДОМ/ЭННЫХ имен, которые
указываются директивой order.
Так, order hosts, Ьind означает, что сначала поиск IР-адреса по до­
менному имени будет произведен в файле /etc/hosts, а затем - с помощью
DNS-cepвepa.
Если для вас это существенно, можете изменить порядок на Ьind, hosts,
ведь файл hosts уже никем давно не используется и искать там нечего.
Директива mul ti on в этом файле означает, что одному доменному имени
могут соответствовать несколько IР-адресов.
Файл /etc/hostname
Обычно в этом файле содержится имя узла.
Оно записано одной строкой, больше никаких директив в этом файле нет.
Файл /etc/motd
Содержит сообщение дня, которое может использоваться
некоторыми сетевыми службами (например, FTP) и
отображаться при входе пользователя в систему.
Чтобы ваша сетевая служба использовала именно этот файл, нужно прове­
рить ее файл конфигурации.
·.---------------------------------------------------------------------------------1111
•
l{ccl, l,illll\
Файл /etc/resolv.conf
Обычно в этом файле содержатся параметры резолвера
доменных имен. Директива search задает список доменов, в
которых будет произведен поиск доменного имени, если оно
введено не полностью.
Например, пусть директива search определена так:
search org org.ru net
Вы вводите доменное имя не полностью (например, в браузере) - dkws,
Тогда резолвер попытается сначала разрешить доменное имя dkws,org,
потом.---- dkws,org,ru, а уж потом, если ни один из первых двух вариантов не
был разрешен в IР-адрес, - dkws.net.
Директива nameserver позволяет определить IР-адрес
сервера DNS. В одной директиве можно указать только один
сервер.
Всего в файле конфигурации может быть определено до четырех серверов
имен:
nameserver 8.8.8.8
nameserver 8.8.4.4
Пример файла конфигурации /etc/resolv.conf приведен в листинге 6.1.
1
IJ ЛИСТИНГ 6.1. Файл /etc/resolv.conf
search dkws.org.ru
nameserver 8.8.8.8
nameserver 8.8.4.4
•
•
ID··················································································
] 1 !Н i 11 • fo1-..·.1 11,llaSI t't• 11,
Файл /etc/services
Все мы знаем, что за· сетевыми службами закрепляются определенные но­
мера портов. Например, службе рорЗ соответствует порт 11О, ftp - порт 21.
Эти соответствия и определяются в файле /etc/services. Обычно вам не при­
дется редактировать этот файл. Скорее, вы будете его использовать в каче­
стве информационного, чтобы знать, какой порт соответствует какой службе.
Файл /etc/protocols
Тоже сугубо информационный файл (его можно редактировать, но вряд ли
вы будете это делать). В нем описываются имена протоколов, их номера,
псевдонимы и комментарии, а также ссьmки на RFС-документы. Полезный
файл, если вы собрались разобраться по очереди во всех сетевых протоко­
лах.
Файл /etc/networklinterfaces: конфигурация сети в Astra Linux
Основной конфиrурационный файл сети в Astra Llnux
называется /etc/network/lnterfaces. Он содержит
параметры сетевых интерфейсов, если не используется
Network Manager.
Вот пример описания интерфейса ethl со статическим IР-адресом:
iface ethl inet static
address .192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
IР-адрес
t маска сети
t Шлюз
f
Думаю, здесь все более-менее ясно. Если интерфейс настраивается по DHCP,
его конфигурация будет выглядеть так:
•
··················································································-1111
I\" ,. 1 i1111,
,.,.·
�
;
auto ethO
iface ethO inet dhcp
,:,;
Каталог /etc/NetworkManager/system-connections: конфигурация
сети в Ubuntu
В Ubuntu параметры сетевого интерфейса хранятся в
каталоге /etc/NetworkManager/system-connectlons.
В этом каталоге находятся несколько файлов, имена
этих файлов соответствуют наз_ваниям соединений в
NetworkManager.
Например, в файле 'Проводное соединение l .nmconnection' находятся пара­
метры первого проводного соединения (лист. 6.2).
ЛИСТИНГ 6.2. Пример настройки интерфейса со статическим
IР-адресом
[802-3-ethernet]
duplex=full
[connection]
id=Проводное соединение 1
uuid= 00779lбi-Oa51-44ad-a2b3-b5765�65b496
type=802-3-ethernet
timestamp=l419337229
[ipvб]
method=auto
ip6-privacy=2
�
[ipv4]
method=manual
�ns = 8. 8. 8. 8;
\
�
addr�ssesl=l92.168.l.101;24;192.168.1.J;
�
Как видите, протокол IPv4 настраивается вручную (method=manual).
•
llr!I··················································································
Бьш задан DNS-cepвep (8.8.8.8), а также IР-адрес узла (192.168.1.101), маска
сети (24-соответствует255.255.255.О), а также адрес шлюза-192.168.11
. .
Если нужно добавить еще один IР-адрес, просто добавьте строку addressesN:
addresses2=192.168.l.102;24;192.168.l.l;
Для настройки интерфейса по DHCP измените параметр method:
[ipv4]
method•auto
Если вы изменили параметры· интерфейса, контролируемого Network
Manager, и не через интерфейс NМ, а вручную,. тогда нужно перезапустить
Network Manager:
# service network-manager restart
""'
:::,.
с:,,
•
....................................................................................
· Глава 7.
БЕСПРОВОДНАЯ
WI-FI-CETЬ
л •
lk,1, 1 illll\
Беспроводные сети быстро завоевали популярность.
Оно и понятно - быстро, просто, дешево.
Судите сами: не нужно прокладывать кабели, обжимать их. Все, что нужно,
- купить «коробочку» (самые дешевые сейчас можно встретить чуть доро­
же 1000 рублей) и включить ее. Можно даже не настраивать, а использо­
вать те пароли, которые указаны на самой «коробочке». В итоге начальное
«разворачивание» сети у вас займет 5 минут на выбор размещения Wi-Fi­
маршрутизатора и его включение, и еще по 1 минуте на настройку каждого
узла, который будет подключаться к беспроводной сети. Это потом уже вам
захочется улучшить прием, выбрав друтой канал, поменять пароли по умол­
чанию и т.д. Если у вас к беспроводной сети подключается 5 устройств, то на
первоначальную настройку всей сети будет потрачено 10-15 минут.
"'
"С
Давно прошли те времена, когда настройка беспроводной сети в Linux напо­
минала шаманские заклинания и пляски с бубном вокруг компьютера.
Сейчас все происходит так же, как и в случае с «нормальными» операцион­
ными системами - выбрал сеть, ввел пароль и работаешь.
Мы рассмотрим, как подключиться к Wi-Fi с помощью графического ин­
терфейса и как проделать то,же самое в консоли. Такой «лайфхак» может
понадобиться вам при администрировании сервера без графического интер­
фейса. Обычно серверы подключают посредством проводной сети, что на­
дежнее, но и с проводной сетью может что-то случиться, а какой-никакой
•
11!1-------------············-·······------------------------------------------------·
1 1ава 7
l,t'CII\JOI\Cl,\ШIII
"i-l•"i -t't'I I,
канал нужно обеспечить, поэтому в качестве резервного канала можно ис­
пользовать беспроводную сеть. Вот ее настройку мы и рассмотрим.
7.1. Настройка беспроводной сети с помощью
графического интерфейса
Мы будем считать, что беспроводной адаптер подключен к компьютеру и
включен. Если у вас стационарный компьютер, убедитесь, что вы подключи­
ли Wi-Fi-aдaптep к USВ-порту. Также убедитесь, что он работает - на самих
адаптерах иногда есть переключатели, позволяющие включать/выключать
их. Если адаптер работает, индикатор на нем светится.
С ноутбуками может быть все немного сложнее. Адаптер, как правило,
встроен в ноутбук, но может быть выключен.
Обычно включение/выключение адаптера происходит
посредством комбинации клавиш Fn + Fx, где Fn - это
клавиша, которая находится, как правило, справа от левого
Ctrl), а Fx - одна из функциональных клавиш (F1-F12).
Над такой клавишей обычно есть изображение беспроводной сети или само­
лета. Так, на ноутбуках НР на клавише Fl2 есть изображение самолета, на­
жатие комбинации Fn + Fl2 переводит ноутбук в режим полета; когда Wi-Fi
выключается, повторное нажатие переключает ноутбук в обычный режим
- в нем Wi-Fi доступен. На некоторых ноутбуках могут быть аппаратные
переключатели (выполненные в виде переключателя или кнопки) для вклю­
чения/выключения Wi-Fi. Если не разберетесь, обратитесь к документации
по ноутбуку.
Итак, если беспроводной адаптер подключен и включен, в меню
NetworkМanager появится возможность подключения к беспроводной сети
(рис. 7.1).
Если в меню не появился пункт Wi-Fi сеть не подключена, значит, есть
какая-то проблема с беспроводным адаптером. Как правило, он просто
выключен. Если данный пункт в меню появился, выберите его .
•
············--·-------------------·---·---·--·······-············-····-···--······tlll
lkct, \.iriu,
--------(-
h Проводное сеть
подключена
<;) Wi-Fi сеть
не подключена
О настройки
!il заблокировать
выключить/ завершить сеанс
Рис. 7.1. Wi-Fi активирован, но не подключен к сети
Далее нужно выбрать команду Выбрать сеть (рис. 7.2). Появится список
сетей, в котором нужно выбрать сеть и нажать кнопку Соединиться (рис.
7.3). Далее введите пароль и дождитесь подключения к сети.
сеть
.... Проводное
подключена
Wi-Ficeть
9 не подключена
Выбрать сеть
Выключить
Параметры Wi-Fi
о Настройки
!il заблокировать
:::
-с::
:=
i5
il:
�
�
� Выключи�/ завершить сеанс
Рис. 7.2. Используйте команду
<<Выбрать сеть»
►
•
18---------------------------------------------------------------------------------·
1 1,111.1 7 bt'CllpOBIJ,\Ш\11 "i-1-'i -се 11,
Рис. 7.3. Список сетей
Команда Параметры Wi-Fi открывает окно, в котором будет список сетей.
Нажмите значок шестеренки напротив сети, к которой вы подключены, что­
бы открыть ее параметры.
Особо интересного в этих параметрах нет, разве что вы можете узнать
аппаратный адрес (МАС-адрес) беспроводного адаптера, а также разрешить/
запретить подключаться к сети автоматически и сделать это подключение
доступным для других пользователей компьютера (рис. 7.4).
Параметр Metered connection: has data limits or can incur charges полезен,
если вы подключаетесь к Wi-Fi, созданной путем «расшаривания» соедине­
ния на мобильном телефоне или же при подключении к платной Wi-Fi отеля,
где есть тарификация трафика. В этом случае система при подключении по
тарифицируемому соединению не будет загружать обновление программ и
прочих больших объемов данных.
•
·----------------------------------------------------------------------------------111
Рис. 7.4. Параметры беспроводного соединения
Отдельного внимания заслуживает подключение к скрытой сети. Такие сети
не отображаются в списке сетей. Для подключения к такой сети в UЬuntu
нужно открыть окно Параметры Wi-Fi, далее из меню выбрать команду
Подключиться к скрытой сети (рис. 7.5). После этого нужно будет ввести
SSID сети и пароль для подключения к ней.
Подключиться к скрытой сети .. .
Включить точку доступа Wi·Fi .. .
Известные сети Wi·Fi
а
Рис. 7.5. Подключе1111е к скрытой сети
................. : .................................................................
,
1 '·'"·' 7 l,t•t'IIJIOIIO Щ:111 \\ i-l;i
l."t'I I,
В Astra Linux подключение к Wi-Fi еще удобнее, чем в UЪuntu. Хотя бы пото­
му, что не нужно щелкать по пункту Wi-Fi-ceть не подключена и не нужно
выбирать команду Выбрать сеть - вы экономите целых два клика мышки.
Щелкните по значку NetworkМanager, и вы сразу получите список сетей.
Если нужной сети нет в списке, используйте меню Еще сети, а для под­
ключения к скрытой сети - команду Подключиться к скрытой сети Wi-Fi.
AL
TP-Unk
tvan
Maksik
T PUnk_8982
ЕщfсеТ\11
Соединения VPN
Рис. 7. 6. Въ1бор сети
Далее нужно ввести только пароль для подключения к сети и дождаться са­
мого подключения.
ПРИМЕЧАНИЕ. Обычно Wi-Fi-ceти требуют пароль для подклю­
чения к ним. Такие сети в списке сетей отмечаются замочком.
Если замочка нет, то сеть считается доступной для всех. Если вы
не знаете, что это за сеть, подключаться к ней не рекомендуется,
поскольку часто открытые сети разворачиваются злоумышлен­
никами для кражи ваших данных , которые вы будете передавать
через их сеть.
'-----------�---------------------------------------------------------------------18
lkc1, l.i1111,
Рис. 7. 7. Ввод пароля
7.2. Настройка беспроводного соединения в
командной строке (WЕР-шифрование)
.,
"С
Первое, что нужно сделать, - посмотреть, какие сетевые адаптеры имеются
у нас на компьютере:
sudo ifconfig -а
Вывод будет содержать имена и подробное описание всех сетевых интер­
фейсов, которые удалось обнаружить утилите ifconfig.
Если не был обнаружен желаемый, то причина заключается только в одном
- нет драйверов для него и не включена поддержка этого интерфейса в ядре
Linux. Обычно беспроводной интерфейс называется wlanO.
Запустим его:
..................................................................................
,
1 1,\В,\ -
l,t·t·11po110 111.111 \\ i-1· i -t't' 1 ,.
sudo ifconfiq, wlanO up
Опция ир говорит команде ifconfig запустить для работы («поднять») сетевое
устройство.
Теперь нам надо сканировать эфир вокруг себя на наличие доступных бес­
проводных сетей:
sudo iwlist wlanO scan
Здесь wlanO - имя нашего адаптера, scan - режим сканирования сетей.
Результатом работы iwlist будет детальный отчет, из которого на данном эта­
пе нас интересует только одна строчка: ESSID:»Some_Name».
Значение параметра ESSID («Some_Name») - это имя беспроводной точки
доступа. Теперь мы знаем, к какой конкретно Wi-Fi-ceти мы будем подклю­
чаться.
Выполняем подключение:
· sudo iwconfig wlanO essid Имя_сети key Пароль
Здесь все просто: мы указываем имя адаптера, SSID сети и пароль для под­
ключения к ней.
Команда iwconfig по умолчанию использует для ключа
шифрования данные в шестнадцатеричном виде НЕХ.
Если вы хотите указать ключ в виде простого текста (ASCII), вам необходи­
мо использовать опцию s.
Например, так:
sudo iwconfig wlanO essid Some_:Name key s: Wireless_Key
Соединение установлено .
....................................................................................
IJ,, ,. 1 i1111,
Последний шаг - получаем от DНСР-сервера Wi-Fi-точки IР-адрес:
sucto·cthclient wlanO
Естественно, вышеуказанные шаги выполнять каждый раз утомительно.
Можно упростить процесс установки соединения, написав скрипт подклю­
чения, в котором мы объединим все эти команды в одно целое:
# ! /Ьin/bash
ifconfig wlanO up
iwconfig wlanO essid Some Name key s :Wireless_Key
sleep 10
dhclient wlanO
Здесь мы добавили еще одну команду sleep с параметром 1 О секунд. Это ре­
комендуется делать перед получением IР-адреса для надежности установки
соединения.
Сохраняем этот файл под каким-либо именем (например, wireless_up) и де­
лаем его исполняемым коt1андой:
sudo chmod u+x wireless_up
Переносим wireless_up по пути /usr/local/Ьin, чтобы сделать его глобально
видимым всей системой.
Теперь вам достаточно набрать в командной строке:
sudo wireless_up
...и соединение будет установлено.
..
7.3. Соединение с точкой доступа по WРА­
шифрованию
•
·······························:··················································
1 ,.,в., - l,,·,·11po110 111а11 \\ i-1 i ,·,· 1 1,
Соединение с таким шифрованием поддерживает только утилита wpa_
supplicant, поэтому она нам понадобиться. Опять-таки, предполагаем, что
мы знаем ключ (пароль) шифро�ания этой точки доступа.
Генерируем пароль на основе этого ключа с помощью утилиты wpa_pass­
phrase, которая входит в состав пакета wpa_supplicant. Дело в том, что па­
роль, который мы будем использовать далее, должен быть в виде шестнад­
цатеричного числа:
sudo wpa_passphrase ssid password
Утилита выдаст сгенерированную строку psk, которую мы вставим в конфи­
гурационный файл wpa_supplicant.conf:
Network= {
ssid= SSID
psk= PSK}
Это очень упрощенный файл конфигурации, но он будет работать. Возмож­
но, вам потребуется добавить в шапку этого файла еще одну строку:
ctrl_interface= DIR=/var/run/wpa_supplicant GROUP=wheel
для предоставления необходимых прав доступа.
"Поднимаем" интерфейс. wlanO:
sudo ifconfig wlan0 up
Указываем, к какой точке мы хотим подключиться:
·sudo i.wconfig w:lan0 essid ssid
Запускаем утилиту wpa_supplicant на установку соединения:
•
sudo wpa_supplicant -В �Dwext -i wlan0 -с /etc/wpa_supplicant.conf
·----------------------------------------------------------------------------------111
lkc 1, 1 i1111\
Разберемся, какие параметры мы указали:
• -В
- запускать команду wpa_supplicant в фоновом режиме;
• · -Dwext - говорим утилите wpa_supplicant использовать драйвер wext
для интерфейса wlanO;
• -i - задаем настраиваемый сетевой интерфейс (wlanO в нашем слу­
чае);
• -с
- указываем путь к конфигурационному файлу wpa_supplicant.conf.
Проверяем, что соединение установлено:
sudo, iwconfig wlanO
На выводе увидим подробную информацию об интерфейсе wlanO.
Получаем локальный IР-адрес:
sudo'dhclient wlanO
Упрощаем процесс, создав в файле /etc/network/interfaces запись следующе­
го вида:
auto wlanO
iface wlanO inet dhcp
.pre-up wpa_supplicant -Bw -Dwext -i wlanO -с /etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant
В зависимости от дистрибутива Linux, .существует множество способов
настройки Wi-Fi-соединений. Приведенные примеры позволяют настроить
соединение практически в любой Linux-cиcтeмe. Главное, чтобы сам бес­
проводной адаптер поддерживался в Linux на уровне :драйверов.
................ : .................................................................
,
Глава 8.
VРN-СОЕДИНЕНИЕ
л •
8.1. Зачем нужна VPN
VPN (Virtual Private Network) - довольно популярная в последнее время тех­
нология. Эта технология довольно многогранная и может использоваться
для самых разных целей.
Основная ее задача - шифрование трафика,
передаваемого по VРN-соединению.
Пользователи используют VPN для достижения одной из целей - обеспече­
ние анонимности и/или обход блокировки ресурса, получение безопасного
доступа к сети предприятия-из небезопасной сети.
:о
);а
'С
...
'С
=
Бывает так, что контролирующие органы закрывают доступ к тем или иным
ресурсам, которые пользователь хочет получить. Законность и моральную
сторону этих вопросов рассматривать не будем, тем более что иногда ресур­
сы закрываются по политическим причинам. Вовсе не означает, что если
ресурс заблокирован, то сразу на нем продают наркотики, оружие и детскую
порнографию. В некоторых странах, например, запретили доступ к попу­
лярным социальным сетям сугубо по политическим причинам и тем самым
способствовали совершенствованию технических навыков большей части
населения - даже обычная домохозяйка знает, что такое VPN и как его ис­
пользовать для подключения к Одноклассникам.
Вторая распространенная причина - подключение к офисной сети для пере­
дачи документов, составляющих коммерческую тайну. Поскольку не всегда
сеть, через которую проходит соединение с офисом, безопасна (например,
это может быть сеть отеля, ресторана, аэропорта), то доверять такому соеди­
нению нельзя, и поэтому настраивают перещ�чу данных по зашифрованному
VРN-соединению. Так можно быть уверенным, что важные документы не
будут перехвачены.
•
•
...................................·................................ ................ .
_
1 1.1в.1 Х \ l'�-Ctlt' (llllt'IIЩ'
В более поздних главах будет показано, как настроить собственный VPN­
cepвep, а пока разберемся, как настроить VРN-подключение в UЬuntu и Astra
Linux.
8.2. Настройка VРN-подключения в Ubuntu
Для настройки подключения к виртуальной частной сети в UЬuntu выполни­
те следующие действия:
1. Откройте окно Настройки.
.о
:;
;;:
с,.
"'
2. Перейдите в раздел Сеть.
Q
с,.
""'
с.
с,.
Рис. 8.1. Настройки, Сеть
3. В группе VPN нажмите кнопку +.
4. Выберите тип протокола - OpenVPN или РРТР. Позднее мы будем рас­
сматривать создание VPN-cepвepa на базе OpenVPN, выберите этот вари­
ант (рис. 8.2). Можно также выбрать вариант Импортировать из файла
•
.....................................................................................
Bc·t:1, l,i1111\
и выбрать файл, созданный нами при настройке учетной записи пользо­
вателя. Тогда можно пропустить указанные далее действия.
5. Выберите сертификаты, сгенерированные в процессе настройки сервера
и создания учетной записи пользователя, введите пароль от сертификата.
6. Введите IР-адрес или доменное имя сервера VPN. Остальные параметры
можно не изменять.
7. Если нужно изменить порт соединения, нажмите кнопку Дополнительно
и укажите порт и/или другие дополнительные параметры.
8. Нажмите кнопку Добавить в верхнем правом углу.
9. Щелкните по созданному соединению для установки подключения.
Рис. ·а·!· Выбор типа протокола
•
at··················································································
1 1.1/Ш � \ P'i-coc 1111/CIIIIC
l... ,.
...............
�
-
доы...,.vРJ.
--
-
.....
о
о
111
g_
111
t::
о
Рис. 8.3. ПарШ1tетры соединения
8.3. Настройка VРN-подключения в Astra Linux
В данной системе настроить VРN-соединение можно так:
1. Из меню Network Manager выберите команду Соединения VPN, Доба­
вить VРN-соединение (рис. 8.4).
2. Появится окно, в котором нужно или выбрать пункт OpenVPN для руч­
ной настройки, или же выбрать Импортировать сохраненную конфигу­
рацию VPN для использования сгенерированного при настройке учетной
записи файла.
•
··················································································t:D
lkcl, l.i1111x
Рис. 8.4. Меню Network Manager
3. При ручной настройке вам нужно указать IР-адрес или имя VPN-cepвepa,
а также сертификаты и пароль пользователя (рис. 8.5, 8.6, 8.7). При на�а­
тии кнопки Дополнительно есть возможность указать дополнительные
параметры, например порт соединения, если используется нестандарт­
ный.
Рис. 8.5. Тип VРN-соединения
4. Нажмите кнопку Сохранить для созданиt! соединения. Оно появится в
меню Network Manager, и его можно будет выбрать для установки
соединения.
•
•
ID-···········································-···-········-·�·······················
1 1,111.1 Х \ l'i'--ror,11111t•1111t·
Изменение VРN·соединение 1
Connection name l
VPN
_
О
х
riAJIO!JФф§ШiJ
Проксм "'1�метры IPY4 П,)J)аМt!Тры IPvб
Общие
Шлюз:
Аутентм♦мкаЦМJI
Тип:
Сертификаты (ТLS)
СА certificdte
(Нет)
Попьюватv�ь certifate
(Нет)
L�
Польюеаrель prrvate key
Пользователь k(o/ pa5sword
О Show password
" Дополнительно...
Отменит11о
·о
анить
Рис. 8.6. Настройки VРN-соединения
o�_,.....,..,..�....,_,-­
o�-�ounwuo
о�"'-тс,
OJШn.•1111�)CPOln...
□--118С1'�___.р.u,нр_,,,._с�
o�..-n....._.pl,JOOIJl...,_.I.P:
QOr..-.m,--...мl�__,.JTCJ'(МSS)�
[jlw6lop,11,y--�
Oc.....o11""9tМwni,,,e
O�n.�•ruцl'08(p,ng):
[J�--�.-бaro...-.lfЬlcl
Qw.,,.---мapwpJ\'0$"
•
Рис. 8. 7. Дополнительные параметры Ореп VPN
....................................................................................
Глава 9.
DSL-СОЕДИНЕНИЕ
л •
l\c l 1, ( iJIIJ\
9.1. Несколько слов о DSL-дocтyne
Технология DSL (Digital Subscriber Line) является довольно популярной в
последнее время, поскольку сочетает в себе надежность, невысокую стои­
мость и высокую скорость соединения.
Существуют различные варианты предоставления DSL-доступа конечному
пользователю.
Самый распространенный из них - пользователю предоставляется DSL­
модем, который, с одной стороны, подключается к Еthегпеt-адаптеру, а с дру­
гой - к телефонной линии через специальный АDSL-сплиттер (чтобы бьша
возможность при�имать обычные звонки).
Второй вариант немного проще -· к компьютеру пользователя подведен
лишь Еthегпеt-кабель, ведущий к оборудованию провайдера, а само обору'
давание пользователь даже и не видит.
В обоих случаях нужно настроить РРРоЕ-соединение. Протокол РРРоЕ (РРР
over Ethernet) подразумевает передачу кадров протокола РРР по Еthегпеt­
линии. В этой главе будет рассмотрена настройка РРРоЕ-клиента, а рас­
смотрение настройки РРРоЕ-сервера выходит за рамки этой книги.
Соединения DSL/PPPoE уже не такие популярные, какими они бьши лет пять
назад, и мы столкнулись с небольшой дилеммой: стоит ли включать описа­
ние процесса настройки в книгу? С одной стороны, соединение устаревает,
и провайдеры постепенно от него отказываются. С другой стороны, все еще
есть провайдеры, использующие этот тип соединений. Масла в огонь подли­
ли разработчики UЬuntu: если раньше для со,здания DSL-соединения нужно
было нажать кнопку + и ввести его параметры, то, например, в UЬuntu 23. l О
пришлось разбираться. Именно поэтому в данной книге есть описание про­
цесса настройки этого соединения.
..................................................................................
,
1 1.111.1 •1
IISI
-,·ш· 11111,·11111·
9.2. Настройка DSL/PPPoE в Ubuntu 23.10
Откройте окно настройки и перейдите в раздел Сеть. Вы будете удивлены,
но вы не найдете там возможности создать DSL-соединение. Процедура
настройки будет выглядеть так:
1. Нажмите Ctrl + Alt + Т, чтобы быстро открыть терминал.
2. Введите команду sudo nmcli con edit type рррое con-name
"Му DSL".
3. В появившемся приглашении введите команду set рррое. username
Имя, где Имя нужно заменить именем пользователя, полученным от ва­
шего провайдера.
4. Далее введите команду set pppoe.password Ваш_пароль, где Ваш_пароль
- это полученный от провайдера пароль.
5. Введите команду save, а затем команду quit.
•
Рис. 9.1. Процесс создания DSL-соединения
····------····················-·················-···--··········--·············-··al
lkct, l.i1111x
В результате выполнения вышеупомянутых действий в разделе Сеть
появится созданное нами соединение (рис. 9.2). Далее, нажав шестеренку,
вы можете отредактировать друтие параметры соединения (рис. 9.3).
Рис. 9.2. Раздел "Сеть"
Рис. 9.3. Редактирование параметров соединения
•
....................................................................................
1 1,111,1 '1 l)Sl.-t·щ• 11111t•1111t•
Для подключения просто щелкните по соединению в разделе Сеть.
Соединение будет установлено, если его параметры (как минимум имя поль­
зователя и пароль) установлены правильно.
В более старых версиях Ubuntu и других Debian/Ubuntu-coвмecтимыx
дистрибутивах, в том числе Astra Linux, используется приложение
nm-connection-editor - редактор соединений Network Manager.
Соединение РРРоЕ (DSL) настраивается следующим образом:
1. Нажмите комбинацию клавиш Alt+ F2 и введите команду nrn-connection­
editor.
2. В окне Сетевые соединения (рис. 9.4) нажмите кнопку+.
Рис. 9.4. Сетевые соединения
•
··················································································111
1\,' 1, 1 i1111,
8
Выберите тиnсоединенин
Выберите тип создаваемого смдинения.
Если nри создании VРN-<оединен�. оно не отображается в
списке, возможно, не установлен соответствую�.циА модуль VPN.
DSL/PPPoE
отменить IJ Создать...
;; =,
Рис. 9.5. Выбор типа соединения
";;
3. Выберите тип соединения DSL/PPPoE и нажмите кнопку Создать (рис.
��
�:..:
�;
9.6).
1
иктерфемс РРР
r-----"=��====---..::....�====�
Им,� nольювателя
j
Пароль
j
C/ly)l<б.11:============::::(
:=============;
J
'----,----,,-----,-----..,.,---
0 ПОU3Ы&аТЬ П.1ролЬ
Рис. 9.6. Основные параметры РРРоЕ-соединения
•
.....................................................................................
1 1,111,1 ') l)SI -{'Щ' IIIIН'IIIН'
4. В появившемся окне (рис. 9.7) введите имя пользователя и пароль. В
поле Service ничего вводить не нужно, Обязательно выберите Parent
interface - это родительский интерфейс, по которому будут проходить
РРРоЕ-пакеты. Поскольку у нас РРРоЕ - эт9 РРР over Ethemet, то нужно
выбрать сетевой интерфейс Ethemet, к которому подключен DSL-модем.
Если у вас одна сетевая карта, выберите ethO.
Метод
Автоматически� (РРРоЕ}
Доnолнмтепьнwе статические адреса
добавить
маска сети
Удалить
Дополнительные серверы ONS 8.8.8.8
доnолнительные поисковые домены
1
т
l�IIJUI_._• ___
Рис. 9. 7. Пара.метры /Pv4
5. Перейдите на вкладку Основные.
6. Если вы хотите, чтобы соединение было доступно всем пользователям,
включите флажок Все пользователи могут подключаться к этой сети
на вкладке Основные.
7. Если вы хотите, чтобы соединение устанавливалось автоматически, вклю­
чите флажок Connect automatically with priority и выберите приоритет
соединения. Да, локализация Astra Linux оставляет желать лучшего, хотя
позиционируется он как отечественный дистрибутив.
8. На вкладке Параметр PPf ничего интересного. Можно разве.что отклю­
чить неиспользуемые методы аутентификации, хотя не нужно думать, что
если вы это сделаете, ваше соединение заработает лучше.
•
·-··--·-···-···-···--···-·---··-········--··--·-·-·····--·----···········-········ID
lkc1, 1 i1111,
9. На вкладке Параметры 1Pv4 можно указать статический IР-адрес соеди­
нения. Обычно соединения настраиваются по протоколу РРРоЕ, но если
у вашего провайдера другие мысли на этот счет, можно выбрать значение
Вручную из списка Method и указать IР-адрес, маску сети и шлюз по
умолчанию, а также серверы DNS и домены поиска.
10.Если у вас несколько DSL-подключений к разным провайдерам, тогда
введите название соединения в верхней части экрана. В противном слу­
чае его можно оставить без изменений."
11. Нажмите кнопку Сохранить.
9.3. Программа pppoeconf: настройка DSL­
соединения на сервере без графического
, интерфейса
В дистрибутивах Debian и UЬuntu (кроме версии 20.04), а также во многих
других, основанных на DeЬian, имеется утилита pppoeconf, которая пред­
ставляет собой псевдографический конфигуратор РРРоЕ-соединения.
Единственный неприятный момент, связанный с использованием этого кон­
фигуратора, - то, что по умолчанию он не установлен (во всяком случае,
в DeЬian 7, в UЬuntu эта программа установлена по умолчанию). Для его
устанqвки введите команду:
sudo apt install pppoeconf
НЕ БЕСПОКОЙТЕСЬ! Даже если у вас в данный момент нет
графического интерфейса (вы его не устанавливали, поскольку
настраиваете сервер, следовательно, вы не можете запустить
NetworkManager для настройки DSL) и нет соединения с Интер­
нетом (поскольку у вас DSL-подключение, которое вам нечем
пока что настроить), программа все равно будет установлена.
Она имеется на усtановочном DVD-диске Deblan и будет загру­
жена с его репозитория.
'
.
18----------------------------------------------------------------------------------·
1 1.111.1 ') l)Sl.-cot• 11111t•1111t•
После ус_тановки программы выполните команду:
# pppoeconf
Запустите конфигуратор, который или предложит выбрать Еthеmеt­
интерфейс, который будет использован для РРРоЕ-доступа, или сообщит,
что найдено только одно устройство (рис. 9.8).
:··-··-···· 1
Рис. 9.8. Поиск РРРоЕ-концентраторов
Далее конфигуратор начнет поиск активных РРРоЕ-концентраторов через
выбранное вами устройство. Придется немного подождать.
r
1
:1 ВНИМАНИЕ! DSL-модем должен быть подключен к сетевой 1:
: карте и включен!
:
t ______________________________________________________________J
Следующий шаг - программа предложит вам добавить в файл конфигура­
ции опции noauth (вы не будете требовать, чтобы сервер аутентифициро­
вался) и defaul troute (без назначения маршрута по умолчанию досту­
па к Интернету не будет, и вам все равно придется редактировать таблицу
маршрутизации, но делать это нужно будет вручную!). Отказываться от до­
бавления этих опций не стоит (рис. 9.9).
Н,,,. 1 illll\
Ри_с. 9.9. Выберите "Yes"
После этого нужно ввести имя пользователя и пароль, необходимые для под­
ключения к вашему Интернет-провайдеру.
Сервер может сконфигурировать систему клиента, в том числе назначить ей
IР-адреса DNS-cepвepoв.
Нужно ли автоматически внести эти IР-адреса в /etc/resolv.conf?
Думаю, не нужно отказываться от этой возможности (рис. 9.10).
::с
Рис. 9.1О. Внести IР-адреса DNS-cepвepoв в /etclresolv. conj?
�
Далее будет традиционный вопрос о размере MSS. Нужно выбрать Yes, осо­
бенно если вы не уверены в своих действиях и не понимаете, чего от вас
хочет конфигуратор (рис. 9 .11).
�
Предпоследний вопрос - нужно ли устанавливать соединение при загрузке
системы. Если трафик у вас неограниченный (а в большинстве случаев так и
есть), то удобнее устанавливать соединение именно при загрузке.
�
�
Наконец, конфигуратор предложит подключиться к Интернету - не стоит
себе в этом отказывать.
�
•
ID··················································································
1 1,111,1 ') l)Sl,-,Clt' Щllt'JIII(·
i:•--
limited Ьу
in the рррое
setting to 1412
Рис. 9.11. Опять выберите "Yes"
Если у вас возникнет необходимость вручную управлять соединением, то
установить соединение можно так:
# pon dsl-provider
Разорвать соединение можно командой poff.
# poff dsl-provider
9.4. Программа pppoe-setup
В некоторых дистрибутивах нет конфигуратора pppoeconf. Зато имеется
конфигуратор pppoe-setup, который находится в пакете rp-pppoe.
По умолчанию этот пакет отсутствует и его нужно установить:
sudo apt install rp-pppoe
•
······································································--··········ID
lkc1, I.i,111,
Далее запустите конфигуратор pppoe-setup. Здесь нет даже псевдографиче­
ского интерфейса. Конфигуратор просто задает вам ряд вопросов, на кото­
рые вы должны ответить.
Далее будет приведен вывод конфигуратора, а ответы на вопросы будут вы­
делены жирным (то, что вы должны ответить), мои комментарии - курси­
вом.
sudo pppoe-setup
Welcome to the РРРоЕ client setup. First, I will run some checks on
your system to make sure the РРРоЕ client is installed properly..•
LOGIN NАМЕ
Enter your Login Name (default root): <ааедите аа111 поr,ин>
INTERFACE
Далее нужно ввести имя сетевого интерфейса для РРРоЕ-подключения. Если
у вас одна плата и вы перешли на классические имена, можете ввести
ethO. Если вы используете новую схему именования интерфейсов или у
вас несколько сетевых карт, введите ifconflg в другом терминале, чтобы
узнать правильное имя интерфейса.
Enter the Ethernet interface connected to the РРРоЕ modem
For Solaris, this is likely to Ье something like /dev/hme0.
For Linux, it will Ье ethX, where 'Х' is а numЬer.
(default eth0): ethO
Если ответить по, соединение будет доступно постоянно. Если указать
количество секунд простоя, то по их истечении соединение будет
разорвано.
Do you want the link to соте up on demand, or stay up continuously?
If you want it to соте up on demand, enter the idle time in seconds
after which the link should Ье dropped. If you want the link to
stay up permanently, enter 'no' (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP
addresses. You тау have some proЫems with demand-activated links.
Enter the demand value (default no): no
DNS
Далее нужно ввести IР-адреса 'Первичного и вторичного DNS-cepвepoв.
Please enter the IP address of your ISP's primary DNS server.
If your ISP claims that 'the ·server will provide dynamic DNS
addresses',
•
111-------·----·------------------------------·------------·--···-····-------·---·--·
1 1,1н,1 'J l)Sl,-t·or 11111t·11щ•
enter 'server' (all lower-case) here,
If you just press enter, I will assume you know what you are
doing and not modify your D�S setup.
Enter the DNS information here: 8.8.8.8
Please enter the IP address of your ISP's secondary DNS server.
If you just press enter, I will assume there is only one DNS server.
Enter the secondary DNS server address here: 8.8.4.4
PASSWORD
Введите пароль для соединения и повторите ввод.
Please enter your Password: <вur парот,,>
Please re-enter your Password: <вur парот,,>
USERCTRL
Можно или нет обычному пользователю запускать и останавливать DSL­
соединение? На сервере имеет смысл запретить это, поэтому выбираем по.
А на обычной рабочей станции для настройки РРРоЕ вы вряд ли будете
использовать этот конфигуратор.
Please enter 'yes' (three letters, lower-case.) if you want to allow
normal user to start or stop DSL connection (default yes): no
FIREWALLING
Please choose the firewall rules to use. Note that these rules ,are
very basic. You are strongly encouraged to use а more sophisticated
firewall setup; however, these will provide basic security. If you
are running any servers on your machine, you must choose 'NONE' and
set up firewalling yourself. Otherwise, the firewall rules will deny
access to all standard servers like Web, e-mail, ftp, etc. If you
are using SSH, the rules will Ыосk outgoing SSH connections which
allocate а privileged source port.
The firewall choices are:
О - NONE: This script will not set any firewall rules. You are
responsiЫe
for ensuring the security of your machine. You are STRONGLY
recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for а basic stand-alone web-surfing
workstation
2 - МASQUERADE: Appropriate for а machine acting as an Internet
gateway
for а LAN
Укажите тип брандмауэра, просто введите пока О, чтобы конфигуратор не
•
устанавливал никаких правил брандмауэра. Если вы настраиваете 11U1юэ,
укажите 2. Если вы настраиваете обычную рабочую станцию и Интернетом
·---------------------------------------------------------------------------------11111
l\cci, 1 illll\
будете пользоваться только вы, тогда введите 1. Поскольку брандмауэр
будем настраивать в других главах, пока введите О.
Choose а type of firewall (0-2): О
Start this connection at boot time
Устанавливать ли соединение при загрузке системы?
Do уои want to start this connection at boot time?
Please enter no or yes (default no): У••
Сводка по указанным вам данным
** Summary of what you entered **
Ethetnet Interface: eth0
User name:
userl0l
Activate-on-demand: No
Primary DNS:
8.8.8.8
Secondary DNS:
8.8. 4. 4
NONE
Firewalling:
none
User Control:
Сохранить изменения?
Accept these settings and adjust configuration files (y/n)? у
Adjusting /etc/sysconfig/network-scripts/ifcfg-ppp0
Adjusting /etc/resolv.conf
(But first backing it up to /etc/resolv.con{.bak)
Adjusting /etc/ppp/chap-secrets and /etc/ppp/pap-secrets.
(But first backing it up to /etc/ppp/chap-secrets.bak)
(But first backing it up to /etc/ppp/pap-secrets.bak)
Congratulations, it should Ье all set up!
!;-
,.,
Туре '/sbin/ifup рррО' to bring up your xDSL link and '/sbin/ifdown
рррО'
to bring it down.
Туре '/sЬin/pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0'
to see the link status.
-.:,
•
llil··················································································
1 l,IH,t ')
l)SI -CIH.' 111111.'IIIH'
firewall setup; however, these will provide basic security. If you.
are running any servers on your macbine, you nust choose 'НОНЕ' and
set up firewalling yourself. Otherwise, the firewall rules will deny
access to all standard servers 1ike Web, e-mail, ftp, etc. If you
are using SSH, the rules will Ыосk outgoing SS� connections which
allocate а privileged s.ource port.
The firewall choices are:
0 - НОНЕ: This script will not set any firewall rules. You are responsiЫe
for ensuring the security of your machine. You are SТROHGLY
recoirmended to use some kind of firewall rules.
1 - SТAHDALOHE: Appropriate for а basic stand-alone web-surfing workstation
2 - МASQUERADE: Appropriate for а machine acting as an Internet gateway
for а LAH
Choose а type of firewall (0-2): 0
Start this connection at boot time
Do you want to start this connection at boot time?
Please enter по or yes (default по):
- Sшrmary of what you entered Ethernet Interface: eth0
User name:
user101
Activate-on-demand: Но
В.В.В.В
Primary DHS:
8.8.8.4
Secondary DHS:
НОНЕ
Firewalling:
User Contro 1 :
no
Accept these settings and adjust configuration files (y/n)? у
Adjusting- /etc/sysconfig/network-scripts/ifcfg-ppp0
Adjusting /etc/resolv.conf
(But first backing it up to /etc/resolv.conf.bak)
Adjusting /etc/ppp/chap-secrets and /etc/ppp✓pap-secrets
(But first backing it up to /etc/ppp/c/1ap-secrets.bak)
(But first backing it up to /etc/ppp/pap-secrets.bak)
Congratulations, it should Ье all set up!
Туре '/sbin/ifup ррр0' to bring up your xDSL link and '/sbin/ifdowп ррр0'
to bring it down.
Туре '/sbin/pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0'
to see the link status.
[root@localhost -]1
•
Рис. 9.12. Процесс настройки РРРоЕ с по.мощью pppoe-setup
....................................................................................
lk, 1, 1 i1111\
Внимательно прочитайте все, что сообщит вам конфигуратор после сохра­
нения настроек.
Он сообщает, что вся конфигурация будет записана в файл /etc/sysconfig/
network-scripts/ifcfg-pppO. Также будет изменен файл /etc/resolv.conf - в
него будет внесена информация DNS, а старая версия этого файла будет на­
зываться /etc/resolv.conf.bak.
Имя пользователя и пароль будут добавлены в файлы /etc/ppp/chap-secrets
и /etc/ppp/pap-secrets (методы аутентификации СНАР и РАР используются
наиболее часто).
Чтобы вручную установить РРРоЕ-подключение, введите команду:
sudo /sbin/ifup рррО
,,, е
=.,
,,,� :,�
Чтобы вручную разорваrь РРРоЕ-подключение, используется другая команда:
=$
/sЬin/ifdown рррО
'""'
�=
Просмотреть состояние вашего соединения можно с помощью команд:
/sbin/pppoe-status
/etc/sysconfig/network-scripts/ifcfg-pppO
•
llt··················································································
Глава 10.
УСТАНОВКА ПРОГРАММ
BLINUX
л •
Bc'LI, J,i1111\
10.1. Способы установки программ
Существует три способа установки программ: компиnнцин
из исходнь1х кодов, из пакетов, из снапов.
Первый способ устарел и сейчас используется очень редко - когда нет друго­
го способа установить ту или иную программу на свой компьютер. Выглядит
все это так: вы сначала устанавливаете
программное обеспечение разработ­
_
чика (заголовочные файлы, компилятор gcc, библиотеки, различные утили­
ты вроде make и т.д.), затем загружаете и распаковываете архив с исходными
кодами программы. Запускаете компиляцию и ждете, пока программа будет
"собрана" из исходников. Даже если все пройдет гладко и вам не придется
адаптировать исходные коды (что требует определенных знаний) под свою
систему, процесс компиляции занимает много времени. Удалить "установ­
ленную" таким образом программу можно только вручную.
Сегодня все мыслимое и немыслимое программное обеспечение поставля­
ется в уже откомпилированном виде. Самостоятельная сборка (компиляция)
программного обеспечения имеет смысл только в случаях, когда для вашей
архитектуры 1 /дистрибутива нет пакета или же когда вы хотите получить са­
мую последнюю версию программы - так как разработчики еще не успели
создать пакет для вашего дистрибутива.
Установка из пакета гораздо проще. Вы получаете пакет с программой и
устанавливаете его. Пакет содержит уже откомпилированную программу и
Хотя есть большая вероятность того, что раз для вашей архитектуры нет пакета, то у вас не
получится откомпилировать программу
•
18---------------------------------------------------------------------------------·
1 1,111.1111 �t·1a110111,a 11pm ра,1\1 в l.i1111,
необходимые для работы этой программы файлы, например файлы конфигу­
рации, страницы руководства и др. При удалении пакета вся эта информация
будет централизованно удалеJiа, и вам не придется исследовать каждый ка­
талог системы и вручную удалять остатки про!l'аммы.
Максимум, что может пойти не так при установке пакета, - это нарушение
зависимостей. Об этом мы поговорим далее в этой главе. Забегая наперед,
обычно для удовлетворения зависимостей нужно удалить или установить
какие-то другие пакеты. Это несложно, и в некоторых случаях система сама
справляется с поставленной задачей. Установка программы из пакета зани­
мает считанные секунды, в крайнем случае - минуты, большая часть вре­
мени уходит на загрузку самого пакета из Интернета.
Получить пакет можно как вручную, собственноручно скачав его с сайта
разработчика, так и воспользоваться менеджером установки пакетов, кото­
рый сам скачает пакет из репозитория и установит его.
Третий способ, снапы - относительно недавний. Как уже бьшо отмече­
но, при установке пакета могут понадобиться дополнительные пакеты. Как
правило, это пакеты с какими-то библиотеками. Иногда происходит так, что
нужная библиотека отсутствует в вашем дистрибутиве как таковая или кон­
фликтует с имеющейся версией библиотеки. Особенно часто такое происхо­
дит, если вы пытаетесь установить пакет не из репозитория своего дистри­
бутива, а скачанный с сайта разработчика. Чтобы избавиться от подобных
танцев с бубном, были придуманы снапы.
Снап содержит свою программу и все необходимые для ее работы библио­
теки. При этом программа, установленная со снапа, будет использовать не
системную версию библиотеки, а ту версию, которая шла со снапом. В ре­
зультате программа будет выполняться корректно, и ее установка никак не
отразится на других программах, поскольку процесс установки никак не
затрагивает имеющиеся в системе библиотеки. О снапах мы еще поговорим
отдельно в этой главе.
10.2. Типы пакетов и их содержимое
Существует два формата пакетов - DEB (расширение .deb) и
RPM (.rpm).
•
.....................................................................................
lkt:1, l.i111н
Первые используются в DеЬiаn-совместимых дистрибутивах - UЬuntu,
Astra Linux, Mint, Denix и др.
Второй тип используется в RеdНаt-совместимых - RНEL, Fedora, CentOS,
openSUSE и т.д.
Независимо от формата пакетов в самом пакете, кроме устанавливаемой
программы и вспомогательных файлов, содержится различная служебная
информация: информация о разработчике, о версии программного продукта,
информация о зависимостях и конфликтах, пути для установки (указыва­
ют, куда должны быть скопированы файлы, имеющиеся в пакете, в процессе
установки пакета).
Отдельного разговора заслуживает информация о зависимостях и конфлик­
тах. Некоторые пакеты для своей работы требуют установки дополнитель­
ных пакетов.
Например, пакет ubuntu-desktop требует для своей работы множества дру­
гих пакетов - alsa-base (файлы звукового драйвера), alsa-utils, Ьс, anacron и
т.д. Считается, что пакет ubuntu-desktop зависит от пакетов alsa-base, alsa­
utils и т.д.·В свою очередь эти пакеты могут зависеть от других пакетов.
При установке пакета ubuntu-desktop менеджер пакетов выполнит разре­
шение зависимости, то есть установит все пакеты, от которых зависит наш
пакет, и все пакеты, от которого зависят другие устанавливаемые пакеты.
Может получиться, что для установки одной небольшой программы будет
установлено очень много других пакетов, от которых зависит эта программа.
Но ничего не поделаешь - если программа вам нужна, то придется пойти на
это. Как вариант - найти аналогичную программу.
Некоторые программы могут находиться в системе только в единственном
экземпляре. Например, почтовый агент может быть установлен только один,
иначе между ними произойдет конфликт. Поэтому пакет А может конфлик­
товать с пакетом Б. Если у вас установлен А, а вы пытаетесь установить
Б, менеджер пакетов сообщит о конфликте и предложит или отказаться от
установки, или перед установкой пакета Б удалить пакет А.
10.3. Источники па�етов
Список источников пакетов в порядке убывания их популярности:
•
11!8---------------------------------------------------------------------------------·
11,IВ,1111 �CJ:11101\h::J ll!НIIJ):I\I\I JI J.i111п
• Репозитории - каждый дистрибутив работает с собственным репози­
торием (хранилищем) пакетов. Да, для установки программного обеспе­
чения вам понадобится до,ступ к Интернету, но это самый современный
способ установки. Репозитории позволяют эффективно управлять обнов­
лением программного обеспечения. Используя репозитории, вы можете
быть уверенными, что у вас будет установлено самое новое программное
обеспечение.
• Установочный диск - ранее дистрибутивы Linux распространялись на
DVD-дисках (некоторые-на одном, некоторые-на нескольких). На DVD,
кроме самой системы, была и львиная доля программного обеспечения,
которая только может понадобиться пользователю. Все программное обе­
спечение при установке системы не _устанавливалась, но была возмож­
ность установки с инсталляционного носителя после установки. Когда
доступ к Интернету был медленным и дорогим, пользователи предпочи­
тали устанавлив1пь пакеты с DVD-диска. Преимущество этого способа в
том, что не нужно загружать пакеты с удаленного сервера, что экономило
время и деньги. Сейчас же доступ к Интернету в большинстве случаев
высокоскоростной (даже 10 Мбит/с считается высокоскоростным) и без­
лимитный, поэтому чаще всего на DVD-диске содержится только самое
необходимое программное обеспечение, а все остальное загружается из
Интернета. К тому же ПО с DVD наверняка устареет к моменту его уста­
новки, а из репозитория будет загружена более новая версия - пакеты в
репозиториях периодически обновляются.
• Сайт разработчика программноrо обеспечения - иногда программ­
ное обеспечение не включено· в состав репозитория дистрибутива. Это
может произойти по разным причинам. Например, програмщюе обе­
спечение является проприетарным (коммерческим) или же просто узко­
специализированным и его не стали включать в состав дистрибутива. В
этом случае вам нужно самостоятельно скачать пакеты и установить их.
В некоторых случаях разработчики предоставляют доступ к собственным
репозиториям, из которых можно загрузить все необходимые пакеты.
10.4. Менеджеры пакетов
Изначально в RedНat и Debian использовались программы rpm и dpkg. Сей­
час обе эти программы все еще входят в состав дистрибутивов, но использо-
•
······································································--······-···88
lkcl, l,i1111,
вать их крайне не рекомендуется. Дело в том, что эти программы ничего не
"знают" о зависимостях между пакетами. Если для работы пакета А нужен
пакет Б, то программа даже толком не сообщит о том, ка.кой пакет нужен для
установки пакета А. Она сообщит о том, что для установки пакета А нужна,
например, библиотека liЬ40, а в каком DЕВ-пакете находится эта библиотека
и откуда ее нужно заполучить - вам придется догадаться самому.
Также программы rpm и dpkg ничего не знают о репозиториях, поэтому
удел этого менеджера - установка пакета из локального источника. Жела­
тельно, чтобы для работы устанавливаемого пакета не требовались друтие
пакеты - ведь о зависимостях эти ·программы, как уже было отмечено, ни­
чего не знают.
В реnоэиторинх содержится информация обо всем дереве
зависимостей.
Например, пакет А может зависеть от пакета Б, пакет Б - от пакетов В, Г
и Д. Менеджеры пакетов, такие как apt, установят все необходимые пакеты
в необходимом порядке, чего не дождешься от программ rpm и dpkg.
Именно поэтому для управления пакетами рекомендуется использовать ме­
неджеры пакетов.
Вот неполный список возможностей таких программ:
• поиск пакетов в репозиториях;
• установка пакетов из репозиториев;
• установка/удаление п11кетов с разрешением зависимостей и конфликтов;
• обновление пакетов.
Принцип работы менеджера пакетов простой. Представим, что вы устанав­
ливаете пакет А. Менеджер производит поиск вашего пакета по списку всех
установленных репозиториев. В одном из репозиториев ваш пакет точно
будет, в противном случае менеджер сообщит о том, что пакет не найден.
Далее менеджер смотрит на, список зависимостей, и если есть пакеты, от
которых зависит наш пакет А, то они также ЗаfРужаются и устанавливаются
- до установки пакета А. Затем производится загрузка и установка самого
пакета А.
•
all··················································································
1 l,llbl 10 )с1:1110111,а IIJ)III рамм II lai1111x
Установка программного обеспечения в Linux требует прав root. Поэто,му
нужно сначала запускать любые команды управления программным обеспе­
чением через команду sudo. Например:
sudo apt install mc
В дистрибутивах Deblan, Ubuntu, Astra Linux и друrих, которые
основаны на Deblan, используется менеджер пакетов apt.
В других дистрибутивах могут использоваться другие менеджеры, напри­
мер, в Fedora используется dnf, в CentOS и старых версиях Fedora-yum. В
openSUSE используется свой менеджер пакетов zypper.
Далее будет рассмотрен менеджер пакетов apt.
При установке пакетов apt разрешает зависимости. Вы просто указываете,
какой пакет вы хотите установить, а что будет происходить дальше - уже не
ваша забота. Вас интересует конечный результат. Лишь бы требуемый пакет
был в репозиториях.
Список репозиториев хранится в файле /etc/apt/sources.list. Содержимое это­
го файла показано на рис. 10.1.
Рис. 10.1. Файл s011rces.list
•
·---------------------------------------------------------------------------------ID
lkc1, l.i1111x
Вы вряд ли будете вручную редактировать этот файл. Исключения могут со­
ставить лишь ситуации, когда вы добавляете сторонний репозиторий, содер­
жащий какую-то программу, чтобы установить ее впоследствии с помощью
apt. Что же касается стандартных репозиториев, то ими проще управлять
(включать/выключать) посредством приложения Программы и обновле­
ния (в UЬuntu) или Проверка обновлений (Astra Linux), изображенном на
рис. 10.2. На вкладке Программное обеспечение Ubuntu вы можете вклю­
чить/выключить стандартные репозитории. Также можно включить исполь­
зование в качестве источника пакетов инсталляционный DVD-диск UЬuntu.
r
1
: ОБРАТИТЕ ВНИМАНИЕ: вы можете не только включить/ :
:1 выключить репозитории, но и выбрать местоположен�е серве- 1:
:1 ра, с которого будут пакеты загружаться.
:1
�--------------------------------------------------------------J
е
�:
На рис. 10.2 показано, что пакеты будут загружаться с сервера, который на-
ходится в РФ.
�
..._...,
dfohtl.�--�
смЬ hnps:lfмhlw�
dtЬ http,:/l..t,,,,.,�°'9"ci.tiilnl'
Рис. 10.2. Программы и обновления
Формат вызова команды apt следующий:
sudo apt [опции] команды [пакет]
•
18·----------.----------------------------------------------------------------------·
1 ,.,в., 111 :'>,·1а1ю111,а 11рш р:1,1,1 11 l.i1111\
В качестве примера приведу команду установки пакета mc:
sudo apt install mc
Обратите внимание, что я запускаю команду от имени root. Если запустить
команду apt через команду sudo (sudo apt install те), нужно, чтобы пользо­
ватель, который запускает sudo, был внесен в файл /etc/sudoers.
По умолчанию пользователь, которого вы создаете при установке Debian, не
вносится в этот файл, поэтому нужно или получить права root командой su,
или добавить пользователя в файл /etc/sudoers.
Основные команды apt приведены в таблице 10.1.
Таблица 10.1. Основные команды менеджера пакетов apt
•
Команда
Описание
install <список пакетов>
Устанавливает пакеты из списка. Элементы
списка разделяются пробелами
remove <список пакетов>
Удаляет пакеты из списка. Элементы списка
разделяются пробелами. Это означает, что
если вы установили какую-нибудь программу, настроили ее, а потом удалили командой
apt remove, то конфигурационный файл этой
программы останется в системе. Если вы
теперь установите эту программу снова,
то можно будет использовать предыдущий
конфигурационный файл, так как он не бьm
удален
purge <список пакетов>
Удаляет не только пакеты, но и их конфигурационные файлы
check
Поиск нарушенных зависимостей
....................................................................................
Нес 1, 1 i1111\
Очищает локальное хранилище ·полученных
пакетов.
При установке пакеты из репозитория загруclean
жаются в каталог var/cache/apt/archive.
При интенсивной установке программного
обеспечения в этом каталоге накапливается
довольно много пакетов, поэтому очистка
хранилища помогает сэкономить дисковое
пространство
upgrade [список пакетов]
Обновляет указанные пакеты, если пакеты
не заданы, обновляет все пакеты, требующие обновления
full-upgrade
Обновляет всю систему
update
Синхронизирует внутреннюю базу данных
о пакетах с источниками пакетов, которые
описаны в /etc/apt/sources.list
autoremove
Когда вы устанавливаете пакет, то часто
устанавливаются дополнительные пакеты,
являющиеся его зависимостями. Если теперь вы удалите этот пакет, то зависимости
останутся в системе.
Комцнда apt autoremove удаляет эти зависимости, но только те, которые не нужны другим установленным пакетам
•
....................................................................................
1 1.111.1 111 :>-,·1:11111111,а 11р111 Р""" в I iшl\
Выводит список пакетов, соответствующих
,какому-то критерию. Примеры приведены
далее.
Вывести список установленных в системе
пакетов:
apt list --installed
list
Вывести список пакетов, которые требуют
обновления (у которых вышла новая версия):
apt list --upgradaЫe.
Вывести список всех пакетов, доступных
для вашей системы:
apt list --all-versions
show <пакет>
Выводит информацию о пакете
search <слово>
Данная команда выполняет поиск указанного слова в названии пакетов и в описании
пакетов. Поддерживаются регулярные выражения
edit-sources
Открывает файл /etc/apt/sources.list в текставом редакторе для редактирования, после
сохранения изменений и закрытия редактора выполняет проверку файла на предмет
ошибок. В случае наличия ошибок выводит
предложение на повторное редактирование
файла, чтобы исправить ошибки.
10.5. Графические средства установки программ
Установка программ из пакетов имеет свои недостатки.
·-----------------------------------------------------------------------------------
t
1..1
lkc1, l.i1111x
Самый главный из них - вам нужно знать имя пакета, в котором находится
нужная вам программа. Если вы следуете какому-то руководству, то особых
проблем нет - открыл терминал, ввел команду установки нужного пакета
и все. Когда вы знаете имя пакета или команду установки, все хорошо. Но
если таких познаний у вас нет, тогда вам нужно или найти имя пакета в Ин­
теJ;JНете, или же воспользоваться графическими средствами для установки
программ.
В состав дистрибутива Astra Linux входит, на наш взгляд, один из самых
удобных графических менеджеров пакетов - Synaptic. Вы найдете его в
программной группе Системные. Использовать Synaptic очень просто (рис.
10.3). Слева отображаются группы пакетов и фильтры (под группами паке­
тов), позволяющие отфильтровать список пакетов по разделам, состоянию,
архитектуре и т.д. В правой верхней части находится список пакетов в вы­
деленной группе. Если выделить любой из пакетов, в область ниже будет
загружено его описание.
��п-,��
с
"
ti
rnwпw��JIO(t)'N
""
.........
,--�o6�ACJ'I
tЩJtSlor�....,,.,AO'I�
��-•toб,,,rstМACJ>l.�011<
�suppon-Ь.-
u,,p,.6;i��•--.po"f<nJl+МN:.PI
),2W.l+dю9u1
1.22.0-1•dd:/9u!
Y'"""'·-�- ..
,---·•"e;l"rpynr,
{T�""""'--Gf.ot,4[
AndfoodfikTtan.fo,Llnu,i
__.uon.,.,,..cw;r-p..&,,�,..-w-rт­
...
·-1
•
1
J
J
ТJNНCМТOPnpoф,v,nil�mo,
,,..11•a202206Cl001IA.11+d2022060800l-�nмпw,��к�cтpo,<"
1A,11•ti20Z2060IIIXl•IA.11-ci20220б08001��D..Щ,O,CЮf№1
1,.t..11"Ci2QZ206080011A,11•o2Ql2Cl60IOO\--nporJ>,JM"WДМ�--
итw А"• мктромкм 1111 pa6crтw �• ..ук080М rIОА'иn•МОМ A1SA
l'l(w,yчoп,,��
ynui
U7•1&><;iIOUOJ'!М1, O,.J7•16>Q211�\• c...-МSWon:lfilиtotttt.PS.l'Of'"-XМL
ГlоJtучмт,,,<l'МtОО<.._,_
n.e,.,._Ult��:
Qsxr!ИDteOO!Ol!IS!9Г"P+lllft
�
8h.at.�0.
18)1:-.. �
.. �
J -"'5,ioop,�-•�"'P,IQ'l'CМIO-
Рис. 10.3. Менеджер пакетов Synaptic
Установленные пакеты отмечаются зеленым квадратиком. У неустановлен­
ных квадратик неокрашенный. Чтобы установить пакет, щелкните на нем
правой кнопкой мыши и выберите команду Отметить для установки .
•
18---------------------------------------------------------------------------------·
1 1,11<,1 111 �с1.111t111ю1111н11 ра,1,111 l,i1111,
Значок пакета будет изменен на квадратик с. желтой стрелкой, Можете
выбрать другие пакеты, которые вы хотите установить, Когда будете готовы,
нажмите кнопку Применить для установки пакетов (рис, 10,4),
t;
u
•1меnм� ............1
,_,_..Je_w---..l�-... -61/lfYI-
__
.,.
,...,.,_..,6,,IIIП)'П­
S,Uklбy--
,...,1с1��
от--,р,n-.+,1Qм..-.,ое
hc.wd�J�,._,,..,..__.1�+c,pм;rт
..c.-d.И..--...1--....--rai .......w.iiЬooi,,.Eudcn.�U.-.
�wiмp;,..
Рис. 10.4. Применение изменений
Менеджер пакетов покажет, какой размер будет загружен из Интернета и
сколько пакетов будет установлено, Дождитесь установки пакета.
После этого вы можете использовать установленную программу,
В UЬuntu менеджер Synaptic по умолчанию недоступен. Для его установки
нужно ввести команду:
sudo apt install synaptic
Однако в UЬuntu обычному пользователю больше понравится использовать
UЬuntu Software или центр программного обеспечения.
Все доступное ПО разбито на группы, вы можете выбрать программу и уста­
новить ее.
•
·---------------------------------------------------------------------------------111
Рис. 10.5. Центр программного обеспечения
Щелкните по кнопке< ... > напротив установленного приложения, выберите
команду Показать детали, далее на появившееся странице снова щелкните
по кнопке< ...> и выберите команду Обновить или Удалить в зависимости
от действия, которое нужно выполнить над приложением.
-g
Если вы заметили, то список программ в Центре программного обеспечения
отличается от списка пакетов.
А все потому, что здесь показываются не пакеты, а снапы.
В следующем разделе будет рассказано, что это такое.
•
-----------------------------------------------------------------------------------·
1 1,IВа 10 Ус1:1111111ю1 11p111p:l\l\l ll l.i1111,
Рис. 1 О. 6. Как удш�ить или обновить програJ11МУ
10.6. Снапы
Ранее уже было сказано, зачем используют снапы (snaps).
Представим вполне реальную ситуацию. Пользователь устанавливает одну
из новых версий UЬuntu, пусть это будет, например, версия 20.04. После
установки пользователь не обновляет систему. Его все устраивает, и он спо­
койно работает некоторое время, скажем, год или полтора. Потом он хочет
установить новую версию браузера или какого-то другого приложения и не
может этого сделать, поскольку его дистрибутив устарел. Для установки
приложения нужны новые версии библиотек, а для их установки нужно об­
новить уже установленные пакеты. Иногда процесс настолько масштабный,
что приходится обновлять дистрибутив. А ведь мы знаем, что пользователь
не хочет этого делать по ряду причин, да и это опасно: система может быть
разрушена из-за нарушения связей между программами и библиотеками.
•
·---------------------------------------------------------------------------------18
H.__ll, 1 ilHI\
Есть и другая ситуация - когда нужно установить приложение, пакет кото­
рого конфликтует с уже установленным пакетом. Просто устанавливаемое
приложение использует библиотеки, которые не могут "ужиться" с теми, ко­
торые уже установлены.
Проблемы настолько частые, то бьmи предложены снапы. Пакет содержит
саму программу, а также различные вспомогательные файлы - документа­
цию, ресурсы (картинки, например), файлы локализации, какие-то сценарии
и т.д. Но ,пакет не содержит всего, что нужно для работы этой программы в
системе. Например, если программе для работы нужна библиотека lib, то
просто в пакете "прописывается" зависимость - нужно установить такой-то
пакет для работы этого пакета.
При установке программы менеджер пакетов (apt) произвощп разрешение
зависимостей - устанавливает все необходимые для работы этой програм­
мы пакеты. С одной стороны, такой подход позволяет экономить место на
диске. Ведь одну и ту же библиотеку не нужно устанавливать несколько раз.
С другой стороны, это порождает уже описанные ранее проблемы..
Снап --. это решение всей голов�ой боли как пользователя, так и разработ­
чика приложения.
Снап можно считать таким пакетом, в котором содержится не только
программа, но и все необходимы� для ее работы библиотеки. Получается,
что все, что нужно для работы программы, содержится в снапе: Да, это
неэкономно, но, согласитесь, жестким диском размером в 1 Тб сегодня ни­
кого не удивишь, а головной болью будет меньше. Вы просто установите
программу и будете ее _использовать, а не два дня пытаться решить пробле­
мы, возникшие при установке ее пакета.
Также не нужно бояться, что система превратится в мусорку.
Снапы устанавливаются в отдельной папке в виде защищенного от записи
образа. Изменения, которые должен внести снап в файловую систему
(например, в каталог /lib), будут внесены в виртуальной файловой систе­
ме. Таким образом, установка снапа никак не повлияет на работу основной
системы и на другие снапы. Снапы решают проблемы с совместимостью
версий разных приложений.
Для начала работы со снапа�и в старых версиях UЬuntu (например, в 16:04, в
более ранних версиях они не поддерживаются вообще) нужно прежде всего
установить пакет snapd. В современных версиях данный пакет уже установ­
лен.
•
•
....................................................................................
1 l,IВ<i 111 )с,а�юш,а ll(JOIJJ.1\1\I В l.i1111,
Для поиска доступных снапов введите команду:
snap find <название>
Например:
snap find hello-world
Рис. 1 О. 7. Поиск, установка и запуск снапа
Вывод этой команды изображен на рис. 10.7. В первой колонке приводится
название снапа. Пусть мы хотим установить снап hel/o-wor/d:
sudo snap install hello-world
Как видите, команда установки снапа аналогична команде установки пакета,
только вместо apt используется утилита snap .
··········································-·········-··········--·················&1
са.
'-'
lkё1, l.iriux
После установки снапа можно запустить имеющуюся в нем программу:
hello-world
Hello, world!
Просмотреть установленные снапы можно командой snap list (рис. 10.8).
Рис. 10.8. Команда snap list
.:::::
-g
Как и пакеты, снапы можно обновить. Например:
sudo snap refresh hello-world
Данная команда обновит снап hello-world, если для него доступны обнов­
ления. Это очень удобно - вы обновляете не только приложения, но и все
необходимые для его работы библиотеки.
Для обновления всех снапов используется другая команда:
sudo snap resresh
•
------------------------------------------------------------------------------------·
11,111,1111 �,·1а1юв1,а 11рщра,1,1 в I i1111,
Теперь вы знаете, для чего используются снапы и что это вообще такое. А
вот обновлять систему или ис�.:ользовать снапы - каждый решает сам.
10.7. Ошибка при выполнении apt: UпаЬ/е to
acquire the dpkg lock lvarЛiЬ/dpkgЛoc,k
К сожалению, время от времени при работе с Linux возникают различные
ошибки.
Одна из наиболее часто возникающих звучит так:
Не удалось получить доступ к файлу блокировки /var/liЬ/dpkg/lock­
frontend - open (11: Ресурс временно недоступен).
Ошибка возникает при попытке установить пакет в UЬuntu с помощью ко-.
манды apt install.
Сообщение об ошибке �ожет немного отличаться в зависимости от различ­
ных условий.
Например, могут появляться следующие ошибки:
Е: Could not get lock /var/liЬ/dpkg/lock - open (11: Resource
temporarily unavailaЬle)
Е: UnaЫe to lock the administration di�ectory (/var/liЬ/dpkg/),
is another process usihg it?
Е: Could not get lock /var/liЬ/apt/lists/lock - open (11: Resource
temporarily unavailaЬle)
Е: UnaЫe to lock directory /var/liЬ/apt/lists/
Е: Could not get lock /var/liЬ/dpkg/lock - open (11: Resource
temporarily unavailaЬle)
Е: UnaЫe to lock the administration directory (/var/liЬ/dpkg/),
is another process using it?
Данные ошибки появляются, когда программа apt не может получить доступ
к файлу блокировки /var/liЬ/dpkg/lock*. Данный файл используется, чтобы
запретить одновременное выполнение операций, связанных с управлением
пакетами в системе, так как при одновременном изменении данных о паке­
тах будет нарушена целостность "пакетной базы" .
•
·------------------------------------------------------------------------------------
Обычно существует две основные причины появления описанных ошибок:
1. В данный момент уже вьmолняется экземпляр программы apt.
2. Предьщущий вызов apt завершился некорректно.
Сначала нужно убедиться, что уже не запущен другой экземпляр программы
apt-get (apt).
Выполним следующую команду, чтобы проверить, есть ли apt в списке за­
пущенных процессов:
ps aux I grep -i apt
Вывод может быть таким:
ubuntu 8425 О.О О.О 79516 3752 pts/1 S+ 10:31 0:00 sudo aptt
install inkscape
ubuntu 8456 О.О О.О 38892 944 pts/0 S+ 10:32 0:00 grep
--color=auto -i apt
В первой строке мы видим, что уже есть работающий экземпляр программы.
apt, который имеет РШ (идентификатор) 8425.
::с
]:а
"С
с,
Вторая строка относится к нашей команде grep, которую мы запустили с
аргументом apt, поэтому она вывела саму себя. Итак, нас интересует только
первая строка.
Если вы увереньJ, что не запускали программу apt сами или она не запущена
'в фоновом режиме, например, не выполняется автоматическое обновление
системы, то нужно принудительно завершить ее выполнение.
Для этого воспользуемся командой ki/1-9. Команде нужно указать числовой
идентификатор процесса. В нашем случае это 8425:
sudo kill -9 8425
•
После выполнения данной команды процесс с идентификатором 8425 завер­
шится.
--------------------------------------------------------------------------------····
1 1,111,1 111 �,·1а11шн.:а 111ю1 ра,1,1 11 1 i1111,
Если первый способ вам не помог, то нужно удалить все файлы блокировки.
Для этого выполняем команды:
sudo rm /var/liЬ/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/liЬ/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
Если при выполнении каких-нибудь из этих команд появится сообщение:
rm: невозможно удалить ''/var/' .. /lock': Нет такого файла или
каталога
это нормально, не обращайте на него внимания.
После этого нужно выполнить переконфигурацию пакетов:
sudo dpkg --configure -а
10.8. Невозможно найти определенный пакет
При работе над книгой мы столкнулись со следующей ситуацией -: когда вы
вводите команду установки пакета, например, ту же sudo apt install
synaptic, то менеджер пакетов сообщает вам, что такой пакет не найден.
Проблема оказалась в том, что список пакетов почему-то не синхронизиро­
вался с сервером ru.ubuntu.com. Для ее решения запустите update-maпager,
нажмите кнопку Настройки и настройте менеджер пакетов на использова­
ние основного сервера. После этого обязательно введите команды:
sudo apt update
�е факт, что такая проблема появится у вас, но если так произойдет, то въ1
знаете, что с этим делать .
•
·-------------------------------------------------------------------·-:····-------ID
Глава 11.
ПОПУЛЯРНЫЕ ПРОГРАММЫ
л •
l\c- ,. 1 irнr,
11.1. Офисные пакеты
,., е
=.,
�
(
,, �
"' �
�
:!: ..
Когда-то в Linux было многообразие офисных пакетов.
Со временем все эти пакеты были вытеснены одним - LibreOffice, в котором содержатся все необходимые аналоги проrрамм из MS Office:
• LibreOffice Writer :- текстовый процессор, аналог MS Word;
• LibreOffice Calc - электронная таблица, аналог MS Excel;
• LibreOffice lmpress - презентации, аналог MS PowerPoint;
• LibreOffice Draw - векторный rрафический редактор для создания блок­
схем и диаrрамм, аналог MS Visio;
• LibreOffice Base - база данных, аналог MS Access.
.,
..,,,
"С
Данные проrраммы не просто выполняют те же функции, что и проrраммы
из пакета MS Office, но и поддерживают форматы MS Office. Да, интерфейс
проrрамм несколько специфичен (напоминает старые версии MS Office), но
при желании можно разобраться. К тому же есть версия LibreOffice для
Windows. Офисный пакет полностью бесплатный, поэтому есть неплохая
возможность сэкономить, если установить его еще и на Windows-мaшины.
Если же какого-то функционала MS Office будет не хватать, тогда не забы­
вайте об онлайн-версии Office 365, которую можно использовать прямо в
браузере.
•
.....................................................................................
1 l,IB,I 11
[[н11�.lll()lll,lt' IIIНII J):1\1\11,1
li1I . "' . 1 . [,) @ � 1 " rеэ . " � • �� ci � , 11 . is m о •Fi � • й . � � � � '® r;, g v
�
Lmf•tionserif
t,
... , 12 nт
"
Ж К � • .S,
&
А
А.
4 .А,• � •
� �
' t
■
1�
111
,:А
g
[}
,-.
--о--♦
10011,
Рис. 11.1. Текстовый процессор LibreOffice Writer
11.2. Графические текстовые редакторы
Для редактирования обычного текста (без форматирования), например, сце­
нариев командной оболочки или конфигурационных файлов, можно обой­
тись станд1;1ртным текстовым редактором.
Для редактирования файлов конфигурации нужны права root, поэтому за­
пускать редактор нужно из терминала так:
sudo gedit <имя_файла>
Штатный текстовый редактор обладает возможностью поиска и замены тек­
ста, нумерует строки, показывает позицию курсора. Для редактирования
текстовых файлов конфигурации - то, что нужно .
•
··················································································l!D
lkcl, 1 i1111,
Оf•рыт�
1 ..,
Г-,
kt
'°;.i�
(�IHНI,
11' See http://hel.p.ubuntu.cOf"o/coмuntty/Upgr•deNotes for how to UPOrade to
2 • newr verst.ons of tM dtstrtbutt.Of'I.
3deb http://nl..arch\ve.ubuntu.co../uЬuntu/ Nnttc мt.n restri.cted
4 • deb•src http://nl. archi..v•.ubuntu.cOl'l/ubuntu/ мnttc J111a\n restr\cted
5
61111 ",ojor bug ft,i; updetes produced 11fter the ftnal rel.e<1se of th•
7 п dt.strtbut\on.
8deb http://nl.t11rch\ve.ubuntu.co../uЬuntu/ мnti.c-updates 11111\n restr\cted
9t deb-src http://nl..11rch\ve.uЬuntu.co,1/ubuntu/ l'l•nttc-upd•t•s Ni.n restrtcted
10
11811 N,8. sofntare frOl'I th\s reposHory ts ENТIRELY UNSUPPORТED Ьу the Ubuntu
12 ц tем. Also, ple11se note th•t softw"re t.n untverse WILL ,ЮТ recet.ve •ny
1J n revtь or updates frOl'I the UЬuntu securt.ty tee�.
14deb http://nl.arch\ve.ubuntu.cOl'l/1Jbuntu/ Nntt.c untverse
151 deb-src http:Jlnl..orch\w.ubuntu.cOf'I/IJЬuntu/ Nnttc uni.verse
16 deb http://nl..orchi.ve.ubuntu.co1111/uЬuntu/ мnti.c-updotes universe
171 deb-src http://nl..orch\.ve.ubuntu.cor1/uЬuntu/ 11111nti.c-upd11tes un\verse
18
1911 N.8. softwor• fr0/11 thts repos\tory i.s ENТIRELV UNSUPPORТED Ьу the Ubuntu
28 h teo111, end 111оу not Ье under II free Hcence. Pl.eose set\.sfy yoursetf os to
21 h your r\ghts to use the software. Atso, pteese note thot soft•ore \n
22 11 l'll.llttverse WILL NOT recei.v• ony revt- ог updotes fr0/11 th• Ubuntu
2311 secur\ty teo1111.
24deb http://nt.orch\ve.uЬuntu.c01111/1Jbuntu/ мnt\'c l'I\Jlt\.vers•
251 deb-src http://nt.orch\.ve.ubuntu.cOl'l/ubuntu/ fl\Ont\.c ..utt\verse
26 deb http://nl.orchtve.ubuntu.c0/11/ubuntu/ 111111nti . c-updotes 1111utt\verse
271 deb-src http://nl..orchi.ve.ubuntu.cOl'l/ubuntu/ r1ont\.c-updotes l'IUlti.verse
28
2911 N.8. softwore frOl'I th\. s reposi.tory N)' not hove Ьееn tested as
эец extenstvety os thot conta\ned \n the 11110\n rel.eose, otthough i.t \.nctudes
31 Ц new.r vers\ons of sом oppttc•t\ons •htch 1111оу prov\.de usefu\ feotures.
)2 u A\so
teese not• thet softwere 1..n bock orts WILL НОТ rece\.ve eny�,�•�v\�,.�--�
Ttl!Ct"' Шмр"н•т.6уllj[ЩМt1:8"'
UIH.ColS1
Рис. 11.2.. Текстовый редактор gedit
Если возможностей этого редактора вам окажется мало, используя UЬuntu
Software, вы всегда сможете установить редактор Code (рис. 11.3). Это про­
фессиональный текстовый редактор для программистов, и благодаря систе­
ме плагинов его возможности практически безграничны (рис. 11.4).
code
Vl5\№IЯvdloC:odte
P,ip1бon,
,.,
.,,,
(")
"С
-:::,
)10r011<XOO
И)Oll"ЦIUI
oч,н,nol'IO)IIMTIJl�IW4!
IUIКtltЧ•c11...A
ЛIOUl1M)tl"
Qny6n1U.oeo,ю
Pfopri11t1ry
PtJмtp U!'Р)')�И
)17.)1М6
7,1111к.Z1)2) r.
Рис. 11.З. Установка текстового редактора Atom
•
111/t-------··--···------·---------·----·---·---·----·---·---···-·---·----··----------·
Глава 11. П1111уляр111,1� 11por раммы
Рис. 11.4. Текстовый редактор Atom
11.3. Консольные текстовые редакторы
Работая в графическом режиме, вам вряд ли захочется использовать консоль­
ные тек9товые редакторы. Но при администрировании виртуального сервера
выбора у вас не будет.
Виртуальные серверы Linux не оснащены каким-либо графическим
интерфейсом, поэтому их администрирование осуществляется через кон­
соль - или посредством WеЬ-консоли, встроенной в панель управления, или
же по SSH. Часто у администратора возникает потребность отредактировать
какой-то файл конфигурации сервера.
Проблем с этим, как правило, никаких нет - запускаете предпочитаемый
текстовый редактор, открываете файл, редактируете и сохраняете. Однако
редактирование некоторых файлов конфигурации, в частности /etc/sudoers,
осуществляется только посредством специальных утилит (в данном случае
visudo или crontab - при редактировании расписания планировщика), кото­
рые запускают текстовый редактор по умолчанию.
Таковым редактором является редактор vi, перекочевавший в современные
дистрибутивы Linux с 1970-х годов, и его нельзя назвать удобным. В этом
,
................................................................................ ..
разделе будут рассмотрены некоторые текстовые редакторы и будет показа­
но, как по умолчанию установить понравившийся редактор, чтобы он вызы­
вался при редактировании некоторых специальных файлов конфигурации,
которые нельзя редактировать вручную.
Самый удобный - редактор nano (раньше· он назывался pico и входил в
состав почтового клиента pine).
Редактор nano изображен на рис. 11.5.
Рис. 11.5. Текстовый редактор папо
Внизу (под текстом) есть подсказка по комбинациям клавиш для управления
редактором. Символ л означает <Ctrl>. То есть для выхода из редактора нуж­
но нажать комбинацию клавиш Ctrl + Х, а для сохранения текста - Ctrl + О.
В некоторых системах (например, в FreeBSD) вместо nano используется ре­
дактор ее (в Linux его нет). Он похож на nano, но подсказки выводятся до
текста (вверху экрана), а не после него, но идея Ja же.
Также довольно удобен редактор joe. Скажем так, nano будет удобнее, он
поддерживает подсветку синтаксиса, внизу есть панель с подсказками, но
это дело привычки.
•
IIEI··················································································
1 1,11\,1 11
llm1�.llljJlll,lt' lljIOI ра\1\11,1
Рис.11.6.Редакторjое
В пакет mc (файловый менеджер) входит довольно удобный редактор mcedit,
который запускается при нажатии клавиши F4 в mc (рис. 11. 7).
При желании вы можете запустить редактор отдельно:
mcedit <имя файла>
Классический синий фон, подсказки функциональных клавиш внизу и т.д.
Редактор не менее удобен, чем nano.
Кстати, редакторы joe, nano и ее запускаются аналогично:
joe <имя файла>
nano <имя файла>
ее <имя файла>
•
··················································································IJII
Рис. 11. 7. Редактор mcedit
Выбор конкретного редактора зависит от ваших личных предпочтений. Но
в любом случае каждый из представленных редакторов будет удобнее, чем
стандартный vi.
Некоторые утилиты, например crontab, visudo, вызывают текстовый редак­
тор по умолчанию для редактирования тех или иных данных . В этом случае
будет вызван vi, который, как было отмечено, неудобен. Чтобы вызывался
нужный вам редактор, его нужно сделать редактором по умолчанию. Для
этого нужно установить переменную окружения EDIТOR:
which nano
/Ьin/nano
export EDITOR=/Ьin/nano
Первая команда (which nano) сообщает путь к выбранному редактору. Далее
этот путь нам нужно указать в качестве значения переменной EDIТOR.
Вот только помните, что при �ледующем входе в систему переменная EDI­
TOR будет установлена по умолчанию. Чтобь; этого не произошло, нужно
отредактировать файл .bashrc того пользователя, от имени которого будете
редактировать конфигурационные файлы.
IJII················································································'
1 1,1ва 11 I1011�.111p11ыt• 111ю1 ра,1,11.1
В случае с root это будет файл /root/.bashrc:
cd ~
nano .bashrc
,\
В этот файл нужно добавить -команду:
export EDITOR=/bin/nano
Сохраните файл.
Теперь нужно выйти из системы (команда exit) и снова войти (по SSН: или
через WеЬ-консоль). После этого запустите любую команду, вызывающую
стандартный текстовый редактор, например, crontab -е. Если вы увидели
выбранный вами текстовый редактор, знач_ит, все прошло нормально (рис.
11.8). В противном случае вы где-то допустили ошибку.
.
....
Рис. 11.8. При редактировании расписания (команда crontab -е) открылся папа.
Настройка успешна
.
·---------------------------------------------------------------------------------'Willlilr
lk,1, 1 i1111,
11.4. Программы для работы с Интернетом
�
..
Основные программы для работы с Интернетом установлены по умолчанию.
к ним относятся:
• браузер Firefox;
• почтовый клиент Thunderbird;
• Тоrrеnt-клиент Traпsmission.
При желании вы можете доустановить FileZilla (FТР-клиент) и sFTP Client
(клиент обмена файлами по протоколу SSН).
Установка этих программ осуществляется посредством Ubuntu Software и
предельно проста: все, что вам нужно сделать, - нажать кнопку Установить.
[Q 111.,,u.
"'""'"""'
"sFТPd�nt
31oroll0(08
O<tt-1!11> IIOJIOJIU!ТtJIW\Wt
��
Propt�
КЮМЦМ11
Р�ж;:,уэжм
]17.)1"46
оnубм;о&мю
7дt«..IOUr.
с,..,,ц
ICAiWIIЧtuМM
Рис. 11.9. Ubuntu Software
•
Df6,gly PPl?№ГII\Н
�
•
.....................................................................................
l .1ана 11 П1111�.111р11ые 11ро1 ра\1\11,1
Ранее было показано, как установить популярный браузер Chrome, если вам
не понравится Firefox.
Q skype
Skype
SC):><'0
Ра6Gта, CQulмl'�
к.км
l1tt�tьЫeв.110.o ..
"
5/:1 jjj9
j
4)roroa,a
?,'iJ""l'p.W!ptДI\
l'\ollOJl(ltft'-loR
1&S.16Mli
°"Yfiм<OIONIIO
11дttt.2023r.
C<OL1JJI
8t§:ЯiтPf}PfWN!'.J€j
Рис. 11.10. Уста11овка Skype
Рис. 11.11. Skype запущен
•
·-------------------------------------------------------·------·-·---·----·-··----1111
lkc1, l,illll\
Также вам, скорее всего, захочется установить Skype. Сделать это также
можно посредством UЬuntu Software (рис. 11.1О). Программа устанавливает­
ся просто и без всяких танцев с бубном, как это было в предыдущих версиях
UЬuntu. Сразу после установки Skype готов к использованию (рис. 11.11).
Популярный мессенджер Viber также доступен для Linux и также устанав­
ливается посредством UЬuntu Software (рис. 11.12).
vlber-unofflclal
10,.,rM)ll,.,,.,.1�11
(OW,t/11,+10C1,
1oro,1oco,
ию"�uм11
t\fД/1(1,11.,..�ОГ01'0(,)11
Crporot
Л.,utмжProprltt•,y
Оnу611м�омно
Zlфe1p.201'r.
+нн+
Pa,.,.t11strpy1,11
201.0fM&
Рис. 11.12. Установка Viber
Заметьте, вы только что установили много программ и не ввели ни одной
команды. В предыдущих версиях UЬuntu вам пришлось бы ввести с десяток
команд, не говоря уже о том, чтобы заставить установленные программы ра­
ботать. На данный момент у вас есть большинство программ, которые могут
понадобиться при работе в Интернете обычному пользователю.
11.5. Linuх-аналоги Windows-пpoгpaмм
::J
"§;
i
�
Новичкам в Linux не всегда просто, поскольку они попросту не знают, какое
приложение установить. Не всегда есть Linux-вepcии известных программ,
но в большинстве случаев есть несколько аналогов·.
Таблица 11.1 поможет вам выбрать Linuх-программу на все случаи жизни.
•
-------------··--···--·----·--···--·-·-·----···-···-···---··-··--···--··--···------·
1 1.11<.1 11
IIШl\.lllJIIIЫt' IIJIOI 1),1\1\lbl
Таблица 11. 1. Аналоги Windows-nporpaмм
Название Windows-пpвлoжelllUI
Unux-aвaлorв
gThumb
F-Spot
ACDSee
Shotwel
DigiKam
PhotoQt
GPicView
Acronis True Image
CloneZilla
Adobe Audition
Ardour
LibreOffice Fraw
Adobe Illustrator
Inkscape
sK l
XaraXtreme
GIМP
Adobe Photoshop
Кrita
Photivo
Adobe Lightroom
Adobe Premiere Pro
DarktaЬle
Open Movie Editor
PiTiVi
Xpdf
•
Adobe Reader
Evince
Google Chrome
·-----------------------------------------------------------------------------------
lk, 1 1 i1111\
Alcohol 120
Furius ISO Mount
AnyDesk
Remmina
Apple iCloud for Windows
iCloud for Linux
Ardour
Ardour
Audacity
Ardour
ClamAV
Avira Antivirus
Avira AntiVir Personal
Avast Antivirus Linux Ноте Edition
Blender
Blender
CINEМA4D
Blender
Inkscape
LibreOffice Draw
Corel Draw
sКl
XaraXtreme
I-Nex
CPU-X
CPUZ
CPU-G
FOFF
FileZilla
CuteFTP
'
CyberLink PowerDVD
gFТP
Totem
4.
&1---------------------------------------------------------------------------------·
1 1.1н,1 11 ll1111�.11111111.1t• 111н11 ра,1,11.1
Daemon Tools
Furius ISO Mount
Etcher
DarktaЫe
DarktaЬle
DaVinci Resolve
Avidemux
Deluge
Transmission
Discord
Discord
Avira AntiVir Personal
Dr.Web Antivirus
Avast Antivirus Linux Ноте Edition
ClamAV
Dropbox
Dropbox
eMule
aMule
Avira AntiVir Personal
ESET NOD32 Antivirus
Avast Antivirus Linux Ноте Edition
ClamAV
Etcher
Etcher
Boostnote
Evemote
MyNotex
Zim
CherryTree
•
FileZilla
FileZilla
FineReader
glmageReader
....................................................................................
lkc1, l.i1111\
Xpdf
Foxit Reader
Evince
Aesop
Freehand
sKl
GeoGebra
GeoGebra
GOG
Steam
Google Chrome
Google Chrome
Google Earth
InterVideo WinDVD
Google Earth
МаrЫе
'
MP!ayer
Totem
gThumb
IrfanView
GPicView
Mirage
Ristretto
LMMS
Ardour
Maple, Magma, Mathematica, Matlab
Sage
Мауа
Blender
Microsoft Access
LibreOffice Base
Microsoft Excel
•
LibreOffice Calc
IВМ Lotus Symphony
•
....................................................................................
1 1,11<,1 11
llt11I\ IIIIHll,ll' 11(1111 (1:1\1\11,1
Microsoft Office PuЬlisher
LibreOffice Draw
Microsoft OneNote
�heпyTree
Evolution
Microsoft Outlook
ThunderЬird
Sylpheed
Evolution
Microsoft Outlook Express
Thunderbird
Sylpheed
Microsoft Paint
Microsoft PowerPoint
Microsoft Visio
Gnome Paint
Pinta
IВМ Lotus Symphony
LibreOffice Impress
LibreOffice Draw
Code Blocks
КDevelop
Visual Studio Code
NetBeans
Eclipse
Qt Creator
Microsoft Windows Joumal
•
Xoumal
··················································································IJ!I
"" 1, 1 i,11,,
MP!ayer
Lollypop
Celluloid
Totem
Microsoft Windows Media Player
GMusicBrowser
Clementine
Rhythmbox
Audacious
VLC
Open Movie Editor
PiTiVi
Microsoft Windows Movie Maker
FlowЫade
Lightworks
Avidemux
MpЗtag
EasyTag
МРУ
Celluloid
кзь
Nero
Brasero
GnomeBaker
eme!FM2
Norton Commander
DouЫe Commander
'
GNOМE Commander
'Midnight Commander
•
1!18····················································-·····················-·······
.
1 l,IH,I 11 J 11111�. 1111)111,lt' ll!ltll р:1'1\11,1
JuftEd
Notepad++
Medit
Atom
Opera
Opera
Google Chrome
Epiphany
Partition Magic
GParted
Picasa
DigiKam
qBittorrent
Transmission
Qt Creator
КDevelop
QuarkXPress
Scribus
ReGet
Steadyflow
JDownloader
Remote Desktop Connection
Remmina
Rufus
Etcher
Medit
Screem
Scribes
Scite
Bluefish Editor
SciTE
Komodo Edit
Geany
····················································"··········:··················ID
lkc1, l.i1111,
SketchUp
Blender
Skype
Skype
Slack
Discord
SmartFTP
Filezilla
SolidWorks
FreeCAD
Steam
Steam
TeamViewer
Remmina
ThunderЬird
The Bat
Claws Mail
4Pane
GNOME Commander
Total Commander
Midnight Commander
Кrusader
emelFM2
UltraISO
Etcher
Universal USB Installer
Etcher
"',:
qBittorrent
uTorrent
Deluge
'
Tixati
Transmission
•
....................................................................................
1 l,IB,I 11 111111�.IIIJllll.lt' IIJICII р:1'1\11,1
Viber
Viber
PiTiVi
Virtua!Dub
Avidemux
Open Movie Editor
Visual Studio Code
Visual Studio Code
VLC
VLC
Win32 Disk Imager
Etcher
.....
Decibel Audio Player
QMMP
Clementine
WinAМP
Totem
Audacious
AlsaPlayer
Sayonara
MP!ayer
Wireshark for Windows
Xara
Wireshark
Inkscape
XaraXtreme
DigiKam
Mirage
XnView
GPicView
PhotoQt
о
gThumb
··················································································&1
=
Q
Zoom
Discord
ЗD Studio Мах
Blender
•
1!8---------------------------------------------------------------------------------·
Глава 12.
ЗАПУСК WINDОWS­
ПРИЛОЖЕНИЙ В LINUX
л •
lkc1, l.i111п
"='"
Wine - это программа с открытым исходным кодом, которая
позволяет запускать Wiпdоws-приложения в среде Linux и
MacOS.
Можно сказать, что это слой совместимости между операционной системой
и Windоws-программами. Вь1зовы процедур из библиотек Windows подме­
няются на системные вызовы Linux, и с помощью этого появляется возмож­
ность выполнять Windows-пpoгpa�мы в Linux.
r--------------------------------------------------------------,
1
.
1
: ОБРАТИТЕ ВНИМАНИЕ: Wine - не виртуальная машина, в ко- :
торую устанавливается Windows (которую, по-хорошему, нужно
: лицензировать). Это платформа запуска Wiпdоws-приложений, :
: которой не нужна сама Windows! Соответственно, и лицензиро- :
1
1
: вать ничего не нужно.
:
!
!
t ______________________________________________________________ J
,..,
.,"
:
�- '
-::,
-::,
:
Платформа Wine постоянно развивается, постоянно выходят новые версии,
в которых больше поддерживаемых функций Windows, исправлены многие
ошибки, добавляется поддержка новых возможностей. Стабильные релизы
Wine выходят приблизительно раз в год, полтора. Но корректирующие, те­
стовые релизы есть постоянно, даже по несколько раз в месяц.
За последнее время Wine очень сильно продвинулся в плане запуска игр.
Благодаря библиотеке DXVK уже можно играть даже во многие современ­
ные игры Windows без потери производительности.
Дальше для примера будет рассмотрена установка Wine UЬuntu 20.04. Уста­
новим последнюю версию из официальных репозw:ториев, а также восполь­
зуемся РРА.
•
В!I··················································································
J 1,Ш,1 J 2
�:11/�Ch: \\ iщ\o\\S-ll(JII.IO;h:t'llllil 11 (,i1111x
12.1. Установка из ос)?ициального репозитория
Для установки из официального репозитория просто введите команду:
sudo apt install wine
Установка займет много времени, поскольку нужно будет загрузить много
вспомогательных пакетов (рис. 12.1). Можете выпить чашку кофе или
позвонить другу, в общем, занять себя чем-нибудь.
Рис. 12.1. Установка wine
Если вы увидите сообщение, что пакет wine не найден, тогда выполните ко­
манду:
.
sudo update-manager
·------------------------------------···-···-········-------·-···-·-·······--··-··&1
:,:
::::..
,..
lkё1, l,i1111,
В появившемся окне вместо сервера в Российской Федерации выберите ос­
новной сервер. Как показывает практика, ru.ubuntu.com почему-то время от
времени сбоит, и не всегда удается загрузить с него пакеты.
После этого введите команду:
sudo apt update
После этого повторите попытку установки wine.
12.2. Настройка после установки
Сразу после установки введите команду:
$ winecfg
Запустится конфигуратор, осн. овное назначение которого - создать слу­
жебные каталоги, в том числе каталог для диска С:, на который будут уста­
навливаться Windows-пpoгpaммы. В окне конфигуратора выберите версию
Windows.
"''"
"С
Рис. 12.2. Установка версии Windows
•
1!11-········································································-·········
1 1,11<.1 12 Jai1�ci..: \\ iщl11\\S-11p11.111жc11111i 11 l.i1111x
l
1
1 ОБРАТИТЕ ВНИМАНИЕ, что по умолчанию используется 1
1 Windows 7, но, учить1вая, что современные программы посте- 1
1
1
1 пенно отказываются от ее поддержки, рекомендуется выбрать 1
1 Windows 10/11.
1
�--------------------------------------------------------------�
1
1
На вкладке Диски содержит список дисков, которые будут ·доступны
Windоws-приложениям. По умолчанию содержимое диска С: будет нахо­
диться в кaтaлore-/.wine/drive_c. Остальные параметры можете не изменять
- вернетесь к ним, когда у вас появится такая необходимость.
-
,.,.
c�n..10.1-
,
Рис. 12.3. Вкладка ''Диски"
12.3. Установка и запуск Windows-пporpaммы
Далее будет показан процесс установки и запуска Windows-пporpaммы. Мы
будем устанавливать популярный двухпанельный файловый менеджер Total
Commander- помимо всего прочего, он пригодится вам для просмотра фай­
ловой системы, которую "видят" устанавливаемые Windоws-приложения.
·················-·······················-········································ID
•
lkc1, (jnux
Скачайте установочный ехе-файл с официального сайта (https://www.ghisler.
сот/). Он будет помещен в каталог Загрузки.
,,.
Перейдите в этот каталог, используя файловый менеджер UЬuntu, щелкните
правой кнопкой мыши в любой свободной области и выберите команду
Открыть в терминале. Так вы откроете терминал, в котором уже будет
выбран текущий каталог Загрузки - так быстрее.
Введите команду:
$ wine tcmd1102x32
Запустится программа установки Total Commander (рис. 12.4).
Произведите установку как обычно.
По завершении установки вы получите соответствующее сообщение (рис.
12.5).
Рис. 12.4. Программа установки Total Commander
•
111---------------------------------------------------------------------------------·
1 лава 11. J:нl)CI, \Vindo\\s-11pш111жc1111ii н (,inux
Рис. 12.5. Уста11овка заверше11а
Далее откройте экран Приложения, и вы найдете там кнопку для запуска
Total Cornmander. Прошу заметить: это все-таки Windоws-приложение, а запу­
стить вы его можете как обычное "родное" приложение для Linux (рис. 12.6).
,
· Рис. 12.6. Экра11 прuложе1111я л1ож110 использовать для запуска Windows­
npuлoжe1111й
................................................................................ ..
lkc1, 1.irнп
Запустите программу (рис. 12.7). Далее вы можете пользоваться ею без вся­
ких ограничений.
-
Totм.COm,мnd8, 11.02- НЕ 1АРUМСТРМюеАНО
(j
,.. ...
�
·-•- '-
<П-12.12.212316:4:J (h-1Z.12.21ZJ1'=12(П-1Z.IZ.28ZЭ16:12cn...... 1z.12.a;n1c,;12cn...... 12.12.2RJ16:43-
-
i!I
сз
Рис. 12. 7. Total Commander запущен в Linux
12.4. Список игр и других приложений,
работающих через Wine
:,:
);а
'С
..
"'
,,
'С
Что делать, если не получается запустить приложение в Linux?
Во-первых, попробуйте изменить версию Windows. В некоторых случаях это
может помочь.
Во-вторых, поищите решение на форумах: скорее всего, вы не единствен­
ные, кто столкнулся с такой проблемой, и наверняка решение уже есть.
В-третьих, поищите нужные настройки в базе данных приложений.
На официальном сайте Wine ведется база данных программ и игр, которые
можно запустить через Wine: Wine Application Database (AppDB)
https://appdb.winehq.org
•
•
•
.......................................................: ........................... .
1 ' 1\' 1:
Ja11нi- \\ i1нlo11S-IIJНI 111,ht'IIIIII в I i1111,
Для каждого приложения можно получить информацию об особенностях
установки, запуска и настройки данного приложения через Wine, о пробле­
мах и багах, с которыми можно столкнуться.
База данных постоянно пополняется. В ней уже на'считывается более 30000
приложений,_и этот список регулярно пополняется. Вот только некоторые из
популярных программ и игр на слуху, работающих черезWine (конкретную
версию уточняйте в базе данных AppDB):
• Adobe Animate;
• Adobe Photoshop;
• Microsoft Office;
• Total Commander;
• Lingvo;
• 1 С:Предприятие;
• Гарант;
• КонсультантПлюс;
• Final Fantasy XI Online;
• StaгCraft;
• World ofWarcraft;
• Warcraft III;
• World ofWarcraft 8.3.0;
• Counter-Strike: Source;
• EVE Online;
• Half-Life 2;
• Magic: The Gathering Online;
• The Sims 3;
• StaгCraft 1.16.1.
12.5. Использование отдельных префиксов
•
·--·······················-········--·-----·······-·····-·---···-·······---------·1!11
lkc1, l.i111п
Некоторые программы должны запускаться внутри своей среды, то есть
должны быть изолированы от других приложений. Для этого им нужен от­
дельный префикс (отдельная директория среды, в которой они будут рабо­
тать).
lj
:;:
Префикс задается переменной WINEPREFIX. Посмотрим, как все это реали­
зовать на практике. Сначала создадим новый префикс.
Выполняем команду:
WINEPREFIX="/home/ubuntu/.wine/" winecfg
Теперь выполняем саму программу и указываем для нее новый префикс:
WINEPREFIX="/home/ubuntu/.wine/" wine /путь/к/файлу/sеtuр.ехе
=
ва-------··---····················: ............................................... ,
Глава 13.
ФАИЛОВАЯ СИСТЕМА
л •
1 {, ' 1, 1 i 1111 \
13.1. Какие файловые системы поддерживает
Linux
Операционная система Linux поддерживает очень много файловых систем.
Но самое главное - это· модуnьнwй nрмнцмn организации
ядра Linux.
Даже если кто-то сегодня создаст файловую систему, о которой еще вчера
никто ничего не знал, то ему достаточно создать модуль ядра, и Linux будет
поддерживать его операционную систему.
Родным для Linux является семейство файловых систем ext•. Самая древняя
файловая система Linux называлась ext (сегодня вы вряд ли с ней столкне­
тесь), затем появились ext2, ехtЗ и ext4. Еще в 2010 году ходили слухи о ext5,
но ее так и не создали.
Файловые системы ехtЗ и ext4 являются журналируемыми, то есть они ве­
дут "журналы" своей работы, что позволяет произвести восстановление
информации в случае сбоя. Журналы работают так: перед осуществлением
операции файловая система записывает в журнал эту операцию, а после вы­
полнения операции� удаляет �апись из журнала. Если после занесения ин­
формации в журнал произошел сбой (например, 9'fКЛЮЧение электричества),
то после его устранения (подача электричества) файловая система выполнит
все действия, которые она не успела выполнить. Конечно, это не панацея и
резервные копии никто не отменял. Но все же лучше, чем ничего.
•
..
•
�···················································:·····························.
1 1.,н.1 1; Фа11.юваи ,·щ·н·ш1
Однако не во всех дистрибутивах ext4 используется по умолчанию.
Linux также поддерживает и другие файловые системы: XFS, ReiserFS,
BtrFS, ZFS, JFS. Вы можете встретить дистрибутивы, в которых по умолча­
нию используется одна из этих файловых систем.
У каждой из этих файловых систем есть свои отличия:
• JFS (Journaled File System) - 64-битная жур�алируемая файловая систе­
ма, созданная IBM, распространяется по лицензии GPL, и благодаря это­
му факту она оказалась в Linux. Обладает высокой производительностью,
но у нее маленький размер блока (от 512 байт до 4 Кб), поэтому на серве­
ре данных ее можно использовать с большим успехом, но не на рабочих
станциях, на которых производится обработка видео в реальном времени,
так как размер блока для этих задач будет маловат. В отличие от ехtЗ, в
которую поддержка журнала была добавлена (по сути, ехtЗ - это то же
самое, что и ext2, но с журналом), JFS была изначально журналируемой.
Максимальный размер тома - 32 Пб, максимальный размер файла 4Пб.
• ReiserFS - самая экономная файловая система, поскольку позволяет
хранить в одном блоке несколько файлов. В других файловых системах
файл должен занимать как минимум 1 блок, и получается, что если размер
файла меньше размера блока, то "остаток" просто не используется. Когда
в системе много небольших файлов, дисковое пространство используется
очень нерационально. В ReiserFS все иначе. Если размер блока, скажем, 4
Кб, то в него могут поместиться несколько файлов общим размером 4J(б,
а не только один, например, два файла по 2 Кб. Максимальные размеры
тома и файла зависят от версии ReiserFS и разрядности системы.
• XFS - высокопроизводительная (до 7 Гбайт/с) файловая система, раз­
работанная Silicon Graphics. Изначально была рассчитана на большие
размеры накопителей (более 2 Тб) и большие размеры файлов. Очень
хорошо проявила себя при работе с файлами большого размера. Размер
блока у этой файловой системы - от 512 байт до 64 Кбайт. Выделяет
место экстентами (Extent - указатель на начало и число последователь­
ных блоков). В экстентах выделяется место для хранения файлов, а также
экстентами хранятся свободные блоки. Именно эта файловая система ис­
пользуется по умолчанию в современных версиях Fedora Server.
• Btrfs (В-tree FS, "Better FS" или "Butter FS")-файловая система, раз­
работанная специально для Linux и основанная на структурах Б-деревьев.
•
··················································································1111
Работает по принципу "копирование при записи" (copy-on-write). Создана
компанией Oracle Corporation в 2007 году, распространяется по лицензии
GPL. Изначально планировалась как конкурент популярной файловой си­
стеме ZFS.
• ZFS (Zettabyte F ile System) - файловая система, созданная в Sun
Microsystems для операционной системы Solaris. Позже она появилась и
в Linux. Ее особенность - полный контроль над физическими и логиче­
скими носителями.
Кроме перечисленных выше файловых систем, Linux поддерживает еще и
файловые системы Windows - FAT, FAT32, NTFS. Также поддерживаются
всевозможные сменные носители вроде оптических дисков, флешки, внеш­
ние жесткие диски и, соответственно, файловые системы на этих сменных
носителях. На внешних жестких дисках используются файловые системы
FAT32 или NTFS, если вы специально не переформатировали их в файловую
систему Linux. На оптических дисках могут использоваться UDF, ISO 9660,
Joliet и подобные.
13.2. Какую файловую систему выбрать?
Файловых систем довольно много, так какую из них выбрать для вашей
системы? На рабочих станциях и серверах общего назначения я бы исполь­
зовал ext4 или ReiserFS. Последняя особенно хороша, если у вас много мел­
ких файлов - тогда дисковое пространство будет использоваться более ра­
ционально.
На сервере баз данных лучше использовать JFS - тогда прирост производи­
тельности вам гарантирован. А вот XFS для некоторых видов серверов под­
ходит так себе, однако это не помешало разработчикам F edora Server исполь­
зовать эту файловую систему по умолчанию в своем дистрибутиве (начиная
с версии 22). Видимо, повлияла высокая производительность и ориентация
на большие объемы накопителей и файлов.
Очень неплохой является файловая система ZFS, особенно она хороша при
управлении различными дисковыми устройствами. Вы можете создать пул
и добавить в него несколько дисковых устройств. Этим ZFS чем-то похожа
•
....................................................................................
на LVМ-менеджер логических томов, который мы рассмотрим в дальней­
шем.
Не спешите с выбором файловой системы именно сейчас. В конце этой.гла­
вы вы найдете подробную информацию об ext4. 'Может, в ней вы найдете
ответы на все ваши вопросы и остановите свой выбор на ext4.
Выбор файловой системы нужно производить даже не на основе характери­
стик самой файловой системы, а исходя из назначения компьютера. Напри­
мер, для рабочей станции с головой хватит ext4. С сервером сложнее - нуж­
но учитывать, какой это будет сервер. Как уже отмечалось, для сервера БД
-JFS, для хостинга (где хранятся файлы других пользователей)- ReiserFS,
если нужно работать с большими объемами данных -XFS.
13.3. Что нужно знать о файловой системе Linux
13.3.1. Имена файлов и каталогов
Нужно помнить следующие правила именования файлов и каталогов в Linux:
• Linux чувствительна к регистру символов, то есть файлы Docurnent.txt и
document.TXT-это разные документы.
• В Linux нет понятия "расширение" файла. Если в Windows мы прив�кли,
что последние символы после последней точки (обычно от 1 до 4 симво­
лов) называются расширением. В Linux такого понятия нет. Если кто-то и
употребляет термин "расширение" в Linux, то это только для того, чтобы
бывшим Windоws-пользователям (которыми являемся, по сути, все мы)
бьшо понятнее, что имеется в виду.
• Максимальная длина имени файла -254 символа.
• Имя может содержать любые символы (в том числе и кириллицу), кроме
/ \? < > * "1.
• Разделение элементов пути осуществляется с помощью символа /, а не
\, как в Windows. В Windows мы привыкли к путям вида C:\Users\John, в
Linux используется прямой слеш: /home/john .
•
··················································································IZII
1
lkc1, l.inu,
• Если имя файла начинается с точки, он считается скрытым. Пример:
.htaccess.
13.3.2. Файлы устройств
Уникальность файловой системы Linux в том, что для каждого устройства в
Linux создается собственный файл в каталоге /dev.
Загляните в каталог /dev - в нем вы найдете множество файлов для всех
устройств вашей системы. Вот примеры некоторых файлов устройств:
• /dev/sda � первый жесткий диск, как правило, подключенный к первому
SАТА-контроллеру;
• /dev/sdal - первый раздел на первом жестком диске. Нумерация разде­
лов жестких дисков в Linux начинается с 1;
1
•
/dev/mouse - файл устройства мыши;
• /dev/cpu - файл устройства процессора;
• /dev/cdrom - ваш СD/DVD-привод;
• /dev/random - файл устройства-генератора случайных чисел;
• /dev/ttyl - первая консоль (терминал).
Файлы устройств бывают двух типов: символьные, обмен
информацией с которыми осуществляется посимвольно, и
блочные, обмен информацией с которыми осуществляется
блоками данных.
Пример символьного устройства - /dev/ttySO - последовательный (СОМ)
порт, пример блочного устройства - /dev/sdal - раздел жесткого диска.
13.3.3. Корневая файловая система и основные подкаталоги
первого уровня
Самое большое отличие, к которому придется вам привыкнуть, - это нали­
чие корневой файловой системы. Вспомните, как Windows управляет жест-
•
IJII··················································································
1 1,11<,1 1;
Ф.111.ICIIШII CIIClt'\1.1
кими дисками. Представим, что у нас есть жесткий диск с двумя логически­
ми дисками (разделами). Первый будет в Windows называться С:, а второй
-D:. У каждого из этих ло"ических дисков будет свой корневой каталог
-С:\ иD:\.
В Linux все иначе. Представьте, что мы разбили жесткий диск /dev/sda на
два раздела (как и в случае с Windows). Первый будет называться/dev/sdal
(Windows бы его назвала С:), а втopoй-/dev/sda2 (в Windows он был быD:).
Мы установили Linux на первый раздел/dev/sdal. Точка монтирования этого
раздела будет/, что соответствует корневой файловой системе. Второй раз­
дел вообще никак не будет отображаться, пока вы его не подмонтируете.
Подмонтировать можно к любому каталогу.
Например, вы можете подмонтировать раздел/dev/sda2 к каталогу/home, и
тогда домашние каталоги пользователей будут храниться физически на дру­
гом разделе. Точка монтирования - это каталог, через который осуществля­
ется доступ к другому разделу. Правильнее сказать, даже к другой файловой
системе, которая физически может находиться на другом разделе, на другом
жестком диске, на внешнем жестком диске, флешке и т.д.
Корневая файловая система содержит стацдартные каталоги. У каждого ка­
талога есть свое предназначение, например, в каталоге/Ьin хранятся стан­
дартные программы, в каталоге/home - домашние каталоги пользователей,
в каталоге/tmp - временные файлы и т.д. Назначение стацдартных катало­
гов приведено в таблице 13.1.
Таблица 13.1. Назначение стандартных каталогов корневой файловой
системы Linux
•
Каталог
Опиеавве
/
Каталог корневой файловой системы
/Ьin
Содержит стацдартные утилиты (cat, ls, ер и т.д.)
/Ьооt
Содержит конфигурационный файл загрузчика и некоторые модули загрузчика
/dev
Содержит файлы устройств
··················································································f!II
1
lkc1, l.i1111x
/etc
В этом каталоге находятся конфигурационные файлы
системы и программ
/home
Здесь хранятся домашние каталоги пользователей
/lib
Содержит библиотеки и модули
/lost+found
В этом каталоге хранятся восстановленные после
некорректного размонтирования файловой системы
файлы
/misc, /opt
Опциональные каталоги, могут содержать все что угодно. Некоторые программы могут устанавливаться в
каталог /opt
/media
Некоторые дистрибутивы монтируют сменные устройства (оптические диски, флешки) к подкаталогам этого
каталога
/mnt
Содержит точки монтирования. Как правило, здесь
хранятся стационарные точки монтирования, которые
обычно описываются в файле /etc/fstab
/proc
Каталог псевдофайловой системы procfs
/root
Каталог пользователя root
/sbln
Содержит системные утилиты. Запускать эти утилиты
имеет право только пользователь root
/tmp
Содержит временные файлы
/usr
Может содержать много чего - пользовательские программы (несистемные программы), документацию, исходные коды ядра и т.д.
/var
Содержит постоянно изме�ющиеся данные системы
- почтовые ящики, очереди печати, блокировки (locks)
и т.д.
"'
"'
"С
,:,
•
-----------------------------------------------------------------------------------·
1 1,111.1 I "\ Фaii.HIЩISI CIICH'\НI
13.4. Ссылки
Ссь1nки позволяют одному и тому же файлу существовать в
системе под разными именами.
Ссылки бывают жесткими и символическими. Сейчас разберемся, в чем раз­
ница.
Если на файл указывает хотя бы одна жесткая ссылка, вы не сможете его уда­
лить. Количество ссылок на файл можно узнать командой ls -!. Что касается
символических ссылок, то вы можете удалить файл, если на него указывает
хоть 100 символических ссылок. После этого они будут "оборваны" - ссыл­
ки, как файлы, останутся на жестком диске, но они будут указывать на не­
существующий файл.
У жестких ссылок есть одно ограничение. Они не могут указывать на файл,
находящийся за пределами файловой системы. Представим, что каталог /tmp
находится физически на одном и том же разделе, что и /. Тогда вы сможете
создать ссылки на файлы, которые находятся в каталоге /tmp. Но если /tmp
- это точка монтирования, к которой подмонтирован другой раздел, вы не
сможете создать жесткие ссылки.
Для создания ссылок используется команда /п.
ln [-s] файл ссылка
Если параметр -s не указан, то будет создана жесткая ссылка на файл. Если
параметр -s указан, то будет создана символическая ссылка.
13.5. Права доступа
•
13.5.1. Общие положения
··················································································l!fl
lkc1, 1 i1111,
В Linux, как и в любой многопользовательской системе, есть понятия вла­
дельца файла и прав доступа.
Вnадеnец - это пользователь, которому принадлежит
файn. В большинстве случаев - это пользователь,
создавший файл.
Права доступа определяют, кто и что может сделать с файлом.
Также, права доступа файла могут изменять владелец файла или пользова­
тель root. Владелец может назначить, например, кто имеет право читать и
изменять файл. Владелец также может "подарить" файл другому пользовате­
лю. После этого владельцем стан� уже другой пользователь.
Права доступа у пользователя root максим!jЛьные, а это означает, что он мо­
жет изменить владельца любого файла (вы можете создать файл, а root может
сделать владельцем любого другого поnьзователя) и изменить права доступа
любого файла. Пользователь root может удалить и изменить любой файл, мо­
жет создать файл в любой папке и т.д. С одной стороны, это хорошо, но если
злоумышленник завладеет паролем root, то хорошего в этой ситуации мало.
Права доступа в Linux по умолчанию настроены так, что пользователь вла­
деет только своим домашним каталогом /hоmе/<имя_пользователя>.
Поэтому создавать файлы и выполнять другие операции по работе с ф�йла­
ми (удаление, редактирование, копирование и т.д.) пользователь может толь­
ко в этом каталоге, и то при условии, что файлы принадлежат ему.
Если в домашнем каталоге пользователя root создал файл, пользователь не
сможет удалить или изменить его, поскольку он не является его владельцем.
Сможет ли он прочитать этот файл, зависит от прав доступа к файлу (о них
мы поговорим позже).
Остальные файлы, которые находятся за пределами домашнего каталога,
пользователь может только просмотреть, и то если это не запрещено права­
ми доступа.
Например, файл /etc/passwd пользователь может просмотреть, а /etc/shadow
- нет. Также пользователь не �ожет создать файль1 в корневой файловой
системе или в любом другом каталоге, который,ему не принадлежит, если
иное не установлено правами доступа к этому каталогу.
•
....................................................................................
1 1,IВ,1 1, Фаi1.ю11аи CIIClt'\1.1
13.5.2. Смена владельца файла
Команда chown используется для изменения владельца
файла/каталога.
Формат такой:
chown <пользователь> <файл/каталог>
Здесь пользователь - это новый владелец файла. Чтобы подарить другому
пользователю файл, вы должны быть или его владельцем, или пользовате­
лем root.
13.5.3. Определение прав доступа
Для изменения прав доступа используется команда chmod.
Для изменения прав доступа вы должны быть владельцем файла/каталога
или же пользователем root.
Формат команды следующий:
chmod <права> <файл/каталог>
Права доступа состоят из трех наборов: для владельца,
для rpynnы владельца и·для прочих пользователей.
Первый набор задает возможности владельца файла, второй - для группы
пользователей, в которую входит владелец, и третий - для всех остальных
пользователей.
•
В наборе может быть три права: чтение (r), запись (w) и выполнение (х) .
··················································································118
lkc1, 1.irнп
Для файла право на выполнение означает возможность запустить этот файл
на выполнение (обычно используется для программ и сценариев). Право на
выполнение для каталога - возможность просматривать этот каталог.
Права доступа в наборе определяются четко в определенном порядке и мо­
гут быть представлены как в символьном, так и в числовом виде (в двоичной
или восьмеричной системе).
Рассмотрим несколько наборов прав доступа:
• 100 - только чтение;
• 11О - чтение и запись;
• 1О1 - чтение и выполнение;
• 111 - чтение, запись, выполнение.
Учитывая, что права доступа задаются для владельца, группы и остальных
пользователей, полный набор прав доступа может выглядеть так:
111 100 ООО
В этом наборе мы предоставляем полный доступ (в том числе и выполнение)
владельцу, группе владельца разрешено только чтение, остальным пользова­
телям доступ к файлу/каталогу вообще запрещен.
В двоичной системе права доступа мало кто записывает. В основном их пре­
образуют в восьмеричную систему. Если вы забыли, то вам поможет следу­
ющая таблица (табл. 13.2).
"
"',,
'С
Таблица 13.2. Преобразование из двоичной в восьl\fеричную систему
Двоичная система
Восьмеричная система
ООО
о
001
1
010
2
•
....................................................................................
1 1 11:,1 1' «l)a11 1ован ,·1н:1,·,1,t
011
100
3
,
4
101
5
110
6
111
7
Если вы видите право доступа 666, то никакой дьявольщины в нем нет, это
всего лишь полный доступ к обычному файлу (не к программе и не к сцена­
рию). Для каталога полные права доступа выглядят как 777 - чтение, изме­
нение и просмотр каталога для владельца, группы и прочих пользователей.
Просмотреть текущие права доступа можно командой:
1s -1 <файл/каталог>
Пример:
lt 1s -1 config
-rw-r--r--. 1 root root 110375 янв 2 08:28 config
Как мы видим, задано три набора rw-, r- - , r-. Выходит, владельцу разрешена
запись и чтение файла, остальным пользователям (группа и про�ие) - толь­
ко чтение. В восьмеричной системе этот набор прав доступа выглядит как
644.
Первый символ (в нашем случае это"-") является признаком каталога .. Если
бы мы выводили права доступа каталога, то вместо"-" здесь был бы символ
d. Для файла выводится просто"-".
Символьный способ задания прав доступа немного проще, но лично я пред­
по�итаю числовой. Рассмотрим, как использовать символьный:
•
lt chmod +х config
·---------------------------------------------------------------------------------81·
lkcl, l.i1111\
Просмотрим опять права доступа:
# 1s -1 config
-rwxr-xr-x. 1 root root 110375 sep 2 08:28 config
Как видите, право на выполнение было добавлено во все три набора прав
доступа.
13.5.4. Специальные права доступа
В Linux есть еще специальные права доступа SUID (Set User ID root) и SGID
(Set Group ID root), позволяющие обычным пользователям запускать
программы, которые требуют для своей работы прав root.
В современных дистрибутивах Linux вам придется изменять эти права
доступа чрезвычайно редко (может быть даже вообще никогда), но вам нуж­
но знать, как их изменить. Например, если программу /usr/sbin/program вы
хотите разрешить запускать с правами root обычным пользователям, устано­
вите права доступа так:
# chmod u+s /usr/sbin/program
Использование SШD - плохое решение с точки зрения безопасности. Пра­
вильнее использовать команду sudo, если какому-то пользователю будут
нужны права root.
13.6. Атрибуты файла
В Linux, кроме прав доступа, есть еще и атрибуты файла, подобно атрибутам
файла в друrих операционных системах.
Изменить атрибуты файла можно командой chattr.
chattr +/-<атрибут�> <файл>
•
111----------------------------------------------------------------------------------·
1 1.1н.1 1 ; Фа 11 11111:111 ,·11е 1 ,·,1а
Просмотреть установленные атрибуты можно командой lsattr.
lsattr <файл>
Некоторые полезные атрибуты файлов приведены в таблице 13.3.
Таблица 13.3. Полезные атрибуты файлов
о
Aтpdyr
Оuеапе
i
Запрещает изменение, переименование и удаление файла.
Этот атрибут можно установить для критических конфигурационных файлов или для каких-либо других критических
данных. Установить (как и сбросить) этот атрибут может
только пользователь root или процесс с возможностью САР_
LINUX_IММUТАВLЕ. Другими словами, сбросить этот
атрибут просто так нельзя - нужны обязательно права root
u
При удалении файла с установленным атрибутом и его содержимое хранится на жестком диске, что позволяет легко
восстановить файл
с
Файл будет сжиматься. Можно установить этот атрцбут для
больших файлов, содержащих несжатые данные. Доступ к
сжатым файлам будет медленнее, чем к обычным, поэтому
плохое решение устанавливать этот атрибут для файлов
базы данных. Этот атрибут нельзя устанавливать для файлов, уже содержащих сжатые данные - архивы, JРЕG-фото,
МР3/МР4-файль1 и т.д. Этим вы не только не уменьшите его
размер, но и замедлите производительность
s
Данные, записываемые в файл, сразу будут сброшены на
диск. Аналогично вьmолнению команды sync сразу после
каждой операции записи в файл
··················································································-111
lkL'I, l.iщl\
s
Прямо противоположен атрибуту и. После удаления файла,
принадлежащие ему блоки будут обнулены , и восстановить
их уже не получится
Пример установки атрибута:
..j
""::::1
:::
1 chattr +i config
Пример сброса атрибута:
1 chattr -i config
13. 7. Поиск файлов
Для поиска файлов вы можете использовать команды which,
locate и find.
Первая используется только для поиска программ. Она позволяет опреде­
лить, в каком каталоге находится исполнимый файл той или иной програм­
мы, например:
1 which pppd
/sЬin/pppd
Данную программу очень удобно использовать администратору, когда нуж­
но вычислить месторасположение программы, например, чтобы указать точ­
ный путь к программе в каком-то сценарии или конфигурационном файле.
Команда /ocate позволяет произвести быстрый поиск файла.
•
llt··················································································
1 1.11,.1 1 ; Ф:111 11111:ш ,·11,· н·,1:1
Однако команда locate будет работать не во всех дистрибутивах, а только
там, где доступен updatedb, который и формирует базу данных, по которой
производит поиск команда locate. Если файл будет на диске, но его не будет
в базе данных, то locate его не найдет - вот в чем основной недостаток этой
команды. Для обновления базы данных нужно ввести команду updatedb (или
дождаться, пока планировщик обновит базу данных).
Преимущество команды locate в том, что поиск файла производится практи­
чески мгновенно, особенно по сравнению с командойfiпd. Однако если фай­
ла не будет в базе данных (файл был создан после обновления базы данных
locate), команда locate его не найдет.
Конфигурация updatedb хранится в файле /etclupdatedb.conf.
Увидеть ее можно на листинге 13 .1.
l
l ЛИСТИНГ 13.1. Файл /etc/updatedb.conf
___
IJ
PRUNE_BIND_MOUNТS = "yes"
PRUNEFS
"9р afs anon_inodefs auto autofs bdev binfmt_misc cgroup
cifs coda configfs cpuset debugfs devpts ecryptfs exofs· fuse fuse.
sshfs fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre
mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs
securityfs selinuxfs sfs sockfs sysfs tmpfs uЬifs udf usЬfs"
PRUNENAМES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/
ccache /var/liЬ/yum/yumdЬ /var/spool/cups /var/spool/squid /var/
tmp"
Если параметр PRUNE_BIND_MOUNТS равен yes, файловые системы,
смонтированные в режиме blnd, не исследуются при помощи updatedb. Па­
раметр PRUNEFS задает типы файловых систем, которые не будут исследо­
ваться updatedb. Аналогично, параметры PRUNENAМES и PRUNEPATHS
задают имена файлов (у нас заданы "расширения") и пути (каталоги).
В листинге 13.1 был приведен пример файла update.conf по умолчанию из
Fedora Server. Вы можете отредактировать его под свои нужды, например,
закомментировать параметр PRUNENAМES, отредактировать параметр
PRUNEPATHS и т.д.
•
Теперь перейдем к третьей и самой универсальной команде поиска -find.
·---------------------------------------------------------------------------------18
::,.
"'
=
с.
lkcl, 1 i1111�
Формат вызова следующий:
$ find список_поиска выражение
Полное описание командыjiпd вы можете найти в справочной системе (ко­
манда тап mount), а мы пока рассмотрим несколько примеров.
$ find / -name test.txt
Мы ищем все файлы с именем test.txt, начиная с корневого каталога/. Если
нужно найти все текстовые файлы (*.txt), начиная с корневого каталога, тог­
да команда будет такой:
$ find / -name • *. txt •
Следующая команда ищет только пустые файлы (параметр -empty):
$ find . -empty
Если нужно задать размер файла, тогда можем указать размер явно. В следу­
ющем примере мы задаем размер файла - от 500 до 700 Мб:
$ find ~ -size +sоом -size -700М
Командаfind может не только находить файлы, но и выполнять действие для
каждого найденного файла. В следующем примере мы находим все старые
резервные копии ("расширение" .bak) и удаляем их:
11 find / -name * .bak -ok rm {} \;
Поиск с помощью find занимает немало вреМfНИ - ведь нет никакой базы
данных. Команде find нужно "пройтись" по всем каталогам и проверить в
них наличие искомых файлов.
....................................................................................
] 1 !1, 1] � (J).tll IOB.BI 4.'IH.'lt'\l.t
13.8. Монтирование файловых систем
13.8.1. Монтируем файловые системы вручную
Ранее было сказано, что такое точка монтирования это каталог, через который происходит доступ к файловой
системе, физически размещенной на другом носителе (другом
разделе жесткого диска, флеwке, оптическом диске или даже
на другом компьютере).
Для монтирования файловой системы используется команда mount, для раз­
монтирования - umount:
f mount [опции] <имя устройства> <точка монтирования>
f umount <имя устройства ил� точка монтирования>
Для монтирования файловой системы нужны права root, поэтому команды
mount и umount нужно вводить с правами root.
Представим, что мы подключили флешку. Если у вас один жесткий диск
(/dev/sda), то флешке будет назначено имя /dev/sdb, если жестких дисков два,
то флешке будет назначено следующее имя - /dev/sdc и т.д.
На одном носителе (это касается жестких дисков, флешек и подобных но­
сителей) может быть несколько разделов, которым назначаются номера, ну­
мерация начинается с единицы. Поэтому вы не можете подмонтировать все
устройство /dev/sdc. Вы должны указать номер раздела.
Подмонтируем нашу флешку (пусть это будет устройство /dev/sdc и на нем
будет всего один раздел с номером 1):
f mount /dev/sdcl /mnt/usb
•
·--------------------------------------------------------------------------------:111
1
lkc1, (,iщн
Каталог /mnt/usb - это и есть точка монтирования. Точка монтирования
должна существовать до вызова команды mount, то есть вы не можете под­
монтировать файловую систему к несуществующему каталогу.
После этого вы можете обращаться к файлам и каталогам на флешке через
каталог /mnt/usb:
# 1s /mnt/usb
�
�
!;;
;
2:
Итак, последовательность действий такая: создание точки монтирования
(один раз), монтирование файловой системы, работа с файловой системой
и размонтирование. Размонтирование осуществляется командой 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 NT;
• ntfs-Зg - драйвер ntfs-Зg д;1я чтения и записи NТFS (рекомендуется);
• ext2/ext3/ext4 - различные версии файлово,if системы Linux;
• iso9660 - файловая система оптического диска CD/DVD;
•
....................................................................................
1 1,111.1 1
Ф:111. 11111:111 ,·щ· it'\l:t
• udf - иногда Windows форматирует оптический диск как UDF;
• reiserfs - файловая система ReiserFS;
• smЫs - файловая система Samba;
• nfs - сетевая файловая система.
Например, в случае с NTFS рекомендуется использовать драйвер ntfs-Зg:
t mount -t ntfs-Зg /dev/sdcl /mnt/usb
Параметр -r позволяет смонтировать файловую систему в режиме "только
чтение", параметр -w монтирует файловую систему в режиме "чтение/
запись", но обычно в этом режиме файловая система монтируется по умол­
чанию, поэтому в нем нет необходимости.
Параметр -а монтирует все файловые системы, перечисленные в файле /etc/
fstab, за исключением тех, для которых указана опция noauto.
13.8.2. Имена устройств
Интерфейсов жестких дисков довольно много - ШЕ (АТА/РАТА), SATA
(Serial АТА), SCSI, USB. Раньше жесткие диски с интерфейсом ШЕ назы­
вались в 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?, где? - номер привода, нумерация начинается с О.
Чтобы узнать, какие жесткие диски и оптические приводы установлены в
вашем компьютере, введите команды (рис. 13.1):
1s /dev/sd?
1s /dev/srO
"""
::,:::
];.
Рис. 13.1. Жесткие и оптические диски
Если у вас один оптический диск, можно смело использовать ссылку /dev/
cdrom. Из рис. 13.1 видно, что у нас установлено два жестких диска - /dev/
sda и /dev/sdb, а также один оптический привод /dev/srO.
Для монтирования недостаточно указать имя всего устройства, нужно уточ­
нить номер раздела. Когда разделов много, вы можете забыть (или не знать),
какой именно раздел вам нужен. Вы можете использовать команду fdisk: за­
пустите fdisk <имя устройства>, а затем введите команду р для вывода
таблицы разделов и команду q для выхода изfdisk. Подробно программа/disk
будет, возможно, рассмотрена позднее.
..................................................................................
,
1 1.ш.1 1 , Фа11.111щ111 c11t· н·,,а
Посмотрите на рис. 13.2. Из него становится понятно, что на нашем жестком
диске есть два раздела - /dev/sdal и /dev/sdЫ.
1
Рис.13.2. Пpoгpaммafdisk
Кроме коротких имен вроде /dev/sd? в современных дистрибутивах часто ис­
пользуются идентификаторы UUID. Загляните в файл /etc/fstab, и в нем в
большинстве случаев вместо привычных имен /dev/sd? вы обнаружите вот
такие "страшные" имена:
# В Fedora, Debian, Ubuntu
UUID=2fl49af9-3bff-44Ьd-dl6s-ff98s9a7116d / ext4 defaults О
tl openSUSE
/de-v/disk/by-id/dm-name-suse-server-root / ext4
1
defaults 1 1
Преимушество идентификаторов UUID в том, что они не изменяются, если
вы иначе подключите жесткий диск. Представим, что у вас есть два жестких
диска - /dev/sda и /dev/sdb. На_ первый вы установили Linux (в раздел /dev/
sdal), а второй используете для хранения данных (на нем всего один раз­
дел /dev/sdЫ, который монтируется как /home). Вы отключили оба диска, а
•
·--------------------------------------------·-·-····----··-·--··-·----------·----81
1
lkLI, l.i,111,
затем, подключая, перепутали их местами. В итоге второй диск стал диском
/dev/sda, а первый - /sdb. При загрузке может случиться конфуз, точнее,
система вообще не загрузится. Да же если вы выберете в BIOS SETUP
загрузку со втОJ)ОГО жесткого диска, тоже ничего хорошего не выйдет. С
UUID достаточно выбрать загрузку со второго жесткого диска, и система
будет загружена.
Вы можете использовать обычные стандартные имена, а можете использо­
ватьUUID-идентификаторы. Узнать, какие UUID-идентификаторы соответ­
ствуют каким обычным именам, можно с помощью команды:
1s -1 /dev/disk/by-uu�d/
Вывод этой команды представлен на рис. 13.3.
',11, 1,1, 1 , ',11.'Н 11 .'1 1,111 t,l,1,11',,,111 IH!I
, 111,",1.'11 1, 11 1 1, ,1 '11,1, ! 11/111 !I,11"н 1
, .'1, 1'11н 'I! .'1,1 1 11.,', 11',, 11 1,1,1 , Htt,',I, HI
/
/ ,1111
/ 11,1,
, 11,11
Рис. 13.3. Соответствие UU/D-идентификаторов обычным именам
13.8.3. Монтируем файловые системы при загрузке
Вводить команды mount при каждой загрузке не очень хочется, поэтому про­
ще "прописать" файловые системы в файле /etc/fstab, чтобы система смон­
тировала их при загрузке.
Формат файла /etc/fstab следующий:
устройство точка тип опции флаг_копирования флаг_проверки
Первое поле - это устройство, которое будет монтироваться к точке мон­
тирования (второе поле). Вы можете использовать как обычные имена, так
иUUID.
Третье поле - тип файловой системы.
•
ID··········-············-········-········-········································
Четвертое поле -параметры файловой системы (табл. 13.4), последние два
поля -это флаг резервной копии и флаг проверки.
Первый флаг определяет, будет,ли файловая система заархивирована коман­
дой dump при создании резервной копии (1- будет, О- нет). Второй флаг
определяет, будет ли файловая система проверяться программой fsck на на­
личие ошибок (1, 2- будет, О-нет).
Проверка производится, если достигнуто максимальное число попыток мон­
тирования для файловой системы или если файловая система была размон­
тирована некорректно. Для корневой файловой системы это поле должно со­
держать 1, для остальных файловых систем -2.
Таблица 13.4. Параметры файловой системы
•
defau/ts
Параметры по умолчанию
user
Разрешает обычному пользователю монтировать/размонти­
ровать данную файловую систему
nouser
Запрещает обычному пользователю монтировать/размон­
тировать данную файловую систему. Смонтировать эту ФС
может только root. Используется по умолчанию
auto
ФС будет монтироваться· при загрузке. Используется по
умолчанию, поэтому указывать не обязательно
noauto
ФС не будет монтироваться при загрузке системы
ехес
Разрешает запуск исполнимых файлов на данной ФС. Ис­
пользуется по умолчанию. Для Windows-фaйлoвыx систем
(vfat, ntfs) рекомендуется использовать опцию поехес
поехес
Запрещает запуск исполнимых файлов на данной ФС
r --
ФС будет монтироваться в режиме "только чтение"
·----------·······--··-········-···-····-···-········-····-···--··-········-······&1
t
u
lkl 1, I.i,111,
rw
ФС будет монтироваться в режиме "чтение/запуск:'. По
умолчанию для файловых систем, которые поддерживают
запись
'utf8
Для преобразования имен файлов 'будет использоваться кодировка UTF8
data
Задает режим работы журнала (см. ниже)
13.8.4. Автоматическое монтирование файловых систем
В современных дистрибутивах Linux сменные носители вроде USВ-дисков и
оптических дисков монтируются автоматически:
• Debian, UЬuntu, Fedora, CentOS - монтирование производится к ката­
логу /mеdiа/<метка__устройства>. В качестве метки может использовать­
ся или метка, установленная при форматировании, или серийный номер
устройства, если метка не устанавливалась.
• openSUSE - монтирование будет производиться к каталогу /var/rurf/
mеdiа/<имя пользователя>/<метка>.
За автоматическое монтирование отвечает демон automount, который вы мо­
жете отключить, если автоматическое монтирование вам не нужно.
13.9. Работа с журналом
Существует три режима работы журналируемой файловой
системы ext3/ext4: journal, ordered и .writeback.
По умолчанию используется режим ordered ,._ оптимальный баланс между
производительностью и надежностью. В этом режиме в журнал будет зано­
ситься информация только об изменении метаданных.
-----------------------------------------------------------------------------------·
1 1.1i,.1 1 ; Фа 11. ю11а11 с11с 1 ,·,1а
Самый медленный режим journal. В этом режиме в журнал записывается
максимум информации, которая понадобится при восстановлении в случае
сбоя. Режим очень медленный,'и использовать его следует, только если без­
опасность для вас важнее, чем производительность.
Самый быстрый режим writeback, но в нем, по сути, журнал не будет ис­
пользоваться, и у вас не будет никакой защиты, например, от той же пере­
загрузки.
Режим работы журнала задается параметром data, например:
/dev/sdЫ /home ext4 data= journal 1 2
13.10. Преимущества файловой системы ext4
Поговорим о преимуществах файловой системы ext4. Возможно, она вас
полностью устроит и вам не придется искать другую файловую систему для
своего компьютера.
Впервые файловая система ext4 появилась в ядре версии 2.6.28. По срав­
нению с ехtЗ, максимальный размер раздела был увеличен до 1 эксбибайта
(1024 петабайтов), а макси�альный размер файла составляет 2 Тб. По произ­
водительности новая файловая система ext4 превзошла файловые системы
ехtЗ, Reiserfs, XFS и Btrfs (в некоторых операциях).
Так, ext4 опередила знаменитую XFS в тесте на случайную запись. Файло­
вая система Btrfs провалила этот тест с огромным "отрывом" от лидеров XFS и ext4. Производительность ext4 была примерно такой же, как у XFS,
но все-таки 1;1емного выше, чем у XFS. В Интернете вы найдете множество
тестов производительностей - просмотрите их, если вам интересно.
Основной недостаток ехtЗ заключается в ее методе выделения места на дис­
ке. Ее способ выделения дискового пространства не отличается производи­
тельностью, а сама файловая система эффективна для небольших файлов, но
никак не подходит для хранения огромных файлов. В ext4 для более эффек­
тивной организации данных используются экстенты.
•
Экстент - это непрерывная область носителя информации .
··················································································ID
1
lk,1, 1 i1111,
К тому же ext4 откладывает выделение дискового пространства до послед­
него момента, что еще более увеличивает производительность.
Файловая система ехtЗ может содержать максимум 32 ООО каталогов, в ext4
количество каталогов не ограничено.
В журнале ext4 тоже произошли изменения - в журнале ext4 используются
контрольные суммы, что повышает надежность ext4 по сравнению с ехtЗ.
Выходит, по сравнению с ехtЗ, у ext4 есть следующие преимущества:
�
�
• улучшена производительность - производительность почти достигла
XFS, а в некоторых тестах даже превышает ее;
�
• улучшена надежность - используются контрольные суммы журналов;
• улучшена масштабируемость - увеличен размер раздела, размер файла
и поддерживается неограниченное количество каталогов.
13.11. Специальные операции с файловой
системой
13.11.1. Монтирование NТFS-разделов
Не думаю, что на сервере вам придется монтировать NТFS-разделы, но си­
туации бывают разные. Для монтирования NТFS-раздела используется мо­
дуль ntfs-Зg, который в большинстве случаев уже установлен по умолчанию.
Если он не установлен, для его установки введите команду (замените уит на
имя вашего менеджера пакетов):
"'"'"'
"'"'
# yum install ntfs-Зg
Команда монтирования NТFS-раздела выглядит так:
# mount -t ntfs-Зg раздел точка_монтирования
•
....................................................................................
1 111:,1 1 � •l».111 IHB,IИ ('IH'lt'\1,1
Например, вам кто-то принес флешку, отформатированную как NТFS. Для
ее монтирования введите команду (измените только имя устройства и точку
монтирования):
# mount -t ntfs-Зg /dev/sdЫ /mnt/usb
Модуль ntfs-Зg выполняет монтирование в режиме чтение/запись, поэтому
вы при желании можете произвести запись на NТFS-раздел.
13.11.2. Создание файла подкачки
При нерациональном планировании дискового пространства может воз­
никнуть ситуация, когда раздела подкачки стало мало или вы вообще его
не создали. Что делать? Повторная разметка диска требует времени,
а выключать сервер нельзя. Сервер тормозит, поскольку ему не хватает вир­
туальной памяти, а ждать от начальства подписи на дополнительные модули
оперативной памяти придется еще неделю. А за это время пользователи вас
окончательно достанут своими жалобами.
Выход есть. Он заключается в создании файла подкачки на жестком диске.
Такой файл подкачки будет работать чуть медленнее, чем раздел подкачки,
но это лучше, чем вообще ничего. Хотя, если у вас SSD-диск, никакой раз­
ницы в производительности практически не будет.
Первым делом нужно создать файл нужного размера. Следующая команда
создает в корне файловой системы файл swapOl размером 1 Гб:
# dd if=s/dev/zero of=/swapOl bs=lk count=1048576
После этого нужно создать область подкачки в этом файле:
# mkswap /swapOl 1048576
Наконец, чтобы система "увидела" файл подкачки, его нужно активировать:
•
# swapon /swapOl
··················································································&1
1
�
�
g
Чтобы не вводить эту команду после каждой перезагрузки сервера, нужно
обеспечить ее автоматический запуск.
13.11.3. Файлы с файловой системой
Только что было показано, как создать файл произвольного размера, а потом
использовать его в качестве файла подкачки. При желании этот файл мож­
но отформатировать как вам утодно. Даже можно создать в нем' файловую
систему.
Рассмотрим небольшой пример. Давайте опять создадим пустой файл раз­
мером 1 Гб:
t dd if=/dev/zero of=/root/fsOl bs=lk count=1048576
После этого нужно создать файловую систему в этом файле:
:::1
g
�
t mkfs.extЗ �F /root/fsOl
=
Чтобы не заморачиваться, я создал самую обычную файловую систему ехtЗ.
После этого файл с файловой системой можно подмонтировать и использо­
вать как обычный сменный носитель, то есть записывать на него файлы:
..
,,.,
,.
"С
=
=.,
t mkdir /mnt/fsOl
t mount -t е�tЗ -о loop /root/fsOl /mnt/fsOl
После того как закончите работу с файлом, его нужно размонтировать:
t umount /mnt/fsOl
Зачем это вам нужно - знаете только вы. В конце концов, можно исполь­
зовать или зашифрованную файловую систему, или просто- архив. Н@ для
•
В/1---------------------------------------------------------------------------------·
! 1 11 1 1 � (l),111 1ов.1н '-.'11,.: 11.·ча
общего развития это очень важно, особенно если вы надумаете создавать
собственный дистрибутив Linux.
13.11.4. Создание и монтирование 1S0-образов
Большинство из нас знает утилиты, позволяющие в Windows подмонтиро­
вать 1S0-образ диска. В Linux все подобные операции делаются с помощью
штатных средств, и никакие дополнительные программы не нужны.
Представим, что нам нужно создать образ диска. Если диск вставлен в при­
вод, для создания его 1S0-образа выполните команду:
Здесь, /dev/cdrom - имя устройства (в Linux это имя соответствует любому
оптическому приводу - CD или DVD), а dvd:iso - файл образа.
Иноrд:а ставится другая задача: есть папка, по которой нужно создать 1S0образ. То есть у нас нет диска, но есть файлы, которые нужно записать на
диск, но прежде вы хотите создать его 1S0-образ.
Пусть у нас есть папка -/dvd и нужно создать 1S0-образ, содержащий все
файлы из этой папки. Файл образа будет опять называться -/dvd.iso. Для
этого используйте команду mkisofs:
$ mkisofs -r -jcharset utf8 -о ~/dvd.is� ~/dvd
Чтобы проверить, что образ бьш создан корректно, его нужно подмонтиро­
вать к нашей файловой системе:
/mnt/iso-image
-о loop -t iso9660 dvd.iso /mnt/iso-image
Здесь все просто: опция -о /оор означает, что будет монтироваться обычный
файл, а не файл устройства, опция -t задает тип файловой системы, далее
следуют название файла и название папки, к которой будет выполнено мон­
тирование
•
·---------------------------------------------------------------------------------111
lk, ,. 1 i1111,
13.12. Файлы конфигурации Linux
13.12.1. Содержимое каталога /etc
Думаю, среди читателей этой книги нет таких, которые бы не знали о
реестре Windows. На всякий случай напомню, что в реестре Windows хра­
нятся настройки самой системы и практически всех программ (исключения
составляют лишь устаревшие программы, хранящие свои параметры в ini­
файлах).
Так вот, в Linux есть свое подобие реестра - это каталог /etc. И вы можете
быть уверены, что в /etc находятся все настройки системы и всех программ.
Да, некоторые программы также хранят персональные настройки в домаш­
них каталогах пользователя, но глобальные настройки обычно хранятся в
каталоге /etc.
Преимущество каталога /etc перед реестром - в том, что для его редакти­
рования вам не нужен какой-то особый редактор. В каталоге /etc просто хра­
нится набор текстовых конфигурационных файлов. Вы можете просмотреть
или отредактировать файл с помощью любого текстового редактора. Также
можно легко скопировать файлы/каталоги, например, перед изменением.
Единственный недостаток - вам нужно знать формат каждого файла, но
обычно с этим проблем никаких нет, поскольку файлы снабжены подробны­
ми комментариями, пусть и на английском языке.
13.12.2. Конфигурационные файлы
Чтобы эффективно настраивать систему, нужно ориентироваться в содержи­
мом конфигурационного каталога. Если заглянете в /etc, то, кроме подката­
логов, в нем вы обнаружите и файлы, которые находятся непосредственно в
/etc. Описание этих файлов приведено в таблице 13.5. Содержимое каталога
может отличаться в зависимости от используе;.fого дистрибутива и установ. ленного программного обеспечения.' Но общая картина будет примерно оди­
наковой во всех дистрибутивах.
•
11!1··················································································
1 Ш<,1 11 Фaii.IOll:111 Cllt"H'\Ш
Таблица 13.5. Файлы из каталога /etc
Файл
•
,
Описание
DJR_COLORS
Конфигурация цвета для утилиты ls. Здесь вы
можете указать,каким цветом будут выводиться
каталоги, файлы,ссылки и т.д.
GREP_COLORS
Конфигурация цвета для утилиты grep
adjtime
Содержит параметры для корректировки аппаратных часов
aliases
База данных псевдонимов для почтовых аrент9в
(МТА)
at.deny
Содержит пользователей,которым запрещено использовать планировщик at. Дополнительная информация доступна в тап at
anacrontab
Конфигурация (таблица расписания) планировщика anacron
bash.bashrc
Глобальный файл конфигурации оболочки bash.
Локальные файлы конфигурации находятся в домашнем каталоге каждого пользователя
Ьind.keys
Содержит к лючи для DNS-cepвepa bind9.
Настройку DNS-cepвepa рассмотрим в друтой
главе
Ьindresvport.Ыacklist
Содержит список номеров портов в диапазоне от
600 до 1024,которые не могут быть использованы
blndresvport, который обычно вызывается IRCслужбами. По умолчанию запрещены порты 623,
631,636,664,774,921,993 и 995,которые используются различными сетевыми службами
cron.deny
Список пользователей,которым запрещено использовать cron
··················································································&1
1
.
::с
..,;.
..,,.,.,
.,,,.
crontab
Таблица расписания демона crond
crony*
Конфигурация NTP (сервер времени)
csb.cshrc
Файл конфигурации для оболочки С Shell
csh.login
Глобальный файл конфигурации для С Shell.
Определяет поведение во время регистрации
пользователя (login) в системе. На самом деле
это сценарий, который запрещено редактировать
вручную. Он должен изменяться только во время
обновления системы. Вместо этого лучше редактировать /etc/csh.login.local, если вам нужно
внести изменения в настройки вашего локального
окружения
crypttab
Содержит информацию о зашифрованных томах
defaultdomain
Содержит доменное имя для сервисов NIS и NIS+
dhclient.conf
Файл конфигурации для DНСР-клиента
dhclient6.conf
Файл конфигурации для DНСР-клиента, версия
IPvб
dhcpd.conf
Файл конфигурации для DНСР-сервера
dhcpd6.conf
Файл конфигурации для DНСР-сервера, версия
IPvб
dialogrc
Конфигурационный файл для пакета dialog, определяет цветовую схему диалоговых интерфейсов,
П<?Строенных с помощью пакета dialog
dnsmasq.conf
Конфигурационный файл для dnsmasq (DNSмаскарадинга)
•
.....................................................................................
1 1.11,.1 1; Фан 11111.111 ,·ш· 1 t'\la
dracut.conf
drirc
Содержит параметры dracut - средства, которое
формирует initramfs
Конфигурационный файл для репозитория DRI
cvs
environment
Файл используется РАМ-модулем pam_env. Содержит переменные окружения, описанные в виде
пар КЛЮЧ=ЗНАЧЕНИЕ, по одной паре в одной
строке
esd.conf
Параметры EsounD (Enlightened Sound Daemon),
который используется для смешивания вместе некоторых цифровых аудиопотоков для проиrрыва· ния на одиночном устройстве
ethers
Содержит 48-битные Ethemet-aдpeca и соответствующие им IР�адреса или имена узлов. Может
использоваться некоторыми сетевыми службами
для разрешения МАС-адресов в IР-адреса
exports
Содержит список экспортируемых файловых
систем
fedora-release
Информация о релизе Fedora
filesystems
Информационный файл, содержит некоторые характеристики и атрибуты файловых систем. В нем
нет ничего интересного
fstab
Содержит список файловых систем, которые будут монтироваться автоматически при загрузке
системы
ftpusers
Список пользователей, которые НЕ могут войти в
систему по FTP. Среди них вы найдете пользователя root и многие другие системные учетные записи, которые используются для сетевых сервисов
и обычно обладают повышенными привилегиями
•·------------------------------------------------------------------------------·-----
1 ), '1 1 11111 \
group
Содержит группы пользователей
host.conf
Задает порядок разрешения доменных имен
hostname
Содержит доменное имя узла
hosts
Ранее использовался для разрешения IР-адресов в
доменные имена. Сейчас для этого используется
система DNS, но вы все равно можете определить
в нем некоторые IР-адреса, если ваша сеть не использует DNS или же вам нужно переопределить
разрешение для определенного IР-адреса. Обе ситуации в наше время настолько редки, что похожи
на что-то из области технической фантастики
hosts.*
Файл конфигурации локальной сети
hushlogins
Если сушествует файл file -/.hushlogin или /etc/
hushlogins, осушествляется "тихий" вход (это отключает проверку e-mail и вывод последнего времени входа и сообщения дня (Message ofDay)).
Если сушествует файл /var/log/lastlog, то выводится время последнего входа в систему
idmapd.conf
Конфигурация демона idmapd
idn.conf
Файл конфигурации для idnkit
idnalias.conf
Псевдонимы кодировок для idnkit
inputrc
Позволяет задавать обработку отображения символов в специальных ситуациях. Используется
'
редко
issue
Приглашение, которое выводится при входе в
систему (ссьшка на /usr/liЬ/issue)
•
....................................................................................
1 1,111.1 11 Фа11.нша11 сщ·н·ш1
•
issue.net
Приглашение, которое выводится при сетевом
входе в систему (ссылка на /usr/liЬ/issue.net)
krbS.conf
Параметры Kerberos
ld.so.cache
Хеш-версия файла ld.so.conf. Создается утилитой
ldconfig
ld.so.conf
Настройка динамического связывания во время
выполнения
lesskey
Задает параметры преобразования некоторых символов/клавиш, вы не будете редактировать этот
файл
libao.conf
Конфигурация библиотеки libao ( обычно здесь задается аудиодрайвер по умолчанию)
libaudit.conf
Конфигурация библиотеки libaudit
login.defs
Контрольные определения для пакета shadow.
Например, здесь можно задать количество неудачных попыток входа в систему и многие другие
параметры
logrotate.conf
Задает параметры ротации .журналов
machine-id
Содержит идентификатор машины
mail.rc
Файл конфигурации программы mail
manpath.config
Этот файл используется пакетом man-db для настройки путей тап и cat
mime.types
Содержит список МIМЕ-типов и соответствующих им расширений файлов
mke2fs.conf
Файл конфигурации программы mke2fs
·······························:··················································88
1
!,, ' ' 1 i,111\
motd
Содержит сообщение дня (Мessage ofthe Day). В
зависимости от настроек системы может выводиться при входе в систему
mtools.conf
Данный файл является частью пакета mtools.conf
netconfig
Файл конфигурации сети. Теперь используется
только с кодом ТI-RPC в библиотеке libtirc.
netgroup
Содержит описание конфигурации сетевых групп
networks
Статическая информация о сетевых именах
'
Файл конфиrурации монтирования NFS
nfsmount.conf
nscd.conf
Конфигурационный файл для nscd (Name Service
Cache)
nsswitch.conf
Параметры NSS (Network Service Switch)
ntp.conf
Файл конфигурации сервера времени ntpd
os-release
Содержит информацию о релизе: номер версии,
кодовое имя и т.д. (ссылка на /usrЛiЬ/os-release)
passwd
База данных паролей
permissions
Этот файл используется программой chkstat и
косвенно некоторыми RРМ-скриптами для проверки или установки прав и режимов файлов и
каталогов при установке
printcap
Этот фа� автоматически генерируется cupsd, его
не нужно редактировать.,Все изменения, внесенные в этот файл, будут потеряны
•
....................................................................................
1 1 '"·' 1; Фан 11111ан ,·1н· н·,1а
•
profile
Не изменяйте этот файл во избежание потери
изменений во время очередного обновления системы. Если вам нужно изменить этот файл, отредактируйте /etc/profile.local, чтобы установить
ваши локальные настройки, например, глобальные псевдонимы, переменные VISUAL и EDIТOR
и т.д.
protocols
Список IР-протоколов
python3start
Startup-cцeнapий Python 3 для сохранения истории
интерпретатора и автодополнения имен
pythonstart
То же, что и pythonЗstart, но для старых версий
Python
raw
Определяет параметры привязки rаw-устройств к
блочным устройствам
rc.splash
Сценарий, определяющий внешний вид индикатора начальной загрузки
resolv.conf
Конфигурационный файл для системы разрешения имен
rpc
Список протоколов удаленного вызова процедур
(RPC)
rsyncd.conf
Файл конфигурации для rsyncd
rsyncd.secrets
Пароли rsyncd
screenrc
Параметры программы screen (менеджер экрана с
эмуляцией терминала VTl00/ANSI)
securetty
Содержит имена устройств терминалов (tty), на
которых разрешает вход в систему пользователю
services
Список служб (сервисов)
root
··················································································&I
lk, ,. 1 i1111,
shadow
Пароли из файла /etc/passwd физически хранятся
в /etc/shadow. Поэтому фактически в /etc/passwd
хранится список пользователей, а пароли этих
пользователей находятся в /etc/shadow, доступ к
которому ограничен
shells
Список установленных в системе интерпретаторов
slp.conf
Файл конфигурации OpenSLP SPI
smartd.conf
Файл конфигурации демона smartd
sudoers
Позволяет определить, кому можно использовать
команду sudo
suspend.conf
Некоторые параметры питания
sysctl.conf
Файл конфигурации sysctl. Кроме этого файла,
sysctl также читает параметры из файлов /etc/
sysctl.d/* .conf, /run/sysctl.d/* .conf и некоторых других
ttytype
Содержит список терминалов и определяет их тип
usb_modeswitch
Параметры для пакета usb_modeswitch
vconsole.conf
Конфигурационный файл для виртуальной консоли
virc
Файл конфигурации текстового редактора vi
wgetrc
Параметры программы wget
xattr.conf
Задает, как обработать расширенные атрибуты при
копировании между файлами
•
....................................................................................
1 1,11<.1 1; Ф:111.11111:111 Cll('H'\I.I
13.12.3. Подкаталоги с конфиrурационными файлами
Далее мы "пройдемся" п? подкаталогам каталога /etc с целью выяснить, что
находится в каждом из них (табл. 13.6).
Содержимое вашего каталога /etc может отличаться в зависимости от дис­
трибуrива и уже установленных программ. Вполне вероятно, что у вас не
будет некоторых каталогов, представленных в таблице 13.6, но будуr неко­
торые другие каталоги, юµначение которых можно найти или· в справочной
системе Linux, или в Интернете.
.......
Таблица 13.6. Подкаталоги каталога /etc
[1
•
,
Описание
NetworkМanager
Содержит файл конфигурации Network Manager
и файлы конфигураций сетевых соединений в
некоторых дистрибуrивах
PackageКit
PackageКit - это открытый и свободный набор
приложений для обеспечения высокоуровневого
интерфейса для различных менеджеров пакетов.
Этот каталог содержит файлы конфигурации
PackageКit
Xll
Параметры графического интерфейса Xl 1 (Х
Window)
abrt
Конфигурация abrtd - демона автоматических
отчетов о сбоях
alternatives
Каталог альтернатив по умолчанию. Файл является частью подсистемы update-alternatives,
которая обслуживает символические ссылки,
определяющие команды, файлы и каталоги, используемые по умолчанию
................................................................................. ..
1
IJ,c 1, 1 i1111 \
audit и audisp
В этих каталогах находятся конфигурационные
файлы демона аудита - auditd и его диспетчера
_ событий (audit event dispatcher). Основной конфигурационный файл - /etc/audit/auditd.conf.
В нем задаются поведение демона и некоторые
настройки, например, расположение журнала по
умолчанию /var/log/audit/audit.log
apt
Конфигурация менеджера пакетов apt
bash_comletion.d
Параметры автодополнения командной строки
для оболочки bash
Ьinfmt.d
Демон binfmt.d настраивает дополнительные
двоичные файлы для выполнения во время загрузки. В этом каталоге находятся его конфигурационные файлы
cockpit
Конфигурация панели управления Cockpit
cifs-utils
Пакет cifs-utils содержит средство мшпирования
ресурсов общего доступа SМВ/CIFS в Linux.
В этом каталоге находятся конфигурационные
файлы пакета cifs-utils
crond.d
Содержит файлы, которые загружаются в память одновременно с файлами из каталога /var/
spool/cron. После этого демон cron загружает
содержимое файла /etc/crontab и начинает его
обработку
cron.daily, cron.hourly, cron.mounthly,
cron.weekly
Содержат сценарии, которые будут выполнены
демоном cron, соответственно, ежедневно, еже1 часно, ежемесячно и еженедельно
cups
Содержит параметры конфигурации системы печати CUPS (Common Unix Printing System)
•
'
,
•
В!I············································ .. ·····_-······························
1 1,11'..1 1 ;
•
Ф:111 IOll,111 t'llt' 1 l'\1,1
cupshelpers
В пакете python-cupshelpers содержатся модули
Python, которые помогают создавать приложения
и )'l'ИЛИТЫ с использованием Руthоn-интерфейса
к CUPS. В этом кат�оге находятся параметры
этого пакета
crypto-policies
Конфигурация криптополитик
dbus-1
Содержит файлы конфигурации демона dbusdaemon
default
Содержит некоторые параметры по умолчанию,
например параметры загрузчика GRUВ
depmod.d
depmod - программа для создания файла
modules.dep и mар-файла. В этом каталоге находятся ее файлы конфигурации. Как администратор сервера, вы можете о них просто забыть, они
вам не пригодятся
dhcp
Конфигурация DНСР-сервера
dnf
Конфигурация менеджера пакетов dnf
dracut.conf.d
dracut заменяет mkinitrd для создания загрузочной файловой системы в оперативной памяти
(ramdisk). Здесь находятся конфигурационные
файлы dracut
firewaUd
Конфигурация брандмауэра
fonts
Содержит конфигурационные файлы подсисте�
мы шрифтов. В частности, файл /etc/fonts/fonts.
conf описывает каталоги со шрифтами, каталоги
с кэшем шрифтов, а также описывает аналоги
шрифтов
····································································'·············81
gnupg
Содержит конфигурационный файл GnuPg
grub.d
Содержит файлы, относящиеся к заrрузчику
GRUВ. Вам не нужн·о редактировать эти файлы,
они предназначены для служебных целей
init.d
Содержит сценарии системы инициализации
iproute2
Параметры подсистемы маршрутизации. Например, могут использоваться для IР-балансировки,
то есть объединения нескольких интернет-канаЛОВ В ОДИН
iscsi
Параметры iSCSI
java
Параметры Java
joe
Содержит конфигурационные файлы текстового
редактора joe
jvm, jvm-common
Параметры виртуальной машины Java
Id.so.conf.d
Содержит файлы с расширением conf, которые
используются для поиска разделяемых библиотек
libnl
Конфигурационные файлы библиотеки libnl
Iogrotate.d
Конфигурация средства ротации журналов
mc
Файлы конфигурации файлового менеджера
Midnight Commander
mcelog
Проrрамма mcelog позволяет расшифровать аппаратные ошибки. Настраивается посредством
конфигурационных' файлов в каталоге /etc/
mcelog
•
....................................................................................
modprobe - программа для добавления и уда-
modprobe.d
•
ления модулей из ядра Linux. Соответственно в
одноименном подкаталоге каталога /etc находятся ее конфигурационные файлы
modules-load.d
Содержит параметры некоторых модулей ядра.
По умолчанию в этом каталоге пусто
openldap
Содержит конфигурационные файлы сервера каталогов OpenLDAP
opt
Файлы конфигурации для /opt/
pam.d
Параметры конфигурации модулей аутентификации РАМ (PluggaЬ!e Authentication Modules)
pkcsll
Параметры программы pkcsll, используемой
для управления объектами данных, которые
находятся на зашифрованных устройствах
PKCS#l 1 (Cryptoki)
pki
Содержит список GРG-ключей
plymouth
Plymouth - свободный графический экран загрузки для Linux. Этот каталог содержит его
конфигурационные файлы
pm
Содержит конфигурационные файлы пакета
pm-utils. Пакет pm-utils - это инфраструктура
управления питанием нового поколения
postfix
Конфигурационные файлы почтового агента
Postfix
ррр
Файлы конфигурации протокола РРР
pptp.d
Файлы конфигурации демона pptpd (протокол
РРТР)
·-----------------------------------------------------------------------------------
lkcl, 1 iщп
products.d
Относится к системе миграции между версиями дистрибугива openSUSE. Дополнительная
информация может быть найдена по ссьшке
http://doc.opensuse.org/products/draft/SLES/SLESdeployment_sd_draft/cha.update.s\e.html
pulse
PulseAudio - это звуковой сервер для POSIXсистем. Его основное назначение - смешивать
звуковые потоки от разных приложений, что позволяет нескольким потокам воспроизводиться
одновременно. Здесь находятся конфигурационные файлы PulseAudio
rc.d
Ссылка на каталог init.d
rsyslog.d
Конфигурация демона протоколирования
rsyslogd
rpm
Различные параметры системы управления пакетами RPM. Обычно файлы из этого каталога
не требуют изменения. Дополнительную информацию можно получить по адресу http://wiki.
opennet.ru/RPM
samba
Конфигурационные файлы Samba
sasl2
Параметры SASL (Simple Authentication and
Security Layer)
security
Еще один параметр конфигурации, относящийся
к модулям аутентификации РАМ
selinux
с,одержит файлы конфигурации системы безопасности SELinux
•
-----------------------------------------------------------------------------------·
l 1 11 ,1 1 �
•
fJ)�111 1ова�1 t·1н..· 1 t'\1,1
skel
При создании новой учетной записи пользователя создается его домашний каталог в каталоге /
home, при этом в созданный домашний каталог
пользователя копир)?ОТСЯ файлы из каталога /
skel. Все помещенные в этоr каталог файлы будут скопированы в созданный домашний каталог
ssh
Содержит файлы конфигурации SSН-клиента и
SSH-cepвepa
ssl
Файлы конфигурации OpeiiSSL
sudoers.d
Кроме файла /etc/sudoers, настройки sudo могут
определяться содержимым файлов из каталога
/etc/sudoers.d
sysconfig
Содержит конфигурационные файлы всей системы. В этом каталоге очень много различных
конфигурационных файлов. Например, в каталоге /etc/sysconfig/network вы найдете конфигурационные файлы сетевых интерфейсов. А в
файле clock хранится выбранный при установке
часовой пояс
sysctl.d
sysctl.d настраивает параметры ядра при загрузке, здесь находятся его конфигурационные
параметры
systemd
Конфигурационные файлы демона systemd
udev
Файлы конфигурации и файлы правил менеджера устройств udev
wpa_supplicant
Конфигурационные файлы пакета wpa_
supplicant (обеспечивает поддержку WEP, WPA и
WPA2)
·---------------------------------·------·············-----···-······-·--··----···8!1
xdg
xdg-open - это независимый пользовательский
инструмент для настройки приложений рабочего
стола по умолчанию. В этом каталоге находятся его конфигурационные файлы. Например,
в каталоге /etc/xdg/autostart находятся все программы, которые могут быть запущены автоматически. Однако запускаются лишь те, которым
разрешен запуск в определенной сессии
xinetd.d
Содержит дополнительные файлы конфигурации
суперсервера xinetd (в современных дистрибутивах не используется)
xml
Конфигурационные файлы библиотеки libxml
13.13. Псевдофайловые системы
Псевдофайловые системы sysfs (каталог /sys) и proc
(каталог /proc) используются для настройки системы и
получения различной информации о системе и процессах.
Свое название псевдофайловые системы получили из-за того, что они ра­
ботают на уровне виртуальной файловой системы. В итоге оба эти средства
(назовем их так) для конечных пользователей выглядят как обычная фай­
ловая система - вы можете зайти как в каталог /sys, так и в каталог /proc.
В обоих этих каталогах будут файлы, вы можете просмотреть эти файлы и
даже изменить их содержимое.
Содержимое многих файлов псевдофайловой системы /proc формируется
"на лету". Обратите внимание на размер любого файла в каталоге /proc - он
равен нулю, но если открыть файл, то информация в нем будет. Например, в
файле /proc/version находится: информация о верqии Linux.
•
....................................................................................
Монтирование файловых систем sysfs и proc осуществляется или в сценари­
ях инициализации системы, или через /etc/fstab. В последнем случае записи
монтирования псевдофайловы� систем выглядят так:
sysfs
proc
/sys
/proc
sysfs
proc
defaults
defaults
о о
о о
13.13.1. Псевдофайловая система sysfs
Файловая система sysfs (каталог /sys) предоставляет пользователю инфор­
мацию о ядре Linux, об имеющихся в системе устройствах и драйверах этих
устройств. На рис. 13.4 представлено содержание каталога /sys.
В нем вы найдете следующие подкаталоги:
• Ыосk - содержит каталоги для всех блочных устройств, которые есть в
вашей системе в настоящее время. Здесь под устройством подразумевает­
ся наличие физического устройства и его драйвера. Если вы подключите
внешний жесткий диск, то в каталоге /sys/devices появится новое устрой­
ство, но в каталоге /sys/Ыock оно появится, только если в системе есть
драйвер для работы с этим устройством или же драйвер (модуль) встроен
в само ядро;
• bus - здесь находится список шин, которые поддерживает ваше ядро.
Заглянув в этот каталог, вы обнаружите подкаталоги pci, pci_express, scsi
и т.д. В каждом из этих каталогов будут подкаталоги devices и drivers. В
первом находится информация об устройствах, подключенных к данной
шине, во втором - информация о драйверах устройств;
• class - позволяет понять, как устройства формируются в классы. Для
каждого класса есть отдельный подкаталог в каталоге class;
• devices - содержит дерево устройств ядра, точнее структуру фай­
лов и каталогов, которая полностью соответствует внутреннему дереву
устройств ядра;
• firmware - содержит интерфейсы, предназначенные для просмотра и
манипулирования fiпnwаrе-специфичными объектами и их параметрами;
•
....................................................................................
Нес!, 1 i1111,
• fs - информация о файловых системах, которые поддерживает ваше
ядро;
• kernel - общая информация о ядре;
• module - здесь вы найдете подкаталоги для каждого загруженного мо­
дуля ядра. Имя подкаталога соответствует имени модуля. В каждом из
подкаталогов модулей вы найдете подкаталог parameters, содержащий
специфичные для модуля параметры;
• power - позволяет управлять параметрами питания, а также переводить
систему из одного ,состояния питания в другое. Далее будет показано
несколько примеров.
Ьlotk
lн1s
�lass
dev
devi(es
firrnware
fs
kernel
rnodule
powe1
Рис. 13.4. Содержание катш�ога /sys
Довольно интересен с практической точки зрения каталог /sys/power. В фай­
ле state находится состояние питания. Изменив должным образом содержи­
мое этого файла, можно изменить состояние питания.
Например, вот как можно перевести систему в состояние "Suspend to RАМ",
когда питание процессора отключается, но питание на память подается, бла­
годаря чему ее содержимое не уничтожается:
$ sudo echo -n mem > /sys/power/state
•
•
•
....................................................................................
1 1,1в,1 1 , Фан. ю11а11 ,·11,· 1 t'\la
При желании можно отправить систему в состояние "Suspend to Disk", когда
содержимое памяти будет записано на жесткий диск, после чего питание
будет отключено:
$ sudo echo -n disk > /sys/power/state
13.13.2. Псевдофайловая система proc
Файловая система proc позволяет отправлять информацию ядру, модулям и
процессам. Вы можете не только получать информацию о процессах, но из­
менять параметры ядра и системы "на лету". Эта файловая система интерес­
на тем, что позволяет изменять такие параметры ядра, которые невозможно
изменить друтим способом, к тому же вносимые изменения вступают в силу
сразу же.
Некоторые файлы в /proc доступны только для чтения � вы можете только
просмотреть их. А некоторые вы можете изменять, и эти изменения сразу же
отразятся на работе системы.
Просмотреть файлы из /proc можно любой программой для
просмотра файлов, проще всего в консоли использовать
команду cat.
cat /рrос/<назван�е файла>
Записать информацию в файл можно с помощью команды
echo, как уже было показано выwе.
sudo echo "информация" > /рrос/<название файла>
В каталоге /proc очень много файлов, и рассмотреть все мы не сможем.
Прежде чем мы приступим к самым интересным с моей точки зрения фай­
лам, нужно понять, что означают каталоги с числами. Эти каталоги содержат
информацию о запущенных процессах.
•
··················································································88
1
lkc:1, l,i1111x
Итак, самые полезные информационные файлы:
• /proc/cmdline - содержит параметры, переданные ядру при загрузке;
• /proc/cpuinfo - содержит информацию о процессоре. Откройте этот
файл, думаю, вам будет интересно. Кроме общей информации о процес­
соре вроде модели и частоты, здесь выводится точная частота, размер
кэша и псевдорейтинг производительности, выраженный в BogoMIPS.
Значение BogoMIPS показывает, "сколько миллионов раз в секунду ком­
пьютер может абсолютно ничего не делать". Способ измерения произво­
дительности пусть и не самый удачный, но от него до сих пор не отказа­
лись, а "на дворе" уже 3-я версия ядра;
• /proc/devices - список устройств;
• /proc/filesystems - полный список поддерживаемых вашим ядром файловых систем;
• /proc/interrupts - информация по прерываниям;
• /proc/ioports - информация о портах ввода/вывода;
• /proc/meminfo - полная информация об использовании оперативной па­
мяти. Как по мне, вывод этого файла более понятен и удобен, чем вывод
команды free;
• /proc/mounts - содержит список подмонтированных файловых систем;
• /proc/modules - список загруженных модулей и их параметры;
• /proc/swaps - содержит список активных разделов и файлов подкачки;
:о:)
;.,
""
• /proc/version - здесь находится версия ядра.
С>
Используя /proc, можно не только получить информацию о системе, но и
изменить ее.
Например, в файлах /proc/sys/kernel/hostname и /proc/
sys/kernel/domainname содержится информация об имени
компьютера и домена.
•
Вы можете не только просмотреть, но и изменить содержимое этих файлов,
изменив, соответственно, имя узла и имя домена. Хотя практика изменения
....................................................................................
1 1,111.1 1, Фа11.ю11ш1 t·11t·н·ч:1
доменных имен через /proc/sys практикуется нечасто, никто не мешает вам
это сделать:
sudo echo "server" > /proc/sys/kernel/ho�tname
sudo echo "example.com" ·> /proc/sys/kernel/domainname
Файл /proc/sys/kernel/ctrl-alt-del позволяет регулировать
тип перезагрузки системы при нажатии комбинации клавиш
Ctrl + Alt + Del.
По умолчанию в этом файле содержится значение О, что означает так назы­
ваемую "мягкую перезагрузку" (soft reboot). Если же вы внесете в этот файл
значение 1, то при нажатии Ctrl + Alt + Del эффект будет такой же, как при
нажатии кнопки Reset на корпусе компьютера:
sudo echo "1" > /proc/sys/kernel/ctrl-alt-del
Файл /proc/sys/kernel/printk позволяет задать, какие
сообщения ядра будут выведены на консоль, а какие попадут в журнал демона syslog.
1
По умолчанию в этом файле содержатся значения 4 4 1 7.
Сообщения с приоритетом 4 и ниже (первая четверка) будут выводиться на
консоль. Вторая четверка - это уровень приоритета по умолчанию. Если
для сообщения не задан уровень приоритета, то считается, что его приори­
тет будет равен 4.
Третье значение определяет номер максимального приоритета.
Последнее значение - это уровень приоритета по умолчанию для первого
значения.
В большинстве случаев изменяют только первое значение, позволяющее
определить, будут ли сообщения с указанным уровнем приоритета выво­
диться на консоль или нет. Остальные параметры оставляют без изменения.
•
·········---------------------------------------------------------------------------
"=
:::
с
�
В файле /proc/sys/net/core/netdev_max_backlog
содержится максимальное число пакетов в очереди. Значение
по умолчанию-1000.
Файл /proc/sys/fs/file-max позволяет изменить
максимальное количество заголовков файлов, которое может
быть одновременно открыто.
Другими словами, этот файл задает, сколько одновременно может быть
открыто файлов. Значение по умолчанию для ядра 3 .16 и файловой системы
btrfs - 73054.
Чтобы сохранить внесенные "на лету" изменения, и чтобы их не пришлось
снова вводить при следующей перезагрузке сервера, нужно отредактировать.
файл /etc/sysctl.conf.
Представим, что вы изменил» значение из файла /proc/sys/fs/file-max. Тогда
в файл /etc/sysctl.conf нужно добавить строку:
fs. file-max
16 384
Принцип прост: /proc/sys/ отбрасывается совсем, а в оставшейся строке все
слеши заменяются точками. Само же значение указывается через знак ра­
венства. Если нужно указать несколько значений, то они указываются через
пробел.
О файловой системе в Linux можно написать отдельную книгу, которая бу­
дет не меньше чем та, которую вы держите в руках. Поэтому в этой главе мы
рассмотрели только самое необходимое.
............
•
, ...................................................................... .
Глава 14.
УПРАВЛЕНИЕ
ХРАНИЛИЩЕМ
л •
J!-c 1, 1 illll\
В этой главе мы рассмотрим довольно важные вещи - подключение ново­
го жесткого диска и его разметку в классическом варианте - без всяких
менеджеров томов, затем мы рассмотрим LVМ и то, как можно расширить
пространство группы томов, например, когда вы увеличили дисковое про­
странство виртуального сервера.
14.1. Подключение нового жесткого диска и его
разметка
Классической программой для разметки жесткоrо диска
в Linux и других операционных системах является программа
fdlsk.
Конечно, в той же Windows программа fdisk совсем другая, но названия
программ совпадают.
Рассмотрим пример использования этой программы. Представим, что мы
подключили новый жесткий,диск и нам нужно "ввести" его в эксплуатацию.
Тренироваться лучше всего в виртуальной мaJIIИHe, особенно если вы в пер­
вый раз осуществляете разметку диска.
•
llt··················································································
1 1,11\,1 1-J � 11(1:111.lt'llllt' \(1:11111.IIIIЩ'\I
Формат вызова fd.isk такой:
t fdisk <устройство>
Да, команду fdisk нужно запускать с правами root. Далее мы будем считать,
что новым является устройство /dev/sdb:
t fdisk /dev/sc!Ь
Посмотрите на рис. 14.1. Я запустил программу fdisk для нового и неразме­
ченного жесткого диска.
Программа сообщила мне, что:
1. Все изменения хранятся только в памяти и не переносятся на жесткий
диск до тех пор, пока вы их не запишете.
2. Устройство не содержало таблицы разделов, и была создана таблица раз­
делов DOS (по умолчанию).
Рис. 14.1. Зanycкfdisk для нового жесткого диска
Первым делом ознакомимся со списком команд fdisk. Введите команду m
для получения справки. Список команд в последних версиях fdisk разбит
на группы (рис. 14.2).
•
В таблице 14.1 приведен список команд fdisk .
························································-···-·····················88
�
v
lkёl, Lillll\
=
.... :
-6" :
Рис. 14.2. Список команд fdisk
Таблица 14.1. Команды программы fdisk
_::с:
-5" '
Команда
Описание
а
Сделать раздел активным. Данный флаг бьш нужен для старых версий Windows, которые не могли загружаться с неактивных разделов. Сейчас эта команда попросту не нужна, а в
мире Linux - тем более
ь
Р_едактировать вложенную ВSD-метку
с
Применить флаг совместимости с DOS
d
Удалить раздел
l
Вывести известные типы разделов
Добавить новый раздел
•
....................................................................................
1 l,llbl 1-1. �11рав.1с1111с xp:11111.IIIIШ'\I
р
Вывод таблицы разделов
t
Изменить тип р;:�здела
V
Проверить таблицу разделов
т
Вывод справки
и
Изменить единицы измерения
х
Дополнительная функциональность (только для экспертов)
w
Записать таблицу разделов на диск и выйти
q
Выход без сохранения изменений
g
Создать новую пустую таблицу разделов GPT
G
Создать новую пустую таблицу разделов SGI (для ОС IRIX)
о
Создать новую пустую таблицу разделов DOS
s
Создать новую пустую таблицу разделов Sun
Наша задача - создать раздел (или несколько разделов, здесь решать вам) и
подмонтировать его (их) к корневой файловой системе.
Первым делом выведем таблицу разделов командой р (рис. 14.3). Как видно
из рис. 14.3, таблица разделов пуста, а размер нашего жесткого диска всего
60Гб.
isk /dev/sdb: 60 GiB, 64424509440 Ьytes, 1ZSBZ91Z0 sectoгs
Рис. 14.3. Пустая таблица разделов
··················································································&1
lkct, 1,iща
Наш диск довольно скромного размера, поэтому программа создала таблицу
разделов DOS. Для больших жестких дисков лучше создать таблицу разде­
лов GPT. Если программа неправильно выбрала тип таблицы разделов или
вы хотите изменить его принудительно, введите команду g. Посмотрите на
рис. 14.4: я изменил тип таблицы разделов, а затем опять отобразил таблицу
разделов. Она по-прежнему пуста, но обратите внимание на ее тип - теперь
у нас таблица разделов GPT.
ПРИМЕЧАНИЕ. Таблица разделов GPT (GUID Partition ТаЫе)
является частью стандарта EFI (ExtensiЫe Firmware lnterface)
- стандарта, который был предложен компанией lntel на смену
стандарта BIOS. Таблица GPT использует современную систему
адресации логических блоков (LBA). а не старую систему CHS
(цилиндр-головка-сектор). Но самое главное - это размер раз­
дела. В GPT можно создать раздел размером до 9.4 Збайт (9.4
х 1021 байт), а в MBR - максимальный размер раздела всего 2.2
Тб (2.2 х 1021 байт).
Рис. 14.4. Имtенение таблицы разделов
.,'"'
"С
"С
Настало время создать раздел. Введите команду п. Программа попросит вас
ввести (рис. 14.5):
• Номер раздела - это 'первый раздел, поэтому введите 1. В принципе,
когда вы будете создавать второй раздел,'программа автоматически пред­
ложит вам ввести номер 2.
•
....................................................................................
1 1,11<,1 1--1 )IIJ):111.lt'llllt' \J):11111.11111l�\I
• Первый сектор раздела. Просто нажмите Enter - программа автомати­
чески предложит правильный вариант.
• Последний сектор раздела. Если вы хотите создать раздел на весь
жесткий диск (то есть использовать все д�ступное пространство), тог­
да просто нажмите Enter. В противном случае укажите размер раздела.
Проще всего это сделать, используя модификаторы +М и +G, например,
для создания раздела размером 30 Гб укажите +ЗОG. Если у вас очень
большой жесткий диск, где пространство измеряется терабайтами, ис­
пользуйте модификатор Т, например + 1 Т.
Рис. 14.5. Создание нового раздела
Программа сообщит вам, что один раздел создан. Также будет сообщен раз­
мер раздела. По умолчанию тип раздела - файловая система Linux (Linux
filesystem). Если вы хотите изменить тип раздела, введите команду:
t <номер раздела>
Например:
t 1
Далее нужно или ввести код типа раздела, или ввести команду L для вывода
подсказки (рис. 14.6). Проблема вся в том, что нет способа постраничного
просмотра типов разделов, а все они не помещаются на одном экране. Поэ­
тому все равно придется обращаться к документации. Однако в большинстве
случаев изменять тип раздела не нужно, поскольку при создании раздела он
создается уже нужного типа. Исключение может возникнуть разве что для
раздела подкачки (Linux swap). Его код - 82.
•
··················································································18
1
Вс·,1, l.inu,
,..."
,.
=
1
Рис. 14.6. Подсказка по типу раздела
Если вы передумали менять тип раздела, просто нажмите Enter. Теперь
введите р для просмотра нашей таблицы разделов. Всегда просматривайте
таблицу перед ее записью. После этого введите команду w для сохранения
изменений и выхода из программы (рис. 14.7).
.;­
Е
�
�
Рис. 14. 7. Весь сеанс разметки диска: от создания таблицы разделов до записи
изме11е11ий
•
&!1---------------------------------------------------------------------------------·
1 1,11<,1 , _. � ,,paB.ll'lllll' ,paнll.lllllll'\I
Создать раздел мало. Нужно еще создать файловую систему. Не будем ни­
чего выдумывать и создадим стаkдартную файловую систему ext4 командой
mkfs.ext4:
# mkfs.ext4 /dev/sdЫ
Результат выполнения этой команды приведен на рис. 14.8.
Рис. 14.8. Создание файловой системы и монтирование жесткого диска
После этого нужно создать точку монтирования для нового раздела и под­
монтировать раздел (название точки монтирования. можете изменить по сво­
ему усмотрению):
# mkdir /mnt/sdЫ
# mount /dev/sdЫ /mnt/sdЫ
# 1s /mnt/sdЫ
Почти все готово. Осталось только добавить запись в /etc/fstab для автомати­
ческого монтирования созданного раздела:
/dev/sdЫ /mnt/sdЫ ext4 defaults
1 1
Вот теперь можно приступать к использованию нового жесткого диска.
············-···························-··········································&1
lkc1, 1 i1111,
14.2. Менеджер логических томов
14.2.1. Введение в LVM
Впервые менеджер логических томов (LVM, Logical Volume Manager)
появился в ядре 2.4 (его первая версия LVM !), но более активно он стал
применяться только в дистрибутивах с ядром 2.6 (уже вторая версия LVM 2).
Некоторые современные дистрибутивы используют LVМ по умолчанию,
создают пулы LVМ, в некоторых же LVМ даже не установлен по умолчанию.
Чтобы понять, нужен ли вам LVМ, нужно разобраться, что это такое. В этой
главе все будет изложено максимально доступно, так что бояться .использо­
вать LVМ не стоит. В то же время, если вам необходимы точные академиче­
ские определения и дополнительная информация, обратитесь к Linux LVМ
Howto (http://tldp.org/HOWТOILVM-HOWТOI), в котором много технических
подробностей (если они вам нужны) и не совсем все сразу понятно.
LVM - это дополнительный уровень абстракции над
аппаратными средствами, позволяющий собрать вместе
несколько дисков в один логический диск, а затем разбить его
так, как вам хочется.
Примеров использования LVМ множество.
"'
_,"
Самый простой из них - объединение нескольких небольших дисков в один
диск большего размера. Например, вам досталось даром (или почти даром)
несколько SSD-дисков небольшого размера, скажем, по 128 Гб, и вы хотите
объединить эти 2-3 диска, чтобы получить один большой диск 256-384 Гб.
Второй пример тоже часто распространен. Представим, что система у вас
установлена на небольшом диске, пусть даже на том же SSD-диске размером
80 Гб. Для Linux такой объем вполне достаточен, но рано или поздно сво­
бодное место закончится (все зависит от файлов, с которыми вы работаете).
Вы покупаете диск большего размера, скажем, на 500 Гб или даже на 1 Тб.
Но система уже установлена, и переустанавливать ее не хочется. Что делать?
Здесь вам поможет LVM.
[ 1 11, 1 [) � IIJ ):IB.ll'lllll' \J):11111.lllllll'\I
Первый приведенный мною пример (объединение трех дисков во время
установки) слишком тривиален, и с ним справится любой, даже самый на­
чинающий пользователь - просто во время установки нужно выбрать LVM
(если, конечно, дистрибутив его поддерживает) и выбрать диски, которые вы
объединяете в группу (пул).
Второй пример более сложный только_ за счет того, что система уже уста­
новлена, и мы договорились, что переустанавливать ее не будем. Поэтому он
и заслуживает рассмотрения в этой главе, а дополнительную информацию
вы сможете найти в Linux LVМ Howto, ссылка на который бьша приведена
ранее.
14.2.2. Уровни абстракции LVM
Прежде чем перейти к рассмотрению практической стороны вопроса, нужно
разобраться с тремя уровнями абстракции, с которыми вам придется стол­
кнуться в LVМ. Вот эти уровни:
1. PV (Physical Volume)- физические тома. Это могут быть разделы или
целые, еще не размеченные диски.
2. VG (Volume Group)- группа томов. Физические тома объединяются в
группу, и создается единый диск, который вы можете разбить так, как вам
хочется.
3. LV (Logical Volume) - логический раздел. Это раздел нашего единого
диска (VG), который вы можете отформатировать в любую файловую
систему и использовать так, как вам хочется, как обычный раздел обыч­
ного жесткого диска.
Прежде чем мы продолжим, вы должны знать об одном недостатке LVМ.
Тома LVМ не поддерживаются загрузчиком GRUВ. Поэтому, если вы ис­
пользуете этот устаревший загрузчик, вам нужно создать отдельный раздел
/Ьооt за пределами LVМ. Грубо говоря, если у вас есть диск /dev/sda, раздел
/dev/sdal должен монтироваться к /Ьооt. В него будет установлен загрузчик.
Размер этого раздела должен быть небольшой, примерно 100 Мб (вполне
будет достаточно).
•
Что же касается GRUВ2, то он нормально загружается с LVМ, и никакой до­
полнительный раздел создавать не нужно.
··················································································IJD
IJcc1, 1 i1111,
14.2.3. Немного практики
Первым делом вам нужно установить пакет lvm2, если он еще не установлен.
# apt-get install lvm2
# yum install lvm2
Команда установки этого пакета для Fedora/CentOS приведена на всякий
случай, так как в бол,ьшинстве случаев этот пакет в этих дистрибутивах
установлен по умолчанию.
Будем считать, что система сейчас установлена на /dev/sdal, который под­
монтирован как/. Больше никаких разделов на этом диске не создано - для
упрощения примера. Мы подключили второй жесткий диск, которьiй пока
еще не разбит. Имя этого диска -/dev/sdb.
Если на втором дис1<е не созданы разделы, то создавать их и не нужно. в·ы
можете сдеl}ать все устройство сразу физическим томом (PV). Если на нем
есть разделы - не беда, вы можете добавить в группу томов все разделы
поочередно.
Тратить время на создание разделов не хочется, тем более что это и не нуж­
но, поэтому создаем PV на все устройство/dev/sdb. Для· этого используется
команда pvcreate:
# pvcreate /dev/sdЬ
Physical volume "/dev/sdЬ" successfully created
Теперь нужно создать группу томов с помощью команды
vgcreate.
.,"
,::
,::
�
О
:
Данной команде нужно передать имя группы (пусть это будет ту_vg) и ука­
зать физическое устройство:
# vgcreate my_vg /dev/sdb
Volume group "vgO" successfully created
•
811---------------------------------------------------------------------------------·
! 1,111,1 1-J
\11paB.lt'llllt' '!).lllll.llllllt'\I
Создаем отдельные логические тома (команда lvcreate) для раздела подкач­
ки (swap) и разделов /home, /tmp и /var. Параметр -L задает размер раздела,
например, -LЗOG задает размер 30 Гб. Параметр -п задает имя логического
тома:
#
#
#
#
lvcreate -n swap -L8G my_vg
lvcreate -n home -L500G my_vg
lvcreate -n var �LЗOG my_vg
lvcreate -n tmp -LSG my_vg
Последниц параметр - это имя нашей группы. При желании можно создать
отдельный раздел и для /usr, но, как правило, программное обеспечение (а
оно в основном устанавливается в /usr) в Linux много места не занимает. В
общем, смотрите сами - никто не мешает ввести еще одну команду lvcreate.
Тем более что у нас еще осталось место (если учитывать, что у нас жесткий
диск на 1 ТБ).
Теперь разберемся, что и где мы создали.
Просмотреть информацию по физическим томам, группам
томов и логическим разделам можно с помощью команд
pvdisp/ay, vgdisplay и lvdisplay соответственно.
Созданные нами разделы будут храниться в папке /dev/my_vg/. В этом ката­
логе вы найдете файлы home, tmp, var (правда, это будут ссылки, а не файлы,
но суть от этого не меняется).
Когда созданы логические тома, можно создать на них файловые системы
(отформатировать их). Вы можете использовать любую файловую си.стему,
я предпочитаю ext4:
# mkfs.ext4 -L var /dev/my_vg/var
# mkfs.ext4 -L home /dev/my_vg/home
# mkfs.ext4 -L tmp /dev/my_vgftmp
# mkswap -L swap /dev/my_vg/swap
# swapon /dev/my..:_vg/swap
•
·············--···----····························································88
Первые три команды создают файловую систему ext4 на устройствах /dev/
my_vg/var, /dev/my_vg/home и /dev/my_vg/tmp. Последние две создают раз­
дел подкачки и активируюг его.
Настало время заняться перемещением данных. Суп, в следующем: нужно
подмонтировать поочередно новые тома и скопировать в них содержимое
/home и /var:
Jt mkdir /mnt/home
# mkdir /mnt/var
·Jt mount /dev/my_vg/home /mnt/home
Jt mount /dev/my_vg/var /mnt/var
.
,
Jt ер -а /home/* /innt/home
t ер -а /var/* jl!l!}t/var
Jt umount /mnt/home
Jt ,u�ount /mnt/var
В папку /tmp копировать ничего не нужно. Нужно только изменить права
доступа:
,
Jt mkdir /mnt/tmp •
t mount /dev/my_�g/tmp /mnt/tmpf. chmod -R a�rwx /mnt/tmp
t umount /tmp
Почти все. Теперь нужно добавить в /etc/fstab записи, монтирующие файло­
вые системы -/home, /var, /tmp, и указать в нем раздел подкачки:
"',,
/dev/mapper/my_vg-home
/dev/mapper/my_var
/dev/m�pper/my_vg-tmp
/dev/mapper/my_vg-swap
/home
/var
/tmp
none
ext4 relatime
ext4 relatime
ext4 noatime
swap SW
1 1
1 1
о 2
о о
•
Все готово. Осталось только ввести команду reboot, чтобы система переза­
грузилась. Корневая файловая система осталась на старом жестком диске
....................................................................................
J 1,11\,1 1-t � IIJ"lll. lt'llllt' \j)allll. llllЩ'\I
(как и /usr), а каталоги, которые занимают больше всего места, были пере­
мещены на логические разделы LVM.
14.3. Расширение LVМ-пространства
Предположим, что вы расширили дисковое пространство виртуального
сервера. Однако одного расширения в панели управления недостаточно
- чтобы система увидела изменения, нужно произвести определенные
действия. В принципе, задачу расширения пространства сервера можно
было решить иначе, например, добавить еще один виртуальный жесткий
диск, а дальше или использовать классический способ (раздел 14.1 ), или
же добавить диск в группу томов (раздел 14.2) - все зависит от того, как
настроена операционная система виртуального сервера: Но случилось то,
что случилось - вы уже расширили жесткцй диск, а вернуть ресурсы
в пул, как правило, нельзя. Поэтому рассмотрим процедуру расширения
виртуального диска.
Первым делом посмотрим, сколько сейчас дискового пространства доступ­
но. Для этого используется уже известная команда dfс параметром -h, чтобы
вывод был в удобочитаемом формате:
df -h
Рис. 14. 9. Команда df-h
На данный момент общий размер группы томов /dev/mapper/vgroupl-root
составляет 19 Гб. Однако мы расширили диск, и теперь нам нужно расши­
рить размер этой группы томов до полнога размера диска .
•
··················································································ll!il
1
lk, 1, 1 i111t\
Чтобы система увидела новый объем жесткого диска, нужно пересканиро­
вать аппаратную конфигурацию. Для этого мы будем использовать следую­
щую команду:
echo 1 > /sys/Ыock/sda/devic�/rescan
Запустите утилиту parted (используется для работы с разделами диска):
parted
Введите команду р для просмотра имеющихся разделов (рис. 14.10). Запом­
ните номер раздела, который мы будем расширять (2), и новый размер диска
(42.9GB).
::::
, Рис. 14.10. Текущая таблица разделов
];;;
"С
Запустим команду изменения раздела:
resizepart
:::1
"С
=
"==
=
Укажем номер раздела:
Partition numЬer? 2
.................................. : ............................................-...
,
J 1,11<,I 1-J �IIJl:lll.ll'lllll'\jl:11111.lllllll'\I
А затем - конец раздела. Нужно указать как раз то самое значение 42.9GB
- именно, так, без пробелов.
Рис. 14.11. Изменение размера раздела
Введите команду quit для выхода из parted. Parted сделал свою работу. Оста­
лось сообщить ядру об изменениях размера:
pvresize /dev/sda2
Physical volume "/dev/sda2" changed
1 ·physical volume(s) resized / О physical volume(s) not resized
Расширим логический том:
lvextend -r -1 +100%FREE /dev/mapper/vgroupl-root
По окончании работ введем df-h, чтобы убедиться, что дисковое простран­
ство расширилось .
Посмотрите на рис. 14.12. На нем результат выполнения команд pvresize,
lvextend и df Последний вывод сообщает нам, что размер группы томов
•
··················································································-11!8
vgrovp 1-root теперь составляет 41 Гб. Мы успешно расширили том до ново­
го размера.
Рис. 14.12. Том расширен
•
lll!I··················································································
Глава 15.
УПРАВЛЕНИЕ ЗАГРУЗКОИ
ос
л •
lkcl, l,i1111,
15.1. Загрузчцки Linux
Существует несколько загрузчиков Linux.
На сегодняшний день основным загрузчиком является
GRUB2, который устанавливается по умолчанию во всех
современных дистрибутивах Linux.
Одним из самых "древних" загрузчиков является LILO (Llnux LOader). Этот
загрузчик давно уже не используется, и ему на смену пришел загрузчик
GRUВ (GRand Unified Bootloader). GRUВ является более гибким загрузчи­
ком и "понимает" много разных файловых систем, в том числе FAT/FAT32,
ext2, ехtЗ, ReiserFS, XFS, BSDFS.
На смену GRUВ пришел загрузчик GRUВ2. Его отличия - очень запутан­
ный и неудобный файл конфигурации, но время не стоит на месте, и если вы
хотите использовать последние новинки в мире файловых систем Linux, а
именно файловую систему ext4 и загрузку с LVM, вы должны использовать
GRUВ2. Также GRUВ2 поддерживает UEFI, но это пригодится вам, только
если вы счастливый обладатель жесткого диска объема 2 Тб или больше.
Собственно, GRUВ2 сейчас устанавливается во всех современных дистрибу­
тивах, и нет смысла возвращаться на GRUВ. Если возникнет необходимость,
вы можете вернуться на обычный GRUВ, установив пакет grub-legacy, но
такая возможность есть только для платформы х86.
•
1111···································-···-····-··--·························-···-···
1 1.111.1 1.; � 11ра11 lt'IIIIL' 1а1 р� 11,011 О(
15.2. Загрузчик GRUB2
15�2.1. Конфнгурацноннь1е файлы
В каталоге /etc/grub.d хранятся шаблоны, определяющие
настройки GRUB2.
Также некоторые его параметры хранятся в файле /etc/default/grub. По
шаблонам из /etc/grub.d и файлу /etc/default/grub программой /usr/sbin/grub­
mkconfig создается рабочий конфигурационный файл /Ьoot/gruЬ/grub.cfg,
который по задумке разработчиков GRUВ2 вы не должны редактировать
вручную.
Поэтому есть две стратегии настройки GRUB2.
Первая заключается в непосредственном редактировании файла /Ьoot/gruЫ
grub.cfg. Загрузчику GRUВ2 все равно, кто или что отредактирует этот файл
- вы или программа grub-mkconfig.
Вторая заключается в редактировании файлов из каталога /etc/grub.d и
файла /etc/default/grub. После чего вы будете должны ввести кoмaндy·grub­
mkconfig для создания файла /Ьoot/gruЬ/grub.cfg по заданным вами настрой­
кам.
Чтобы решить, какая из стратегий для вас лучше, нужно знат:ь формат и со­
держимое всех этих файлов. Начнем с основного файла конфигурации, ко­
торый сложнее и длиннее файла конфигурации обычного GRUВ (см. лист.
15.1).
ЛИСТИНГ 15.1. Файл конфигурации /bootlgruЬ/grub.cfg
•
t Не редактируйте этот файл вручную!
•
# Он автоматически генерируется программой grub-mkconfig по шаблонам
t иэ /etc/grub.d и настройкам иэ /etc/default/grub
•
•
·------·--··-----·---·--·--------------·-------------------------------------------1111
"'с.
lkc ,, l ,i1111,
### НАЧАЛО файла /etc/grub.d/00 header ###
if [ -s $prefix/grubenv ]; then load env
fi
# Загрузочная метка по умолчанию
set default="O"
if [ "$(prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ) ; then
saved_entry="${chosen}"
save_env saved_entry
fi
:::i
?
;:
�
�
=
function load_video
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
insmo9 part_msdos
insmod ext2
# Корневое устройство
set root=' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
if loadfont /usr/share/gruЬ/unicode.pf2 ; then
set gfxmode=640x480
load video
insmod gfxterm
insmod part_msdos
insmod ext2
set.root= ' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
set locale_dir=($root)/boot/gruЬ/locale
set lang=ru_RU
insmod gettext
fi
terminal_output gfxterm
set timeout= S
### КОНЕЦ файла /etc/grub.d/OO_header ###
•
lllt··················································································
! 1,11\,1 1-;
� IIJ),111,lt'llllt' ШI J)� 11,011 ()(
***
ttt НАЧАЛО файла /etc/grub.d/OS_debian_theme
insmod part_msdos
insmod ext2
t Корневое устройство
set root=' (hdO,msdosl)'
search --no-floppy --fs-uuid·--set=root b7300e54-fff5-4f31-8002bea43c64f344
insmod png
if background image /usr/share/images/desktop-base/joy-grub.png; then
set color_n;rmal=white/Ьlack
set color_highlight=Ыack/white
else
set menu color normal=cyan/Ыue
set menu=color=highlight=white/Ыue
fi
ttt КОНЕЦ файла /etc/grub.d/OS_debian_theme t#i
t#t НАЧАЛО файла /etc/grub.d/lO_linux i#i
t Содержит главную загрузочную метку. Далее мы ее рассмотрим подробнее
menuentry 'Debian GNU/Linux, Linux 4.2.0-4-amd64' --class debian --class
gnu-linux --class gnu --class os {
. load_video
insmod gzio
insmod part_msdo-s
insmod ext2
set root=' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
echo 'Загружается 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 'Загружается начальный ramdisk ... •
initrd /boot/initrd.img-4.2.0-4-amd64
menuentry 'Debian GNU/Linux, Linux 4.2.0-4-amd64 (recovery mode)'
--class debian --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod.part_msdos
insmod ext2
set root=' (hdO,msdosl) •
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
echo 'Загружается Linux 4.2.0-4-amd64
linux /boot/vmlinuz-4.2.0-4-amd64 root=UUID=b7300e54-fff5-4f31-8002bea43c64f344 ro single initrd=/install/gtk/initrd.gz
echo 'Загружается начальный ramdisk ... •
initrd /boot/initrd.img-4.2.0-4-amd64
•
·---------------------------------------------------------------------------------1111
1
Н# КОНЕЦ /etc/grub.d/l0_linux Н#
i/H МЧАЛО /etc/grub.d/20_linux_xen JIH
#tt КОНЕЦ /etc/grub.d/20_1inux_xen f#JI
ttt НАЧАЛО /etc/grub.d/20_memtest86+ ·ttt
t Метка для memtest86 - nрограммы для nроверки nамяти
menuentry "Memory test (memtest86+}" {
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fif5-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-fif5-4f31-8002bea43c64f344
linuxlб /boot/memtest86+.Ьin 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-fif5-4f31-8002-
Ьea43c64f344
multiboot
/boot/memtest86+_multiboot.Ьin
menuentry "Memory test {memtest:86+, serial,console 115200, experimental
multiboot)" {
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
1
search --no-floppy --fs�uuid --set=root b7300e54-fif5-4f31-8002bea43c64f344
multiboot /boot/memtest86+_multibo�t.Ьin console=ttyS0,11520
· 0n8
1
j/j/j/ КОНЕЦ /etc/grub.d/20_memtest�6+ ###
t Далее· этот файл я немноГо сократил, поскоhьку дальше в нем нет ничего
'интересного.
Файл огромный, и его синтаксис напоминает синтаксис Ьаsh-сценариев.
Если вы просмотрели этот конфигурационный файл, то уже догададись, что
делает программа grub-mkconfig: она собирает воедино вее файлы из ката-
118--------------------------------------------------------------------------------'
1 1,1н,1 1 � � нр:ш. шшr ia1 р� 11.oii ОС
лога /etc/grub.d (кстати, в листинге 15.1 перечислена большая часть из этих
файлов) и вносит в общий конфигурационный файл из /etc/default/grub.
Основная запись из всего листинга 15.1 - это запись menuentry. Именно в
таких записях описываются элементы меню загрузчика GRUВ.
menuentry 'Debian GNU/Linux, Linux 4.2.0-4-amd64' --class debian
--class gnu-linux --class gnu --class os {
load video
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-4f318002-bea43c64f344 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, а модули GRUВ2, которые находятся в ка­
талоге /Ьoot/grub.
Внутри {} можно использовать команду echo для обозначения различных
этапов загрузки, что и сделано в нашем примере. Можете отказаться от echo,
на загрузку это никак не повлияет.
•
Основные команды - это linux и initrd.
....................................................................................
с.
,.,"'
с.
lkc1, l.i111a
Команда linux указывает путь к ядру Linux и задает параметры
ядра.
В нашем случае параметр ядра root указывает устройство, на котором нахо­
дится ·корневая файловая система. Устройство указано в виде UUШ. UUID­
имeнa очень удобны. Представим, что у вас есть один жесткий диск SATA и
два контроллера.
Если вы подключите его ко второму контроллеру, обычное имя изменится
(например, было /dev/sda, а стало /dev/sdb), а UUID-имя - нет. При жела­
нии, вы можете указать имя в старом формате, например, root=/dev/sdal.
Параметр ядра root задает монтирование корневой файловой системы в ре­
жиме "только чтение" (это нормально, позже она будет перемонтирована),
initrd - задает файл RamDisk, а последний параметр ядра quiet задает
"тихую" загрузку ядра , при которой будут выводиться только самые важные
сообщения.
Команда initrd задает путь к файлу initrd.
Теперь рассмотрим файл /etc/default/grub (листинг 15.2).
[1 ЛИСТИНГ 15:2. Файл letcldefault/grub
# После ред-актирования этого файла запустите команду 'update-gruЬ' дпя
# обновления файла /boot/gruЬ/grub. cfg•.
# Для получения полной информации об этом файле введите команду
#
info -f grub -n 'Simple configuration'
# Загрузочный элемент (menuentry по умолчанию)
GRUB DEFAULT=0
# Тайм-аут
GRUB TIМEOUT=S
# Задает название дистрибутива, не изменяйте эту строку
GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null 11 echo Debian·
# Параметры ядра Linux по.умолчанию
GRUB_CМDLINE_LINUX_DEFAULT=\'quiet"
# Еще одна строка дпя задания параметров ядра
GRЧB_CMDLINE_LINUX="initrd=/install/gtk/ini�rd.gz"
11
•
1118··················································································
1 1ан,1 l 'i У11р:ш.1с1111с 1311)) iкoii ОС
# Раскомментируйте эту строку, если вы хотите отключить графический режим
tGRUB_TERМINAL=console
# Разрешение,в графическом режиме
# Вы можете использовать только те режимы, котррые ваша видеокарта
# поддерживает через VBE. Просмотреть список
# таких режимов можно с помощью команды 'vbeinfo 1
#GRUВ_GFXМODE=640x480
# Раскомментируйте эту строку, если вы не хотите
# использовать UUID-имeнa устройств
#GRUB_DISAВLE_LINUX_UUID=true
# Раскомментируйте, если хотите запретить генерирование меток
восстановления
#GRUВ-DISAВLE-RECOVERY="true"
# Раскомментируйте, если хотите получить гудок при загрузке GRUB
#GRUВ_INIT_TUNE="480 440 1"
Как видите, параметры из файла /etc/default/grub понятны и не нуждаются в
особых комментариях.
Но в нем мы узнали о еще одной команде - update-grub. Так какую из них
использовать - update-grub или grub-mkcon.fig?
На самом деле это почти одна и та же команда. Дело в том, что команда grub­
mkcon.fig по умолчанию выводит конфигурацию GRUВ2 на экран, поэтому,
чтобы она записалась из файла /Ьoot/gruЬ/grub.cfg, запускать ее нужно так:
sudo grub-mkconfig > /boot/gruЬ/grub.cfg
Или же вы можете ввести команду update-grub, которая сделает то же самое.
Другими словами, команда update-grub - это сценарий, который вызыва­
ет только что приведенную команду. Как по мне, то использовать команду
update-grub удобнее.
Так какую стратегию GRUB2 использовать? Редактировать шаблоны и пара­
метры или сразу конфигурационный файл? Если вы работаете за компьюте­
ром в гордом одиночестве и нет и не предвидится других администраторов,
тогда можете выбрать ту стратегию, которая вам больше нравится.
Если же есть или планируются другие администраторы, то нужно редакти­
ровать шаблоны и параметры вместо редактирования конфигурационного
•
,
................................................................................. ..
::
с::
1-kt:I, (.iщн
файла вручную. Дело в том, что если вы внесете изменения непосредствен­
но в конфигурационный файл, а пот�м другой администратор захочет из­
менить какой-то незначительный параметр, например, добавить гудок при
загрузке GRUB2, то команда update-grub перезапишет все сделанные вами
изменения.
15.2.2. Выбор метки по умолчанию
Как правило, даже если у вас установлена одна только Linux, у вас будет не­
сколько загрузочных меток (несколько записей menuentry). Выбрать метку
по умолчанию можно с помощью параметра GRUВ_DEFAULТ. Нумерация
меток начинается с О, то есть первой метке соответствует значение О.
После того как вы установите другой номер метки по умолчанию, нужно
ввести команду update-grub и перезагрузить систему.
Другими словами, последовательность такая: редактируем файл /etc/default/
grub, изменяем значение параметра GRUВ_DEFAULT и вводим команду
update-grub.
15.2.3. Загрузка Windows
Упор в этой книге делается на самое различное применение Linux, однако
вдруг вы захотите установить Linux на домашний компьютер, скорее всего,
ей придется "сожительствовать" с Windows.
.:::::
Чтобы добавить возможность загрузки Windows из GRUВ2, нужно отредактировать файл /etc/grub.d/40_custom и добавить в него следующие строки:
menuentry "Windows (on /dev/sdal)"
insmod part_msdos
insmod ntfs
set root=' (hd0,msdosl)'
search --no-Ooppy --fs-uuid --set UUID
drivemap -s (hd0) ${root)
chainloader +1
•
Здесь Windows находится на /dev/sdal, и адрес этого раздела указывается в
set root. Значение UUID нужно заменить на UUID вашего Windows-paздeлa.
11!1---------------------------------------------------------------------------------·
1 1,IВ,1 15
� 11раи. H.'IIIIC !al ()� !h:1111 О(
Остальные параметры можете оставить без изменения (еще не забудьте ис­
править hdO в drivemap, если Windows установлена не на первом жестком
диске).
15.2.4. Пароль загрузчика GRUB2
Загрузчик GRUB позволял только установить пароль - или общий, или на
загрузку определенной метки. Загрузчик GRUB2 более гибкий в этом плане,
поскольку вы можете настроить не только пароли, но и логины. Также есть
минимальная система разграничения прав доступа.
Итак, в GRUB2 есть суперпользователь, который может редактировать
загрузочные метки. Существует возможность восстановить пароль root пу­
тем передачи ядру параметра init. Но для этого нужно отредактировать кон­
фигурацию GRUB2. Если вы установите пароль суперпользователя, то изме­
нить конфигурацию загрузчика вы сможете только после ввода этого пароля.
Также в GRUB2 есть обычные пользователи, которые имеют право только
выбирать загрузочную метку. Они не имеют права редактировать конфигу­
рацию загрузчика. В принципе, можно обойтись одним паролем суперполь­
зователя, но при желании GRUB2 может довольно гибко разграничить права
пользователей.
Давайте сначала добавим пароль суперпользователя.
Для этого в файл /etc/grub.d/00_header добавьте строки:
set superusers= "main_admin"
password main_admin 123456789
Первая команда задает суперпользователя main_admin, а вторая - задает
для него пароль. Старайтесь избегать общепринятых имен вроде admin,
root и т.д. Так у злоумышленника, который хочет изменить конфигурацию
GRUВ2, будет два неизвестных параметра.
Пароль пока в незашифрованном виде, и это не очень хорошо. Поскольку
если загрузиться с LiveCD или LiveUSB, то его можно будет увидеть. Позже
я покажу, как зашифровать пароль.
Обычные пользователи задаются инструкцией password, например:
•
password me 12345
········-·······································································:·&1
о
"'
..,
', ,...
-
: о
' с.
' "(
:!:=:
По сути, main_admin тоже был бы обычным пользователем, если бы не
инструкция set superusers, которая делает его суперпользователем.
Представим, что у нас есть следующие строки:
set superusers="main_admin"
password main_admin 123456789
password me 12345
Пользователь main_admin может загружать операционные системы и редак­
тировать конфигурацию GRUВ2. Пользователь me может только загружать
операционные системы.
Если вы хотите, чтобы определенные метки могли загружать только опреде­
ленные пользователи, добавьте к menuentry параметр --users:
menuentry "Windows" --users me {
insmod part_msdos
insmod ntfs
set root=' (hdO,msdosl)'
search --no-fioppy --fs-uuid --set UUID
drivemap -s (hdO) ${root}
chainloader +1
Теперь зашифруем пароль. Введите команду:
grub-mkpasswd-pbkdf2
Программа запросит пароль, зашифрует его и выведет на экран его хеш.
Вы увидите что-то подобное:
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659211B7
FC076F2D27080136.887CFF169EA83D5235D8004742AA7D6187A41E3187DFOCE14E
256D85ED97A979080136.887CFF169EA8335235D8004242AA7D6187A41E3187DF­
OCE14E256D85ED97A97357AAA8FFOA3871AB9EEFF458392F462F495487387F685B7472FC6C29E293FOAO
•
....................................................................................
1 1.111.1 1, � 1Iра11.1t•11щ• 1а1 р� 11,<111 0(
Данный хеш нужно указать вместо пароля пользователя.
Однако вместо инструкции 'passwd нужно использовать password_pbkdj2.
Например:
password_pbkdf2 rne
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659211B
7FC076F2D27080136.887CFF169ЕА83D5235D8004742АА7D6187 А41Е3187D.FOCEl
4E256D85ED97A979080136.887CFF169EA8335235D8004242AA7D6187A41E3187D
F0CE14E256D85ED97A97357AAA8FFOA3871AB9EEFF458392F462F495487387F685
B7472FC6C29E293FOAO
После изменения файлов из каталога /etc/grub.d не забудьте ввести команду
upgrade-grub для обновления основного файла конфигурации.
15.2.5. Установка загрузчика
Команда установки загрузчика такая же, как и в случае с GRUВ:
# /sbin/grub-install <устройство>
Например:
# /sbin/grub-install /dev/sda
Поскольку GRUВ2 у вас уже установлен, вряд ли вам придется вводить эту
команду. Исключение может составить разве что переустановка Windows,
которая перезапишет загрузочный сектор своим загрузчиком.
Поэтому вам придется загрузиться с LiveCD, выполнить chroot для вашей
старой корневой системы и ввести команду grub-install для установки
загрузчика GRUВ2 .
•
·---------------------------------------------------------------------------------111
lkc1, J,i1111x
15.3. Система инициализации
После своей загрузки ядро передает управление системе инициализации,
Цель этой системы - выполнить дальнейшую инициализацию системы,
Самая rnавнан задача системы инициаnиэации запуск и управление системными службами.
Сnужба (сервис, демон) - специальная программа,
выполняющаяся в фоновом режиме и предоставляющая
определенные услуги (или, как говорят, сервис - отсюда и
второе название).
Что превращает обычный компьютер, скажем, в FТР-сервер? Правиль­
но, запущенная служба FTP - тот же ProFTPD или подобная, Вы можете
установить программу ProFTPD и настроить ее на автоматический запуск
системой инициализации, Тогда при каждой загрузке наш компьютер будет
превращаться в FТР-сервер, Аналогично и с другими сервисами - доста­
точно установить определенную программу, чтобы превратить компьютер в
веб-сервер или почтовый сервер, Но стоит вам отключить ее, и компьютер
уже прекращает предоставлять обеспечиваемые программой услуги, следо­
вательно, превращается в самый обычный компьютер,
В мире Linux существовало очень много разных систем инициализации init, upstart, init-ng, Все их рассматривать уже нет смысла, поскольку в совре­
менных дистрибутивах используется современная система инициализации
systemd,
systemd - подсистема инициализации и управления службами в Linux,
фактически вытеснившая в 2010-е годы традиционную подсистему init,
Основная особенность - интенсивное распараллеливание запуска служб
в процессе загрузки системы, что позволяет существенно ускорить запуск
операционной системы, Оснщ1ная единица управления - модуль, одним из
типов модулей являются "службы" - аналог д�монов - наборы процессов,
запускаемые и управляемые средствами подсистемы и изолируемые
контрольными группами,
•
....................................................................................
1 1 11,.1 1" :'-11ра11 1t·1111e 1а1 р, 1i,:011 О(
15.3.1. !1ринцип работы
Система инициализации systemd используется во многих современных дис­
трибутивах, в частности в Fedora, UЬuntu, CentOS и openSUSE. На данный
момент это самая быстрая система инициализации.
Давайте подумаем, как можно ускорить запуск 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 Х (там система инициализащш называется
Iaunchd) и в Windows (концепция отложенного запуска служб). Так что реше­
ние не очень новое, но зато проверенное.
•
·······································----------------·----------------------·-----
t
u
lkcl, 1 illll\
Основными функциями systemd являются:
• Активация на основании сокетов - система инициализации systemd
прослушивает сокеты всех системных служб. Сокеты передаются
системным службам· сразу после запуска сервисов. Благодаря этому осу­
ществляется параллельный запуск сервисов. Также это позволяет переза­
пускать сервисы без потери любых отправленных им сообщений, то есть
пока сервис перезапускается, отправленные ему сообщения накаплива­
ются, и он сможет их обработать после того, как будет запущен.
• Активация на основании устройств - systemd может запустить опре­
деленные службы, когда станет доступным определенный тип оборудова­
ния. Например, вы подключили Bluetooth-aдaптep, может_ быть запущен
сервис Ыuetooth.
• · Активация на основании d-bus - служба инициализации может запу­
стить сервисы, которые используют d-bus для межпроцессного взаимо­
действия, например, когда клиентское приложение попытается связаться
с системной службой.
• Активация на основании путей - systemd может запустить службу,
если изменится содержание каталога.
• Управление точками монтирования и автоматическим монтирова­
нием - система инициализации отслеживает и управляет точками мон­
тирования и автоматического монтирования.
• Снимки системных состояний - благодаря этой возможности systemd
может сохранить состояние всех модулей и восстановить предыдущее
состояние системы.
• Параллелизация - systemd запускает системные службы параллельно
благодаря активации на основании сокетов. Параллельная активация су­
щественно сокращает время загрузки системы.
• Обратная совместимость с SysV - поддерживаются сценарии иници­
ализации SysV, что упрощает переход на systemd. Однако все устанавли­
ваемые в современных дистрибутивах пакеты служб уже адаптированы
под systemd, поэтому не нужно надеяться, что во время установки пакета
какого-то сервиса будут установлены SуsV-�ценарии. Будут созданы фай­
лы, необходимые для запуска сервиса посредством systemd.
-
.
....................................................................................
J 1.111,1 J 'i � нр:Ш.11'11111' ШI р� !KOii (){'
15.3.2. Конфигурационные файлы systemd
Обилие различных конфигурационных файлов systemd может ввести в сту­
пор даже бывалого линуксоида, не говоря уже о пользователе, который впер­
вые видит systemd. Когда я впервые познакомился с systemd, у меня было
только одно желание - снести ее и установить вместо нее init. Но мы это
не будем делать. Чтобы разобраться со всеми файлами, нужно понимать, как
работает эта система.
В systemd используется концепция модулей (юнитов). Существующие типы
модулей описаны в таблице 15 .1.
Таблица 15.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
уже не главный, хотя все еще может использоваться для
определения точек монтирования
.....................................................................................
1
JJ"i, ( illll\
automount
Автоматическая точка монтирования. Используется для
монтирования сменных носителей - флешек, внешних
жестких дисков, оптических дисков и т.д.
socket
Сокет. Представляет сокет, находящийся в файловой
системе или в Интернете. Поддерживаются сокеты AF_
INET, AF_INET6, AF_UNIX. Реализация довольно интересная. Например, если сервису servicel.service соответствует
сокет servicel .socket, то при попытке установки соединения
с service l .socket будет запущен service l .service
device
Устройство. Представляет устройство в дереве устройств.
Работает вместе с udev: если устройство описано в виде
правила udev, то его можно представить в systemd в виде
модуля device
path
Файл или каталог, созданный где-то .в файловой системе
scope
Процесс, который создан извне
slice
Управляет системными процессами. Представляет собой
группу иерархически организованных модулей
swap
Представляет область подкачки (раздел подкачки) или файл
подкачки (свопа)
timer
Представляет собой таймер системы инициализации
systemd
Модули хранятся в следующих каталогах:
• /etc/systemd/system/ - обладает самым высоким приоритетом. Здесь со­
держатся модули, которые созданы и управляются системным админи­
стратором;
• /run/systemd/system/ - модули, созданные во время выполнения. При­
оритет этого каталога ниже, чем каталога /etc/systemd/system/, но выше,
чем у /usr/liЬ/systemd/system;
E:t--------------------------------------------------------------------------------'
1 1 11'.1 1-;
� нрав lt'llllt' ;а1 р, H,OII ()(
• /usr/liЬ/systemd/system/ - модули, которые установлены из пакетов.
Типичный файл модуля типа service приведен.в листинге 15.3.
ЛИСТИНГ 15.3. Типичный файл модуля типа service
[Unit]
Description = Daemon to detect crashing apps
After=syslog.target
[Service]
Exec·start=/usr/sЬin/abrtd
Type= forking
[Install]
WantedBy= multi-user.target
В секции Unit содержится общая информация о сервисе. Эта секция есть и в
друrих модулях, а не только в сервисах.
• Секция Service содержит информацию о сервисе.
• Параметр ExecStart описывает команду, которую нужно запустить.
• Параметр Туре указывает, как сервис будет уведомлять systemd об окон­
чании запуска.
• Секция Insta/1 содержит информацию о цели, в которой должен запу­
скаться сервис.
В нашем видно, что сервис будет запущен при активации цели multi-user.
target.
Вы можете использовать эту "болванку" для написания собственного серви­
са, который потом нужно поместить в файл /etc/systemd/systern/имя_сервиса.
service. После этого нужно перезапустить саму systemd, чтобы она узнала о
новом сервисе:
•
* systemctl daemon-reload
··················································································-111
lk,1, 1 illll\
15.3.3. Цели
Теперь поговорим о целях. Файлы целей *.target предназначены для груп­
пировки вместе других юнитов systemd через цепочку зависимостей. Так,
модуль цели graphica\.target, который используется для запуска графическо­
го сеанса, запускает системные службы GDM (файл gdm.service) и Accounts
Service (accounts--daemon.service), а также активирует цель multi-user.target.
В свою очередь, цель multi-user.target запускает другие системные службы,
например D-Bus (dbus.service), и активирует другие цели вроде basic.target.
В systemd имеются предопределенньrе цели, которые напоминают стандарт­
ный набор уровней запуска.
Некоторые цели называются run\eve\N.target, чтобы упростить переход быв­
ших пользователей init на systemd, а именно:
• poweroff.target (runlevelO.target) - завершение работы и отключение си­
стемы;
• rescue.target (runlevell .target) - однопользовательский режим, среда восстановления;
multi-user.target (runleve\2.target, runleve\3.target, runleve\4.target) - мноf:; • гопользовательский
режим, без графического интерфейса;
�
�
• graphical.target (щnleve15.target) - многопользовательский режим с графическим интерфейсом;
• reboot.target (runleve\6.target) - завершение работы и перезагрузка
системы.
Управление службами осуществляется с помощью программы systemctl.
Подробнее о службах мы поговорим в следующем разделе, а пока разберем­
ся, как использовать systemctl для завершения работы.системы:
• systemctl halt - останавливает систему;
::::
]
�
• systemctl poweroff- выключает систему;
• systemctl reboot - перезагружает систему.
•
•
11!1---------------------------------------------------------------------------------·
Многим пользователям будет удобнее использовать старые команды halt,
poweroffи reboot. Но все же теперь вы знаете, что есть альтернативные спо­
собы завершения работы.
15.4. Управление сервисами при использовании
systemd
При использовании системы инициализации systemd управление службами
осушествляется посредством программы systemctl. Команда systemctl ис­
пользуется для разных целей, поэтому в таблице 15.2 представлены не все
ее параметры, а только те, которые имеют отношение к сервисам.
Таблица 15.2. Параметры программы systemctl
•
Параметр
Описани е
start <uмя.service>
Запускает сервис
stop <uмя.service>
Останавливает сервис
restart <uмя.service>
Перезапускает сервис
try-restart <uмя.service>
Перезапуск сервиса, только если он запущен
reload <uмя.service>
Перезагружает конфигурацию сервиса
status <uмя.service>
Отображает подробное состояние сервиса
is-active <uмя.service>
Отображает только строку active (сервис
запущен) или inactive (остановлен)
list-units --type service --all
Выводит состояние всех сервисов
··················································································tEIII
"с.
"!
с,::
..
с.
"'
IJ, l 1, 1 illll\
епаЫе <uмя.service>
Включает сервис (обеспечивает его автоматический запуск)
disaЫe <uмя.service>
Оrключает сервис (сервис не будет автоматически запускаться при запуске системы)
rеепаЫе <uмя.service>
Деактивирует сервис и сразу его нспользует
list-unit-jiles --type service
Выводит список всех сервисов и сообщает,
какие из них активированы, а какие - нет
Примеры:
# systemctl start httpd.service
# sys�emctl stop httpd
Первая команда запускает сервис httpd (веб-сервер), вторая - останавлива­
ет. Обратите внимание, что ".service" можно не указывать.
Бывалые пользователи Linux сразу заметят удобство. Ранее, чтобы отклю­
чить службу на определенном уровне запуска, нужно было удалить ее сим­
волическую ссьшку из определенного каталога. Аналогично, чтобы служба
запускалась на определенном уровне запуска (например, в графическом ре­
жцме), нужно бьшо создать символическую ссьшку. Сейчас всего этого нет,
а есть только команды епаЫе и disaЫe, что гораздо удобнее.
•
....................................................................................
Глава 16.
УПРАВЛЕНИЕ
ПРОЦЕССАМИ
л •
1\,, 1, 1 illll\
-
t<
,,., ':
., '
ё
., '
,: '
� :
'
1
16.1. Команды ps, nice и kill
16.1.1. Получение информации о процессе
Современные операционные системы устроены так, что каждому процессу
присваивается уникальный номер- PID (Process ID, ИД процесса), исполь­
зуя который можно управлять процессом, например, можно завершить про­
цесс или изменить его приоритет.
Узнать PID можно с помощью команды ps. Команда ps,
введенная без параметров, просто показывает список
процессов, запущенных на текущем терминале.
Видно, что сейчас запушен bash и сама команда ps (правда, на момент за­
вершения вывода процесс с ID 975 уже не будет сушествовать, но на момент
самого вывода такой процесс сушествовал), см. рис. 16.1.
-
Рис. 16.1. Командарs
.
.
at----------··-·········-····-···········----··-·-···-··············-······-·-···-··
1 1,111,111, )11pa11.lt'llllt· ll(Нlllt't·t·a,111
Параметр -а позволяет вывести список всех процессов пользователя.
Посмотрите на рис. 16.2: на консоли ttyЗ запущена программа nano, на
консоли ttyl - программа ps.'
Рис.16.2. Командqрs -а
Если нужно вывести процессы какого-то определенного пользователя, тогда
используйте параметр -и:
$ ps -u root
Вывести абсолютно все процессы можно с помощью опции -А. Обратите
внимание на регистр опции! Поскольку в системе процессов будет очень
много, лу чше перенаправить вывод программы на команду less для более
удобного просмотра (рис. 16.3):
$ ps -А I less
r
1
i1 ПРИМЕЧАНИЕ. Для выхода из программы less нажмите q на 'i
: клавиатуре. Листать вывод можно стрелками вверх и вниз.
:
t______________________________________________________________J
Команда ps сортирует процессы по PID. Колонка ттУ - это
терминал, к которому привязан процесс.
··················································································tED
•
lkc1, l.i1111,
Рис. 16.За. Команда ps -А I less (начало вывода)
Рис. 16.Зб. Ко.!lfанда ps -А I less (завершение вывода)
....................................................................................
J 1,111.1 J (1 � IIJ):111.lt'IIШ' IIJ}IЩt'CC:t\111
Если в этой колонке вы видите знак ?, значит, процесс не привязан ни к
одному из терминалов. Как правило, это системные процессы-службы. Они
запускаются без привязки к тарминалу.
Чтобы отобразить только процессы без привязки к терминалу, используется
опция -х (рис. 16.4).
Рис. 16.4. Командарs -х I less
Колонка sтАт - это состояние, в котором находится процесс.
Возможные значения для этой колонки приведены в таблице 16.1.
Обратите внимание: колонка STAT есть только, когда программа запущена с
параметром -х.
Если программа запущена с друтими параметрами, например -А, вместо нее
будет колонка TIME, которая сообщает занимаемое процессом процессорное
время
•
··················································································811
lkc1, J.i1111\
Таблица 16.1. Возможные состояния процесса
'lf&I
'
'''.'1!'.\
Состояние
Ооиеаиие
D
Процесс в непрерывном сне (как правило, ожидает ввода/
вывода)
R
· Выполняется в данный момент
s
Ожидание (то есть процесс "спит" менее 20 секунд, после
9его он переходит или в сост�яние R, или в состояние D)
т
Процесс остановлен
t
То же, что и Т, но причина остановки - останов отладчиком
w
Процесс в свопинге (подкачке)
х
Процесс мертв, вы его никогда не увидите
,,
Проl!есс-зомби - он уже завершен, но не "похоронен" его
родителем, то есть процесс-родитель еще не считал код
завершения
У команды ps есть несколько синтаксисов установки параметров.
::с
;а.
"""
Мы использовали ВSD-синтаксис. Например, для вывода всех процессов в
стандартном синтаксисе используется команда -е, а в нашем случае - -А.
Вы вольны использовать любой синтаксис, но в случае с ВSD-синтаксисом
программа ps выводит дополнительное состояние процесса (работает по­
добно программе ps в системе BSD), Дополнительное состояние процесса
описано в таблице ·16.2.
Таблица 16.2. Дополнительное состояние процесса (ВSD-синтаксис)
Состояние
,\
Описание
<
Высокий приоритет
N
Низкий приоритет
•
....................................................................................
1 1,111.1 1 (, � 11р:111.1,·11ш· 111ющ•п·а\111
У процесса есть страницы, заблокированные в памяти
L
,
s
Это лидер сессии
1
Процесс является многопотоковым
+
Находится на первом плане в группе процессов
Последняя колонка вывода ps - это CMD. Она содержит команду, которой
бьш запущен процесс. Не просто название исполнимого файла, но путь (если
он был указан в команде) и переданные программе параметры.
Если программа была запущена без ук·азания полного пути к исполнимому
файлу, и вы хотите знать, где он находится, введите команду which, напри­
мер:
$ which nano
/Ьin/nano
Если вам нужно узнать PID определенного процесса, но вам не хочется про­
сматривать длинный список системных процессов, используйте команду
grep как фильтр. Например, следующая команда позволит нам узнать PID
процесса sshd (это SSH-cepвep):
# ps -А/ grep sshd
Если такой процесс не запущен, выв·од будет пуст. Или же вы получите вы­
вод вроде этого:
929
?
00:00:00 sshd
16.1.2. Изменение приоритета процесса
Когда мы знаем PID процесса, мы можем изменить его приоритет. В неко­
торых случаях полезно изменить приоритет процесса. Например, можно по­
высить приоритет процесса, выполняющего резервное копирование, чтобы
•
_. ................................................................................. ..
lkC!, l.i1111x
,
программа успела за ночь создать все необходимые резервные копии и что­
бы этот процесс утром потом не мешал нормальной работе сервера.
Запустить программу с определенным приоритетом можно командой nice:
# nice -n <приоритет> команда аргументы
.g:,
i
.:
Здесь приоритет задается от -20 (максимальный приоритет) до 19 (мини­
мальный). Если процесс уже был запущен и вы не можете его прерывать, но
повысить приоритет нужно, используйте команду renice:
# renice -n <приоритет> -р PID
16.1.3. Аварийное завершение процесса
Если процесс завис и его нельзя завершить как обычно, тогда для его аварий­
ного завершения используется команда kill. Формат вызова этой команды
следующий:
$ kill [опции] PID
Рис. 16.5. Использование команды kill
•
....................................................................................
1 1,\IЫ 1 (1 � 11рав.1с1111с ll(JOIICCC.t\111
Конечно, перед этим нужно узнать РШ процесса. На рис. 16.5 изображена
команда kill в действии: сначала я вывел список процессов, чтобы узнать
PID процесса паnо (1035), затt}м я ввел команду kill 1035, чтобы "убить"
этот процесс. Наконец, я вывел список процессов еще раз, чтобы убедиться,
что процесс nano завершен.
Используя параметры программы, можно по-разному завершить процесс.
Самый эффективный сигнал 9 (КILL) - означает аварийное завершение
процесса. Программа не может игнорировать или как-либо обработать этот
процесс.
Если нужно попытаться корректно завершить работу программы, ей отправ­
ляют сигнал 15 (ТЕRМ), означающий, что программа должна освободить
все занятые ресурсы, сохранить все данные. Вот только _если программа за­
висла и не отвечает на запросы пользователя, этот сигнал мало чем поможет,
но попытаться стоит.
Сигнал 19 (STOP) позволяет временно приостановить работу программы, а
сигнал 18 (СОNТ) - возобновить приостановленный ранее процесс.
Для сетевых служб полезен сигнал 1 (НUР), означающий, что процесс дол­
жен перезапуститься и перечитать файл конфигурации. Полезно, когда вы
изменили файл конфигурации и хотите, чтобы демон был перезапушен (хотя
для этого правильнее использовать команду service). Обычная программil
при получении сигнала 1 завершает работу.
Пример отправки сигнала:
$
kill -9 1035
Если вам лень получать РШ процесса, можно завершить его и по имени, ис­
пользуя ком·анду killall, например:
$ killall nano
Вот только если в вашей системе есть два процесса с именем папо, напри­
мер, один на консоли tty2, а другой - на tty4, то будут завершены оба
процесса. Если это то, что вам нужно, используйте killall, в противном
случае лучше использовать команду ki 11 для завершения именно того про­
цесса, который можно завершить.
•·---------··-·-······-·-----------------·-----·---·-··----·--··------··--···------1111
1
lkc,, l,inux
Еще есть команда xkill, позволяющая "убить" программу, имеющую гра­
фический интерфейс. Такие программы можно завершить и командой kill,
но программа xkill предоставляет графический метод завершения. После
ввода этой команды указатель мыши примет вид черепа. Для завершения
программы нужно щелкнуть по ее окну.
,.... '
16.2. Команда top
Как было отмечено ранее, программа ps по умолчанию сортирует процессы
по колонке PID, а не по колонке TIME. Конечно, можно использовать раз­
личные параметры программы, чтобы добиться нужного нам вывода, но все
равно программа не будет показь(вать ситуацию в реальном времени.
Если же вам нужно знать, что происходит с вашими
процессами в реальном времени, вам нужно использовать
программу top.
Рис. 16.6. К0111анда top
•
11!1---------------------------------------------------------------------------------·
( 1,\В,1 ( (> ) IIJ):111.ll'lllll' IIJ)Olll'CC:1\111
Назначение колонок программы описано в таблице 16.3.
Таблица 16.3. Колонки проrраимы top
Колонка
.,,
Описание
PID
PID процесса
USER
Владелец процесса (пользователь, запустивший программу)
PR
Приоритет процесса
NI
Значение nice (см. _ранее)
VIRT
Виртуальная память, которая используется· процессом
RES
Размер процесса, который не перемещается в область
подкачки
SHR
Разделяемая память, используемая процессом
s
Состояние процесса (см. табл. 16.1)
%CPU
Процессорное время, занимаемое процессом в данный момент
%МЕМ
Память, используемая процессом
ТIМЕ+
Процессорное время, которое было потрачено с момента запуска процесса
COMМAND
Команда запуска процесса
При просмотре списка программы top вы можете управлять сортировкой
процессов с помощью нажатия клавиши F, которая изменяет колонку, по ко­
торой сортируется список процессов (рис. 16. 7).
•
По умолчанию сортировка выполняется по колонке %CPU.
....................................................................................
lkc1, l.i1111x
Рис. 16. 7. Выбор коло11ки, по которой осуществляется сортировка
Нажатие клавиши <U> показывает только процессы определенного пользо­
вателя. После нажатия <U> нужно будет ввести имя пользователя, процессы
которого вы хотите просмотреть, или нажать Enter, чтобы просмотреть про­
цессы всех пользователей.
16.3. Информация об использовании памяти и
дискового пространства
Хотя управление памятью и дисковым пространством не совсем относит­
ся к управлению процессами, но эти самые процессы активно "поедают"
как память, так и дисковое пространство, поэтому иногда полезно знать, как
просмотреть информацию об использовании памяти (команда free) и дис­
кового пространства (команда df), см. рис. 16;8.
•
....................................................................................
J 1,11\.1 J (1 � 111).111.lt'IIIIL" IIJHll\�CC.l\111
Рис.16.8. Команды :rree и dz -Н
Программа free выводит информацию об использовании памяти (меm) и
подкачки (swap).
Колонка total - это общее количество памяти в килобайтах, used использованное количество памяти (тоже в килобайтах), free - свобод-.
но памяти, shared - разделяемая память, buff/cache - размер кэша,
availaЫe - общий объем доступной памяти.
Параметр -Н команды df означает вывод информации об объеме в удобных
для восприятия человеком единицах, то есть в мегабайтах и гигабайтах.
Обратите внимание на значение buff/cache в выводе команды free.
Оно показывает, сколько памяти задействовано под буфер ввода/вывода и
кэш. В нашем случае (рис. 16.8) - примерно 323 Мб. На реальном сервере
это значение будет гораздо выше. Немного освободить память можно, очи­
стив кэш. Для этого введите команду:
sync; echo 3 > /proc/sys/vm/drop_caches
Сначала мы командой sync сбрасываем содержимое буферов на диск, а за­
тем уничтожаем кэш. Если просмотреть затем информацию об использова­
нии памяти, то вы увидите, что размер кэша был уменьшен почти в три раза
•
.....................................................................................
lkc1, 1.iща
(рис. 16.9). Однако помните, что эта команда может негативно отразиться
на стабильности системы и на скорости ее работы. Не всегда очистка кэша
таким вот варварским образом - это хорошо.
Рис. 16.9. До и после ввода КОJltанды sync; echo З > /proc/sys/vm/
drop_ caches
16.4. Команда/иsеr
Команда fuser позволяет узнать, какой процесс открыл тот
или иной ресурс, например файл или сетевой порт.
Примеры использования программы:
fuser -va 23/tcp
fuser -va /chroot/etc/resolv.conf
В первом случае мы получим идентификатор процесса, открывшего ТСР­
порт 23, во втором - идентификатор процесса, открывшего файл /chroot/etc/
resolv.conf. Что делать далее� решать вам, например, можно "убить" этот
,
процесс командой kill.
........ :
................. .... .. ...................................................
,
J 1,11<,1 J (1 � 11p.lll.ll'lllll' ll(J(Щl'CC.1\111
16.5. Планировщики заданий
16.5.1. Планировщик cron
Пnанировщик заданий нужен для периодического
выполнения каких-либо заданий.
Задания могут быть самыми разнообразными: очистка временного каталога
для экономии места, очистка кэша, обновление баз антивируса, запущенного
на почтовом сервере и т.д. Никаких ограничений нет - вы можете написать
на bash небольшой сценарий с необходимыми вам действиями, а затем на­
строить планировщик для его периодического выполнения.
Самый древний планировщик заданий - cron. Он появился еще во времена
первых версий UNIX. Но примечательно то, что в современных дистрибу­
тивах используется его модифицированная версия, которая настраивается
практически так же. Так, в современных версиях дистрибутивов openSUSE
и Fedora используется демон cronie, который является потомком того самого
демона cron.
Не будем вникать в тонкости новой версии, а просто ·разберемся, как ее
настроить. Как и в том самом cron, есть файл /etc/crontab - это таблица
расп';lсания планировщика задач. Формат записей в этом файле следующий:
ыинуты (0-59). часы (0-23) день (1-31) месяц (1-12) день_недели
(0-6, О - Вс) команда
В листинге 16.1 приведен пример этого файла по умолчанию.
ЛИСТИНГ 16.1. Пример фaйna/etc/crontab
SHELL=/Ьin/bash
PATH=/usr/Ьin:/usr/sЬin:/sЬin:/Ьin:/usr/liЬ/news/Ьin
МAILTO=root
-*.15 * * * * root test -х /usr/liЬ/cron/run-crons && /usr/liЬ/
cron/run-crons >/dev/null 2.>&l
•
......................................................................................
1
1
li-c ,. 1 i,111,
r-------------------------------------------------------------,
.
1
1
: ПРИМЕЧАНИЕ. Просмотреть (даже просмотреть, не говоря уже :
: о модификации!) файл /etc/crontab может только пользователь :
1
1
: root. Поэтому сначала нужно получить права root, а затем уже :
: что-либо делать с файлом /etc/crontab.
:
� --------------------------------------------------------------�
1
1
Переменная SНELL задает путь к оболочке, РАТН - путь поиска программ,
а МAILTO определяет имя пользователя, которому будет отправлен отчет
о выполнении расписания. В таблице расписания всего одна запись - она
проверяет наличие сценариев в каталогах cron.hourly, cron.daily, cron.weekly
и cron.monthly и их выполнение. Об этом мы поговорим чуть позже.
Представим, что вам нужно выполнять какой-то сценарий каждый день в
8:30. Для этого в /etc/crontab нужно добавить строку:
30
8
*
/usr/bin/script arguments
Однако планировщик предлагает более удобный способ изменения таблицы
расписания. Представим, что у вас есть команда, которую нужно выполнять
периодически. Создайте файл myscript со следующим содержимым:
f/Ьin/bash
/путь/ myscript аргументы
Сохраните файл и установите право выполнения для этого файла:
chmod +х rnyscript
Только что вы создали простейший сценарий, который просто выполняет
вашу команду с заданными аргументами. При желании, необходимости и
знании bash (информацию по этой оболочке вы без особых проблем найдете
в Интернете) вы можете усовершенствовать этот сценарий.
его нужно поместить в один из каталогов:
После того как сценарий создан,
,
•
• /etc/cron.hourly - содержит сценарии, которые будут выполняться каж­
дый час;
....................................................................................
1 1,111,1 1 (, � 11ра11.1с1111с II\Hllll'CC\1\111
• /etc/cron.daily - содержит сценарии, которые будут выполняться еже­
дневно;
• /etc/cron.weekly - сюда нужно поместить сценарии, которые будут вы­
полняться еженедельно;
• /etc/cron.monthly - содержит сценарии, которые будут выполнены раз в
месяц.
Просто поместите сценарий в один из этих каталогов и положитесь на cron
- далее вашего вмешательства не требуется.
Также сушествует возможность создать отдельное расписание для каждого
пользователя. Для этого используется команда crontab. Однако такая воз­
можность на современных серверах (когда пользователи не работают с тер­
миналом сервера непосредственно) используется довольно редко. При этом
в файл /etc/cron.deny заносятся пользователи, которым запрещено использо­
вать планировщик cron. Если вам нужно отредактировать таблицу расписа­
ния для каждого пользователя, используйте команду crontab. В большин­
стве случаев команда будет такой:
crontab -е -u <имя пользователя>
После этого откроется текстовый редактор (определенный в переменной
.о кружения EDIТOR) для редактирования таблицы расписания указанного
пользователя. Синтаксис такой же, как для общесистемной таблицы распи­
сания.
16.5.2. Планировщик anacron
Планировщик anacron - еще один форк старого доброго планировщика
cron. Ситуация с anacron такая: когда стало понятно, что cron устарел, на­
чали появляться альтернативные планировщики, подобные ему. У каждого
из них были свои преимущества и недостатки, но некоторые разработчики
ди·стрибутивов остановили свой выбор на планировщике anacron. Однако
прошло время, и сейчас этот планировщик практически не используется. В
•
....................................................................................
lkc1, l.ilНI\
основном используется планировщик cronie, который настраивается практически так же, как и cron, что и было показано ранее.
Конечно, вам могут встретиться дистрибутивы, в которых по каким-то при­
чинам используется anacron. Как правило, это устаревшие версии дистрибу­
тивов. Если же вы обнаружили anacron в современной версии дистрибутива,
то, скорее всего, это личное предпочтение разработчиков дистрибутивов.
Основное·"визуальное" отличие этого планировщика - наличие файла /etc/
anacrontab вместо просто /etc/crontab. Формат записей также другой:
Период
Задержка
ID
Команда
Пример таблицы расписания anacrontab:
1
7
30
5
10
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.
monthly (каталога cron.hourly для этого планировщика не было предус­
мотрено).
По сути, как только вы увидели каталоги cron.daily, cron.weekly или cron.
monthly, можете сразу помещать в них свои сценарии, особо не разбираясь,
какой планировщик установлен. Самое главное, чтобы служба cron была
включена.
•
111····························································-········-············
Глава 17.
ПОЛЬЗОВАТЕЛИ И
ГРУППЬI
л •
IJ, l 1, 1 illtl\
17.1. Введение в учетные записи Linux
Операционная система Linux поддерживает регистрацию и одновременную
работу множества пользователей.
r---------------------------------------------------------�
1
1
: ОБРАТИТЕ ВНИМАНИЕ: именно одновременную работу! :
�---------------------------------------------------------�1
1
Раньше, еще во времена UNIX, были компьютеры, к которым подключалось
несколько мониторов и клавиатур. Каждый комплект монитор + клавиатура
назывался терминалом и представлял собой отдельное рабочее место поль­
зователя. Пользователь входил в систему, а его рабочее место в системе ото­
бражалось как ttyN, где N - номер рабочего места.
Сегодня такие компьютеры уже более не востребованы, их вытеснили пер­
сональные компьютеры, которые и стали называться персональными,
поскольку предполагают подключение только одного рабочего места.
Мониторов можно подключить несколько, а устройство ввода - клавиату­
ра - будет одно. Но даже на таких компьютерах возможна одновременная
работа нескольких пользователей. Например, вы можете войти в систему
как обычно - посредством графического интерфейса. Другие пользователи
смогут войти через ssh или, FTP. И все вы будете работать с системой одно­
временно. SSН-пользователи смогут выпош9пь команды и получать резуль­
тат их выполнения, FТР-пользователи - обмениваться с вашим компьюте­
ром файлами.
•
•
118----------------------------------------------------------------------------------·
1 1,11<,1 ,- llо.11,ю11.1н-.111 11 1 р�11111.1
Все учетные записи можно разделить на три вида: учетные
записи обычнь1х поnьэоватеnей, учетные записи
системных служб и уче'rная запись root.
С учетными записями обычных пользователей все ясно - они имеют право
входить в систему разными способами (если тот или иной способ не запре­
щен настройками системы), для них определен домашний каталог (обычно
/hоmе/<имя_пользователя>), пароль и командная оболочка (как правило, в
последнее время используется /Ьin/Ьash).
Права обычных учетных записей:
• Право на вход в систему - по умолчанию обычный пользователь мо­
жет войти в систему самыми разными способами, если это не ограничено
настройками системы (например, модулями РАМ). Пользователь может
войти локально - через консоль или в графическом режиме через
дисплей-менеджер вроде gdm. Также никто не запрещает (опять-таки
по умолчанию) удаленный вход, например, по SSH или FTP, если на
компьютере, в который осуществляется вход, установлены соответству­
ющие службы.
• Право на запуск программ, не требующих для своего выполнения
прав root - как правило, такие программы находятся в каталогах /Ьin
и /usr/Ьin. А вот из каталога /sbin запустить программу может только су­
перпользователь. Программы, действие которых распространяется на
всю систему, например, программы изменения сетевых интерфейсов,
программы разметки диска, находятся в каталоге /sbin (super-bin). Что­
бы запустить эти программы; пользователю нужно получить полномочия
root. О том, как это сделать, будет сказано в следующем разделе.
• Обычный пользователь может создавать, удалять, читать, изменять,
запускать, устанавливать права и выполнять другие операции над фай­
лами, которые находятся в его домашнем каталоге. Как правило, это ка­
талог /hоmе/<имя_пользователя>. Хотя администратор может назначить
пользователю любой другой каталог, хоть /users/Ьa:gira, как правило, этого
никто не делает. Каталог /home может находиться физически на том же
разделе, что и корневая файловая система, а может и на другом разделе, и
даже на другом диске. На крупных серверах, как правило, под /home от­
водят целый диск или даже создают RАШ-массивы дисков.
.
·----------------------------------------------------------------------------------111
..,..
l\ccl, 1 illll\
• Право на чтение файлов - обычный пользователь может читать боль­
шую часть файлов за пределами домашнего каталога. Исключения
составляют разве что домашние каталоги других пользователей (если эти
другие пользователи явно не разрешили этому пользователю читать их
файлы) и некоторые файлы/каталоги в /etc. Например, файл /etc/passwd
могут читать все пользователи, а вот файл /etc/shadow - только root.
• Пользователь не имеет права вносить изменения в конфигурацию
всей системы, то есть устанавливать программы, изменять глобальные
настройки устройств, параметры ядра, параметры загрузчика и т.д.
• Пользователь имеет право изменить свои пользовательские параме­
тры, например обои рабочего стола, некоторые переменные окружения,
которые будут влиять только на его работу и т.д.
• Право на изменение своего пароля, но обычный пользователь не имеет
права изменять пароли других пользователей.
Это важно: учетные записи смстемнь1х сnужб не имеют
права входить в систему.
Для них не задан ни пароль, ни домашний каталог, а в качестве оболочки ис­
пользуется /Ьin/true или /Ьin/false - чтобы пользователь, используя учетную
запись службы, не мог войти в систему через консоль.
От имени таких учетных записей выполняются различные службы, напри­
мер, от имени пользователя www-data выполняется веб-сервер, gdm - учет­
ная запись для GNOME Display Manager и т.д.
·пользователь root имеет максимальные права, а именно:
• Право на изменение любого файла - root может читать, записывать,
удалять любые файлы, в том числе и файлы в домашних каталогах других
пользователей.
• Право на изменение конфигурации системы - пользователь root мо­
жет изменять конфигурацию системы посредством редактирования фай­
лов в каталоге /etc, /proc, запуска конфигураторов системы.
• Право на запуск любых программ -' root может запустить любую
программу, в каком бы каталоге она ни находилась.
•
....................................................................................
1 1.111.1 ,- llо.11.11шан·.111111р�11111.1
• Право на создание, удаление, изменение (в том числе изменение паро­
ля) других учетных записей.
• Право на установку и удал·ение проrрамм.
Власть пользователя root неоrраниченна. Так бьшо до определенного мо­
мента, пока не появились системы принудительного контроля доступа вроде
SELinux, LIDS, Tomoyo, которые могут оrраничить даже самого root. Вот
только беда - SELinux, LШS, Tomoyo и другие подобные системы по умол­
чанию неактивны или даже не установлены, поэтому, пока их не активиро­
вать, пользователь root все равно будет самым главным.
r--------------------------------------------------------------1
1
1
: ПРИМЕЧАНИЕ. Напомним, что, когда у вас привилегии пользо- :
: вателя root, приглашение командной строки заканчивается сим- :
1
1
: волом #, а когда вы работаете как обычный пользователь - $. :
1
1
�--------------------------------------------------------------�
17.2. Получение полномочий root
Самый простой способ получить права root- это войти как root. То есть при
входе в систему вы указываете имя пользователя root и пароль, указанный
при установке. Проблема в том, что не во всех дистрибутивах этот трюк сра­
батывает. Учитывая всю опасность, которую несет использование учетной
записи root, во многих дистрибутивах учетная запись root отключена, а вход
как root оrраничен самыми разными способами. Например, в том же дистри­
бутиве UЬuntu учетная запись root попросту отключена. Включать учетную
запись root не рекомендуется - ведь злоумышленник знает, что учетка root
есть везде, и ему не придется угадывать имя пользователя, останется только
подобрать пароль root. А так вы исключаете даже саму возможность входа
как root. Тем более права root можно получить другим образом, о котором
мы поговорим далее. А пока рассмотрим способы блокировки входа (кроме
отключения учетной записи) root.
Часто вход как root оrраничен на уровне менеджера дисплея. В дистрибути­
вах, где используется rрафическая среда КDЕ и менеджер экрана КDМ (К
Display Manager), нужно отредактировать файл /etc/alternatives/kdm4-config.
В нем нужно найти директиву AllowRootLogin и присвоить ей значение true,
чем вы разрешите вход как root в rрафическом режиме.
•
··················································································ID
1:k,ъ l,i11ux
При использовании GDM (Gnome Display Manager) вход как root ограничен
не столько конфигурацией самого GDM, сколько РАМ-модулями.
Нужно открыть /etc/pam.d/gdm-password и найти строку, отвечающую за
запрет входа как root (рис. 17.1 ). Она может выглядеть, например, так:
..
�
auth required pam_succeed_if.so user != root quiet
CUJ>5
18'1РА.11·1.11
� :;;:.._,;utstt•
4ftnc\UCИc-,-•uth
S•uth
....
..,
"'
(,
optl.oм\
,
.,. no1 1 so
; м
4
9'1m•
�'11tolo<Jln
r,clmfing,r<pr!nl:
№iiЩ
p • ,ign-_k•yrtng.so
_
6ftncl\/Мc-n-•ccount
7tSEL\nux �s to � the H�t цsston ru\e. rh\s �suг"s th•t •ny
8 • Hnger\119 conte1<t h•s �•n cletrl'd. Wtthovt thls Н ls POSs\Ыe
9tth•t •..odule could e1<Kut• c�ln thewrongdo,,•\n.
tos•иlon (success"ok t11nore•lgnor...od\llt_unkrюwn•l11noreliНf•ult•bIOJ
p..-._stHnu1<.so close
11se11ton г,rqu\rfll
p__loglnutd.so
t2t SELlnuк nнds to lnteг�ne •t logln t\,.. to ensure th1t tl>e proc•SI
1Jt 1tilrt1 tn the prop,r-r def•ult secur\ty conte><t. On\ysc-sstonswhl.ch •re
14J lntellded to run tn the ust"r's CO/ltcext should Ьt- run •fter th\s.
1S•p•,._seltnux.so ch•n�s theSELlnuxconte•t of tlltusectПY11fldtoflf\g11r1ts
:�: �:���u• tfl orИr to trilfls\tton to tM uиг coflte•t wlth the l\1t>1t 1.11ecv1t()
11ses11м [success•ok tgrюre•tgfloreмкl11\1t_11"knW11•tgriore def111H•lмd]
pм_s1tHfl11.11.so opefl
1ts1t11ton opHOflill
Pilfl_k1tytn1t.10 force ГltYOke
z1s1111tOl'I r11<111tred
pм_tt11Hs.so
:Zls11s1\on rfl111trll'd
p•11_1tl\v.so reild1tnv•l
1:zиsston rt-qu\rect
p1111_env.so r111d1tnv•l u1er_r�flY•I envHte•/etc/ctef•11tt/\oc1\e
Hltn<:\ude�-sesston
p1111_11n-_keyr\"9.so1uto_sart
24иss\or,щitt0111\
2s11.iк\ude c-r,•p1ssword
Рис. 17.1. Файл /etc/pam.dlgdm-password
Некоторые дистрибутивы разрешают заходить как root даже в графическом
режиме. Просто они отображают предупреждение о том, что работать как
root небезопасно. Пример такого дистрибутива - CentOS.
Настоятельно рекомендуется работать в системе как обычный пользователь,
а максимальные права получать только тогда, когда они вам действительно
нужны. Например, когда понадобится запустить какую-то программу, требу­
ющую права root. При этом вам особо ничего не придется делать, кроме как
ввести пароль.
-----------·---·--··-·-·-···-·--·---··--···········--·-----··--··-:-·-····-·-··--'
1 1а1ы 17 По.11,ю1ш1�.111111р�1111ы
Рассмотрим пример. Вы установили UЪuntu, при установке создали учетную
запись ubuntu и задали пароль. По умолчанию инсталлятор создает первую
учетную запись так, что она внрсится в файл sudoers. В этом файле указы­
ваются все учетные записи, имеющие право вы�:�олнять административные
задачи. Когда вы попытаетесь выполнить одну из таких задач, например, до­
бавить нового пользователя, графический интерфейс автоматически запро­
сит у вас ваш пароль. Это будет не пароль root, а ваш пароль, то есть пароль
пользователя ubuntu (рис. 17.2). Ему разрешено выполнять административ­
ные задачи, просто система пытается убедиться, что вы - это вы, а не некто,
кто оказался за вашим компьютером во время вашего отсутствия.
.�....�
-•
д.мм_д..__,,.,_,е,..
1,'11""'""
Рис. 17.2. Ввод пользователя
Когда же вам нужна командная строка с правами root, не обязательно даже
переключаться в консоль. Достаточно открыть терминал и ввести команду
su. Она попросит вас ввести пароль root.
После ввода пароля вы получаете терминал с правами root. Это означает, что
все команды, которые вы будете вводить после ввода команды su и успешной
аутентификации, будут выполняться с правами root .
•
.....................................................................................
::
u
lkcl, l,i1111\
1
r
i ПРИМЕЧАНИЕ. Если учетная запись root отключена, то вы не i
сможете использовать команду sudo, так как она предполагает
: ввод пароля root, а вы его не знаете.
:
!
!
L______________________________________________________________J
Когда вы единственный администратор, команда su - идеальный вариант.
Но когда администраторов несколько, команда su - не выход, поскольку
пароль root нужно будет сообщить всем остальным администраторам. Если
потом возникнет нестандартная ситуация, выяснить, кто виноват, будет
сложнее.
На этот случай у пользователя root могут быть доверенные лица. Это может
быть помощник администратора, его заместитель - называйте как хотите.
Есть лица, которым разрешено получать пр·ава root. Такие лица вносятся в
файл /etc/sudoers.
Редактировать файл /etc/sudoers можно только через команду visudo:
export EDITOR=nano
sudo visudo
Рис. 17.3. Редактирование файла /etc/sudoers
•
---------------------------------------------------------·---------------------·--··
1 1 11\,1 1
111111,\1111,111' 111 11 1р,11111,1
Первая команда устанавливает переменную окружения EDIТOR, задающую
удобный текстовый редактор, который будет использован для /etc/sudoers.
Вторая команда вызывает утилиту для редактирования файла /etc/sudoers.
Представим, что у нас есть пользователь bagira, которому нужно разрешить
делать все, что можно пользователю root.
Для этого нужно добавить в /etc/sudoers запись вида:
bagira ALL•(ALL:ALL) ALL
Можно также добавить запись:
%sudo
ALL•(ALL:ALL) ALL
Она означает, что членам группы sudo можно делать все, что можно делать
пользователю root. Тогда всех администраторов-помощников нужно доба­
вить в группу sudo (далее будет показано, как это сделать).
Сохраните файл и выйдите из редактора. Войдите как пользователь, кото­
рому вы предоставили право sцdo. В нашем случае это пользователь bagira.
Далее введите команду, которая требует прав root, через команду sudo:
sudo <команда>
Например:
sudo aptitude
[--------------------------------------------------------------1
ОБРАТИТЕ ВНИМАНИЕ: система запрашивает пароль польза- i
1
вателя, а не пароль root.
1
______________________________________________________________J
Пользователь указывает свой пароль, а система знает, что ему разрешено
получать права root. В итоге наши помощники не знают пароль root и смогут
выполнять определенные действия с правами root под своим именем .
•
.....................................................................................
"'с,.
lkLI, l.illtl\
Посмотрите на рис. 17.4. Хотя пользователь внесен в sudoers, ему отказано
в доступе при попытке запуска программы, требующей максимальных прав.
Системе нужно указать, что вы явно хотите запустить такую программу, и
предоставить максимальные права.
Для этого нужно использовать команду sudo, а в качестве аргумента - пере­
дать ей команду, которую вы хотите запустить с максимальными правами:
sudo visudo
Рис. 17.4. Нюанс запуска программы с максимальными правами
"'
.,,.,
Контролировать получение прав sudo можно командой 1:
"С
# tail /var/log/auth.log I grep sudo
Посмотрите на рис. 17.5. Для примера, 4 июля 2020 года в 8:56 пользователь
ubuntu пытался выполнить команду sudo ДJЦ выполнения команды tail /var/
log/secure. То есть в журнале отображаются не только попытки использова­
ния sudo, но и журналируются даже вводимые пользователями команды.
1
В некоторых дистрибутивах журнал аутентификации называется secure, а не auth.log
•
....................................................................................
l .1ава 17 По.11,юш11r.111 11 1 р� 11111,1
Рис. 17.5. Жур11ш, ауте11тификации secure
Если вам нужно получить некоторый аналог команды su, чтобы вы могли
вводить сразу неограниченное количество команд с максимальными права­
ми без приставки sudo, используйте следующий трюк - запустите с макси­
мальными правами оболочку bash. Все команды, вводимые в этой оболочке,
будут выполнены с максимальными правами:
sudo bash
Закрыть такой сеанс можно командой exit.
Прежде чем перейти к следующему разделу, разберемся, как включить учет­
ную запись root в UЬuntu. Для этого нужно просто задать пароль:
sudo passwd root
Сначала нужно ввести ваш пароль, затем новый пароль для root, после это­
го - подтвердить пароль. После этого вы сможете войти в систему как root
в консоли. Для входа в графическом режиме нужно редактировать файлы,
·---------------------------------------------------------------------------------81
Нс с 1, 1 i1111\
относящиеся к РАМ, как было сказано ранее. Отметим, что активация поль­
зователя root - занятие небезопасное, гораздо правильнее использовать ко­
манду sudo. На личном компьютере еще такое мероприятие допускается, но
на сервере - такое делать воспрещено.
17.3. Управление учетными записями
пользователей
17.3.1. Создание учетной записи пользователя
Создать новую учетную запись пользователя можно
командами adduser или useradd.
Чаще всего используется именно первая команда, вторая используется го­
раздо реже .
В большинстве случаев adduser просто добавляет в файл /etc/passwd учет­
ную запись пользователя. В дистрибутивах Debian и UЬuntu команда adduser
запрашивает контактную информацию (полное имя пользователя, номера
телефонов и т.д.), а также сразу устанавливает пароль пользователя (рис.
17.6).
�
-g
Если в вашем дистрибутиве команда adduser не запросила пароль пользователя, а просто добавила его учетную запись, тогда вам нужно еще ввести
команду passwd <имя пользователя> для установки его пароля, иначе поль­
зователь не сможет войти в систему.
Итак, в одних дистрибутивах достаточно команды:
# adduser <имя>
В других же нужно ввести две команды:
# adduser <имя>
# passwd <пароль>
•
аа-----------···-································································--·
1 1,111,1 17 llo.11,ю11:11t•.111 11 1 р�11111.1
Рис. 17.6. Создание нового пользователя в Ubuntu 20.04
Напомню, что для добавления учетной записи пользователя нужны права
root, которые пользователь может получить через su или sudo, если он вне­
сен в /etc/sudoers и ему разрешена операция добавления пользователя.
17 .3.2. Файлы /etclpasswd и /etc/shadmv
При добавлении учетной записи происходят следующие действия (вкратце):
• Добавляется запись в файл /etc/passwd - это небольшая база данных о
пользователях в текстов'ом формате. Этот файл могут просмотреть все
пользователи.
• Если при создании учетной записи утилита запрашивает пароль, то он
будет внесен в файл /etc/shadow. Пароли в этом файле хранятся в зашиф­
рованнqм виде, а доступ имеет только root. Команда passwd <имя>, из­
меняющая пароль пользователя, вносит изменения как раз в этот файл.
··················································································8D
•
lkcъ l,i1111,
• Создается домашний каталог /hоmе/<имя>, и в него копируется содержи­
мое каталога /etc/skel.
• Создается почтовый ящик пользователя в каталоге /var/spool/mail.
..
,.,-;
• Владельцем каталога /hоmе/<имя> и всех файлов и каталогов в нем
назначаt,тся создаваемый пользователь.
1")
Рассмотрим формат файла /etc/passwd:
имя пользователя:пароль:UID:GID:полное_имя:домашний_каталог:оболочка
Вот фрагмент этого файла:
ubuntu:x:1000:1000:ubuntu:/home/ubuntu:/bin/bash
bagira:x:1001:1001::/home/bagira:/bin/bash
•
',
I
-
..,
=,.,
1")
'С
'С
1Zpro•r:a:H:1J:Pf"O.-)':/Ы.11:/usr/1Ь\11/no109\n
IJ --d•t•:•:JJ:H:--d•t•:/Y•rf-:/uн/1Ьtn/no\09\11
l'IЬ..::ku,p:1<:J4:3•:b•ck119:Jv•r/bкkup1:/v1r/1Ьtn/roo\og\n
:: ��::���:�;:������::,����,��:�:;:;{�)�{�:�/1Ь\11/м\09\11
ltgn1t1;a:41:41:Gn1t1 81,g-�t\ng S)llt..,_ (...,.tn):/.,1r/Hlt/9flltl:fusr/1Ьtl\/rм,\09tn
1anoooc1,,11:6SSJ4:65SH:IIOЬodr:f110М,:\1tent:/u1,r/sЬtn/no\tog\11
19 1J1sttNl-мt�k:a:1ee:10l:srsteN1 Мirt"'°rk �t.,,:/r,.,/1rst..wt:/usr/1Ьt11/r,o\09\n
281r1t.-.d-rt10\..e:a:1e1:10J:sr1t.,,.. ll1so\1Нr,,.:/roн,/1r1tt•,.,d:Jusr/sЬt11/no\ot\n
21 11stнid-ttм1ync:•:1e2:1И:111t..-d 1tм srnchron\r1t\011,, ,:/r1Н1/systн.d:/usr/1Ьtn/м\09\n
22 м11.,.Ь.,1:•:le]:180::/-•t1tent:/u1r/1Ь\n/nolo9\n
2]S)'S\ot:•:1..,.:11e::/t-/1)'1\09:/u1r/sЫ11/no\ot\n
2• _,tpt:.:1ei:•SS]4::1-•tsteflt:/uи /1Ыn/nolo9\n
lS tss:11::166:111:fM soft,..,e stкl<,,,:/v•r/\\b/tP"l:/b\n/fs\st,
2•uu\dd:•:1e1:114::/run/w\od:/u1r/sЬ\n/no\ot\11
27tcpdU01C1:•:1&1:11S::/,_•\stent:/usr/sЬ\11/no\09\n
28 ...-sh\•wta\pd:•:18':118:Av.t\\ wto\p c1-,,,:f•••f\H1/svsti\•...,to\pd:,Usr/sb\n/no\ot\n
29us�•:•:11&:46:usЬ..Ux c1-.,,,f••r/\\b/u1�•:/usr/sЬ\n/no\ot\n
Иrtk\t:a:111:1H:Res\t\М'l(\t,,,:/proc.:fusr/sЫn/no\09\n
]Jctnsмsq:•:112:6SS)4:d/lvwsq,,.:/vsr/\\b/,.tsc:/u1r/1Ыn/no\09tn
Jlcup1-pli:-IW'\per:•:11J:1M:u1•r fo,- cups•pli:-h,e\per 1•r•tc•, ••:/..,_/cup1•c>l<·he\per:/usr/1Ы,n/•
IIO\oSj\11
h-dtspstch•r:a:lt4:29:Spн-chD\1p,1tcher,,,:/run/sl'"'(h•d\si:нitcller:/Ь\n/fs\м
h\:a:IIS:121:Avsh\ � d-,,,:/v1r/run/svsh\•d-:/usr/1Ыn/no\09\n
]5k•rnoop1:a:116:8SS}4:lterne\Oop1Jrsck\1>90-,,,:/:/usr/1Ыn/no\09\n
]6 1sned:a:111:12J::/v1r/\\b/s1М'd:/usr/1Ыn/110\09\n
37,.,..open"pn:a:111:IZ4:Н.twork111ns\jerOpenV!'N,,,:/v1r/\\b/openvpn/chroot:/u1r/1Ыn/no\ogtn
Jlhpl\p:a:119:f:нPLIP syst.,.uмr,,,:/run/hp\\p:/Ыn/fs\11
J9wi,.oop1t•:•:12e:12s::/,-at1t•nt:/Ыn/fs\1•
48 cotord:•:121:116:co\ord co\our ...,,"9..,._nt d"'"°",,,:/v1r/\tb/co\ord:/usr/1Ь\n/no\09tn
•1�\ue:a: 11:2:127::/vsr/\\b/g,eo<\u1:/u1r/1Ыn/110\09\n
42pu\и:a:IB:128:,u\иAud\o d-,,,:/••r/run/pu\и:/usr/sЫn/no\og\n
Og-•\nH\s\•11tup:•:124:6Sl]4::/runJg,-.\n\t\•1·••t"P/:/Ыn/fs\••
]:
::s:a:ltS:11 111;- D1srчJikё" •rг:(�•r,\\b. ,Ыn/f•\1•
1
•• •rstl!'f'ld•cor�_..,,:•:"99:"99:sr,;tl!'f'ld Cor1 ou,,p.r:/:/11sr/sb\ll/no\09\n
•7Ьsf1r,:•:160l:1M1:l.;trs,,,:/'-/b1tg\Г1:/Ыn/Ъ.sll
\Llolp1>..,r.6y1111Ц10118 •
СтрU.С.Л61
..,..,.
""'
1)'S(tt<OIII'
_::
:..а_
h.conl'
•
У1rф
,..tтс
Рис. 17. 7. Файл /etclpasswd
-• •
........
·- ·-
• •
,кolv.tod
•
а:1---------------------------------------------------------------------------------·
1 1,111,1 1 - 110,11.юван-.111 11 1 р� 11111,1
Формат файла /etc/passwd приведен в таблице 17 .1.
Таблица 17 .1. Формат файла letc/passwd
Номер
поли
Название
Описание
1
Имя пользователя
Имя, использующееся при входе в
систему
2
Пароль
Поскольку пароль пользователя хранится в файле /etc/shadow, то в файле /etc/
passwd вместо пароля просто указывается символ 'х'
3
UID
Идентификатор пользователя
4
GID
Идентификатор группы пользователя
5
Полное имя пользователя
Устанавливается а дминистратором и ни
на что не влияет. В крупных орrанизациях имя пользователя помогает установить контакт с пользователем. Это поле
может также содержать номер телефона,
номер комнаты и прочую информацию,
которую запрашивает adduser при создании пользователя
6
Домашний каталог пользователя
Обычно это /hоmе/<имя пользователя>
Оболочка
Программа, которая будет запушена при
входе пользователя в систему из консоли
(для графического режима это поле не
имеет значения). Список доступных оболочек хранится в файле /etc/shells
7
•
\
··················································································tвD
t;
u
"а.
11,' ,. 1 11111\
В файле /etc/shadow полей больше, чем в /etc/passwd.
Как и в случае с /etc/passwd, поля разделяются двоеточиями:
1. Имя пользователя. Совпадает с именем пользователя в файле /etc/passwd.
2. Зашифрованный пароль. Позже мы поговорим о том, как распознать алго­
ритм шифрования, которым был зашифрован пароль.
3. Количество дней (с 1 января 1970 года), когда пароль был сменен в
последний раз.
4. Число дней до смены пароля. Если в этом поле О, то пароль может быть
сменен в любой момент.
5. Количество дней, после которых пароль должен быть сменен. Обычно
здесь значение 999999, которое показывает, что пользователь может ни­
когда не менять свой пароль.
6. Число дней, в течение которых пользователь получает предупреждение о
необходимости изменить пароль. Обычно такие предупреждения пользо­
ватель получает за неделю (7 дней) до часа "Х".
7. Число дней после окончания действия пароля, когда пользователь еще
может работать со старым паролем. Если после этого срока пользователь
не сменит пароль, учетная запись будет заблокирован11.
8. Число дней, начиная с 1 января 1970, после которых пароль будет забло­
кирован.
9. Не используется.
::с
\;;;,
°'g
Обычно последние три поля не используются. По зашифрованному паролю
можно понять, какой алгоритм шифрования использует система.
Посмотрите на начало зашифрованного пароля:
• $1$ - MD5. Ранее часто использовался, сейчас чаще используется SНА512, поскольку в MD5 обнаружились математические уязвимости.
• $2$, $2а$ - Вlowfish. Чаще используется в FreeBSD/OpenВSD, чем в
Linux.
• $5$ - SНА-256.
• $6$ - SНА-512. Используется в современных дистрибутивах.
•
•
•
....................................................................................
1 1,11 ,1 1 · 1111 11. 1н�,а н· 111 11 1 р, 11111.1
Форматы файлов /etc/passwd и /etc/shadow были приведены "для общего раз­
вития", чтобы вы понимали, чтр происходит.
Модифицировать учетную запись пользователя правильнее с
помощью команды usermod, а не с помощью редактирования
файла /etc/passwd.
t
u
Конечно, можно внести небольшие изменения, например, изменить полное
имя пользователя. А вот для изменения остальных параметров, например,
домашнего каталога, правильнее использовать usermod, чтобы потом.не де­
лать много ручной работы.
17.3.3. Изменение· и удаление учетных записей
Как было отмечено, ранее для модификации учетной записи пользователя
нужно использовать команду usermod, но прежде поговорим об изменении
пароля, так как изменение пароля - это тоже, по сути, изменение учетной
записи.
Для установки и изменения пароля пользователя используется команда
passwd:
# passwd <имя>
Если пользователь хочет изменить собственный пароль, то указывать имя не
нужно:
"'
"".,
а.
$ passwd
А вот теперь можно приступить к рассмотрению команды usermod. Формат
вызова этой команды следующий:
# usermod .[параметры] учетная_запись.
•
·-----------------------------------------------------------------------------------
u
<,
l{,LI, l,ill!I\
Параметры команды useпnod описаны в таблице 17.2.
Таблица 17.2. Параметры команды usermod
Параметр
Описание
-а, -append
Добавляет пользователя в дополнительную
группу. Используется только с параметром -G
-с, --comment
комментарий
Добавляет комментарий для учетной записи
пользователя
-d, --home каталог
Задает новый домашний каталог пользователя.
Если указать параметр -m, то текущий домашний каталог пользователя будет перенесен в новый домашний каталог, который будет создан,
если не существует
-е, --expiredate дата
Указывает дату устаревания учетной записи
пользователя. По достижении эrой даты учетная запись пользователя будет заблокирована.
Дата указывается в формате ГГГГ-ММ-ДД.
Если дату не указывать, то устаревание учетной записи будет отключено
-/, --inactive дни
После указанного числа дней, которые nройдут после устаревания пароля, учетная запись
будет заблокирована. Значение -1 означает, что
эта возможность не используется, а О - запись
будет заблокирована сразу же после устаревания пароля
-g, --gid группа
Указывает имя или GID первичной группы
пользователя. Группа с таким именем/GID
дол жна существовать. Все файлы в домашнем
,
каталоге пользователя, которые принадлежали
бывшей первичной группе, теперь будут принадлежать новой группе
'
•
............................................_. ...................................... .
11,11,-11~ llо11.юв.11е111 11 1р,11111,1
•
-G, --groups группа][,
группа2, ... , группаN}
Список дополнительных групп, в которых находится пользователь. Перечисление групп
осуществляется через запятую без дополнительных пробелов. Например, -G groupl,group2
-/, --login новое_имя
Изменяет имя пользователя на новое_имя
-L, --/ock
Блокирует учетную запись пользователя. Нельзя использовать этот параметр с -р или -1
-т, --move-home
Перемещает домашний каталог. Используется
вместе с параметром -d
-о, --non-unique
При использовании с -и позволяет указать не
уникальный UID (идентификатор пользователя)
-р, --password пароль
Шифрованное значение пароля, которое возвращает функция crypt. Использовать этот
параметр не рекомендуется, поскольку другие
пользователи увидят незашифрованный пароль
в списке процессов
-R, -root chroot
Выполняет изменения в каталоге chroot и использует файлы конфигурации из это_rо каталога
-s, --she/1 оболочка
Задает оболочку для пользователя. Если оболочка не указана, то будет использована оболочка по умолчанию
-и, --uid UJD
Задает новый UID пользователя, который должен быть уникальным
-И, --unlock
Разблокирует учетную запись пользователя
-Z, --se/inux-user
SEUSER
Новый пользователь SELinux для пользовательского входа
··················································································tlD
lkll, J i1111,
Рассмотрим несколько примеров:
# usermod -d /home/new_home -m ubuntu
# usermod -L bagira
# usermod -G admins,sudo mark
Первая команда задает новый каталог для пользователя ubuntu. Теперь он бу­
дет. называться /home/new_home. Старые файлы (из каталога /home/ubuntu)
будут перемещены в новый домашний каталог.
Вторая команда блокирует учетную запись пользователя bagira.
Третья команда вносит пользователя mark в группы admins и sudo.
Теперь рассмотрим команду userdel (см. табл. 17.3):
# userdel [параметры] пользователь
Таблица 17.3. Параметры команды userdel
Параметр
OUcall&
-f, --force
Удаляет учетную запись, даже если пользователь
работает в системе. Также будет удален домашний
каталог и почтовый ящик, даже если другой поль­
зователь использует тот же домашний каталог. Если
в файле /etc/login.defs параметр USERGROUPS_
ЕNАВ равенуеs, то будет удалена и первичная груп­
па пользователя, даже если она является первичной
и для другого пользователя. Довольно опасный
параметр, который может привести систему в нера­
бочее состояние
-r, --remove
Удаляет домашний каталог пользователя и почто­
вый ящик. Файлы этого пользователя, созданные на
других файловых системах, нужно искать и удалять
вручную
&!I'················································································'
J 1,111,1 J� JJ0.11,11111:IH' 11111 IJl\lllll,I
·-----------R, --root chroot
Выполняет изменения в каталоге chroot и использует �айлы конфигурации из этого каталога
-Z, --selinux-user
Удаляет все пользовательские сопоставления
SELinux для учетной записи пользователя
Пример удаления учетной записи ubuntu, домашний каталог и почтовый
ящик также будут удалены:
t userdel -r ubuntu
17.3.4. Группы пользователей
Для более простого управления пользователями их можно объединять в
группы. Например, можно задать ограничения ресурсов для группы пользо­
вателей. Тогда они будут распространяться на всех пользователей, входящих
в группу, и вам не придется их устанавливать для каждого пользователя от­
дельно.
Но прежде чем устанавливать права для группы, нужно эту группу создать.
Добавить группу можно командой groupadd.
Однако ничего плохого не случится, если вы просто отредактируете файл
/etc/group (не groups, а именно group!) и добавите группу вручную.
При добавлении группы следите, чтобы ID группы был уникальным. Если
же вы не хотите ни за чем следить, тогда просто введите команду groupadd:
t groupadd [параметры] имя_группы
С параметрами команды groupadd можно ознакомиться в справочной систе­
ме - тап groupadd .
•
··················································································&1
Все,, l .in11,
17.4. Графические конфигураторы
Управлять учетными записями пользователя можно и с помощью гра­
фических конфигураторов, что будет привычнее для бывших Windоws­
пользователей. В UЬuntu для управления учетными записями пользователей
нужно перейти в окно Настройки, далее - в раздел Пользователи (рис.
17.8). Для управления друтими учетными записями нажмите кнопку Разблокировать, введите свой пароль, после чего вы сможете управлять другими
учетными записями - изменять их пароли, создавать и удалять учетные за­
писи и т.д,
-="'
,.,
Рис. 17.8. Графический конфигуратор в Ubuntu
:::
,::
�
!�
В Astra Linux нужно открыть панель управления, а далее перейти в раздел
Безопасность, выбрать Политика безопасности и в открывшемся окне
перейти в раздел Пользователи (рис. 17.9). Немного запутано, но как есть .
•
ID······························-··------------------------------------------------·
11.ш.11 7 llo.11,ю11:111.'.111111p�11111,1
ФоiЙ/1
Пp.ituta
Н�ки
ф о о о
ПОМОЩI,,
+ - сi
1
> _;; Группы
е, ,�--·---�
ЬЭО8i1Т
�О/1
е/'IИ
__::;..
? I Haapoiir.м бuonac:tIOC1111
) J, ПОJlиtмки учетмоR ),jnж:и
Рис. 17.9. Управление пользователями в Astra Linux
17.5. Модули РАМ
Подключаемые модули аутентификации РАМ (PluggaЫe
Authentication Modules) предоставляют администраторам
дополнительные методы подтверждения подлинности
пользователя.
Модули РАМ - это не новинка в мире Linux. Они были разработаны очень
давно, но до сих пор есть даже в самых современных дистрибутивах Linux,
поскольку заменить их, по сути, нечем.
Модули РАМ позволяют использовать несколько схем аутентификации.
Большинство приложений, которые нуждаются в проверке подлинности
пользователя, используют РАМ. Модули РАМ позволяют реализовать аль-
•
·-----------------------------------------------------------··--···--·--------·-----
l lll ,. 1 i1111 \
тернативную аутентификацию, например, по отпечаткам пальцев или по сет­
чатке глаз, но для этого необходимо дополнительное оборудование, напри­
мер, сканер отпечатков. В этой книге мы рассмотрим традиционный вариант
использования РАМ - когда аутентификация происходит посредством вво­
да пароля с клавиатуры.
Основной файл конфигурации называется /etc/pam.conf.
В каталоге /etc/pam.d/ находится конфигурация для разных сервисов, кото­
рые поддерживают РАМ, например, в /etc/pam.d/sshd находится конфигура­
ция РАМ-модулей для SSH, в /etc/pam.d/gdm-passwd - конфигурация паро­
ля для менеджера дисплея GDM и т.д.
В каталоге /etc/security также есть файлы конфигурации, относящиеся к
РАМ, например, файл ассеss.соnfуправляет доступом в систему.
Рис. 17.1О. Содержимое каталога /etc/security
•
liZI···············································:··································
1 1,111,1 1 �
J Jo.11, IOl\a Н' 111 11 1 р� 11111,1
Безопасность вашей системы зависит от используемых вами модулей.
Модули хранятся в каталоге /liЬ/security или /lib64/security (для 64�битных
систем), однако некоторые дистрибутивы не следуют этому стандарту.
К примеру, в некоторых системах модули можно найти в каталоге /usr/liЫ
security. При желании можно написать и собственные модули, но для начала
следует разобраться с уже имеющимися. Ниже приведен список наиболее
часто используемых модулей. Больше информации по каждому из них мож­
но получить, набрав man модуль, к примеру, man pam_pwcheck. Обратите
внимание, что нет "стандартного списка" модулей. Их состав варьируется от
дистрибутива к дистрибутиву.
• pam_access - разрешает или запрещает доступ, в зависимости от IР­
адреса, имени пользователя, имени хоста или доменного имени и т.п. По
умолчанию правила доступа определены в файле /etc/security/access.conf.
Когда пользователь входит, проверяются правила доступа до первого
совпадения, и выносится решение, разрешить или запретить доступ. Так­
же смотрите модуль pam_time - там другие ограничения.
• pam_cracklib и pam_pwcheck - предоставляют функции проверки
прочности пароля (проверки на легкость угадывания или повторяемость).
У пользователя спрашивают пароль, и если он проходит предустановлен­
ные правила и считается прочным, тогда нужно ввести его еще раз для
проверки правильности ввода.
• pam_deny- безусловно запрещает доступ. Этот модуль можно исполь­
зовать для блокирования пользователей как политику по умолчанию. См.
также pam_pennit.
• pam_echo - вюводит предустановленное текстовое сообщение. См. так­
же pam_motd.
• pam_env - позволяет присвоение значений переменным окружения.
Правила по умолчанию берутся из файла /etc/security/pam_env.conf.
• pam_ехес ---, вызывает внешнюю программу.
• pam_lastlog- выводит дату и время последнего входа в систему.
• pam_limits - устанавливает ограничения на системные ресурсы, ис­
пользуемые пользователем. Ограничения по умолчанию берутся из фай­
ла /etc/security/limits.conf.
•
··················································································tED
lkc1, l,inux
• pam_listfile - разрешает или запрещает сервис в зависимости от значе­
ний в файле. К примеру, если вы хотите открыть FТР-доступ лишь для не­
которых пользователей, перечень которых указан в файле /etc/ftpusers_ok,
нужно добавить строку auth requiredрат_listfile.so item =user sense = allow
file =letc/ftpusers_ok onerr =fail в файл /etc/pam.d/ftpd. См. также модуль
pam_nologin.
• pam_mail - сообщает пользователю о наличии свежей электронной
почты.
• pam_mkhomedir - создает домашний каталог пользователя, если он не
существует на локальной машине. Таким образом, можно использовать
централизованную авторизацию (к примеру, в NIS или LDAP) и создавать
домашние каталоги лишь при необходимости.
• pam_motd- выводит "сообщение дня". См. также модуль pam_echo.
• pam_nologin - запрещает доступ, когда существует файл /etc/nologin.
• pam_permit- безусловно разрешает доступ - очень небезопасно! См.
также модуль pam_deny.
• pam_rootok- разрешает доступ для пользователя root без дополнитель­
ных проверок. Обычно этот модуль используется в /etc/pam.d/su, чтобы
пользователь root мог войти под любым другим пользователем даже без
ввода пароля. Файл должен содержать следующие строки (обратите вни­
мание на вторую строку, см. модуль pam_wheel):
auth
auth
sufficient
required
pam_rootok.so
pam_wheel.so
auth
required
pam_unix.so
• pam_succeed_if - проверяет некоторые характеристики учетной записи,
к примеру принадлежность к определенной группе, значение ШD и т.п.
• pam_time - запрещает доступ к службе в зависимости от дня недели и
времени дня. По умолчанию правила берутся из файла /etc/security/time.
conf. Однако запрет накладывается лишь на момент входа в систему. Спо­
соба принудительно заставить пользователя выйти из системы нет.
:=
:::;
�,;
;;
=
• раm_umаsk-устанавливает маску создания файлов.
• pam_unix или pam_unix2 - классическая аутентификация в UNIXстиле, основана на файлах /etc/passwd и /etc/shadow. См. также модуль
pam_userdb.
•
111------------------------------------------------------------;---------------------·
11,11,,11~ ll11.11.11111aн·.111 111p�11111.1
• pam_userdb- аутентифицирует пользователя с пом�щью базы данных.
См. также модуль pam_unix.
• pam_warn - заносит название службы, номер терминала, пользователя
и другие данные в системный журнал. Модуль можно использовать везде,
он не влияет на процесс аутентификации.
• pam_wheel - позволяет rооt-доступ лишь для членов группы wheel.
Часто этот модуль используется для su, чтобы лишь избранные пользова­
тели могли пользоваться этой программой. Пример использования можно
найти в описании модуля pam_rootok.
t
u
Так как эта книга не посвящена отдельно РАМ, лучше всего рассматривать
РАМ на отдельных примерах.
17.5.1. Ограничиваем доступ к системе по IР-адресу
Файл /etc/security/access.conf используется модулем
pam_access.so, чтобы определить, каким пользователям
позволено входить в систему и с каких IР-адресов.
Если открыть файл access.conf, то в нем будет достаточно много различных
примеров, которые хорошо прокомментированы. Если вы знаете английский
язык, то не составит особого труда во всем разобраться самостоятельно.
Формат этого файла следующий:
разрешения
пользователи
ИСТОЧНИКИ
"'"'
с,.
Разрешение может начинаться с символа "+" (доступ разрешен) или "-"
(доступ запрещен). Если нужно указать несколько пользователей, то их имес
на разделяют пробелом. Если нужно сделать исключение для некоторых
пользователей, то перед их именами указывают служебное слово ЕХСЕРТ.
Третье поле может содержать список из одного или более имен консолей
(tty) - для несетевого доступа к системе, имен узлов (для сетевого досту­
па), доменных имен (начинаются с "."), IР-адресов узлов, IР-адресов сетей
•
·------··--·······-··-··-··-····-····-··--····················-····--··--·----··-·811
с,.
lk, 1, 1 i1111\
(заканчиваются"."). Также можно указать все источники (ALL), ни один из
источников (NONE) или только локальные источники (LOCAL).
Теперь несколько примеров:
-:ALL ЕХСЕРТ root:ttyl
Первая консоль - это только консоль root. Другим пользователям запреще­
но ее занимать. Мы запрещаем доступ (-) всем пользователям (ALL), кроме
(ЕХСЕРТ) пользователя root на консоли ttyl.
Следующий пример - разрешение регистрации как root с определенных IР­
адресов:
+ : root
+
root
192.168.1.1 192.168.1.4 192.168.1.9
127.0.0.1
Если нужно разрешить регистрацию root со всей подсети 192.168.1.0, тогда
укажите адрес этой подсети, указав точку вместо О:
+ : root
192.168.1.
Самый жесткий пример - запрещаем root вообще входить в систему:
root
ALL
�--------------------------------------------------------------,
1
1
: ПРИМЕЧАНИЕ. Обратите внимание, что комментарии в этом :
: файле начинаются с #, если вы хотите использовать один из i
! примеров, приведенных в файле, убедитесь, что вы ра скоммен- !
: тирова ли нужную вам строку.
:
1
1
�--------------------------------------------------------------4
Чуть выше мы разрешили вход пользователя rqot с определенных IР-адресов.
К сожалению, одного только редактирования access.conf будет недостаточ­
но. Нужно еще отредактировать соответствующие файлы в /etc/pam.d.
•
--------------------·--------------------------------------------.-------------------·
111в11
llо11.н1в,11, в1111р,11111.1
Нас интересует регистрация по SSH (telnet уже не используется, поэтому вы
будете регистрироваться по SSH) и обычная регистрация в системе. Поэтому
нам нужно отредактировать файлы /etc/pam.d/sshd и /etc/pam.d/system-auth..
В этих файлы вам нужно добавить строчку:
account
required
/lib64/security/pam_access.so
Если у вас 32-разрядная система, тогда нужно добавить немного другую
строку:
account
required
/liЬ/security/pam_access.so
17 .5.2. Ограничиваем время входа в систему
Безопасностью системы лучше управлять, когда вы бодрствуете. Поэтому
имеет смысл разрешить регистрацию только в это время, например, с 8:00 до
19:00 (вдруг кто-то немного задержится на работе).
Откройте файл /etc/security/time.conf и добавьте в него строку:
login;tty* & !ttyp*; !root & admin & ; !AlOB00-1900
Здесь мы разрешаем пользователям регистрироваться только с 8:00 до 19:0.0.
На пользователей root и admin это правило не распространяется. Также в
файле time.conf вы найдете еще несколько примеров.
Как и в случае с предыдущим файлом, вам нужно изменить файлы /etc/
pam.d/sshd и /etc/pam.d/system-auth, в которые нужно добавить строку:
account
required
/lib64/security/pam_time.so
или строку (для 32-разрядной системы):
•
account
required
/liЬ/security/pam_time.so
··················································································88
t
u
17.5.3. Ограничение системных ресурсов с помощью РАМ
С помощью РАМ-модулей можно ограничить системные ресурсы, что по­
лезно для защиты системы от DоS-атаки. Принцип DоS-атаки заключается
в том, что злоумышленник узурпирует все ресурсы системы, в результате
обычным пользователям ничего не остается. Ограничив системные ресурсы,
вы можете смягчить последствия DоS-атаки на ваш сервер. Конечно, полной
защиты этот способ не даст, но все равно ваш сервер будет продолжать рабо­
тать, хоть и медленно. Все же это лучше, чем ничего.
Ограничить системные ресурсы можно с помощью /etc/security/limits.conf.
Формат записей в этом файле такой:
домен
тип
ресурс
значение
В качестве домена указывается или имя пользователя, или имя группы поль­
зователей (@имя). Также можно указать звездочку (*), если ограничение
должно распространяться на всех пользователей.
Ограничения бывают мяrкими (soft) и жесткими (hard).
Мягкое. ограничение можно незначительно превысить, жесткое превысить
нельзя.
Возможные значения третьего поля задают тип ограничиваемого ресурса и
представлены в таблице 17.4.
Таблица 17.4. Ресурсы, которые можно ограничить с помощью limits.conf
Элемент
Описание
core
Позволяет ограничить размер файла ядра (в килобайтах)
cpu
Задает максимальное процессорное время (в минутах)
•
....................................................................................
11,1в,117 llн.11,юна1с.111111р�1111ы
data
Определяет максимальный размер сегмента данных (в килобайтах)
fsize
Позволяет указать максимальный размер файла (в килобайтах)
maxlogins
Определяет максимальное количество параллельных регистраций пользователя. По умолчанию пользователю разрешается войти неограниченное количество раз разными
способами - по SSH, FTP, с разных консолей и т.д.
nofile
Задает максимальное число одновременно открытых
файлов
nproc
Определяет число процессов, которые может запустить
пользователь
priority
Задает приоритет, с которым будут выполняться процессы
пользователя или группы
stack
Максимальный размер стека (в килобайтах)
-
Последнее поле определяет значение лимита. Теперь несколько примеров:
*
@ssh users
@ssh users
hard
hard
hard
maxlogins
nproc
fsize
3
5
24576
В первом случае мы ограничиваем число одновременных регистраций поль­
зователей до 3 (консоль, Xl 1, если есть, и SSH - этого более чем достаточ­
но). Во втором пользователям из группы ssh_users мы разрешаем запускать
не более 5 процессов одновременно. Также SSН-пользователям не разреша­
ется создавать файлы размером более 24 Мб.
Обратите внимание: здесь мы просто задаем лимит на максимальный раз­
мер файла. В принципе, 24 Мб вполне достаточно даже для хранения фото­
графий с зеркальной камеры и больших документов Word, содержащих
•
....................................................................................
Нес 1. 1 i1111,
изображения и другие объемные объекты. А видео и файлы большего разме­
ра пусть пользователи хранят на своих компьютерах или входят иным спосо­
бом, например, по FTP, где можно более качественно ограничить операции
с файлами.
После редактирования /etc/securityЛimits.conf никакие другие файлы редак­
тировать не нужно. Но описанные вами изменения будут действовать для
новых сеансов пользователей, поэтому желательно перезагрузить систему,
чтобы изменения действовали сразу для всех пользователей.
Если вам нужна дополнительная информация о РАМ, предлагаем ознако­
миться с официальной документацией, доступной по адресу:
https://mirrors.edge.kernel.org/puЬ/linux/libs/pam/
•
1111··················································································
Глава 18.
ЕГО ВЕЛИЧЕСТВО
ЯДРО
л •
lkcl, 1 i1111\
18.1. Что такое ядро
В этой главе мы погов�рим о ядре Linux.
Ядро Linux - это и есть основная программа, которую
запускает загрузчик при выборе загрузочной метки.
У вас (даже если установлен всего один дистрибутив) может быть установ­
лено несколько ядер. Например, вы можете установить дистрибутив, в нем
будет одна версия ядра, затем установить более новую версию ядра вруч­
ную. При заrрузке вы сможете выбрать нужную вам версию ядра.
На рис. 18.1 показано меню заrрузчика Astra Linux, где пользователю пред­
лагается выбрать одну из версий ядра - generic или hardened.
Вторая версия повышает общую защищенность системы от взлома.
Так, hardened-ядpo умеет блокировать массу потенциально опасных опера­
ций, а компилятор hardened-gcc позволяет защитить компилируемые им про­
rраммы от взлома типовыми методами вроде переполнения буфера.
Грубо говоря, если у вас стоит "дырявая" версия проrраммы Х и ее пытается
взломать хакер, то в обычной системе у него это получится, а в hardened не получится, да еще и в лог запись пойдет.
•
....................................................................................
I .1ава I Х Е1 u вс.шчсс I во }11ро
Рис. 18.1. Выбор ядра при загрузке системы
По состоянию на 2024 год последней стабильной версией ядра является вер­
сия 6.5. Од.f\ако не нужно думать, что в вашем дистрибутиве будет самая по­
следняя версия. Как правило, в вашем дистрибутиве будет именно та версия
ядра, которая была стабильной на момент выпуска дистрибутива.
Номер версии ядра выводится при входе в систему (если вы входите в консо­
ли), или его можно узнать командой uname -а (рис. 18.2).
На рис. 18.2 показано, что в UЬuntu 20.04, например, используется версия
ядра 5.4.0 - далеко даже не 6.5.
При загрузке ядро выводит сообщения, просмотреть которые можно ко­
мандой:
•
dmesg I less
··················································································811
1\, CI, 1 illll\
Рис. 18.2. Команда ипате-а
Обычно сообщения ядра понятны сами по себе без особых комментариев.
Например, в самом начале выводится версия ядра и переданные ядру пара­
метры:
0.000000] Linux version 5.4.0-39-generic (build d@lcy01amd64-016) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) 143-Ubuntu
SMP Fri Jun 19 10:28:31 UTC 2020 (Ubuntu 5.4.0-39.43-generic
5.4. 41)
0. 000000] Co m mand line: BOOT_IМAGE=/boot/vmlinuz-5. 4.0-39generic root=UUID=05f d3e4·e-1605-4 78c-8 dЬ9-bбdf62a0lad3 ro quiet
splash
Карта физической памяти:
0.000000] BIOS-e820:
0.0000.00] BIOS-e820:
O.OOOOOO]·BIOS-e820:
0.000000] BIOS-e820:
[� Ox0000000000000000-0x000000000009efff] usaЫe
[mem Ox000000000009i'OOO-Ox000000000009fiff] reserved
[mem OxOOOOOOOOOOOcaOOO-OxOOOOOOOOOOQcЬfff] reserved
[mem OxOOOOOOOOOOOdc OOO-OxOOOOOOOOOOOШff] reserved
•
.....................................................................................
l 1 11:11,;
l 111111·111•1t·,·11111}l1p11
0.000000] BIOS-e820: [mem OxOOOOOOOOOOlOOOOO-OxOOOOOOOOlfedflff] usaЫe
0.000000] BIOS-e820: [mem OxOOOOOOOOlfeeOOOO-OxOOOOOOOOlfefefffJ ACPI data
ACPI NVS
0.000000] BIOS-e820: [mem OxOOOOOOOOlfeffOOO-OxOOOOOOOOlfefifff]
usaЫe
0.000000] BIOS-e820: [mem O�OOOOOOOOlffOOOOO-OxOOOOOOOOlffftfff]
reserved
0.000000] BIOS-e820: [mem OxOOOOOOOOeOOOOOOO-�xOOOOOOOOeffftfff]
0.000000] BIOS-e820: [mem OxOOOOOOOOfecOOOOO-OxOOOOOOOOfecOftff] reserved
0.000000] BIOS-e820: [mem OxOOOOOOOOfeeOOOOO-OxOOOOOOOOfeeOOfff] reserved
reserved
0.000000] BIOS-e820: [mem OxOOOOOOOOfffeOOOO-OxOOOOOOOOfffffjffJ
Сообщит, что найдена SМР-таблица (значит, наша машина является много­
процессорной или хотя бы содержит процессор с несколькими ядрами):
0.000000] found SMP МР-tаЫе at [mem OxOOOfбb f O-OxOOOfбbff]
mapped at [ffff8800000fбbf0]
Выведет информацию о процессоре:
[.
0.694470] smpboot: CPUO: Intel(R) Core(TM) i5-7200U CPU@
2.50GHz (family: Охб, model: Ох8е, stepping: Ох9)
0.715491] smp: Brought up 1 node , 2 CPUs
Частоту процессора и рейтинг в "попугаях":
0.000001] tsc: Detected 2711.997 MHz processor
0.715491] smpboot: Total of 2 processors activated (10847.98
BogoMIPS)
BogoMIPS - это псевдорейтинr, который показывает, сколько
миллионов пустых операций процессор может выполнить за
секунду.
Судить о производительности по этому рейтингу можно только косвенно.
Исследуйте вывод ядра самостоятельно. Уверен, в нем вы найдете много ин­
тересного, в том числе и о своей системе.
•
··················································································Cil
--------- --
"
!-
�
----------
1
Вёёl, l.iщix
Поскольку ядро - это программа, то ней можно передать параметры, вли­
яющие на поведение ядра. О параметрах ядра мы поговорим в следующем
разделе, а сейчас рассмотрим несколько не менее интересных моментов.
18.2. Параметры ядра
Первым делом разберемся, как передать ядру параметры. Для начала в меню
загрузчика нужно выбрать загрузочную запись, которую вы хотите отредак­
тировать (рис. 18.1). Далее нужно нажать е для редактирования конфигу­
рации загрузчика (рис. 18.3). Среди строк конфигурации GRUВ2 найдите
строку, которая начинается со слова "linux". Это и есть строка загрузки ядра
Linux. Сразу после "linux" указывается nуть к ядру, а все, что после него,
- это и есть параметры ядра. Отредактируйте имеющиеся параметры или
добавьте новые параметры в конец строки.
Рис. 18.3. Редактирова11ие параметров ядра
•
118---------------------------------------------------------------------------------·
1 1,Ш,l IX [111111.'.lll'ICCIBO Я.1ро
Ранее было рассказано, как сохранить конфигурацию GRUВ2 (после пере­
загрузки внесенные вами изменения будут потеряны, поэтому их нужно
внести в конфигурационные файлы GRUВ2), а пока нажмите Ctrl + Х для
загрузки с отредактированной вами конфигурацией.
Самые часто используемые параметры ядра описаны в таблице 18.1.
Таблица 18.1. Часто используемые параметры ядра Linux
Описание
Параметр
Параметры корневой файловой системы
•
rооt =устройство
Указывает устройство, содержащее корневую файловую систему. Вы можете указать как короткое имя
устройства (/dev/sdal), та� и UUШ устройства
rootfstype=mun
Тип корневой файловой системы . Обычно в нем нет
необходимости, поскольку ядро само определяет
типФС
rootwait
Ядро будет ждать появления устройства с корневой
файловой системой. Вы можете держать ядро на
жестком диске, а корневую файловую систему на
USВ-диске. С точки зрения производительности,
может, и не очень хорошо, но зато неплохо с точки
зрения безопасности, когда весь жесткий диск с
данными можно быстро извлечь и удалиться
rootdelay=N
Подождать N секунд перед монтированием файловой системы
ro
Монтирует корневуюФС в режиме "только чтение".
После проверки утилитой fcsk корневаяФС будет
перемонтирована в режим rw
·-----------------------------------------------------------------------------------
lkc1, l.i1111x
rw
'
Монтирует корневую ФС в режим "чтение/запись".
Но тогда вам нужно отредактировать сценарии инициализации системы и удалить из них вызов утилиты fsck, поскольку проверять ФС в режиме rw этой
утилитой нельзя
Параметры, связанные с аппаратными средствами
noscsi
Отключает поддержку SCSI
nousb
Отключает поддержку USB
nopcmcia
Отключает поддержку РСМСIА-карт
поарiс
Отключает поддержкуAPIC. Полезен, если вы увидите при загрузке сообщение об ошибке, связанной
cAPIC
nodmraid
Отключает программные RАID-массивы, созданные
на уровне BIOS
тет =ххххМ
Задает точный размер оперативной памяти, например, mem=4096M
vga =peжuм
Задает VGА-режим. Можно попросить ядро позволить вам выбрать рдин из режимов, для этого передайте ядру такой параметр - vga=ask
Парсщетры управления numaнue,w
поарт
Отключает расширенное управление питанием АРМ
acpi = ojf
ОтключаетACPI (Advanced Configuration and Power
Interface)
pci=noacpi
ОтключитьAPCI для PCI
•
...................................., ............................................... .
1 1,11\,1 IS
(•111 llt'.lll'lt't'IIIII Я l(IO
Общесистемные параметры
'
iпit =программа
Позволяет указать щ�:стему инициализации
reboot =mun
Указывает тип перезагрузки: warm (теплая) или cold
(холодная)
single
Однопользовательский режим, который может использоваться для восстановления системы в случае
сбоя
quiet
Отключает большинство сообщений ядра при загрузке системы
boot_delay=N
Задает задержку в N секунд перед выводом следующего сообщения ядра. Система будет загружаться
очень медленно, лучше дождаться загрузки, выполнить команду dmesg и в спокойной обстановке прочитать все сообщения
8.3. Обновление ядра до версии 5. 7
Любой Linuх-пользователь может скачать исходный код ядра и откомпили­
ровать его. Должен отметить, ·что в последнее время компиляция ядра ис­
пользуется очень и очень редко. Хотя бы потому, что в репозиториях совре­
менных дистрибутивов уже есть образы ядра, в которых активированы те
или иные функции.
Чаще всего переходят на более новую версию ядра для обеспечения под­
держки тех или иных устройств, повышения производительности системы
или же для устранения каких-либо ошибок, например, в версии 5.4 драйвер
звуковой карты может работать как-то не так, зато в версии 5.7 все будет
хорошо. Чтобы не дожидаться, пока выйдет новая версия дистрибутива (а
ждать придется как минимум полгода), проще установить новую версию
ядра самостоятельно.
•
Это можно сделать, как уже было отмечено, двумя способами .
··················································································&1
"'"'
с
' с
: с::
lkcl, l.irHI'\
Первый - компиляция ядра из исходного кода. Метод так себе:
• Вам нужно установить тонны программного обеспечения, необходимо­
го для разработчиков. Это ПО понадобится вам только один раз, потом
его придется илй удалять, или оно будет просто занимать много места на
жестком диске. А если у вас небольшой SSD-диск, то проблема свободно­
го места еще более актуальна для вас.
• Процесс компиляции требует наличия большого количества свободного
места на диске, которого у вас может и не быть.
• Процесс компиляции требователен к ресурсам и занимает много време­
ни. В принципе, можно оставить компьютер на ночь и утром получить
готовое ядро. Здесь уже на ваше усмотрение.
Второй способ заключается в установке уже откомпилированного ЯдРа. Все,
что вам нужно сделать, - это скачать и установить несколько dеЬ-пакетов.
Способ, который подойдет большинству пользователей - он быстрый, не
требует много места на диске, а результат будет тем же.
Рассмотрим, как установить ядро 5.7.0 в UЬuntu и других DеЬiаn­
ориентированных системах (Mint, Astra Linux и др).
Существуют две основные ветки ядра - generic (для всех
систем) и lowlatency (для систем, где нужна низкая задержка,
например, для записи аудио, для работы с видео).
Вам нужно загрузить следующие пакеты:
linux-headers-5.7.0-хххххх_all.deb
linux-headers-5.7.0-xxx-generic(/lowlatency)_ххх_amd64.deb
linux-modules-5.7.О�xxx-generic(Лowlatency)_ххх_amd64.deb
Iinux-image-xxx-5.7.0-xxx-geperic(Лowlatency)_ххх_amd64.deb
В именах пакетов исправьте generic на lowlatency, если вам это нужно.
Команды для загрузки будут такими:
ID················································································'
\ 1.11\,1 ] S
1 1 О IH'. lll'll'l' 11\0 }1 ljlO
cd /tmp/
wget -с https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.7/linux­
headers-5.7.0-050700_5.7.0-050700.202905312130_all.deb
wget �с https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.7/linux­
headers-5.7.0-050700-generic_5.7.0-050700.202005312130_amd64:deb
wg7t -с https://kernel.ubuntu.com/~kernel-ppa/mainline/vS.7/linux­
image-unsigned-S.7.0-050700-generic_S.7.0_-050700.20200531·2130_
amd64.deb
wget -с https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.7/linux­
modules-5.7.0-050700-generic_5.7.0-050700.202005312130_amd64.deb
Мы загружаем все эти пакеты во временный каталог. После чего нужно их
установить:
sudo dpkg -i *.deb
После установки загруженные dеЬ-фаifлы можно удалить для экономии
места:
rm *.deb
Как только пакеты будут установлены, перезагрузите систему. При переза­
грузке выберите новую версию ядра в меню загрузчика GRUВ2.
Если что-то пошло не так, удалить версию 5.7.0 можно командой:
.sudo dpkg --purge linux-image-unsigned-5.7.0-050700-generic
•
··················································································8D
с,.
,;
=
с,.
,..
==
�
=
;Е
о
,,:
с,.
Глава 19.
МАРШРУТИЗАЦИЯ И
НАСТРОЙКА БРАНДМАУЭРА
•
lkc:1,l.i1111,
19.1. Просмотр таблицы маршрутизации
Отправляемые данные, как вы знаете, не отправляются целиком - они
разбиваются на меньшие части - пакеты.
Маршрутизация - это процесс перенаправления пакета по
различным сетям вплоть до места назначения.
В сетях TCP/IP информация маршрутизации хранится в виде таблицы марш­
рутизации. Таблица маршрутизации содержит ряд простых правил. Напри­
мер, если пакет отправляется в сеть 1, он должен быть отправлен на марш­
рутизатор Ml, если пакет отправляется в сеть 2, то его нужно отправить на
маршрутизатор М2. Пакет, отправляемый на любую другую сеть (не 1 и не
2), нужно отправить на маршрутизатор М (шлюз по умолчанию).
Получив пакеты, маршрутизаторы Ml, М2 и М сами знают, что с ними де­
лать. Возможно, передать дальше другому маршрутизатору, а может, отпра­
вить узлу-получателю пакета. Все зависит от такой же таблицы маршрути­
зации, но уже на тех маршрутизаторах. Что будут делать маршрутизаторы с
полученными пакетами - это их дело, наше дело - доставить пакеты до
этих маршрутизаторов.
Таблица маршрутизации ядра Linux хранит данные о
маршрутизации.
•
Каждая строка в этой таблице содержит несколько параметров - адрес сети
назначения, маску сети, флаги, интерфейс и т.д.
................................. , ................................................. .
1 1ав,1 19 \Japllfl)� llllallllll 1111.1с1ршi1,а бра11 IШI� IJJa
Ядро при отправке пакета исследует таблицу маршрутизации: оно определя­
ет, в какую сеть направляется пакет - если она есть в таблице маршрутиза­
ции, то пакет отправляется через заданный в таблице интерфейс.
Если нужной сети в таблице нет, пакет отправляется на шлюз по умолчанию
или же (если он не задан) отправителю пакета передается IСМР-сообщение
"Network UnreachaЬ\e" (сеть недоступна).
Просмотреть таблицу маршрутизации ядра можно или командой netstat
-rn, или командой route:
Jt netstat -rn
Jt route
Вывод команд немного отличается, как видно на рис. 19.1. Здесь видно, что
шлюз по умолчанию - 192.168.52.2. По сути, это самая простая таблица
маршрутизации, какая только может быть.
Рис. 19.1. Команды netstat -rn и route
Разберемся, что содержится в столбцах таблицы маршрутизации.
• Столбец Destination хранит адрес сети назначения, Gateway - шлюз
(маршрутизатор), которому нужно отправить пакеты, чтобы они достигли
сети из колонки Destination.
•
• Столбец Genmask содержит маску сети, а Flags - флаги маршрута. Фла­
ги могут быть следующими:
··················································································-ID
1 �' l 1
1 1111f \
» U - маршруr активен;
» Н - маршруr для хоста (Н- host), а не для сети;
» G - флаг шлюза (G- gateway);
» D - динамический маршруr, который был установлен демоном
маршруrизации;
» М - маршруr, который был модифицирован демоном маршрутиза­
ции;
» С - запись кэширована;
»
- запрещенный маршруr.
• Колонка MSS (Мaximum Segment Size) содержит значение MSS- макси­
мальный размер сегмента для ТСР-соединений по этому маршруту.
• Столбец Window показывает размер окна по умолчанию для ТСР­
соединений по этому маршруту.
�:
:; :
- '
"'
::,
• • Столбец irtt - это начальное время RТТ. В большинстве сетей время
RТТ не нужно изменять, но в некоторых медленных сетях время RТТ
можно увеличить, чтобы избежать лишних повторений пакетов. Система
отправляет пакет и ждет некоторое время (RТТ) от получателя подтверж­
дения получения. Если подтверждения получения не было, тогда система
отправляет пакет еще раз. В медленных сетях подтверждение получения
может не успеть дойти до отправителя пакета, поэтому RТТ увеличивают
(это можно сделать с помощью команды route).
• Столбец Iface задает интерфейс, используемый для отправки пакета.
• В выводе команды route вместо столбцов MSS и Windows есть колонки
Metric и Ref. Первая содержит метрику, то есть расстояние до маршрути­
затора в хопах (переходах): один хоп - это один маршруrизатор.
• Столбец Ref- это количество ссьшок на маршруr. Ядром Linux этот па­
раметр не учитъ1вается.
19.2. Изменение и сохранение таблицы
маршрутизации
•
-----------------------------------------------------------------------------------·
1 1,111.1 1 '1
\lap111p� 1111ащ111 11 11а.· 1 рс,111,а iipa11 1\1:t\ 1ра
Для редактирования таблицы маршрутизации используется команда route.
Записи в таблице маршрутиз·аи.ии бывают статическими (добавляются ко­
мандой route) или динамическими (добавляют1,я по мере работы системы
демоном маршрутизации).
Вот как можно добавить маршрут по умолчанию командой route:
# route actct· default gw 192.168.1.1 eth0
-
Думаю, эта команда понятна: 192.168.1.1 - это новый шлюз по умолчанию,
а пакеты к нему будут отправляться через интерфейс ethO.
При перезагрузке таблица маршрутизации очищается, поэтому она формируется вручную, то есть командами route, а не каким-либо демоном марш­
рутизации, и эти команды нужно добавить в конфигурационные файлы сети
или сценарии инициализации системы, чтобы внесенные вами изменения не
были потеряны.
Шлюз по умолчанию можно сохранить в файле /etc/
sysconfig/networking-scripts/ifcfg-имя_интepфeйca.
В листинге 19.1 приводится пример этого файла.
ЛИСТИНГ 19.1. Файл /etc/sysconfig/networking-scripts/
ifсfg-имя_интерфейса
DEVICE=eth0
HWADDR=00:0C:29:E8:F0:C4
TYPE=Ethernet
ONBOOT=yes
NETМASK=255.255.255.0
IPADDR=192.168.l.101
GATEWAY=l92.168.l.l
NETWORK=l92.168.1.0
BROADCAST=192.168.1.255
BOOTPROTO=none
NM CONTROLLED=no
•
··················································································8D
lkc1, l,i1111x
Параметр GATEWAY позволяет указать IР-адрес шлюза. Но, как правило,
вам не придется редактировать файлы настройки сетевых интерфейсов
обычных компьютеров, поскольку такая общая информация, как IР-адрес
шлюза, задается DНСР-сервером примерно так:
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 (марш­
рут к узлу) .
�
�
:;
• Третий параметр, адресат, содержит адрес сети, если вы задаете маршрут к сети, или адрес узла, если добавляется маршрут к узлу. Если вы
задаете маршрут по умолчанию, то этот параметр вообще не нужно ука-
"'"
�
зывать.
• Параметр шлюз задает IР-адрес шлюза. Можно также указать и доменное
имя, но обычно указывается IР-адрес.
• Параметр метрика задает число переходов (маршрутизаторов) на пути
к адресату. Парам_етр dev нужно указывать, если в системе установлено
несколько сетевых интерфейсов и нужно указать, через какой именно се­
тевой интерфейс нужно отправить пакеты. Оба последних параметра не
являются обязательными.
Рассмотрим несколько примеров использования команды route:
1
# route add -net 192.168.16.0 netmask 255.255.255.0 dev еnsЗЗ
# route add -net 192.168.16.О netmask 255'.255.255.0 gw 192.168.16.1
# route add -net 10.100.0.0 netmask 255.0.0.О reject
# route del 10.100.0.0
•
ID--------------------------------------·--------------. ---·--·----------'-·--------·
\ 1,IВ,1 1 '1 \Jаршр� 111 !aЦIIII 11 11:IC 1 \Hllll,:I UJl:111 1'1:1� IJl:I
Первая команда добавляет маршрут к сети 192.168.16.0 через устройство
еnsЗЗ. Как видите, мы не указываем IР-адрес шлюза, а просто указываем
имя интерфейса - все паке;rы, адресованные сети 192.168.16.0, будут
отправлены через интерфейс еnsЗЗ.
Вторая команда добавляет маршрут к сети 192.168.16.0 через шлюз
192.168.16.1.
Все пакеты, адресованные этой сети, будут отправлены маршрутизатору с
IР-адресом 192.168.16.1. В этом случае сетевой интерфейс указывать не обя­
зательно.
Третья команда задает запрещающий маршрут. Отправка пакетов в сеть
10.100.0.0 запрещена (параметр reject). Последняя команда удаляет ранее за­
данный запрещающий маршрут.
Удаление маршрутов в Linux заслуживает отдельного разговора. Команда
удаления маршрута выглядит так:
# route del IР-адрес
В Linux нет параметра :f (как в FreeBSD), который позволяет удалить сразу
все маршруты (то есть очистить таблицу маршрутизации), поэтому вам при­
дется ввести ряд команд route.
Как уже было отмечено, таблица маршрутизации очищается при перезагруз­
ке. Чтобы этого не произошло, маршруты нужно определить в файлах кон­
фигурации сети.
В Deblan / Astra Linux / старых версиях Ubuntu настройка
статических маршрутов производится в файле /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
•·-----------------------------------------------------------------------------------
lkll, 1 i1111,
Тогда в файл /etc/network/interfaces нужно добавить следующие строки:
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 ethO
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 ethO
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 ethO
В этом примере пакеты ко всем трем сетям направляются на шлюз
192.168.17.254, а он уже сам решает, что с ними делать. Прежде чем мы рас­
смотрим настройку брандмауэра, нужно отметить, как превратить компью­
тер в шлюз. Для этого нужно разрешить пересылку пакетов протокола IPv4
(IPv4 forwarding).
Для этого добавьте значение 1 в файл /proc/sys/net/ipv4/ip_forward:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Конечно, после перезапуска это значение будет потеряно. Чтобы его сохра­
нить, добавьте в файл /etc/sysctl.conf следующую строку:
net.ipv4.ip_forward=O
Итак, ваш компьютер теперь превращен в шлюз. Но сам по себе перенаправ­
лять пакеты он не будет. Нужно задать ряд правил перенаправления пакетов.
Для этого мы будем использовать брандмауэр iptaЫes, который имеется во
всех современных дистрибутивах. Именно о нем и пойдет речь в следующем
разделе. Забегая вперед, скажу, что iptaЫes можно использовать не только
для настройки шлюза, но и просто для защиты сервера или рабочей станции
от нежелательных подключений.
В более новых версиях UЪuntu (начиная с версии 18.04) настройка марш­
рутов осуществляется через файл /etc/netplan/01-netcfg.yaml. Откройте этот
файл:
sudo nano /etc/netplan/01-netcfg.yaml
•
ID--------------------------------------·-------------------------------------------·
1 1.111.1 ) '1
\lаршр, 1 111:щш1 11 11:1,· 11111111,а iip:111 1\1:1� 1р:1
В нем вы найдете конфигурацию по умолчанию, которая может быть при­
мерно такой:
11 This file describes the network interfaces availaЬle on your
systern
11 For rnore inforrnation, see netplan(5).
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.
Полная конфигурация будет выглядеть так:
11 This file describes the network interfaces availaЫe on your
systern
11 For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
enol:
dhcp4: true
routes:
- to: 192.168.44.0/24
via: 192.168.0.1
r--------------------------------------------------------------,
1
1
•
1 ОБРАТИТЕ ВНИМАНИЕ: УАМL-файл очень требователен к 1
отступам и разметке!
!t______________________________________________________________
!
J
······------·--·----------------·----·----------------·----------·-----·---------·t:D
..
,.,
с.
с.
lkc1, l.i1111,
Убедитесь, что оператор "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
19.3. Настройка брандмауэра iptahles
,..,;.,· :
"С
Брандмауэр iptaЫes на данный момент считается устаревшим, но до сих пор
используется даже в самых новых версиях дистрибутивов. От него пытают­
ся отказаться последние несколько лет, но до сих пор этого полноценно не
произошло и, на наш взгляд, в ближайшие годы он будет все еще актуален.
Далее мы р_ассмотрим современный браундмауэр ifw, который, судя по все­
му, вытеснит iptaЫes.в будущем, хотя на данныw момент он даже не устанав­
ливается по умолчанию.
•
•
at---------------·············-·························-··-·············-···-······
lkc1, [,illll\
--source-por-t
(--sport)
Указывает порт отправителя, Опцию можно использовать вместе с параметром -р
--destination-port
(--dport)
Указывает порт получателя, Можно использовать
вместе с параметром -р
--state
Позволяет указать состояние пакета, Фильтр
по состоянию возможен только при загрузке
модуля state (-m state), Возможны следующие
состояния пакета: NEW (новое соединение),
ESTABLISHED (установленное соединение),
RELATED (связанные с соединением пакеты),
INVALID (неопознанные пакеты)
--in-interface (-i)
Указывает входящий интерфейс
--out-interface (-о)
Указывает исходящий интерфейс
В таблице 19,2 указаны далеко не все параметры, но для организации соб­
ственного шлюза представленных параметров будет более чем достаточно,
19.3.4. Практический пример
Сейчас рассмотрим практический пример -настройку шлюза небольшой
сети с нуля на базе дистрибутива Debian, У нас есть следующие вводные
данные:
• Внешняя сеть - интерфейс ethO, реальный IР-адрес 88,99,88,99 (IР­
адрес приведен для примера),
• Внутренняя сеть -интерфейс ethl, IР-адрес сети 192,168,1.0/24 (у вас,
скорее всего, будет другой адрес).
Простым "перебросом" пакетов мы не ограничимся, а постараемся решить
попутные задачи, а именно:
•
111!1---------------------------------------------------------------------------------·
1 ,.,в., 1 ')
\lap111p� 1 111а111111 11 11а,· 11ю11ю1 бра�, \\\а� 1ра
• Запретить доступ сотрудникам к некоторым сайтам. Администрации доступ к этим сайтам будет разрешен.
• Запретить ICQ для сотрудников, но не для администрации.
• Запретить некоторые нежелательные приложения.
• Открыть доступ к порту 80 извне для доступа к будушему веб-сайту. Все,
что вам останется сделать, - это установить nginx (или Apache), и ваш
сайт будет виден из Интернета.
• Открыть доступ к шлюзу извне для его администрирования по SSH.
• Открыть порты 25 и 11 О, необходимые для работы будушего почтового
сервера.
• Администратору (его IР-адрес 192.168.1.1 О) открываем все, что ему будет
нужно.
Создайте каталог /etc/firewall, в котором мы будем хранить все необходимое
для организации нашего шлюза. Сейчас создайте в нем два файла- admins.
txt и Ыack.txt.
В первый нужно внести IР-адреса администрации (по одному IР-адресу в
. одной строке)- им будут доступны все сайты. Это могут быть сотрудники
IТ-отдела, директор, его зам и т.д.- в общем, все вышестоящее начальство.
В файл Ыack.txt нужно внести сайты, доступ к которым нужно ограничить
(тоже по одному сайту в одной строке).
t mkdir /etc/firewall
t touch /etc/firewall/admins.txt
t touch /etc/firewall/Ьlack.txt
После этого можно приступить, собственно, к настройке шлюза. Первым де­
лом нам нужно отключить Network Manager и настроить наши интерфейсы
статически. На сервере (шлюзе) Network Manager не нужен, а сетевые интер­
фейсы можно легко настроить с помощью /etc/network/interfaces.
Сначала введите команду:
•
t runlevel
··················································································8111
Вы узнаете текущий уровень запуска:
# runlevel
N 2
Далее переходим в каталог /etc/rcX.d, где Х - это уровень запуска, и удаля­
ем ссылку на network-manager. Можно также использовать команду:
�:
# update-rc.d -f network-manager remove
i
Далее остановите Network Manager:
-::,
Q
;;:
�;;; s=·
��
;!:О,
"�
'
# /etc/init.d/network-manager stop
После этого отредактируйте файл /etc/network/interfaces и сконфигурируйте
сетевые интерфейсы (лист. 19.2).
ЛИСТИНГ 19.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
•
118··················································································
1 1ав,1 I <J \lаршр� 111 шщ1н 11 ш1с I po11i.:a iipa111\Ш� 1ра
Перезапустим сеть:
# service networking restart
Теперь создайте каталог /etc/firewall и поместите туда файл firewall.sh, кото­
рый будет содержать команды, превращающие наш обычный компьютер в
шлюз:
# touch /etc/firewall/firewall.sh
# chmod +х /etc/firewall/firewall.sh
# nano /etc/firewall/firewall.sh
Код файла firewall.sh приведен в листинге 19.3.
[1
ЛИСТИНГ 19.3. Файл firewall.sh
#!/bin/bash
1
# Определяем некоторые переменные, чтобы облегчить редактирование
# конфигурации в будущем.
# Внешний IР-адрес и внешний интерфейс
WAN_IP1=88.99.88.99
WAN IFACEl=eth0
# Внутренний адрес сервера и внутренний интерфейс
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
# Черный список
Ыacklist= ( $ (cat "/etc/firewall/Ыack·.txt" )'
adrnins= ( $ (cat "/etc/firewall/adrnins.txt") )
•
·---------------------------------------------------------------------------------8111
lkc ,. 1 i11tl\
# Очищаем все таблицы iptaЫes
$ip -F -t filter
$ip -F -t nat
$ip -F -t mangle
$ip -F
# Правила по умолчанию: запрещаем все, что явно не разрешено
$ip -Р INPUT DROP
$ip -Р OUTPUT DROP
$ip -Р FORWARD DROP
# Превращаем компьютер в шлюз, на всякий случай, если ЫЬ! забWIИ сделать
# зто раньше
echo 1 > /proc/sys/net/ipv4/ip_forward
# Включаем NAT, чтобы локальные узлы могли получать доступ к Интернету
-d $LOCAL_NET
$ip -t nat -А POSTROUTING -о $WAN_IFACE1 -s $LOCAL_NET
-j SNAT --to-source $WAN_IP1
_
# Отбрасываем 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 АССЕРТ
$ip -А OUTPUT -р all -о $LO�IFACE -j АССЕРТ
# Разрешаем трафик через внутренний адаптер.
# Между сервером _(шлюзом) и локальной сетью разрешаем все
$ip -А INPUT -р all -i $LAN_IFACE -s $LOCAL_NET --match state --state
NEW,ESTABLISHED -j АССЕРТ
# Разрешаем исходящие новые и уже установленные соединения
# во внутреннюю сеть с адаптера локальной сети
$ip -А OUTPUT -р all -о $LAN_IFACE -d $LOCAL_NET --match state --state
NEW,ESTABLISHED -j АССЕРТ
# Разрешаем новые и уже установленные соединения извне (с внешней сети)
# к портам 80 (веб-сервер) и 22 (ssh):
/
$ip -А INPUT -р tcp -i $WAN_IFACE1 -m multiport --dports 80,22,25,110
--match state --state NEW,ESTAВLISHED -j АССЕРТ
$ip -А OUTPUT -р tcp -о $WAN_IFACE1 -m multiport --sports 80,22,25,110
--match state --state ESTAВLISHED,RELATED -j АССЕРТ
# Разрешаем выход с сервера во внешнюю сеть, но только на определенные
\
порты.
# Разрешаем порты 80 (HTTP) r 443 (SSL) и 53,(DNS)
$ip -А INPUT -i $WAN_IFACE1 -р tcp -m multiport --sports 80,53,443 -j
АССЕРТ
•
1111---------------------------------------------------------------------------------·
1 , 11 , 1 •1
\lap111p, 1 111:1111111 11 11.1< 11111111,а i,p:111 1,1:1� 1ра
$ip -А OUTPUT -о $WAN_IFACE1 -р tcp -m multiport --dports 80,53,443 -j
АССЕРТ
$ip -А INPUT -i $WAN_IFACE1 -р udp -m multiport --sports 53 -j АССЕРТ
$ip -А OUТPUT -о $WAN_IFACE1 �р udp -m multiport --dports 53 -j АССЕРТ
f Откры:ваем админу (192.168.1.10) доступ ко всему, что будет нужно.
f Просмотрите список портов и откройте то, что ваы будет нужно
t 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,110,5190 -j АССЕРТ
t udp
$ip -А FORWARD -р udp -s 192.168.1.10
--dports 53 -j АССЕРТ
$ip -А FORWARD -р udp -d 192.168.1.10
--sports 53 -j АССЕРТ
-d $LOCAL_NET -m multiport
-s $LOCAL_NET -m multiport
t Разрешаем ICQ только администраторам
i=O
for i in "${admins[@])"
do
$ip -А FORWARD -р tcp -d $i --sport 5190 -j АССЕРТ
$ip -А FORWARD -р tcp -s $i --dport 5190 -j АССЕРТ
done
t Разрешаем избранным (список admins) доступ к сайтам из черного списка
j= O
for j in "${Ьlacklist[@)}"
�
i-0
for i in "$(admins[@) }"
do
$ip -А FORWARD -d $i -s $j -j АССЕРТ
done
done
t Всем остальным запрещаем доступ к сайтам из списка Ыacklist
i=O
for i in "$(Ыacklist[@)}"
do
$ip -А FORWARD -s $i -j DROP
done
f Разрешаем транзит некоторых пакетов (80, 443 и 53)
$ip -А FORWARD -р tcp -s $LOCAL_NET
-d $LOCAL_NET -m multiport
--dports 80,53,443 -j АССЕРТ
•
··················································································8111
d
�
$ip -А FORWARD -р tcp -d $LOCAL_NET
--sports 80,53,443 -j АССЕРТ
$ip -А FORWARD -р udp -s $LOCAL_NET
--dports 53 -j АССЕРТ
$ip -А FORWARD -р udp -d $LOCAL_NET
--sports 53 -j АССЕРТ
!
-s $LOCAL_NET -m multiport
-d $LOCAL_NET -m multiport
-s $LOCAL_NET -m multiport
После этого нужно обеспечить автоматический запуск нашего сценария
/etc/firewalVfirewall.sh.
19.4. Настройка брандмауэра ufw
Традиционно в качестве брандмауэра (фильтра пакетов) в UЬuntu использу­
ется iptaЫes, но поскольку UЬuntu позиционируется как простой дистрибу­
тив, то и оболочка для iptaЫes была разработана соответствующая - UTF
(Uncomplicated Firewall) - несложный файрвол.
19.4.1. Проверяем состояние брандмауэра
Первым делом нужно убедиться, что пакет ufw вообще установлен, или
установить его, если это не так:
sudo apt install ufw
Как показано на следующей иллюстрации, уже установлена последняя вер­
сия пакета ufw.
Теперь посмотрим состояние брандмауэра:
# ufw status verbose
По умолчанию фильтр пакетов выключен, поэт?му вы получите сообщение:
Состояние: неактивен
•
lll!t·················································································•
1.1,11"1 1 '! \lаршр� I IB,ЩIIЯ 11 ШIС I puiiкa UJJ.111.IШI� IJJ,1
Рис. 19.2. Установлена самая новая версия ufiv
Не нужно спешить включать файрвол: сначала его нужно настроить. Ведь
если порт 22 окажется по умолчанию недоступен, то вы потеряете доступ
к своему серверу, если администрируете его удаленно. Об этом нужно пом­
нить!
19.4.2. Базовая настройка
По умолчанию брандмауэр запрещает все входящие соединения и разреша­
ет все исходящие. Такая политика идеальная с точки зрения безопасности
(дальше вы поймете почему)- ведь если кто-то (и вы в том числе) захочет
к нему подключиться, то у него это не получится. В то же время приложения
на сервере смогут создавать исходящие соединения.
Рассмотрим две команды:
ufw default deny incoming
ufw default allow outgoing
•
,
................................................................................. ..
..
с.
lkc1, l.i1111\
Данные два правила как раз и задают политику по умолчанию - запреща­
ются все входящие соединения и разрешаются все исходящие.
Итак, все входящие соединения запрещены. Чтобы к серверу можно было
"достучаться" по определенному порту, его нужно сначала открыть. UFW
хорош тем, что вам даже не нужно помнить номер порта - нужно знать
только название сервиса. Например, вот как можно разрешить подключение
по SSH:
ufw allow ssh
При этом UFW сам создаст правило для порта 22 - именно этот порт ис­
пользуется для SSH. Брандмауэр знает порты и имена всех распространен­
ных служб (http, ssh, ftp, sftp и т.д.).
Однако если вы пер�настроили ssh на нестандартный порт из соображений
той же безопасности, нужно явно указать номер порта:
ufw allow 3333
:::1
g
i::;
После разрешения ssh (это главное, чтобы сейчас файрвол нам не разорвал
соединение) можно включить ufw командой:
�
ufw еnаЫе
Вы увидите сообщение о том, что межсетевой экран включен и будет запу­
скаться при загрузке системы.
Посмотрите на следующий скриншот (рис. 19.3).
"'"'
'С
Посмотрим, что произошло. Сначала мы разрешили ssh, на что получили
ответ, что правила обновлены:
Правила обновлены
Правила обновлены (vб)
Затем мы включаем файрвол и получаем сообщение, что он активен и будет
запускаться при загрузке системы.
•
lll!t---------------------------------------------------------------------------------·
1 1,1в,1 l'J \lаршр� 1 11шщ�s111 ш1с1р11i1ю1бра 111,ia� 1ра
Рис. 19.3. Процесс настройки ufw
На этом базовая настройка выполнена - ssh успешно работает, и мы можем
приступить к дальнейшей настройке фильтра пакетов·.
19.4.3. Создаем правила для других приложений
Теперь нужно разрешить работу друтих приложений. Как правило, нужно
разрешить службу http (веб-сервер), ftp и постараться не забыть о https (что
очень важно в последнее время):
ufw allow http
ufw allow https
ufw allow ftp
Сделать то же самое можно было бы и по номерам портов:
ufw allow 80
allow 443
allow 21
··················································································ID
•
".,
с.
"
с.
При желании можно разрешить целый диапазон портов, указав при этом
транспортный протокол (UDP и� ТСР):
sudo ufw allow 2000:2200/tcp
sudo ufw allow 4000:4400/udp
19.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�4�.67.89/24 to any port 22
19.4.5. Запрещаем IР-адреса и службы
.,
"'"
"С
Запретить доступ с определенного IР-адреса можно аналогично:
ufw deny from 123.45.67.89
При желании можно запретит� все подключения к определенной службе:
ufw deny ftp
•
....................................................................................
1 la/"1 19 \Jаршр� 111 ШНШI II Ш\С I po1ii.a бра�ц,�а� зра
19.4.6. Удаление/сброс правил
Сбросить все правила можно командой:
ufw reset
Но убедитесь, что на момент ввода этой команды вы отключили файрвол,
иначе вы потеряете доступ по ssh.
Удалить конкретное правило можно по номеру.
Сначала введите следующую команду, чтобы узнать номер правила:
ufw status numЬered
Рис. 19.4. Список правил
'----------------------------------------------------------------------------------·
19.4.7. Отключение файрвола
Отключить ufw можно командой ufw disaЬ/e.
Отключение может понадобиться, если какие-то из правил работают непра­
вильно и нужно временно отключить файрвол, чтобы разрешить работу тех
или иных сервисов.
Если вы ранее использовали iptaЫes, то наверняка заметили, что ринтак­
сис ufw гораздо проще. Если же до этого вам не приходилось настраивать
брандмауэр, то ufw - оптимальное решение, с которым не составит труда
разобраться даже начинающему администратору.
•
ID---------------------------------------------------------------------------------·
Глава 20.
УДАЛЕННЫЙ ВХОД В
СИСТЕМУ ПО SSH
л •
lkc:1,l.iriu,
20.1. Протокол SSH
Особенностью SSН-соединенин является шифрование всех
передаваемых по нему данных.
Если злоумышленник перехватит SSН-трафик, он не узнает ни логин, ни па­
роль, ни команды, которые вы передавали на сервер.
В Liпux используется свободная реализация протокола SSH - OpenSSH.
Данная реализация была определена рабочей группой IETF.
r
"
1
: НЕ БЕСПОКОИТЕСЬ: OpenSSH так же безопасен, как и SSH. :
t _____________________________________________________________J
Далее мы будем говорить SSH, а подразумевать именно OpenSSH.
Для шифрования передаваемых данных SSН-соединение может использо­
вать различные алгоритмы, например, BlowFish, ЗDES (Data Encryption Stan­
dard), IDEA (International Data Encryption Algorithrn) и RSA (Rivest-Shamir­
Adelman algorithrn). Алгоритм определяется настройками SSH-cepвepa.
Чтобы удаленные пользователи могли подключиться к вашему серверу, на
нем нужно установить демон sshd. Как правило, этот демон содержится в
пакете openssh-server. Клиент ,SSH, то есть программа, с помощью которой
удаленные пользователи будут подключаться к вашему SSH-cepвepy, содер­
жится в пакете openssh-client. Итак, на компьютеры, с которых вы планируе­
те подключаться к серверу, нужно установить пакеты openssh-client.
•
ID-----------------------------·········-··-··-------·-----------------------------·
1 ,.,н., :11 � 1а 1t·1111ы11 11,0111 t·11t·1e"' 1ю SSII
Что делать, есл'и у вас не Linux, а подключаться к SSH-cepвepy все равно
нужно?
r--------------------------------------------------------------,
1
1
,
11 НЕ БЕСПОКОИТЕСЬ: SSН-клиенты созданы для самых раз- 11
1 ных операционных систем.
1
t ______________________________________________________________J
Один из самых хороших клиентов для Windows - Bitvise SSH Client. Он
бесплатный, поддерживает создание и загрузку профилей соединений, что
позволяет удаленно администрировать несколько серверов, поддерживает
не только передачу команд, но и файлов (по протоколу sFTP). Для iOS мож­
но использовать приложение WebSSH, а для Android - SSH Client. Все эти
приложения бесплатны.
о
� Bitvise SSH Client 8.42
· Profile:
L.ogln
l.ood prolile
5..,. prolile
Options Termiмl
S.rver
RDP ·
SFrP
Servk:es
(.1
New prof\le
0D
Oose prolile
C2S
S2C
SSH �. Notes
PQrt
�
'11t!ol mettюd [possword
0Ermble oЬfusaition
с�ьмс.::.н:::,n f-eywo-d
1root
!;2) Store enaypted password ln profile
f'assword
1 - •-•-•-••--�•-••
�
� Enable password owr kЬdi htlltнкt
SPN
□
J1$em0m<
AЬout8
::=======:::
:,: =:;::;:;:;;:
�--------�
l••.229.220.ISЗ
Authenшtion
!jOSt
KerЬeros
Saw profUe llS
х
dosing ond minimizotion
GSS/KerЬe,os k,y exdlonge
E�tlon
[Defoutt
Request delegc!ltiOn
[/j gss.apH::eyex i,uthentiution
Host key monaщ:r
Qient kev manaaer
н.ш
(!)09:15:43.965 Bit\lise SSH Oient 8.42. i, fulty featured SSH dient for Windows.
Copyright (С) 2000-2020 Ьу в;мs, Um•ed.
фм:15:43.965 VJSit www.blМs.!.com for �test lnformМlon aЬout our SSH software.
(D09:1S:4J.96S Run 'ВvSsh ·help' to � ;,Ьout supported commмкt--ld'М! parameters.
(D09:1S:4J.96S Oyptogr;,pt,lc proo.ider: Windows CNG (х86) with &dditions
ф09:1S:+t.467 Version status: Improчements awll;,Ыe
SFТP GUI auto-complete c;,n deadloc:k. other minor issues. There 1s а compmiЫe
update with flxes, improvements.
ф09:1S:44.%7 Opt>onol updote ovoiloЬle.
ф09:1S:44.S47 Looding io,t used pro1i1e
ф09:1S:44.SS5 L.ost used prolile looded sua:essfuИy.
ф09:1S:S1.290 O'eating new profi� aЬorted.
ф09:1S:S8.S41 Lood;ng prolile oЬorted.
ф09:lб:10.бЗI Lood;ng profile
{D09:16:10.63S Proftle � successfulfy.
•
1,og;,,
•
Рис. 20.1. Приложение Вitvise SSH Client
·-----------------------------------------------------------------------------------
lkc1, l,illll\
20.2. SSН-клиент
Программа ssh является SSН-клиентом и содержится в пакете openssh-client,
Как правило, этот пакет установлен по умолчанию и вам не нужно его уста­
навливать вручную,
Формат вызова программы ssh следующий:
ssh [параметры] <адрес_удаленного_компьютера>
Параметры можно не указывать, но раз они есть, знать о них вы обязаны
(табл, 20,1),
Хочу предупредить сразу: опций у программы много и в таблице 20.1 будут
представлены только самые полезные или наоборот, бесполезные (чтобы
привлечь к ним ваше внимание:)).
Таблица 20.1.·некоторые параметры проrраммы ssh
Параметр
Описание
-1
Заставляет клиент использовать первую версию протокола SSH. Можно использовать только при подключении к
очень старым серверам
-2
Клиент будет использовать только вторую версию протокола SSH. Это означает, что если вы с этим параметром
попытаетесь подключиться к старому серверу, у вас ничего
не выйдет. Как правило, ssh автоматически определяет версию протокола , и в параметрах -1 и -2 нет смысла
-4
Клиент будет использовать только 1Рv4-адреса
-6
Клиент будет использовать только IРvб-адреса
•
IПI-··················································································
1 1.1в.1 �11
•
� щ.1,·11111.111 11\н 111 ,·щ·н-,1� 1ю SSII
-А
Включает перенаправление соединения агента аутентификации. Даннь�й параметр можно включить отдельно для
каждого узла в конфигурационном файле. Используйте
перенаправление агента с осторожностью. Данная возможность является потенциально уязвимой
-а
Отключает перенаправление соединения агента аутентификации
- адрес
Ь
Использует адрес на локальной машине как адрес источника соединения. Полезная опция, если у вас установлено
несколько IР-адресов
-С
Запрашивает сжатие всех данных (в том числе stdiп, stdout,
stderr и данные Xl 1). Уровень сжатия устанавливается
опцией CompressionLevel для протокола версии 1. Сжатие
данных полезно на модемных линиях и друтих медленных
соединениях, но в быстрых сетях оно только вызовет лишние задержки
-с
Задает список алгоритмов шифрования, разделенных запятыми в порядке предпочтения. Вы можете указать алгоритмы Ыowfish, des или Зdes. Данная опция используется
только для второй версии протокола SSH. Для.первой версии протокола можно указать лишь один предпочитаемый
протокол
-f
Переводит ssh в фоновый режим. Полезно, когда вы запуекаете Xl !-программу (графическую программу) по SSH
-! имя
Позволяет указать имя пользователя, под которым вы будете регистрироваться на SSH-cepвepe. Указывать не обязательно, поскольку сервер и так попросит вас ввести логин
-р порт
Указывает порт SSH-cepвepa, отличный от используемого
по умолчанию (22)
·-----------------------------------------------------------------------------------
"'.,
с.
e­
u
lkc1, l.i1111,
-q
"Тихий" режим. В нем отображаются только фатальные
ошибки. Все, что не важно, выводиться не будет
-Х
Включает перенаправление Xll. Полезный параметр при
запуске графических программ
-х
Отключает перенаправление Xl 1
-v
Подробный режим - антипод для -q
-V
Выводит номер версии и выходит
,., е
Использовать ssh очень просто.
�5
В следующем примере я подключаюсь как root к узлу server:
; Ё:
::: =
:.,;�
$ ssh -1 ro
· ot server
20.3. Настройка SSH-cepвepa
Теперь приступим к настройке SSH-cepвepa. Для его установки нужно уста­
новить пакет openssh-server.
После этого нужно запустить сервер командой:
f service ssh start
Иногда сервис называется sshd, тогда команда будет иной:
i service sshd start
•
Сервер сразу же готов к работе, и его вполне безопасно можно использовать
с параметрами по умолчанию.
.....................................................................................
\ 1,\В,1 20 � 1:t.ll'IIIIЫil 11\0,111 CIICll'\I� 110 SSII
Конфигурационный файл SSH-cepвepa называется /etc/ssh/
sshd_config.
Пример файла конфигурации sshd_config приведен в листинге 20.1 (с ком­
ментариями на русском языке).
1
ЛИСТИНГ 20.1. Пример файла конфигурации sshd_config
#Какой порт будет использоваться для SSH-cepвepa. Порт по умолчанию - 22.
#Теоретически, номер порта можно изменить, но на практике в этом нет
#необходимости. Защита с помощью изменения номера порта - дело
#неблагодарное, поскольку есть сканеры портов, которые могут легко
вычислить
#номер порта
Port 22
#Какие адреса мы будем слушать. Чтобы sshd работал на всех интерфейсах,
#закомментируйте директиву ListenAddress
#ListenAddress ..
#ListenAddress О.О.О.О
#Номер версии протокола
Protocol 2
#Ключи для протокола версии 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh host dsa key
HostKey /etc/ssh/ssh=host=ecd;a_key
#Для улучшения безопасности включаем разделение привилегий
UsePrivilegeSeparation yes
#Время жизни (в секундах) и размер ключа сервера версии 1
KeyRegenerationinterval 3600
ServerKeyBits 768
#Журналирование
SyslogFacility AUTH
oL g eL vel INFO
#Аутентификация
LoginGraceTime 120
#Если нужно запретить вход как root по ssh (это не запрещает команду
#su), выключите этот параметр (установите значение по).
Pe:r::mitRootLogin yes
Strictмodes yes
•
#Максимальное количество попыток аутентификации
··········································----------------·-·-·---·-------------·-tlll
lkct, l.i1111,
...
,
IINaxAuthTries З
!:
о
,:
# Использование RSA (yes)
RSAAuthentication yes
# Аутентификация с открытым ключом
PubkeyAuthentication yes
#AuthorizedКeysFile %h/.ssh/authorized_keys
,.;·
"
# Отключаем устаревшую .rhоsts-аутентификацию
# Файлы ~/.rhosts and ~/.shosts читаться не будут:
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Запрещаем (значение no) пустые пароли
PermitErnptyPasswords no
# Не используем аутентификацию вызов-ответ
ChallengeResponseAuthentication no
# Параметры Kerberos
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# Параметры GSSAPI
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
# Хll-форвардинг
XllForwarding yes
XllDisplayOffset 10
# Выводить сообщение дня (можете отключить)
Print:Мotd yes
# Выводить время последнего входа
PrintLastLog yes
# Использовать постоянные ТСР-соединения
TCPKeepAlive yes
#UseLogin по
#MaxStartups 10:30:60
# Баннер
#Banner /etc/issue.net
# Разрешать клиенту передавать локальные переменные окружения
AcceptEnv LANG LC_*
# Параметры подсистемы sftp
SuЬsystem sftp /usr/liЬ/openssh/sftp-server
•
....................................................................................
1 1.1в:1 �(1 � Щ.lt'lllll,1 1111\0111 t·11сн·,1� IIO SSII
# Использовать ли модули РАМ?
UsePAМ yes
Конфигурация по умолчанию вполне пригодна для использования. Я выде­
лил несколько опций, которые вам, возможно, захочется изменить. Осталь­
ные параметры вряд ли вы будете изменять.
20.4. Защищенное копирование файлов
Иногда возникает необходимость скопировать важные файлы по защищен­
ному каналу. Заморачиваться с отправкой их почтой с использованием асин­
хронного шифрования как-то не хочется, да и почтой можно передать только
файлы небольших размеров.
Для защищенного копирования файлов используется утилита
scp.
Рассмотрим несколько примеров использования этой команды:
$ scp user@example.com:file: txt /home/ubuntu
Данная команда копирует файл file.txt с удаленного SSH-cepвepa example.
com в каталог /home/ubuпtu. Вход на сервер будет выполнен от имени поль­
зователя user. Пароль будет запрошен при запуске программы. Файл file .txt
должен находиться в домашнем каталоге пользователя user.
Аналогично, можно скопировать некоторый локальный файл в некоторый
удаленный каталог на SSH-cepвepe:
$ scp file.txt user@examle.com:/some/remote/directory
Теперь усложним задачу. Пусть нам нужно скопировать локальный каталог
dirl и все его содержимое (опция -r) в каталог /home/ubuntu/dir2 удаленного
сервера example.com .
····················································-·····························ID
lk,1,l,i1111x
Команда будет такой:
$ scp -r dirl user@example.com:/home/ubuntu/dir2
А вот совсем сложный пример. Мы копируем файл /dir/file.txt, находящийся
на сервере hostl, в каталог /some/directory сервера host2. На обоих компью­
терах должен быть запущен SSH-cepвep. Команда выглядит так:
$ scp user@hostl:/dir/file.txt user@host2:/some/directory/
20.5. Оптимизация SSH
SSH-cepвep работает довольно быстро, но иногда администраторам прихо­
дится столкнуться с торможением, особенно при входе пользователя. Уско­
рить вход пользователя поможет отключение использования DNS. Добавьте
в файл конфигурации sshd_conf директиву:
UseDNS no
В этом случае IР-адреса не будут разрешаться в доменные имена, что су­
щественно повысит производительность, поскольку не будет необходимости
обращаться к DNS-cepвepy и ждать от него ответа.
Также нужно использовать постоянные ТСР�соединения:
TCPKeepAlive yes
:::1
]
�
Еще можно отказаться от вывода сообщения дня, но на вход пользователя
это особо не повлияет:
PrintMotd no
•
ID-··················································································
1 1.ш.1 �(1 � 1a.1t·11111.111н,о111 сш·н·,1� 110 SSII
Серьезное "торможение" (порой на несколько секунд) могут добавить РАМ­
модули. Но отключать РАМ-модули полностью не нужно! Достаточно из
файлов /etc/pam.d/login и /etc/pam.d/sshd удалить строки:
session
session
optional
optional
pam_motd. so motd=/run/motd. dynamic noupdate
pam_motd. so
После этого регистрация на вашем SSH-cepвepe будет происходить мгно­
венно
•
··················································································tlD
Глава 21.
ОБЩИЕ ВОПРОСЫ
АДМИНИСТРИРОВАНИЯ
ВЕБ-СЕРВЕРА
л •
lkc 1, l .il1LI\
В этой части книги мы начинаем рассматривать вопросы создания, админи­
стрирования и настройки с�рверов на Linux, т.к. Linux часто применяется в
роли операционной системы для сервера и это довольно популярная тема
использования Linux.
Прежде чем приступить к разработке своего интернет-магазина, нужно про­
делать много подготовительной работы - выбрать сервер, доменное имя,
SSL-сертификат, настроить программное обеспечение сервера и установить
саму CMS (Content Management System, систему управления контентом).
Только после этого можно начать продавать что-либо, то есть занять сервер
полезной работой.
21.1. Выбор доменного имени
Как яхту назовешь, так она и поплывет. Конечно, все зависит от личных
предпочтений руководства магазина, уже суmествующего названия торго­
вой марки и других факторов. Как технический специалист, могу пореко­
мендовать выбирать доменное имя второго уровня и желательно в домене
.com (<название>.соm), поскольку вы создаете именно интернет-магазин, а
не сайт общественной или правительственной организации.
С точки зрения SEO доменное имя второго уровня лучше, чем третьего,
например sales.example.org. А домен верхнего уровня (TLD) .com идеально
подходит для коммерческих ресурсов.
Купить доменное имя можно у регистрации доменных имен, например на
reg.ru, nic.ru и т.д. Если у вас с�рвер будет не физический, а виртуальный,
совсем не обязательно покупать доменное имя у облачного провайдера. Хотя,
если вам удобнее, вы можете купить и сервер, и домен у одной _организации .
•
18-------------------------------------------·········-··········-----·-··-·-·······
1 1,11\,1 21
Oii11111t· IIHIIJ!OCl,I а l\llllfffC I JJIIJJШЩlfffll вcii-,t'J)IICJHI
21.2. Выбор типа сервера
Для вашего интернет-магазина нужен собственный сервер, просто хостинг
не подойдет по причинам низкой производительности и невозможности гиб­
кого управления программным обеспечением. Хотя некоторые провайдеры
предоставляют уже готовый хостинг с ПО для организации магазина, но как
будет работать такой магазин - никому не известно. Я же рекомендую не
тратить свое время на подобные продукты (исключение - SааS-услуга с
интернет-магазином, например Shopify, но это уже совсем другой уровень,
и если вы выбрали такую, то можете дальше эту книгу не читать и купить
книгу по Shopify).
Итак, нужен собственный сервер. Возможны три варианта:
1. Физический сервер.
2. Виртуальный сервер (VDSNPS).
3. Выделенный (dedicated) сервер.
От первого варианта предлагаю вам отказаться.
Во-первых, хороший сервер стоит несколько тысяч евро. Это капитальные
затраты, которые можно заменить операционными посредством использова­
ния виртуального сервера. Физический сервер можно использовать, если он
уже был ранее куплен до вас.
Во-вторых, физические серверы требуют сушественных затрат на их обслу­
живание:
• Нужно производить ремонт, модернизацию, чистку. В случае с виртуаль­
ным сервером все это ложится на плечи провайдера. Вам ничего не нуж­
но делать, и не будет никаких затрат.
• Нужно обеспечить резервное питание. Это не всегда возможно, посколь­
ку часто альтернативным источником выступает дизель-генератор, а его
можно установить не везде (правила пожарной безопасности и уровень
шума мешают установить его в обычном офисном здании).
•
·····································-·······-···-······-·····················--··-ID
lkc1, 1 illll\
• Необходимы вторая интернет-)!_иния и роутер (маршрутизатор) с возмож­
ностью переключения между каналами. Роутер стоит недорого, а вот за
второй интернет-канал вам придется платить каждый месяц, даже если
вы его не используете. Хотя этот пункт менее проблематичен, чем второй.
• Необходимо обеспечить систему кондиционирования летом во избежа­
. ние перегрева сервера.
Виртуаn11tн11t1й сервер ничем по управлению не отличается
от физического - вы можете установить любое программное
обеспечение и_ настроить сервер так, как вам нужно.
Зато у виртуального есть масса преимуществ:
• Перед устан:овкой какого-то расширения или внесений существенных
изменений в работу CMS или самого сервера вы можете сделать сни­
мок (снапшот). В случае если что-то пойдет не так, восстановить все
"как было" можно за считанные секунды. Это основное преимущество
использования виртуализации. На продакшн-серверах данная функци­
ональность "must have" - пользователи вашего магазина не должны
ждать, пока администратор сделает откат при неудачной настройке.
• Модернизация сервера занимает считанные минуты. Например, вы
можете докупить дополнительные ядра процессора и дополнительные
гигабайты оперативной памяти за считанные минуты. Более того, когда
дополнительные ресурсы вам будут не н:ужны, вы можете вернуть их в
пул и платить меньше. Например, на время сезонных распродаж (Новый
год, Рождество) вы можете добавить дополнительные ресурсы, а после
праздников - вернуть их в пул.
Выделенный (dedicated} сервер - это то же самое,
что и физический сервер, но установленный в дата-центре
облачного провайдера.
Вы покупаете сервер и помещаете его на хранение _в дата-центр.
•
al··················································································
1 1.111.1 � 1
( )f,111щ• 111111рщ·1.1 а 1,11111щ· 11111111111:1111111 1«•f,-,·,·p11,·pa
Далее, провайдер обеспечивает резервирование Интернет-соединения, пи­
тание и охрану сервера.
Остальные операции, например �одернизация сервера, его ремонт, осущест­
вляются за дополнительную плату.
При этом вы не можете сделать снимок сервера, вы не можете доустановить,
а потом вернуть ресурсы сервера.
Следующая таблица позволяет сравнить эти три вида серверов.
Таблица 21.1. Сравнительная таблица типов серверов
Твпеервера
Преимущества
Недостатки
Значительно дороже при
покупке и содержании
Настоящий компьютер из
плат и проводов
Физический
Сразу доступны все ресурсы сервера
Более высокая производительность
Всю сумму платим сразу
Требуется администратор именно сервера
Необходимо платить за
colocation или обеспечивать самому надлежащие
условия для работы сервера
Сложность модернизации
•
·-·-··············································································8D
jjl'l 1, ( illlJ \
Гораздо дешевле физического сервера
Простота обслуживания, не
нужен отдельный администратор в штате
Обеспечение работоспособности - не ваша проблема
Быстрое клонирование сервера
Виртуальный
Быстрое создание "снимка"
сервера, что позволяет воестановить сервер за считанные секунды
Производительность немного ниже, чем у физического сервера
Нельзя увидеть/пощупать физически
Простая модернизация сервера
Оплата только за используемые ресурсы, возможность
быстро изменить конфигурацию сервера
/
В стоимость уже входит IPадрес и интернет-канал
.
Все преимущества физического сервера
Услуги co\ocation уже входят в тариф
ВыделеJtный
Не нужно беспокоиться о
том, что сервер может еломаться
Физичес�ий сервер, который вы получаете сразу, а
оплачиваете - по мере ис- ,
пользования
Дороже виртуального
сервера
Невозможно·создать
снапшот, как в случае с
виртуальным сервером,
нужно использовать традиционные решения резервного копирования
•
•
В!I-----------"---------·--····----····-········--·-------·--·-·-·-------··---------·
1 .шва� 1 Обнше вопросы а l\lllllllCI рнрова�шя ы·б-сер11ера
Арендовать виртуальный сервер в большинстве случаев выгоднее, проще и
удобнее, чем связываться с ф1рическим сервером. Сегодня, по сути, физи­
ческое оборудование имеет смысл приобретать, если вы сами планируете
предоставлять виртуальные серверы в аренду. Во всех остальных случаях
можно обойтись виртуальным сервером.
21.3. Выбор облачного провайдера
Очень важно не допустить ошибку при выборе облачного провайдера. Такие
ошибки могут очень дорого обойтись - вы потеряете деньги, время, репу­
тацию. Поэтому мы подготовили список, который необходимо уточнить у
облачного провайдера перед тем, как воспользоваться их услугами:
• Уровень сертификации по Tier - узнайте, присвоен ли центру обмена
данных уровень по UТI. С Tier I и Tier II нечего связываться. Tier 1 - все
равно что разместить серверы у себя в офисе, поскольку данный уровень
не предполагает резервирование электропитания. Уровень доступности
99.671 %, то есть 28.8 часов простоя в год. Самый надежный и доступный
по деньгам - Tier 111. Резервируются все инженерные системы, обеспе­
чиваются возможности ремонта и модернизации без остановки сервисов.
Tier III (99.98% доступности или 1.6 часа простоя) предполагает построй­
ку второго ЦОД внутри того же здания - ведь все нужно дублировать, в
том числе СКС, электричество, систему охлаждения, у всего серверного
оборудования должны быть независимые подключения к нескольким ис­
точникам питания и т.д. В то же время стоимость будет гораздо ниже, чем
у Tier IV (99.99% доступности).
• Наличие необходимых лицензий ФСТЭК - помните, что вы будете
хранить на данном сервере персональные данные своих клиентов, поэто­
му наличие лицензий ФСТЭК - необходимое условие.
• Физическое размещение серверов - ФЗ-152 требует, чтобы персональ­
ные данных граждан РФ хранились только в пределах РФ, поэтому фи­
зическое местоположение играет роль. Как бы вам ни хотелось купить
сервер в США, ничего не выйдет.
• Были ли раньше аварии на площадке - были ли на площадке выбран­
ного вами провайдера аварии и если были, то каковы их причины и какие
'--------------------------------------------------------------------------------8111
Н,, ,. 1 i1111,
меры были приняты. Нужные сведения можно легко найти в Интернете,
равно как и отзывы довольных и не очень клиентов.
• Наличие тестового режима - самый хороший способ протестировать,
подходит ли вам данная площадка или нет. Узнайте у провайдера, есть ли
тестовый режим и как им можно воспользоваться.
• Чем является виртуальное ядро - облачные провайдеры измеряют
процессорную мощность своих серверов в виртуальных ядрах (vCPU).
Одно vCPU может равняться одному физическому ядру процессора, а мо­
жет быть и четвертью (1/4) ядра. Этот вопрос нужно уточнить заранее.
Покупая виртуальную машину с процессором на 4 ядра, получите ли вы
4 ядра или всего одно ядро (если lvCPU = 0.25 одного ядра)?
• Базовая скорость интернет-канала - трафик, как правило, безлимит­
ный, а вот скорость доступа к Интернету может быть разная. Некоторые
провайдеры предоставляют серверы с низкоскоростным интернет-соеди­
нением 1О Мбит/с, а за более скоростной доступ нужно доплачивать. Не­
которые сразу предоставляют полноценный канал 100 Мбит/с без каких­
либо доплат.
Протестировать интернет-канал можно командой:
wget -о
https://raw.github.com/sivel/speedtest-cli/master/
speedtest.py I python
Вы увидите скорость upload и download. В идеале она должна быть пример­
но одинаковой, и при соединении 100 Мбит/с у вас должен быть результат не
ниже 76 Мбит/с при прохождении теста.
• Скорость работы дисковой подсистемы - многие провайдеры предо­
ставляют серверы с SSD-дисками. Получите тестовый доступ и подклю­
читесь к серверу по ssh.
Вщщите команду:
dd if =/dev/zero of=temp bs= lM count= 2048
Вы увидите реальную скорость обмена данными с диском. Если провайдер
заявляет, что у вас SSD, а скорость обмена данными меньше 200 Мбайт/с,
ищите другого провайдера.
• Периодичность и стоимость резервного копирования - уточните,
есть ли сервис резервного копирования или резервирование данных при­
дется осуществлять своими силами, то есть'покупать еще один виртуаль­
ный накопитель, устанавливать и настраивать программное обеспечение
для бэкапа и т.д. Если сервис есть, то нужно уточнить, сколько он стоит,
1111--------------------------------------------------------------------------··-----'
1 ,.,в., '1
( )ii1111н· 111111рш·1.1 а 1\111111н· 1 р111ю11:1111111 111·ii-й•1111t·pa
чтобы вы могли планировать свои месячные затраты на содержание вир­
туальной инфраструктуры. Автор этой книги, работая с cloudways.com,
был удивлен узнать, что поддержка снапшотов есть не для всех типов
серверов. Для серверов DigitOcean возможности создания снапшотов нет.
Лучше узнать это до того момента, как вам понадобится возможность
создания снапшота.
• Тарификация - первое, что нужно уточнить, - это единицу тарифика­
ции (минута, час, день и т.д.). Что произойдет, если вы выключите сервер
на некоторое время? Будет ли такой простой бесплатным или будет тари­
фицироваться только хранение информации? Что будет, если вы измени­
те конфигурацию сервера в меньшую сторону? Как и когда это отразится
на стоимости сервера? Допустим, вы заказали сервер с 16 Гб оператив­
ной памяти, а после некоторого времени вы решили, что 16 - это много
и будет достаточно 12 Гб. В 11 :00 вы уменьшаете размер оперативной
памяти. Когда это отразится на тарификации? Моментально, через час
или в начале следующего дня?
• Скрытые платежи - узнайте, за что еще вам придется платить. Напри­
мер, придется ли доплачивать за панель управления сервером, резервное
копирование и т.д. Постарайтесь по максимуму просчитать, сколько будет
стоить содержание виртуальной инфраструктуры в месяц, чтобы в конце
месяца это не было для вас неприятным сюрпризом.
• Способы подключения к серверу - как можно подключиться к арендо­
ванному серверу? Обычно предоставляется SSН-доступ, но может быть
еще и доступ через веб�консоль управления сервером, что будет особенно
полезным, если вы при настройке брандмауэра случайно закроете сами
себе SSН-доступ - такое бывает.
• Служба поддержки - узнайте график и условия работы службы под­
держки. Какие услуги саппорт оказывает платно, а какие - нет. Напри­
мер, если нет веб-консоли, а вы заблокируете сами себя и· обратитесь в
саппорт, будет ли настройка брандмауэра платной или вам помогут бес­
платно?
21.4. Выбор конфигурации сервера
Конфигурацию сервера нужно подбирать исходя из выполняемых им функ­
ций и установленного на сервере ПО. На первых порах вам хватит 4 процес·······················-······························· ····················:·······11!1
l!ccl, 1 illll\
сорных ядер и 8 Гб оперативной памяти. Далее будьте готовы к расширению
ресурсов. Да, 8 ядер и 32 Гб "оперативки". Если подобная конфигурация сер­
вера - для вас дорого, тогда стоит остановиться прямо сейчас и обратить
внимание на SааS-решения - возможно, они окажутся дешевле.
Будьте готовы, что в реальных условиях вам понадобится как минимум 16
Гб памяти и � ядер. Соответственно, данные операционные расходы нуж­
но будет закладывать в работу магазина.
21.5. Переезд с хостинга на сервер
Сейчас самое время рассмотреть практический пример. Пусть у вас есть
хостинг и на нем есть сайт. Вы хотите перенести сайт на собственный веб­
сервер (физический или виртуальный сервер- без разницы).
21.5.1. Этапы переноса
Перенос сайта на VPS состоит со следующих этапов:
1. Копирование файлов на локальный компьютер.
2. Экспорт базы данных:
3. Установка веб-сервера, СУБД и другого ПО на виртуальный сервер (ВС).
4. Настройка ПО на VPS.
5. Загрузка файлов с локальной системы на ВС.
6. Редактирование конфигурации движка (CMS).
7. Импорт базы данных на ВС.
8. Перенос домена.
21.5.2. Копирование Файлов
сайта на локальный компьютер
,
Подключитесь к виртуальному хостингу по FTP. Лучше всего для этого использовать FileZilla, поскольку этот FТР-клиент хорошо работает с большим
количеством файлов. Перейдите в каталог, содержащий файлы сайта. Как
•
lllt-------------------------------------···--··--··---------------------------------·
1 1.11,.1 � 1
Oii111ш· 1101,рщ·,., а'""""", р11ро11.1111111 11t·ii-<'<'JJ11t•pa
правило, это каталог puЫic_html. Если вы раньше администрировали сайт,
то наверняка знаете, как называется этот каталог. Если возникли сложности,
обратитесь в саппорт хостинг-провайдера.
�-�­
---(. • -�
. .
..
"""ь-,-""'�'"-"')о,<.-.�..,_.-_....
:!:• _ _. -0- 07.:..!�i:t.•A
.,..c::::==J"
c:::=J,_"E:::5,.,;ci1--1-1
�
. у.......,.,..­
,_
,
,.....,.
,: ::7•
. �,1. ·-·,,_--..__­
·:::--
;..
"'
,._l101JOtf
о-"�
�l=•-1
[
1
t
flD"
/'wQ,_,,_.._ _,,,,._,.,.
,_,_,,_..___ ,:р,..
rw.,. 11ouo11. -- l!olll=
....
�-
-. ... ._
t',8«......�. .... ,_.
Рис. 21.1. Копирование файлов на локш�ьный компьютер
21.5.3. Экспорт базы данных на локальный компьютер.
Войдите в панель управления старого хостинга. В ней часто есть ссьшка на
phpMyAdmin -это приложение используется для работы с БД .
Далее действия будут такими:
1. Выберите базу данных, которую нужно перенести.
2. Откройте вкладку Экспорт.
3. Выберите метод экспорта Обычный.
4. Нажмите кнопку Вперед.
5. Сохраните дамп.
•
·------------·-------·-----·-----------------·-·-··-······-·----··-·····-···-----·IIEI
з::;:
о
1\р,.
,_,_21.0,.201, ____
Пм»<.ОоlОl.2011. ___ 11р11р
fltnt.н. l<.al011.-(tl.. lloflp
n-.c. IIIIUOW. -,_,_r;J'IO.liD\6. _,.,._,,..,.
rw.oc.noi2011. -.о.,:р11р
"°""'• 31.IIUOU. --..,. l!DIIF
(---
u
i
IICLI, 1 i1111,
Вывод:
11 Переименовать эксло�ируемые базы данных/таблицыlсrолбцы
Ei Исnольэоеатъ выражение LOCK TAВLES
*
Сохранить вывод в файл
Шабnон имени файла:
8
1 @DATAВASE@
нсnользовать для будУщеrо эксnо11f3
Кодировка файла:
Компрессия:
1 zip
ti) Экспортировать табnицы в виде отдельных файлов
• Отобразить вывод как т е кст
Пропускать табпицы больwие, чем
МБ
Рис. 21.2. Экспорт базы данных
21.5.4. Установка веб-сервера, СУБД и другого ПО на VPS
Подключитесь к серверу по ssh. После этого первым делом обновим список
пакетов и сами пакеты:
update
upgrade
Далее установим Apache (веб-сервер) и файловый менеджер mc (нужен для
упрощения перемещения по файловой системе и редактирования файлов):
sudo apt install apache2 mc
Перейдите в директорию /etc/apache2/sites-enaЫed и откройте файл
00-default.conf. Мы не будем создавать отдельные wеЬ-серверы для каждого
сайта, Будем считать, что у нас есть один сайт и его конфигурация как раз
будет храниться в 00-default.conf. Реальный пример конфигурации приведен
на следующем рисунке.
•
....................................................................................
1 1.1в.1 � 1
Oii11111t· 1ю111юt·1,1 а 1,11111111· 1 р11рн11а111111 щ•ii п·1111t·ра
1:;
u
Рис. 21.3. Конфигурация сервера: имя сервера затерто (поскольку производи­
лась настройка реального сервера и его имя скрыто в интересах клиента)
Основные директивы:
• ServerName - здесь нужно указать домен;
• DocumentRoot - указывает, где будут храниться документы сайта, мы
используем каталог по умолчанию /var/www/html;
• ServerAdmin - можно указать адрес электронной почты администрато­
ра сервера.
Запустим wеЬ-сервер:
sudo systemctl start apache2.service
•··----------------------------------------------------------------------------------
lk,h l ,illll\
Установим СУБД MySQL, команды:
sudo apt install mysql-server mysql-client
sudo mysql_secure_installation
Первая команда устанавливает необходимые пакеты - сервер и клиент,
Вторая запускает настройку так называемой безопасной инсталляции, в ходе
которой будут произведены:
1, Установка пароля для МуSQL-пользователя root. Обратите внимание, что
этот пользователь и системный пользователь root - две разные лично­
сти, поэтому постарайтесь, чтобы и пароли у них бьши разные.
2. Удаление тестовой БД.
3. Запрет подключения к серверу баз данных извне, только с локального
узла. Это означает, что к СУБД сможет подключиться ПО, работающее
только на этом VPS, а не все желающие. Не беспокойтесь: к вашему сайту
смогут подключаться все пользователи, просто они не смогут напрямую
подключаться к БД, что нежелательно с точки зрения безопасности.
После этого нужно ввести команду:
mysql -u root -р
CREATE DATABASE site;
CREATE USER siteuser@localhost IDENTIFIED ВУ '123456789';
GRANT ALL PRIVILEGES ON site.* ТО siteuser@localhost IDENTIFIED ВУ
'password' ;
FLUSH PRIVILEGES;
exit
Здесь запускается клиент и от имени МуSQL-пользователя root выполняют­
ся запросы.
Первый запрос создает базу данных site, второй - пользователя siteuser, от
имени которого CMS будет обращаться к СУБД.
Третий запрос - предоставление полномочи� пользователю siteuser ко всем
таблицам базы данных site. Естественно, вместо '123456789' укажите какой­
то сложный пароль.
•
1118---------------------------------------------------------------------------------·
1 1,111.121
Oii11111t· 111111рщ·1,1 a,p1111111t·11m1ю11,111ш1 11cii-ccp11cpa
Последний запрос осуществляет применение полномочий, а команда exit выход из клиента mysql,
Для установки РНР и всех неgбходимых (в большинстве случаев) пакетов
используется вот такая длинная команда:
sudo apt install php php~cli openssl php-curl php-gd php-rncrypt
php-xrnl php-intl php-zip php-rnЬstring php-soap php-rnysql php-json
libapache2-rnod-php php-xsl cornposer
Она установит последнюю версию интерпретатора, доступную для вашего
дистрибутива, Узнать версию можно командой:
php -v
•
Рис. 21.4. Версия интерпретатора
·----------------------------------------------------------------------------------118
lk, ,.1 i,111,
Установим максимальный размер памяти для сценария. Откройте файл кон­
фигурации (Х- версия):
sudo mcedit /etc/php/7.X/apache2/php.ini
В нем нужно изменить лимит памяти и сразу сохраниться:
::::1
-::,
.,
memory_limit
512М
-::,
�
Добавим необходимые модули Apache (введите команду):
,.,е
=.,
a2enmod rewrite
��
Также, чтобы нормально работали SEF URL некоторых CMS, нужно
открыть /etc/apache2/sites-enaЬ!ed/000-default.conf и добавить в секцию
Virtua!Нost строки:
;:; о
1"'; ;::
<Directory /var/www/html/magento_test>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
i:
�
Все, можно повторно перезапускать Apache.
21.5.5. Загрузка файлов с локальной системы на VPS
Загрузите ваши файлы в каталог /var/www/html или любой другой, который
вы указали в DocumentRoot.
Если для подключения по SSH вы используете Bitvise SSH Client, загрузить
файлы можно в окне Bitvise SFTP. Исrtользуйте команду контекстного меню
Upload.
•
a!I··················································································
-·
,.,_., ,.._11 ,o.n,,,,.,
� ....
"•-н -
··-··
11•111111
,.. ,_., ,....._11_
,�- ..... . -·
·--
•• ,_., •11-1• -
l'>Q- 11•••11i -·
..,.. _,.,1.-,1,•• ""_ f'UI011!J-•
11r-1t•1011н­
UD- aOIOttM -•
..._,, -
lltд-a-OUl'lll. •U,"IO- IIMIOИH­
tu- ltMJ011H•••- ос•-" IOI--IOltll1••-1tJ1,JOIII\­
,,,_
о
с.
с:
Рис. 21.5. Bitvise SFTP
После этого перейдите в каталог /var/www/htrnl (или любой другой, указан­
ный в конфигурации):
sudo find • -ехес chown www-data: www-data {} \;
Команда делает владельцем всех файлов и каталогов пользователя www-data,
от имени которого работает веб-сервер (сейчас владелец root и пользователь
www-data не смогут перезаписать файлы, созданные суперпользователем, в
результате движок сайта не сможет записать кэш и другую информацию).
21.5.6. Редактирование конфигурации движка сайта
В файловом менеджере mc откройте для редацирования (кнопка F4) файл
конфигурации движка. Его название и расположение зависят от используе­
мой CMS (например, в случае с WordPress - это Wp-config.php). В нем нуж­
но "прописать" новые параметры для доступа к БД:
•
····························································:·····················ID
lkcl, l.i1111,
• узел - localhost;
• имя пользователя - siteuser;
• пароль - 123456789;
• база данных - site.
Конечно, у вас, скорее всего, будут другие, свои значения, которые вы указа­
ли при настройке MySQL.
21.5.7. Импорт базы данных на VPS
Здесь все просто. Загрузите на сервер (по SSH) дамп базы данных, получен­
ный при экспорте. Пусть он называется db.sql. Если он сжатый, то сначала
его нужно распаковать:
unzip db.sql.zip
�
Теперь импортируем его в БД:
�
mysql -u siteuser -р site < d.Ь.sql
Разберемся, что есть что: опция -и задает пользователя БД (siteuser), опция
-р говорит о том, что нужно будет спросить пароль этого пользователя, site
- это БД, а db.sql - импортируемая БД.
21.5.8. Перенос доменного имени
Осталось самое малое - открыть панель управления доменным именем.
Если вы покупали домен вместе с хостингом, скорее всего, это будет панель
управления хостингом. Если вы покупали домен у регистратора (например,
на reg.ru), зайдите в личный кабинет. В настройках домена у вас сейчас про-
•
ID··················································································
--------- . - ---- --. -
1 1.11<,1: 1 Oii111ш· 1ю111юс1,1 а 1,11111 11<·, р11рова111111 11t.·ii-t.·c1н1t.•pa
писаны NS-записи - удалите их. Вместо этого создайте А-запись, указыва­
ющую на IР-адрес вашего VPS.
r--------------------------------------------------------------,
.
'
1
ВНИМАНИЕ! Многие после этого совершают одну большую :
ошибку, а именно - "забывают" пароль от старого хостинга или J
удаляют аккаунт. Если домен зарегистрирован непосредствен­
но у регистратора доменного имени (nic.ru, reg.ru и т.д.), старый
аккаунт можно удалить. А вот если вы покупали домен вместе с
хостингом, то управление доменом будет производиться через
панель управления старым хостингом. Да, за хостинг платить
не нужно, но раз в году необходимо оплачивать продление. до­
менного имени. Или же обратитесь в службу поддержки старого
хостинга - они помогут перенести домен в другое место. Лучше
всего перенести домен к регистратору доменных имен, а не к
новому хостеру - так не придется проделывать эту процедуру
еще раз при следующем "переезде".
Таким образом процедура переезда с виртуального хостинга на сервер за­
вершена.
•
·----------------------------------------------------------------------------------18
Глава 22.
ФАЙЛОВЫЙ СЕРВЕР FTP
л •
lkcl, ( i11t1\
22.1. Выбор FТР-сервера
Многообразие выбора с одной стороны - хорошо, с другой - порождает
проблему выбора. Перед установкой FТР-сервера нужно определиться, ка­
кой именно лучше всего подойдет для поставленной вами задачи.
.
1
А выбрать есть из чего: древний и проверенный временем wu-ftpd, "легковесный" vsftpd, сверхкомпактный pure-ftpd или же универсальный солдат
proftpd.
,Последний отлично подойдет в случае, когда вы еще не знаете, в каком на­
правлении будет развиваться ваш проект. Посредством ProFTPD можно
легко реализовать как анонимный FТР-сервер, используемый для загрузки
вашего программного обеспечения другими пользователями, так и полно­
ценный FТР-сервер хостинг-провайдера, который сможет с легкостью об­
служивать несколько тысяч клиентов и поддерживает базу данных MySQL
для хранения учетных данных этих клиентов.
Если же вы не строите грандиозные планы, вам не нужны тысячи клиентов, а
нужен защищенный FТР-сервер, который будет использоваться пользовате­
лями для загрузки вашего программного обеспечения - используйте vsftpd
(Very Secure FTP Daemon). Не зря он называется Very Secure, что в переводе
с английского означает "очень безопасный". Вы просто устанавливаете его,
и можете не беспокоиться, что кто-то его взломает, потому что у вас не хва­
тило времени на его настройку. Настроек минимум, но и функционала тоже.
Для гостевого доступа - идеальное решение!Не зря разработчики дистри­
бутивов Linux доверяют vsftpd и.размещают образы дистрибутивов на FТР­
серверах, работающих под управлением vsftpd. Нужно отметить, что vsftpd
........................................, .........................................
,
-, -----------------------------
_
1 1,1!«1 22 Ф,111.JORl,lli Cl'pRt'p �--, Р
подцерживает как гостевые, так и обычные (неанонимные) учетные записи
пользователей, но он не позволяет одновременную регистрацию обычных
и анонимных пользователей. Другими словами, он у вас будет работать или
в режиме обычного FТР-сервера (у каждого пользователя будет свой лоrин
и пароль), или же в режиме анонимного сервера (все будут использовать в
качестве логина anonymous, в качестве пароля - свой e-mail). Для кого-то
это серьезный недостаток, ·а кто-то даже не поймет, в чем дело (не все, кому
нужен обычный доступ, используют анонимный доступ, и наоборот).
Когда-то стандартом де-факто был wu-ftpd. Старый и проверенный време­
нем сервер. На данный момент он полностью вытеснен ProFTPD, и по ряду
причин рекомендуется использовать именно ProFTPD.
Для небольших проектов можно использовать pure-ftpd - это простой сер­
вер, который вообще не нужно настраивать, но на производственных (читай­
те - реальных) серверах его использовать не рекомендуется.
22.2. Универсальный солдат - ProFTPD
22.2.1. Установка и управление сервером
Данный сервер устанавливается, как и любой другой - путем установки
соответствующего пакета, который в данном случае называется proftpd. Па­
кет имеется практически во всех дистрибутивах Linux и называется везде
одинаково, что упрощает его установку (не нужно загружать его исходни­
ки, выполнять компиляцию, нужно только подставить имя пакета в команду
установки). Для установки нужно ввести одну из команд в зависимости от
дистрибутива Linux:
sudo apt install proftpd
sudo dnf install proftpd
•
# Ubuntu, DeЬian
# Fedora, CentOS
Конфигурация сервера хранится в каталоге /etc/proftpd, а
основной конфигурационный файл называется proftpd.conf
и будет рассмотрен далее.
··················································································-111
В некоторых дистрибутивах файл proftpd.conf находится в каталоге /etc, то
есть полное его имя - /etc/proftpd.conf.
Для управления сервером (для запуска, перезапуска, останова) используют­
ся следующие команды:
,.,
.,.
tj
�
::
,., ,е
�-: :..Ё:
�=
��
t"::;
sudo systemctl start proftpd
sudo systemctl restart proftpd
sudo systemctl stop proftpd
sudo systemctl status proftpd
В старых дистрибутивах используется команда service вместо systemctl:
# service proftpd start
# service proftpd restart
# service proftpd stop
# service proftpd status
Назначение команд такое же, как и в случае с другими серверами - запуск,
перезапуск, останов сервера и запрос его состояния (status).
ВНИМАНИЕ! По умолчанию сервер настраивается на автома­
тический запуск, поэтому не перезагружайте операционную
систему после установки сервера или, наоборот, не устанавли­
вайте FТР-сервер, если планируете перезапуск ОС. Ненастро­
енный FТР-сервер может представлять "дыру" в безопасности
всей системы. Сначала настраиваем - потом запускаем.
22.2.2. Редактируем конфигурацию сервера
Конфигурационный файл proftpd.conf довольно прост для понимания, но
компактным его не назовешь. В нем достаточно много комментариев, и
опытные пользователи, владеющие английским языком, без особых проблем
могут разобраться с ним самостоятельно. ОднАко если вы не относите себя к
опытным пользователям либо "London is the capiЩI of Great Britain" - и это
все, что вы можете четко сказать на английском, просмотрите листинг 22.1
•
•
-----------------------------------------------------------------------------------·
1 1,111,1 .'.' Ф:111. IOl\1,111 ,·,·рщ·р 1· 1 ,.
и сверьтесь с вашим файлом конфигурации. В л�стинге 22.1 представлен
перевод файла конфигурации с дополнительными комментариями. В зави­
симости от версии ProFTPD иrвашего дистрибутива файл конфигурации мо­
жет немного отличаться от приведенного (разумеется, кроме комментариев
- они и так будут отличаться).
[1 ЛИСТИНГ 22.1. Файл /etc/proftpd.conf
# Основной файл конфигурации ProFTPD
11
# Название сервера
ServerName
"ProFTPD"
# Тип сервера - автономный. Не изменяйте зто значение
ServerType
standalone
# Это сервер по умолчанию
DefaultServer
on
# Используем стандартный порт FТР-сервера - 21.
21
Port
# диапазон портов брандмауэра для FТР-команды PASV (пассивные порты)\
40000 40999
PassivePorts
# Уровень отладки - от О до 9.
# По умолчанию - О
О
DebugLevel
# SystemLog
·systemLog
задаем файл журнала
/var/log/proftpd/proftpd.log
f По умолчанию мы не используем IPvб. Если нужна поддержка IPvб,
установите
# значение on для этого параметра
UseIPvб
ofi
# Обычно значение 022 - отлич/f!,!Й выбор, и не изменяйте его, _за
исЮiючением
# случаев, когда вы понИМаете, что делаете
Umask
022
# Для предотвращения DоS-атак установите ма'ксимальное число.
# дочерних процессов до 30. Если вам-нужно более 30 одновременных
# соединений, просто _увеличьте зто значение, Этот параметр работает
только в# standalone-peжимe. В inetd-peжимe
# количество одновременных соединений ограничивает суперсервер xinetd.
# Значение по умолчанию - 30, но я его сделал меньше - 20·, В вашем случае
i нужно экспериментировать и смотреть, сколько одновремен�
•
пользователей
·----------------------------------------------------------------------------------18
,----------.
lkё1, l,i1ш,
# могут работать с сервером
20
Maxinstances
# Учетные записи пользователя и груnnы, от имени которых будет работать
сервер
User
ftp
Group
ftp
# Формат журналирования
LogFormat ·ctefault "%h %1 %и %t \"%r\" %s %Ь"
"%v [%Р] %h %t \"%r\" %s"
LogFormat auth
LogFormat write
"%h %1 %и %t \"%r\" %s %Ь"
# -----------------------------# Глобальные параметры описываются в секции Global
# -----------------------------<Global>
# -----------------------------# Вход на сервер
# -----------------------------# Поскольку DeferWelcome равно on, то приветствие будет отображено
·- - - - - - - - - -
�
после
# аутентификации, а не до нее (off)
Serverident
on "FTP server ready"
DeferWelcome
on
# ДИректива DisplayConnect задает текстовый файп, который
t будет отображен сразу после подключения пользователя, но до его входа
fDisplayConnect
/etc/proftpd/msg
t Директива DisplayLogin указывает текстовый файп, который будет
# показан, когда пользователь зайдет на сервер
#DisplayLogin
/etc/proftpd/msg
<IfModule mod ident.c>
t Отключаем Ident-зanpocы (RFC1413)
off
IdentLookups
</IfModule>
# Если директива UseFtpUsers включена (on), то ProFТPD при подключении
t пользователя будет искать его имя в файле /etc/ftpusers. Если его там
# нет, тогда сервер откажет в подключении
off
UseFtpUsers
t Подключение на основании /etc/shell. При включенной директиве
# будет требоваться "правильная" оболочка. Если к серверу будут
# подключаться не только Linux/Unix-клиeнты, эту директиву нужно
t выключить (off)
RequireValidShell off
•
a!t··················································································
J 1,11\,1 22 Фа1i. 111111,lli CCJ)HCJ) 1:·1 1'
# Максимальное число времени в секундах, которые разрешается
# клиенту потратить на аутентификацию
60
TimeoutLogiп
# Максимальное число попыток входа
MaxLogiпAttempts 3
# Максимальное число клиентов на один узел. Позже мы поговорим об этой
# директиве подробнее
#MaxClieпtsPerHost попе
t Максимальное число соединений для одного пользователя
#МaxClieпtsPerUser 1 "Only one connection at а time."
# -----------------------------# Аутентификация
# -----------------------------### РАМ-аутентификация
# Включите РАМ-аутентификацию, если она вам нужна (если хотите
# контролировать вход систему по FТР через РАМ)
AuthPAМ
off
# Измененный AuthPAМConfig-фaйл
proftpd
AuthPAМConfig
### РАМ-аутентификация
# Задает альтернативный файл паролей. Если нужно, чтобы
# информация об учетных записях бралась из /etc/passwd,
# укажите его здесь, а еще лучше - закомментируйте следующие
# две опции
AuthUserFile
/etc/proftpd/auth/passwd
# Задает альтернативный файл групп
/etc/group
AuthGroupFile
### Порядок модулей аутентификации.
# Сначала аутентификация будет производиться
# средствами самой ОС, а потом - через файл, заданный в AuthFile
AuthOrder
mod auth unix.c mod auth file.c
mod auth file. с
# AuthOrder
# Если нужна аутентификация РАМ, то порядок должен быть такой:
# AuthOrder mod_auth_pam.c* mod_auth_unix.c
-
•
-
-
-
# -----------------------------# После входа пользователя (логина)
# -----------------------------# Задает файл,который будет отображен после входа на сервер
DisplayLogin
welcome.msg
# Задает файл, который будет отображаться при изменении каталога
.message
DisplayChdir
# Если off, запрещает перезаписывать существующие файлы
....................................................................................
lk,1, l.i1111,
AllowOverride
.,.
off
# Тайм-аут простоя: если пользователь не проявляет активности,
# соединение будет закрыто
600
Timeoutldle
# Тайм-аут начала передачи: если пользователь вошел и не начал
# передачу за 900 секунд (по умолчанию), соединение будет разорвано
TimeoutNoTraпsfer
900
# Замирание во время передачи. Подробнее этот параметр мы обсудим
позже
300
TimeoutStalled
# Максимальная продолжительность сессии с момента аутентификации
T�meoutSession
3600
# -----------------------------# Сеанс пользователя
# -----------------------------# Задает корневую файловую систему пользователя
# Это очень важный параметр, и о нем мы поговорим отдельно
- web, ! users
DefaultRoot
# Регулярное выражение, задаюшее параметры командной строки, которые
# будут блокироваться
DenyFilter
\*.*/
# Позволяет указать, что именно будет выводиться при листинге
# каталога. Обычно не нужно изменять этот параметр
ListOptions
"-А +R" strict
# Включает/выключает glоЬ()-функциональность
UseGlobЬing
off
# Показывать (on) или нет (off) символические ссылки
ShowSymlinks
on
t Рекомендуется выключить этот параметр (off), чтобы сервер
# показывал локальное время, а не GMT
Ti.mesGМТ
off
# -----------------------------# Загрузка и выгрузка файлов
# -----------------------------1
# Можно ли перезаписывать сушествуюшие файлы или нет
AllowOverwri te
off
# Можно ли клиентам продолжать загрузку (on) или нет (off)
# Для удобства пользователей рекомендую включить этот параметр
AllowRetrieveRestart оп
# Для более безопасной загрузки включите (on) ;этот параметр
on
HiddenStores
# Включает автоматическое удаление частично загруженных файлов
· DeleteAЬortedStores on
•
ID-------------------------·--------------------------------------------------------·
1 1,111,1 '' Фа11111111.1111·1
·
1 11'
111н·р
*AllowStoreRestart
·off
# -----------------------------,
/
# Параметры протоколирования. Смело все оставляйте ка·к есть
# �----------------------------off
WtmpLog
/var/log/proftpd/xferlog
TransferLog
# Записываем все порытки входа
ExtendedLog
/var/log/proftpd/auth.log AUTH auth
# Протоколирование доступа к файлам/каталогам
Exten�edLog
/var/log/proftpd/access.log WRITE,READ write
# Параноидальный уровень протоколирования...
ExtendedLog
/var/log/proftpd/paranoid.log ALL default
# SQLLogFile
#SQLLogFile
</Global>
/var_/log/proftpd/SQL.log
### Конец глобальных параметров ###
# Запрещаем использование CHMOD
<Limit SITE СНМОD>
DenyAll
</Limit>
###И
# Включаем другие конфигурационные файлы
/etc/proftpd/conf.d/*.conf
#Include
# -----------------------------# Настройки анонимного доступ�
# ------------------------------
# Базовая анонимная конфигурация, загрузка файлов на сервер запрещена.
# Анонимным пользователям можно только скачивать Файлы с сервера.
# Если вам не нужен анонимный вход, просто удалите секцию
# <Anonymous>
<Anonymous ~ftp>
# Limit LOGIN
#<Limit LOGIN>
# Order Allow,Deny
# Allow from .examples.net,113.141.114.1
# Deny from All
#</Limit>
•
•
•
··················································································t:D
lkc1, l,irшx
# Ограничиваем WRITE везде, запрещаем запись полностью
<Limit WRITE>
DenyAll
</Limit>
# LoginPasswordPrompt
будем ли отображать приветствие или нет
LoginPasswordPrompt off
# DirFakeMode - прячем настоящие разрешения файлов/каталогов
DirFakeMode. 0640
::1
-с
:::
"'
-с
:::
Е:
# DirFakeUser - прячем настоящих владельцев файлов/каталогов
DirFakeUser On
# DirFakeGroup - скрываем настоящую группу файла/каталога
DirFakeGroup On
# Для анонимного входа можно использовать как имя anonymous, так и ftp
anonymous ftp
UserAlias
# Максимальное число одновременных анонимных пользователей
10
MaxClients
# Максимальный размер получаемого файла
#MaxRetrieveFileSize 512 МЬ
# Ограничиваем скорость передачи данных до 255 КБайт/с
#TransferRate APPE,RETR,STOR,STOU 255
# Файл 'welcome.msg' будет отображаться при входе, а файл ' .message' при
# каждом новом изменении: каталога
DisplayLogin
DisplayChdir
welcome.msg
.message
# Далее следует закомментированная секция Directory, позволяющая
указать
# параметры каталога. В данном случае ограничивается доступ к каталогу
# pub. Получить доступ к нему могут только сети .examples.net и с IP
# 113.141.114.1
#<Directory pub>
# <Limit ALL>
# Order Allow,Deny
# Allow from .examples.net,113.141.114.1
# Deny from All
# </Limit>
#</Directory>
# Следующая секция содержит параметры каталога uploads, который обычно
# используется для загрузки файлов анонимными пользователями на сервер.
# Если вам нужна такая возможность, раскомментируйте эту секцию.
•
ID··················································································
1 l,IB,I 2� Фall, 1(1111,111 t't•1ни·р 1· 1 р
t Мы запретили чтение этого каталога, но разрешили загрузку в
JI него файлов
t<Directory uploads/*>
# <Limit READ>
#
t
DenyAll
</Limit>
<Limit STOR>
AllowAll
# </Limit>
#</Directory>
</Anonymous>
22.2.3. Обеспечение безопасности FТР-сервера
Ограничение доступа к системным файлам
Поскольку файл конфигурации ProFTPD содержит много самых разных
параметров, есть вероятность настроить его неправильно, что приведет к
снижению безопасности сервера. В этом разделе мы рассмотрим некоторые
параметры, способные ухудшить безопасность сервера. Начнем с директивы
DefaultRoot. Для нее нужно задать значение -:
DefaultRoot ~
После этого для каждого пользователя его домашний каталог станет его кор­
невым каталогом, то есть пользователь не сможет выйти за пределы его до­
машнего каталога и прочитать ваши системные конфигурационные файлы.
Любые изменения, произведенные пользователем в его домашнем каталоге,
никак не отразятся на системе. Он волен делать все, что ему заблагорассу­
дится: может загружать файлы в свой домашний каталог, скачивать файлы
на свой компьютер, удалять файлы и т.д. Но поскольку доступ к системным
файлам закрыт, навредить системе он не сможет. Однако есть исключения:
можно навредить системе и без доступа к ее системным файлам.
•
Ограничение количества регистраций пользователя. Защита
от DОS-атаки
··················································································tlD
lk,1, l.illll\
По умолчанию с одного и того же IР-адреса может регистрироваться (логи­
ниться) неограниченное количество пользователей. Никакие ограничения не
задаются, поскольку теоретически с одного и того же IР-адреса могут вхо­
дить несколько пользователей, например, есть какой-то не очень большой
провайдер, у него есть только один "белый" IР-адрес, который используют
все его пользователи. Мы можем ограничить количество клиентов, которые
могут войти на сервер с одного IР-адреса. В корпоративной сети все просто:
один клиент - один IР-адрес, поэтому можем написать так:
MaxClientsPerHost
1
Если же к FТР-серверу разрешено подключаться пользователям Интернета,
то нужно помнить как раз о тех самых небольших провайдерах. Вспомните
об университетах, библиотеках и о прочих местах, где предоставляется до­
ступ к Интернету, но, как правило, в таких местах никто не заботится об
уникальности IР-адреса и все работают через один IР-адрес шлюза.
Получается, что к вашему серверу могут подключиться несколько пользова­
телей из этой сети и у всех них будет одинаковый IР-адрес, хотя сами поль­
зователи будут разные. Обычно такие ситуации - редкие, поэтому можно
ограничиться 2-3 клиентами. Но бывают исключения: у вас может быть
очень популярный сервер, например, с развлекательным контентом или же
вы знаете, что где-то есть другая сеть, практически все пользователи кото­
рой будут подключаться к вашему серверу. Здесь решать только вам. Пока
установим ограничение на уровне 3 пользователей с одного IР-адреса:
MaxClientsPerHost
3
Директива Maxlnstances задает максимальное число
одновременных клиентов.
;::
Чтобы предотвратить DоS-атаку, не устанавливайте большие значения для
этого параметра:
�
Maxinstances
20
•
....................................................................................
1 1,111,1 '' Ф:111.ЮНl,111 ,·,·рщ·р 1 11'
Опасность этого параметра в том, что более 20 пользователей не смогут ра­
ботать одновременно. Представим, что вы уже превратились в популярного
хостинг-провайдера и у вас уже есть более 500 клиентов. Вероятность, что в
бизнес-время более 20 из 500 человек захотят внести изменения в свои сай­
ты, довольно высока. Здесь нужно исходить из поставленных задач. Возмож­
но, придется поднять ограничение до 50 (10% от всего количества пользова­
телей). В любом случае, наверняка у вас будет служба поддержки, в которую
будут обращаться пользователи. Если возникнут проблемы, тогда вы всегда
сможете поднять этот лимит.
ВНИМАНИЕ! Каждый процесс proftpd занимает около 2.5 Мб,
следовательно, 100 процессов займут всего 250 Мб. Как види­
те, память расходуется экономно. Но нужно помнить о загрузке
процессора. При закачке одного файла один процесс proftpd за­
нимает от 10 до 30% процессорного времени одного ядра. Вот
и считаем, что если даже один процесс расходует 10% процес­
1 сорного времени одного ядра, всего 1 О процессов "сожрут" одно
1
1 ядро процессора. 40 одновременных процессов окажут ощути­
1
1
1 мое влияние даже на четырехядерный процессор. Вот поэтому
1
: в настройках по умолчанию и рекомендуют не превышать значе1 ние 30 для этого параметра.
t______________________________________________________________
Директива MaxClientsPerUser задает, сколько соединений
может создать один пользователь.
Чтобы один пользователь не залогинился 30 раз и не захватил все 30 про­
цессов, рекомендуется ограничить это значение до 1:
MaxClientsPerUserl "Only one connection at а time."
Первый параметр этой директивы - число соединений.
Второй - сообщение об ошибке, которое будет выведено.
•
Настройки для медленных соединений
··················································································tlD
HcL1, l.irнr,
Если у клиента медленное или нестабильное соединение, бывает так, что
он может начать передачу файла, но потом связь может оборваться. Можно
задать тайм-аут, определяющий, сколько нужно ждать в такой ситуации до
разъединения. Медленные и нестабильные соединения уходят в прошлое,
поэтому можно понизить время ожидания с 5 минут (300 секунд) до 2 минут:
TimeoutStalled
120
Это делается специально, чтобы процесс proftpd завершился как можно
быстрее и не занимал драгоценное процессорное время..
Максимальная продолжительность сессии с момента
аутентификации задается директивой TimeoutSession.
По умолчанию сессия составляет 1 час, чего вполне хватит даже для загруз­
ки больших файлов. Например, при относительно низкой скорости загрузки
в 1 Мбайт/с файл размером 1 Гб загрузится примерно за 1024 секунды. То
есть за одну такую сессию пользователь сможет загрузить три таких файла.
Если есть необходимость загрузки больших объемов данных, этот параметр
можно увеличить.
Настройки для анонимных пользователей
В некоторых случаях нужно разрешить работу анонимных пользователей.
Сервер ProFTPD может одновременно работать как в обычном, так и в ав­
тономном режиме. Приведенная далее конфигурация разрешает загрузку
файлов в каталог uploads, который пользователи не могут прочитать - это
делается, чтобы один анонимный пользователь не удалил файлы, загружен­
ные другими пользователями:
<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>
•
ID··············································································--··
J 1,IB,I 22 Фaii.JOBl,111 Cl'(llll'(I 1: 1 р
<Limit STOR>
AllowAll
<'/Limit>
</Directory>
Доступ на запись разрешен всем (AllowAll), но рекомендуется ограничивать
его по IР-адресу, например, разрешить запись только пользователям корпо­
ративной сети:
<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
DenyAll
Allow from 10.l.l.
</Limit>
</Directory>
В глобальной секции можно ограничить доступ к серверу только пользова­
телям локальной сети. Повторюсь - только если у вас корпоративный сер­
вер. Это можно сделать путем ограничения операции LOGIN, например:
<Limit LOGIN>
Order deny, allow
DenyAll
Allow from 10.10.1.
</Limit>
Аутентификация пользователей
Сервер ProFTPD поддерживает аутентификацию как посредством операци­
онной системы Linux (то есть проверкой логина и пароля занимается сама
Linux), так и посредством различных плагинов. В следующем разделе будет
показано, как реализовать аутентификацию пользователей через таблицу
MySQL, что пригодится при большом количестве FТР-пользователей.
•
································································-·-···············t:D
lkll, 1 illll\
В большинстве случаев вам будет удобнее использовать для аутентификации
саму операционную систему Linux:
AuthOrder
;:
mod auth unix.c
Если пользователей немного, и все они зарегистрированы через /etc/passwd,
это неплохой вариант. ПpIJ желании можно использовать аутентификацию
РАМ:
'AuthOrqer mod auth pam.c* mod auth_unix.c
Если же пользователей очень много (несколько сотен или тысяч), удобнее
для аутентификации использовать MySQL. В этом случае учетные записи
FТР-пользователей будут храниться не в /etc/passwd, а в отдельной таблице
MySQL. Настройка этого способа аутентификации будет рассмотрена в сле­
дующем разделе, поскольку все не так просто, как кажется на первый взгляд.
Ускорить аутентификацию может отключение следующих директив:
IdentLookups off
UseReverseDns off
Первая строка отключает Ident-зaпpocы (давно уже не используются), вт_о­
рая - запрещает разрешать IР-адреса пользователей в доменные имена. При
входе пользователя на сервер его IР-адрес автоматически преобразовывается
в доменное имя. Мы отключили данный функционал, чтобы аутентифика­
ция проходила быстрее. При желании вы всегда сможете разрешить IР-адрес
в доменное имя вручную, если вам это будет нужно.
Директива TimeoutLogin задает, сколько времени можно
потратить пользователю на аутентификацию.
::::1
-:,
!;
�
�
По умолчанию - 60 секунд. Сейчас никто не вводит пароль вручную, поэтому нет смысла ждать 60 секунд. FТР-клиент вводит пароль моментально.
Зато такая настройка может "подвесить" сервер, например, злоумышленник
•
E!I································'·················································
1 1,1в,1 22 Ф:111.111111,111 t·t·1111ep 1· 11'
подключается к серверу под множеством учетных записей и заставляет сер­
вер ждать 60 секунд для каждой из них. Так что меняем это значение на 10.
Десять секунд вполне достатоино на предоставление пароля.
TirneoutLogin
10
Как все будет готово, запустим сервер:
sudo systernctl start proftpd
После запуска просмотрим его состояние:
sudo systernctl status proftpd
Далее попробуем подключиться к серверу:
$ ftp <IР-адрес сервера>
22.2.4. Аутентификация с помощью MySQL
При большом количестве пользователей хранить учетные записи удобнее в
таблице MySQL. Во-первых, удобнее управлять таблицей в базе данных, чем
редактировать /etc/passwd. С помощью простых SQL-запросов можно легко
деактивировать пользователей, которые были зарегистрированы в опреде­
ленный период или соответствующих другим критериям. При использова­
нии системной аутентификации файл /etc/passwd придется редактировать
вручную, да еще и каждую запись отдельно. Во-вторых, FТР-пользователи
(которые обычно являются вашими клиентами) не будут смешаны с систем­
ными пользователями (с персоналом компании), что есть хорошо - вы всег­
да сможете понять, кто есть кто.
Для реализации аутентификации через MySQL нужно установить плагин
proftpd-mysql, который обеспечит аутентификацию через MySQL. Как пра­
вило, это делается путем установки соответствующего пакета (пакет proftpd­
mysql) .
,
................................................................................. ..
::;
:;;
:;;
"
с.
lkc ,. 1 irнl\
Далее в область глобальных параметров конфигурационного файла proftpd.
conf нужно добавить строки:
Plaintext
SQLAu ·thTypes
users
SQLAuthenticate
SQLConnectinfo
ftpusers@localhost:3306 ftp password
SQLUserinfo 'users' 'usernarne' 'password' 'uid' 'gid' 'hornedir'
'shell'
Первая строка определяет тип аутентификации. Мы будем хранить в БД па­
роли в открытом виде (незашифрованном), поэтому используем тип аутен­
тификации Paintext. Можно, конечно, использовать опцию Backend и шиф­
ровать пароли с помощью МуSQL-функции PASSWORD().
Директива SQLAuthenticate указывает, кого мы будем
аутентифицировать - пользователей.
Директива SQLConnectlnfo задает параметры подключения
к MySQL-cepвepy.
Здесь:
• ftpusers - название базы данных, которая будет содержать информацию
о пользователях;
f"' : • localhost - имя MySQL-cepвepa;
• 3306 - порт сервера;
• ftp- имя МуSQL-пользователя (его еще нужно создать!);
• password - пароль МуSQL-пользователя.
Директива .SQLUserlnfo задает имя и �труктуру таблицы с
информацией о пользователях.
•
•
----------------------------------------------------------------------------------·
1 1.11<.1 �� Фа11.10111,111 l'l'()Bl'P 1 11'
Здесь 'users' - имя таблицы, остальные поля задают, соответственно, имя
пользователя, пароль, UID, GID, домашний каталог и оболочку.
Далее с помощью phpMyAdmin,или клиента mysql создайте в базе данных
ftpusers следующую таблицу:
CREATE TABLE 'users ' (
1
'uuid' int(ll} NOT NULL auto increment,
'username' varchar(32} NOT NULL,
'password' varchar(l28} NOT NULL,
'uid' int(ll} NOT NULL,
'gid' int(ll} NOT NULL,
'homedir' varchar(SO) NOT NULL,
'shell' varchar(20} NOT NULL,
'last_login' int(lS) NOT NULL,
'login_count' int(lS) NOT NULL,
'last_err_login' int(lS} NOT NULL,
'err_login_count' int(lS) NOT NULL,
PRIМARY КЕУ ( 'uuid'}
} ENGINE=MyISAМ;
Собственно, вот и все. Можно приступить к заполнению этой таблицы.
Если вы желаете хранить пароли в зашифрованном виде, используйте тип
аутентификации Backend и пароли в БД вносите через МуSQL-функцию
PASSWORD()'.
22.3. Очень безопасный vsftpd
Сервер vsftpd не только очень безопаснь'J:й, но и очень компактный. Функци­
онала меньше, настраивать его придется меньше времени, меньше вероят­
ность допустить ошибку при настройке.
Устанавливается этот сервер посредством установки одноименного паке­
та, который входит в состав практически всех современных дистрибутивов
Linux.
Конфиrурационный файл vsftpd называется /etc/vsftpd.conf.
•
http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_password
....................................................................................
..,..
lkll, l.i1111\
В листинге 22.2 приводится вполне р_абочая конфигурация сервера vsftpd.
Напомним, что vsftpd не поддерживает одновременную регистрацию ано­
нимных и обычных пользователей. Если вам нужно, чтобы на сервере реги­
стрировались как анонимные, так и обычные пользователи; вам нужно ис­
пользовать proftpd.
Параметр апопутоиs_епаЬ/е позволяет включить/выключить поддержку
анонимю,1х пользователей, а параметр local_enaЬ/e - локальных.
Не пытайтесь включить оба параметра - у вас ничего не выйдет. Включите
один из них (см. далее).
Как правило, vsftpd используется для заrрузки файлов анонимными пользо­
вателями, поэтому данное оrраничение не является существенным.
ЛИСТИНГ 22.2. Конфигурационный файл /etc/vsftpd.conf
# Разрешаем только анонимных пользователей
anonyrnous_enaЫe=YES
# Запрещаем загрузку файлов анонимными пользователями
anon_upload_enaЫe=NO
# Можно ли анонимному пользователю создавать свои каталоги?
anon_rnkdir_write_enab�e=NO
# Разрешить ли операцию записи (не только сохранение файла, но и
удаление, и
# переименование) анонимному пользователю?
anon_other_write_enaЫe=NO
# Заnрешаем регистрацию обычных пользователей.
# Не пытайтесь установить оба параметра в YES - такая конфигурация
работать
# не будет
local_enaЫe=NO
#.Из соображения безопасности не изменяйте этот параметр!
chroot local user =YES
# Максимальная скорость передачи данных (в байтах/сек.)
# О - без ограничения
local rnax rate=7200
# Разрешена ли запись в каталог?
write enaЫe =NO
•
•
....................................................................................
1 111.1 '' Ф.111 111111.111 ,·,·р1н·р 1 11'
i Выводи'I'ь ли соо�щения .при· смене дирек'l'ории?
dirrnessage_enaЫe•YES
t С'I'рока, ко'l'орая буде'l' показана при входе пользова'l'еля
ftpd_banner•"Welcorne to FTP service,"
i Включи'l'ь регис'l'рацию собы'l'ий?
xferlog_enaЫe•YES
t Про'l'околирова'l'ь все ак'l'ивные FТР-соединения?
log_ftp_protocol•NO
* Разреwа'l'ь ли соединения 'l'олько на пор'l' 20 (ftp data)?
connect_from_port_20•YES
* Тайм-ау'l' сессии
idle _sessi-on_timeout•бOO
* Тайы-ау'l' передачи данных
data_connection_tirneout•l20
f ПредОС'l'аВЛЯ'l'Ь ВХОД через РАМ
parn_service_narne•vsftpd
* Для ав'l'оноыной рабо'l'ы (как standalone а proftpd) для следуJОЩего
* параые'l'ра нужно ус'l'анови'l'ь значение YES
listen•YES
После того как вы отредактируете файл конфигурации, сохраните его и за­
пустите сервер:
sudo systernctl start vsftpd
·---------------------------------------------------------------------------------18
•
Глава 23.
ДОМЕННАЯ СИСТЕМА
ИМЕН
л •
11«1, l.illll\
23.1. Разнообразие DNS-cepвepoв
Все мы знаем, что такое система доменных имен (DNS, Domain Name
System).
Если кто подзабыл, то напомним:
Система DNS отвечает за разреwение числовых IР-адресов
в символьные доменные имена.
Например, всем известному сайту www.mail.ru соответствует IР-адрес
217.69.139.202 (это один из его IР-адресов). В браузере вы можете ввести
или символьное имя (www.mail.ru), или этот IР-адрес. Машинам проще ра­
ботать с числами, человеку - с символьными именами.
Рассмотрим процесс разрешения доменного имени в IР-адрес. Когда вы вво­
дите адрес узла в браузер, браузер обращается к резолверу - это часть опе­
рационной системы, которая отвечает за разрешение доменных имен. Если
доменное имя есть в локальном кэше резолвера, он сразу же возвращает его
браузеру. Браузер, получив IР-адрес узла, отправляет ему запрос, например
GET /, с целью получения корневой страницы (которая обычно называется
index.*).
Если в кэше резолвера нет доменного имени, тогда он обращается к DNS­
cepвepy, который указан в настройках сети или же получен от DНСР-сервера
во время автоматической настройки сетевого интерфейса. Как правило, это
DNS-cepвep провайдера. DNS-cepвep провайдера проверяет свой кэш. Если
ID························:·······················································'
1
1 11,l
1
;
,�11,н.·1111:аи ("IH'lt.'\la 11\H'II
в нем будет нужное доменное имя, он отправляет соответствующий ему IР­
адрес резолверу. Если же нет, тогда DNS-cepвep обращается к DNS-cepвepy
корневого домена .ru. Скорее всего, в его кэше будет нужный IР-адрес, если
же нет, тогда будет произведено обращение к DNS-cepвepy домена mail.ru с
целью получить IР-адрес узла www. Полученный IР-адрес будет по цепочке
возвращен узлу, который запросил разрешение доменного имени.
Как видите, схема разрешения доменного имени является рекурсивной, а
наш запрос - рекурсивным.
Существуют различные виды DNS-cepвepoв.
Даже если у вашей организации нет своего домена или же вы предпочитае­
те, чтобы делегированием домена занимался ваш регистратор или интернет­
провайдер, вы все равно можете установить кэширующий DNS-cepвep.
При этом рекурсивными запросами будут заниматься DNS-cepвepы провай­
дера, а вашему серверу нужно только кэшировать результаты запросов так вы ускорите скорость разрешения доменных имен - странички начнут
открываться быстрее, а ваши пользователи будут довольны. Зачем нужен кэ­
ширующий DNS-cepвep, если в каждой системе есть кэш резолвера? В кэше
резолвера находятся только те имена, к которым обращались вы. В кэше кэ­
ширующеrо DNS-cepвepa находятся все имена, к которым обращались все
пользователи вашей сети. Следовательно, чем больше пользователей в ва­
шей сети, тем больше будет эффективность от кэширующеrо DNS-cepвepa.
Итак, вы уже познакомились с одним типом DNS-cepвepa - кэширующим.
Есть и обычный сервер DNS - он занимается тем, чем и должен заниматься
- хранит информацию о вашей доменной зоне.
Также он называется первичным DNS-cepвepoм. На помощь первично­
му настраивают вторичный DNS-cepвep - он будет обрабатывать DNS­
запросы, когда первичному серверу станет "плохо". Далее в этой главе будет
показано, как настроить вторичный DNS-cepвep.
Настройку DNS-cepвepa мы начнем с самого простого варианта - с кэши­
рующеrо DNS-cepвepa.
)
23.2. Настройка кэширующего DNS-cepвepa
Unbound
•
·---------------------------------------------------------------------------------18
lkLI,
1 ilHI\
Для настройки кэширующего DNS-cepвepa раньше бьmо принято исполь­
зовать BIND9 - тот же пакет, который используется для настройки полно­
ценного DNS-cepвepa.
Но сейчас вместо него принято использовать пакет unbound.
Сервер Unbound распространяется под лицензией BSD, обладает модульной
структурой и может работать как в рекурсивном, так и кэширующем режи­
ме. Мы же будем использовать Unbound сугубо в кэширующем режиме.
Основной файл конфигурации называется /etc/unbound/
unbound.conf.
По умолчанию он практически пуст, а полный пример со всеми возможными
опциями можно найти в каталоге /usr/share/doc/unbound/examples.
В листинге 23 .1 представлен файл /etc/unbound/unbound.conf, настраиваю­
щий Unbound на работу в кэширующем режиме.
ЛИСТИНГ 23.1. Файл /etc/unbound/unbound.conf
server:
# Порт, на котором наш сервер будет "слушать" запросы
port: 53
11 Описываем интерфейсы, на которых мы будем "слушать" запросы.
# 192.168.1.1 - сервер нашей локальной сети, на котором установлен
Unbound
interface: 127.0.0.1
interface: 192.168.1.1
11 Исходящий интерфейс (WAN)
outgoing-interface: ххх.хх.хх.хх
t Сеть, 'которой разрешен доступ к нашему серверу
access-control: 192.168.1.0/24 allow
# Разрешаем IPv4 TCP/UDP, запрещаем IPv6
do-ip4: yes
do-ip6: по
do-udp: yes
do-tcp: yes
# Пользователь, от имени kоторого будет запускаться сервер
username: unbound
# Указываем файл журнала и отключаем использование syslog
logfile: "unbound.log"
•
ID·------·-----------·------------------------------:--·--------------------···-··-·
.
1 l,ll1.\ �� ,tо,н.·1111аи l'IH'll'\l.111\ll'II
use-syslog: no
t Путь к РID-файлу
pidfile: "/var/ run/local unbound. pid"
t Скрываем версию софта-
hide-version: yes
f Уровень журналирования
verbosity: О
'
,
О (только· ошибки)
t Следующая строка настраивает Unbound на осуществление
криптографической
t валидации DNSSEC, используя корнево� ключ
auto-trust-anchor-file: "/var/liЬ/unbound/root. key"
Теперь проверим конфигурацию сервера:
t unbound-checkconf
Если ошибок нет, вы получите сообщение:
unbound-checkconf: no errors in /etc/unbound/unbound.conf
Осталось только перезапустить Unbound:
unbound restart
Осталось только настроить DНСР-сервер, чтобы он сообщал всем локальным
узлам ваш новый IР-адрес DNS-cepвepa. В нашем случае - это 192.168.1.1.
23.3. Настройка кэширующего сервера на базе
Ьind
Ради контраста сейчас мы попытаемся настроить кэширующий сервер на
базе пакета bind (в некоторых дистрибутивах - bind9).
'----------------------------------------------------------------------------------ID
lkc1. l,i1111x
Первым делом установим сам bind:
# apt-get install bind9
ПРИМЕЧАНИЕ. BIND9- это уникальный сервер. Его пакет
называется Ьind9, каталог с конфигурационными файлами /etc/Ьind, а название конфигурационного файла - named.conf.
Процесс (исполнимый файл) называется named, К такому много­
образию имен придется привыкнуть. Главное понимать, что это
одно и то же.
Раньше основной конфигурационный файл /etc/Ьind/named.conf был до­
вольно большим, если не огромным. Сейчас в нем только три строчки (лист.
23.2).
ЛИСТИНГ 23.2. Файл /etc/Ьind/named.conf по умолчанию
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
,.,:.
=
Общие параметры теперь вынесены в файл /etc/Ьind/
named.conf.options. Локальные зоны описываются в
named.conf.local, а зоны по умолчанию - в named.conf.
default-zones.
Нас в данный момент интересует файл named.conf.default-zones, в котором
описаны зоны по умолчанию. Проследите, чтобы в этом файле были описа­
ны зоны, представленные в листинге 23.3.
ЛИСТИНГ 23.3. Файл /et�/Ьind/named.conf.default-zones
// Корневая зона, содержит корневые серв�ры имен
zone "." {
type hint;
file "/etc/Ьind/db.root";
•
ID---------------------····-··································---------------------·
) 1,11\,1 � \ , [tl\1('1111.111 ,·ш· 1 ('\1:1 11\H'II
};
// Зона localhost
zone "localhost" {
type master;
};
file "/etc/Ыnd/dЬ. local";
zone "127.in-addr.arpa" {
type master;
};
file "/etc/Ыnd/dЬ.127";
zone "0.in-addr.arpa" {
type master;
};
file "/etc/Ыnd/dЬ.0";
zone "255.in-addr.arpa" {
type master;
};
file "/etc/Ыnd/dЬ.255";
Как видите, в этом конфигурационном файле описывается зона корневых
серверов и локальная зона localhost, которая отвечает за преобразование
имени localhost в IР-адрес 127 .0.0.1 и обратно.
Теперь рассмотрим файл /etc/Ьind/named.conf.options (лист. 23.4).
ЛИСТИНГ 23.4. Файл /etc/Ыnd/named.conf.options
options {
directory "/var/cache/Ьind";
// Здесь описываются forward-cepвepы
// forwarders
//
О.О.О.О;
// };
dnssec-validation auto;
•
};
auth-nxdomain no;
t conform to RFC1035
listen-on-vб { any; } ;
··················································································-llill
:.
;:
:;:
Q
С1.
с:
lkc1,l.in11,
Все, что нужно, - это добавить IР-адрес DNS-cepвepa провайдера в блок
forwarders. Именно они будут выполнять всю грязную работу по разреше­
нию доменных имен, а наш сервер будет только кэшировать· результаты
запроса.
Перед блоком forwarders можно указать параметр forward, который может
принимать значение оп/у илиjirst.
В первом случае наш сервер вообще не будет предпринимать попыток об­
работать запрос самостоятельно.
Во втором случае сервер предпримет попытку обработать запрос самосто­
ятельно, если не получит ответ от серверов, описанных в блоке forwarders.
Второе значение более предпочтительно:
forward first;
forwarders {
8.8.8.8;
8.8.8.4;
);
Вот и все. Перезапустите сервер:
1 service bind9 restart
Просмотрите файл журнала:
t tail /var/log/daemon.log
Вы должны увидеть сообщение, что сервер запущен, вроде этого:
Jun 29 09:41:42 debian named[6921]: running
Проверим, работает ли наш DNS-cepвep. В /etc/resolv.conf на DNS-cepвepe
добавьте строку:
nameserver 127.0.0.1
•
111----------------------------------------------------------·-----------------------·
1 l,IH,I �' #10,н.·1111аs1 t'llt' 1 t'\ta 11\lt..'II
Если вы по каким-то причинам не отключили NetworkМanager, то он при сле­
дующей перезагрузке перезапиюет этот файл. Понятно, что NetworkМanager
получит IР-адрес DNS-cepвepa от DНСР-сервера, но, пока вы еще не настро­
или DНСР-сервер, можете запретить изменение файла /etc/resolv.conf:
# chattr +i /etc/resolv.conf
После этого перезапустите сеть или компьютер..
Далее введите команду:
nslookup mail.ru
Вывод будет таким:
S�rver: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name:
mail.ru
Address: 217.69.139.202
Name:
mail.ru
Address: 217.69.139.200
Name:
mail.ru
Address: 94.100.180.201
,Name:
mail.ru
Address: 94.100.180.200
Как видите, ответ пришел от нашего сервера 127.0.0.1. Мы убедились, что
наш DNS-cepвep работает, значит, можно настроить DНСР-сервер, чтобы он
"раздавал" всем вашим клиентам IР-адрес только что настроенного DNS­
cepвepa.
Конечно, прописывать в настройках DНСР-сервера нужно не IР-адрес
127.0.0.1, а IР-адрес сервера, который вы можете,получить командой ifconjig,
запущенной на DNS-cepвepe .
•
·----····-----------·--------------------------·---·----·---·--------·--·-----------
lk,,. 1 illll\
23.4. Настройка полноценного DNS-cepвepa
Настройка полноценного DNS-cepвepa сложнее настройки кэширующего
DNS-cepвepa. Ведь нам придется настроить одну или несколько зон, которые
будет обслуживать наш DNS-cepвep. Домен - это не зона.
Зона - это часть домена, которая управляется
определенным DNS-cepвepoм. В случае с небольшими
доменами эон,:t = домен.
Но иногда бывает так, что часть поддоменов одного домена обслуживается
одним DNS-cepвepoм, а другая часть - другим DNS-cepвepoм. Так вот, эта
часть, которая обслуживается определенным DNS-cepвepoм, и есть зона.
Представим, что у нас есть домен example.com, который представляет сеть
192.168.1.0. В конфигурацию BIND нужно добавить следующие строки:
zone "example.com"
type master;
file "example. сот";
notify no;
};
?
�
zone "0.1.168.192.in-addr.arpa"
type master,;
file "192.168.1.0";
noti_fy yes;
Данные строки нужно добавить или в файл /etc/Ьind/named.conf.local, или
прямо в файл /etc/Ьind/named.c?nfпocлe тех строк, которые в нем уже есть.
Файл example.com, описанный в первом блоке, zone, содержит конфигура­
цию прямого преобразования, то есть используется для преобразования до­
менных имен в IР-адреса. Содержимое этого файла приведеf!О в лист. 23.5 .
.
•
....................................................................................
1 l,IB,I ) \ ,tв,1t.·1111аи t.'IH"lt.'\la 11\H'II
ЛИСТИНГ 23.5. Файл /etc/Ыnd/example.com
@
IN
ns.example.c9m. admin.example.com.
серийный номер
1
обновление каждые 60480 секунд
60480
повтор каждые 86400 секунд
86400
время хранения информации - 672 часа
2419200
TTL записи
86400
SOA
IN NS ns.example.com.
192.168.1.1
IN А
100 mail.example.com.
IN МХ
www
IN СNАМЕ ns.example.com.
mail
192.168.1.З
IN А
IN А
ftp
192.168.1.2
localhost. IN А 127.0.0.1
Теперь разберемся, что есть что.
Первым делом запомните "правило точки". Если в конце доменного имени
ставится точка (посмотрите - ns.example.com.), то сервер не будет допи­
сывать имя домена example.com к имени. Если же имя указано без точки, к
нему будем дописано имя домена example.com.
Запись SOA описывает начало полномочий.
Первое имя после SOA- это имя данного компьютера - ns.example.com.
Затем указывается электронный адрес администратора сервера.
Символ @ зарезервирован, поэтому первая точка считается @.
Выходит, адрес администратора - admin@example.com. Оставшаяся часть
записи SOA прокомментирована в листинге.
Запись NS задает имя DNS-cepвepa имен, в нашем случае это ns.example.
сот, запись А задает его IР-адрес.
Запись МХ задает адрес и приоритет (100) почтового сервера. У вас может
быть несколько почтовых серверов, тогда вы можете указать несколько за­
писей МХ с разным приоритетом. Чем ниже значение приоритета, тем выше
приоритет сервера, например:
IN МХ 100 maill.example.com.
IN МХ 200 mail2.example.com .
•
....................................................................................
"'"'"
<>
d
i:::
lkcl, l.i1111�
Далее записи CNAME создают псевдоним для имени www. Это означает,
что веб-сервер тоже запущен на этом компьютере й когда кто-то укажет имя
www.example.com, запрос придет к узлу с IР-адресом 192.168.1.1.
Запись А используется для преобразования доменного имени в соответству­
ющий ему IР-адрес. Как видите, мы задаем IР-адреса для компьютеров с
именами mail, ftp и localhost.
Неужели в сети нет больше компьютеров? Остальные компьютеры, как пра­
вило, являются обычными рабочими станциями, и назначением IР-адресов
им занимается DНСР-сервер. Обычно не нужно разрешать имена этих
компьютеров в IР-адреса, так как никаких соединений с ними устанавливать
не планируется.
Теперь рассмотрим файл обратного преобразования -/etc/Ьind9/ l 92. l 68. l .O
(лист. 23.6).
ЛИСТИНГ 23.6. Файл /etc/Ьind9/192.168.1.0
@
)
IN
admin.example.com.
SOA ' ns. example. сот.
l
серийный номер
6Q480
обновление каждые 60480 секунд
86400
повтор каждые 86400 секунд
время хранения информации - 672 часа
2419200
TTL записи
86400
ns.example.com
NS
IN
IN
PTR ns.example.com
2
IN
PTR. ftp.example.com
PTR mail.example.com
IN
3
ip-192-168-1-$.example.com
$,GENERATE 5-104 $ PTR
@
1
::с
];;а
,:,
Из листинга 23.6 видно, что IР-адрес 192.168.1.1 принадлежит узлу
ns.example.com, 192.168.1.2 - узлу ftp.example.com и адрес 192.168.1.3 узлу mail.example.com. Последняя запись не обязательна.
Она говорит, что узлам с IР-адресами от 192.168.1.5 до 192.168.1.104 будут
соответствовать имена ip-192-168-1-N-example.com, где N -последнее чис­
ло IР-адреса.
Данная запись нужна, только если вы заботитесь о преобразовании IР­
адресов, выданных вашим DНСР-сервером, в доменные имена.
..................................................... .'............................
,
J 1,11\,1 � 1 , to,1,·1111,111 t'IIC I t'ШI ,,,н·н
В этом файле вы можете не указывать IР-адреса полностью, но если вы это
делаете, то их нужно указывать в обратном порядке, например:
1.1.168.192
IN PTR
ns. example. сот
Точки в конце доменного имени также не нужны. Вот, собственно, и все.
Почти все. Мы еще не позаботились о защите вашего сервера.
Для настройки удаленного управления сервером нужно подготовить блоки
key и controls. Проще всего это сделать с помощью команды:
,* /usr/sbin/rndc-confgen > remote.conf
Далее скопируйте содержимое файла remote.conf в самое начало файла
named.conf или в самое начало файла named.conf.options - в зависимости
от ваших предпочтений (где вы предпочитаете хранить конфигурацию).
Комментарии из remote.conf, которые также будут сгенерированы утилитой,
можно не копировать.
Вот что нужно скопировать (ключ у вас будет другим):
key "rndc-key" {
algorithm hmac-md5;
secr�t "sJZkjPskmF9KPkQBwaUtfQ==";
};
controls {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
Также в файл named.conf.options нужно добавить блок allow-query (внутри
блока options):
•
allow-query {
192.168.1.0/24;
·-----------------------------------------------------------------------------------
11, с 1 1 11111 \
localhost;
Здесь мы разрешаем обращаться к нашему DNS-cepвepy только пользовате­
лям внутренней локальной сети и узлу localhost.
Также можно обновить файл корневых серверов (это рекомендуется делать
периодически):
# wget ftp://ftp.internic.net/domain/named.root
# ер named.root /etc/bind/dЬ.root
Вот теперь действительно все, и можно перезапустить сервер:
# service bind9 restart
23.5. Настройка вторичного DNS-cepвepa
В крупных сетях или там, где важна отказоустойчивость, например в сетях
провайдера, важно настроить вторичный DNS-cepвep, который будет обслу­
живать запросы клиентов в случае отказа первичного сервера.
i;
-g
Вторичный сервер настраивается, как и первичный, вот только тип зоны задается как подчиненная (slave), а в блоке masters указываются первичные
DNS-cepвepы (в нашем случае только один):
zone "example.com"
type slave;
file "example.com";
masters { 192.168.1.1; );
.,,:::;
�
�
};
•
На первичном сервере в блоке options нужно добавить блок aUow-transfer,
в котором указывают IР-адрес вторичного DNS-cepвepa:
•
....................................................................................
1 l,IB,I 2 i ,'tн,н.·1111,н-1 (.'IH.' I (.'\la 11\lt..'11
options {
allow-transfer { 192.lEfB.1.2; };
Вот теперь действительно все.
•
··················································································al
Глава 24.
DHCP-CEPBEP
л •
IJ,,1,li1111,
24.1. Настраивать DНСР-сервер или нет?
В небольшой сети, как правило, в DН.СР-сервере необходимости особой нет,
поскольку имеется сетевое устройство вроде Wi-Fi-маршрутизатора, "на
борту" которого работает небольшой DНСР-сервер, возможностей которого
вполне достаточно для обслуживания такой сети.
Однако в сетях среднего и большого размера, как правило, используются
DНСР-серверы. Конфигурация таких сетей более сложная и обычно содер­
жит подсети: то есть нужно назначать IР-адреса не только для основной
сети, но и для нескольких подсетей. Встроенные DНСР-серверы беспро­
водных маршрутизаторов (да и такие простые устройства в крупных сетях
редко используются) не обладают необходимым функционалом, поэтому без
полноценного DНСР-сервера будет сложно.
24.2. Принцип работы протокола DHCP
Протокол DHCP (Dynamic Host Configuration Protocol)
используется для автоматической настройки узлов сети.
DНСР-сервер, работающий в сети, автоматичесR;И настраивает все осталь­
ные компьютеры и сетевые устройства (например, сетевые принтеры, хра­
нилища данных и т.д.). Компьютеру передается следующая информация:
IР-адрес, маска сети, IР-адрес шлюза, IР-адреса DNS-cepвepoв.
-------------------------------------------------·--------------------------------'
1 1,11<,1 �-1 1)11( 1•-•·•·1111•·11
Пр.и необходимости DНСР-сервер может предоставлять и другую информа­
цию (например, адреса WINS-cepвepoв, если это необходимо) и выполнять
некоторые защитные функции, н,апример, сервер может не предоставить
IР-адрес устройству, если его МАС-адрес не находится в списке разрешен­
ных, другими словами, DНСР-сервер может назна�ать IР-адреса только тем
устройствам, чьи МАС-адреса "прописаны" в его конфигурационном файле.
Такая защита легко обходится даже опытными пользователями, не говоря
уже о профессионалах, но все же лучше, чем ничего.
DНСР-сервер можно настроить так, чтобы он предоставлял компьютеру с
определенным МАС-адресом один и тот же IР-адрес. Эту функцию очень
удобно использовать для серверов, у которых должны быть постоянные IР­
адреса.
Лет 20 назад DНСР-серверы использовались только в крупных сетях, где
были сотни узлов. В небольших сетях на несколько десятков узлов IР-адреса
назначались вручную. Но позже все осознали преимущества DHCP, и теперь
уже сложно найти сеть, в которой не использовался бы DHCP. Даже в не­
больших домашних сетях есть DНСР-сервер, который, как правило, запущен
на маршрутизаторе, предоставляющем доступ к Интернету. Однако функ­
ционал таких маршрутизаторов обычно оставляет желать лучшего, поэтому
в сетях среднего размера, как уже отмечалось, рекомендуется настраивать
отдельный DНСР-сервер, работающий на стационарном компьютере под
управлением Windows Server или Linux.
Далее в этой главе приводится описание настройки DНСР-сервера, устано­
вить который можно посредством установки пакета dhcp (CentOS), dhcp­
server или isc-dhcp-server (одни из последних версий UЬuntu).
Название пакета может отличаться в зависимости от дистрибутива и его
версии.
24.3. Редактирование конфигурации DHCP
Конфигурация DHCP хранится в двух конфигурационных
файлах - dhcpd.conf и dhcpdб.conf. Оба файла находятся
в каталоге /etc .
•
··············-···-············-·············-·······-·····················-······t:D
н,,1, 1 irнl\
В некоторых дистрибутивах эти конфигурационные файлы следует поискать
в каталогах /etc/dhcp или /etc/dhcpd.
Как вы уже догадались, первый файл используется для протокола IPv4, вто­
рой - для IPv6. Обычно второй не используется, а конфигурация хранится
в первом файле.
Директивы файла конфигурации не чувствительны к регистру символов,
поэтому вы можете написать директиву как ddns-update-style ad-hoc или как
DDNS-UPDATE-STYLE AD-HOC. Разницы нет. Однако использовать верх­
ний регистр не принято.
Комментарии в файле dhсрd.соnfначинаются с решетки, например:
# Комментарий
, Сервер DHCP может предоставлять IР-адреса нескольким подсетям.
Каждая из подсетей описывается в виде блочной директивы
subnet.
�
�
Параметры конфигурации, описанные за пределами директивы subnet, при­
меняются ко всем подсетям - :э-то глобальные параметры. А вот параметры
конфигурации, описанные внутри директивы subnet, применяются только к
конкретной подсети.
Обычно в самом начале файла конфигурации задаются следующие директивы:
option domain-name "company.com"
option domain-name-servers rtsl.company.com ns2.company.com
Если ваш DНСР-сервер обслужщ1ает несколько подсетей и у каждой из них
есть· собственное доменное имя, тогда опции dol'ljain-name и domain-name­
servers задаются внутри блочной директивы subnet.
•
..........................................................._. ........................ .
1 1,1в,1 2-1 IHI( l'-t·t•pвt•p
Директивы default-lease-time и max-lease-time задают
время аренды IР-адреса по умолчанию и максимальное время
аренды.
IР-адрес выделяется DНСР-сервером не навсегда, а только на определенное
время. По истечении данного времени IР-адрес возвращается в пул адре­
сов, а компьютеру назначается другой IР-адрес из пула свободных адресов.
Вполне вероятно, что компьютеру опять будет назначен тот же адрес, напри­
мер, если в настройках DНСР-сервера указано, что компьютеру с определен­
ным МАС-адресом должен быть назначен определенный IР-адрес.
r
1
: ПРИМЕЧАНИЕ. База данных аренды IР-адресов находится в :
файле /var/liЬ/dhcp/dhcpd.leases.
t______________________________________________________________ J
!
Пример установки этих директив (значения указываются в секундах):
default-lease-tirne 28800; # 8 часов
# 24 часа
rnax-lease-tirn.e 86400;
Очень важной является директива ddns-update-style,
задающая стиль обновления DNS: непосредственное
(ad-hoc) или предварительное взаимодействие DHCP-DNS
(interim).
Разработчики протокола DHCP рекомендуют использовать второй стиль:
ddns-update-style _interirn;
Теперь рассмотрим блочную директиву subnet, которая описывает параме­
тры определенной подсети.
•
В примере ниже описываются параметры для подсети 192.168.0.0 с маской
сети 255.255.255.0 (сеть класса С):
··················································································88
!
lk, ,. 1 i1111,
subnet 192.168.0.0 netmask 255.255.255.0
# Список маршрутизаторов (через пробел)
option routers
192.168.0.1;
# Маска подсети
option subnet-ma�k
255.255.255.0;
t ШИроковещательный адрес
option broadcast-address
192.168.0.255;
i Доменное имя
option domain-name
"company.com"
i IР-адре�/иыя DNS-cepвepa, если не задано в глобальных
i параметрах
option domain-name-servers
192.168.0.1;
i Сервер времени (NTP)
option ntp-servers
192.168.0.1;
i IР-адрес сервера NetBIOS и его тип узла (если нужно)
192.168.0.1;
option netbios-name-servers
option netbios-node-type
8;
i Диапазон IР-адресов, выделяемый клиентам сети
192.168.0.200;
192.168.0.101
range
На данный момент в директиве subnet представлены практически все оп­
ции. Но на практике набор опций у вас будет друтим.
Серверы NetВIOS используются не всеми, как и серверы времени (NTP).
Параметры DNS (имя и IР-адреса DNS-cepвepoв) обычно выносят в область
глобальных параметров, поскольку они в большинстве случаев одинаковы
для всех подсетей.
�
-g
Если из нашей директивы subnet удалить все ненужное, она будет выглядеть
так:
subnet 192.168.0.0 netmask 255.255.255.0 {
192.168.0.1;
option routers
255.255.255. О•;
option subnet-mask
192.168.0.200;
192.168.0.101
range
Мы оставили только список маршрутизаторов, маску подсети и диапазон IР­
адресов, из которого будут выделяться IР-адреса. ,
•
В листинге 24.1 приводится пример файла dhcpd.conf для небольшой сети с
несложной топологией·.
................................................................................... .
,
ЛИСТИНГ 24.1. При�ер фай.�;�а dhcpd.conf для простой сети
ddns-update-style interim;
f Расположение базы данных с арендой IР-адресов
lease-file-name "/var/liЬ/dhcpd/dhcpd.leases";
*
Данный сервер является официальным DНСР-сервером для локальной сети
authoritative;
t Доменное имя и имена DNS-cepвepoв
"company"com";
option domain-name
nsl.company.com ns2.company.com
option domain-name-servers
# Время аренды
default-lease-time
max-lease-time
86400;
172800;
# 24 часа
# 48 часов
subnet 192.168.0.0 netmask 255.255.255.0 {
192.168.0.1;
option routers
255.255.255.0;
option subnet-mask
range
192.168.0.101
192.168.0.200;
Мы удалили из dhcpd.confвce лишнее, и наш файл получился довольно ком­
пактным (сравните его с файлом по умолчанию, где в качестве примера при­
водятся чуть ли не все мыслимые и немыслимые параметры).
24.4. DНСР-сервер в больших сетях
Далее мы рассмотрим пример более сложной сети с несколькими подсетями
- ради чего, собственно, и есть смысл настраивать DНСР-сервер вручную,
а не использовать встроенный в маршрутизатор DHCP.
Общая сеть должна быть описана в директиве shared-network, � все под­
сети должны быть описаны директивами subnet внутри директивы shared­
network.
•
Пример приведен в листинге 24.2.
··················································································-18
t:
u
lkc1, 1.irнt\
ЛИСТИНГ 24.2. Пример файла dhcpd.conf для сложной сети
shared-network rny_bignet {
# Доменное имя и имена DNS-cepвepoв
option dornain-narne
"company.com";
option dornain-narne-servers
nsl.cornpany.corn ns2.cornpany.corn
# Шлюз по умолчанию
option routers
192.168.0.1;
# Подсети 192.168.1.0 и 192.168.2.0
subnet 192.168.0.0 netrnask 255.255.252.0
range 192.168.0.101 192.168.0.200;
subnet 192.168.1.0 netrnask 255.255.252.0
range 192.168.1.101 192.168.1.200;
Если для подсетей 192.168.0.0 и 192.168.1.0 нужно указать различные пара­
метры, например разные шлюзы или разные имена DNS-cepвepoв, то соот­
ветствующие параметры нужно указать в директиве subnet для определен­
ной подсети.
24.5. Статические IР-адреса. Директива host
Иногда нужно привязать некоторые IР-адреса к МАС-адресам. Это полезно,
если в вашей сети есть несколько компьютеров, IР-адреса которых не долж­
ны изменяться (как правило, это серверы сети и некоторые специальные
компьютеры вроде компьютера администратора).
Статические IР-адреса описываются с помощью директивы
host.
Это видно на примере ниже:
•
................................................................................... .
_
host server {
option host-name "server";
option routers 192.168.1:1;
hardware ethernet 00:FF:FB:69:DC:ES;
fixed-address 192.168.1.99;
В данном случае если к сети подключится компьютер с МАС-адресом
00:FF:FB:69:DC:E5, ему будет назначен IР-адрес 192.168.1.99, имя узла
server и шлюз по умолчанию 192.168.1.1.
Директиву host нужно поместить в одну из директив subnet, к которой при­
надлежит выделяемый IР-адрес, например:
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers
192.168.1.1;
option subnet-mask
255.255.255.0;
range
192.168.1.101
192.168.1.200;
host server
option host-name "server";
option routers 192.168.1.1;
hardware ethernet 00:FF:FB:69:DC:E5;
fixed-address 192.168.1.99;
}
Управлять DНСР-сервером можно с помощью команды
service.
Следующие команды позволяют запустить, перезапустить или остановить
сервер:
$ sudo systemctl start isc-dhcp-server
$ sudo systemctl еnаЫе isc-dhcp-server
$ sudo systemctl еnаЫе isc-dhcp-server
•
··················································································81
t:
u
1 \,' 1, 1 11111\
или (в старых дистрибутивах):
t service dhcpd start
t service dhcpd restart
t service dhcpd stop
Обратите внимани�, как называется сервис DНСР-сервиса.
В современных версиях UЬuntu он называется isc-dhcp-server. В старых
версиях UЬuntu и других дистрибутивов нужный сервис назывался dhcpd.
24.6. Настройка DНСР-клиента в Ubuntu
В UЬuntu 16.04 вы можете настроить интерфейс в файле конфигурации /etc/
network/interfaces.
$ sudo nano /etc/networ.k/interfaces
Добавьте эти строчки:
auto ethO
iface ethO inet dhcp
Сохраните файл и перезапустите сетевой сервис (или перезагрузите
систему).
$ sudo systemctl restart networking
В UЬuntu 18.04 и более новых сетевое управление контролируется програм­
мой Netplan. Вам нужно отредактировать соответствующий файл, например,
в каталоге /etc/netplan/:
$ sudo vim /etc/netplan/01-netcfg.yaml
•
....................................................................................
1 1,111.1 �4 IHI( 1'-t·ерш·р
Затем включите dhcp4 под конкретным интерфейсом, например под ethemet,
ensO, и закомментируйте статические настройки, связанные с IP:
network:
version: 2
renderer: networkd
ethernets:
ensO:
dhcp4: yes
Сохраните изменения и выполните следующую команду, чтобы применить
изменения.
$ sudo netplan apply
Для получения дополнительной информации смотрите справочные страни­
цы dhcpd и dhcpd.conf.
$ rnan dhcpd
$ rnan dhcpd.conf
Для сравнения, в Windows все гораздо проще - нужно включить автома­
тическое назначение IР-адреса, как показано на рис. 24.1. Как правило, по
умолчанию все и так уже настроено, и никаких дополнительных действий
предпринимать не нужно.
Задать ка1< лимиrное nодключение
� ОП<Л.
Еt·ли установлен 11ими1· трафика, Wir1dows нас-rрои r лим�-нное
подключение, которое поможет изЬежап, превмшения лимиrа.
Yc:ldlIObl-'l!C ilИ",l;i11 1р,.щ.1ик...1; ЧJ(;f)l,I 1(( tlpO, И�)(;!S,11
1-KIIOJll,:Юt',ЩЩ)Д,-Jl111!/I( t! JJO;\<,(•J.,_---- - - - - - - - ------
Параметры IP
�
Изменение параметров IP
1 Автоматически (ОНСР)
Назначение tP::
Реда1оироеать
Отмена
Свойства
•
Рис. 24.1. Настройка DНСР-клиента в Windows
....................................................................................
lkcl, 1 illll\
На этом мы завершаем рассмотрение процесса настройки сервера и клиента
DHCP в рамках этой главы.
'
.
....................................................................................
Глава 25.
КАК ПОДКЛЮЧИТЬ
LINUX К WINDOWS­
ИHФPACTPYKTYPE
л •
Н, 1 1 1 11111,
В современной компьютерной сети взаимодействуют самые различные
устройства, управляемые самыми разными операционными системами:
стационарные компьютеры и ноутбуки под управлением Windows, Linux и
MacOS, смартфоны под управлением Linux, Android и IOS и т.д.
Samba - это сервис, позволяющий Llnux-мawинe
интегрироваться в Wlndows-ceть и стать ее полноценным
участником.
s1
]
С помощью Samba вы можете использовать ресурсы Windows-ceти, предоставлять ресурсы Windows-мaшинaм и даже выступать в роли контроллера
Active Directory.
Конечно, если честно, Samba в качестве контроллера Active Directory ис­
пользуется довольно, редко.
Чаще требуется настройка иного плана - включение Linux-cepвepa в состав
домена ActiveDirectory, что и будет рассмотрено в этой главе.
После произведенной настройки наш сервер под управлением Linux смо­
жет стать полноценным сервером домена ActiveDirectory и предоставлять
другим компьютерам домена ресурсы, например принтеры или дисковые
ресурсы.
•
....................................................................................
25.2. Установка необходимого программного
обеспечения
Для реализации поставленной задачи нам нужно установить Samba, Kerberos
и Winbind. Конечно, если вам не нужно интегрировать сервер в домен AD, то
будет достаточно одного пакета Samba, но такие конфигурации встречаются
редко, а интегрироваться в домен AD без Kerberos и WinЬind невозможно.
Итак, установим необходимые пакеты (на примере DeЬian/UЬuntu):
sudo apt-get install install samЬa krbS-user �inbind
Первый пакет (samba) позволяет стать членом домена и предоставлять/ис­
пользовать ресурсы. Второй пакет необходим для работы протокола Kerberos,
который используется для ·аутентификации в Windows. Без третьего пакета
нельзя использовать учетную запись пользователя из AD.
Далее мы будем использовать следующие параметры для настройки:
• имя домена - MY.COMPANY;
• имя контроллера ActiveDirectory - dc.my.company;
• IР-адрес контроллера домена - 192.168.1.2;
• имя Linux-cepвepa - linux.
25.3. Подготовительная настройка
Первым делом на компьютере linux нужно настроить DNS и синхронизацию
времени.
Откройте файл /etc/resolv.conf и добавьте _в него следующие строки:
domain my.company
search my.company
nameserver 192.168.1.2
•
··················································································-8111
Нужно запретить редактировать этот .файл, чтобы его не изменил
NetworkМanager:
sudo chattr +i /etc/resolv.conf
Также нужно отредактировать /etc/hosts:
127.0.0.1 localhost
127.0..1.1 linux.my.company
linux
Также убедитесь, что файл /etc/hostname содержит правильное имя узла
(linux).
На этом настройка DNS закончена, а после нее нужно настроить синхрони­
зацию времени, что очень важно для нормальной работы нашего сервера в
'·
AD.
Для автоматической синхронизации времени используется
демон ntpd.
Установим его:
sudo apt-get install ntp
После этого нужно отредактировать файл /etc/ntp.conf и .добавить в него
строку:
server dc.my.company
Теперь перезапускаем сеть и ntpd:
service networking restart
service nti· restart
•
•
.....................................................................................
l.1ава 25 Kai- 1101i-.1111•11111. 1i,111, i-\\iщlo\\s-1111фpac1p�i-1�pt·
25.4. Настройка Kerberos
Теперь мы можем приступить к настройке нашей связки Kerberos + Sarnba
+Winbind.
Первым делом настроим Kerberos. Нужно отредактировать файл /etc/krb5.
conf и привести его к виду, представленному в листинге 25.1.
Строки, выделенные жирным, необходимо заполнить своими данными.
[1 ЛИСТИНГ 25.1. Файл /etc/krb5.conf
[libdefaults]
default_realm = МУ.СОМРАNУ
kdc_timesync = 1
ccache_type = 4
forwardaЫe = true
proxiaЫe = true
v4 instance resolve
false
v4 name convert =
host = {
rcmd = host
ftp = ftp
plain = {
something
11
something-else
fcc-mit-ticketflags
true
[realms]
LAВ.LOCAL = {
kdc = dc
admin server = dc
default domain = МУ.СОМРАNУ
[domain_realm]
.laЬ.local = МУ.СОМРАNУ
laЬ.local = МУ.СОМРАNУ
[login]
krb4_conver� = false
krb4_get tickets = false
•
....................................................................................
lk, ,. 1 i1111,
Теперь проверим, работает ли Kerberos и можем ли мы аутентифицировать­
ся в домене:
kinit пользователь@МУ.СОМРАNУ
Здесь нужно указать имя пользователя, зарегистрированного в домене
MY.COMPANY. Имя домена нужно писать заглавными буквами.
Если аутентификация прошла успешно и вы не получили сообщения об
ошибке, значит вы все сделали правильно. В результате вам будет назначен
тикет Kerberos.
Просмотреть все тикеты можно командой k/ist, а уничтожить
все тикеты - командой kdestroy.
25.5. Настройка Samba
:::1 :
!::: '
g
=
Следующий шаг - это настройка Samba. Вам нужно отредактировать файл
/etc/samba/smb.conf, в котором прописываются параметры входа в домен, а
также предоставляемые нашим сервером ресурсы.
:..
··········
Самое главное в файле /etc/samba/smb.conf-этo секция
global, где описываются основные параметры Samba.
Остальные секции, как правило, описывают предоставляемые ресурсы. В
листинге 25.2 будут приведены секции global и puЫic. В последней описы­
вается общий каталог, который будет доступен всем пользователям.
Дополнительную информацию о настройке Samba можно получить по
адресу:
https://help.ubuntu.com/community/Samba
Сейчас главное - интегрировать Samba в домен AD, а описать дополни­
тельные ресурсы и настроить к ним права доступа, думаю, вы сможете само­
стоятельно.
•
lll!I······----------····-··-------····-----··----··----·-------------·---·---···-----·
ЛИСТИНГ 25.2. Пример файла конфигурации /etc/samba/
smb.conf для интеграции сервера в домен AD
[global]
рабочей группы и домена нужно указывать заглавными буквами
workgroup = МУ
realm = MY.COMPANY
# Имя
# Авторизация через AD
security = ADS
encrypt passwords
true
# Отключаем прокси DNS
dns proxy = no
# Ускоряем работу SamЬa
socket options = TCP_NODELAY
# Если не хотите, чтобы SamЬa стала контроллером домена, установи�е
# следующие параметры таким образом:
domain master = no
local master = no
preferred master = no
os level = О
domain logons = no
# Отключаем поддержку принтеров
load printers = no
show add printer wizard = no
printcap name = /dev/null
disaЬle spoolss = yes
[puЫic]
# Комментарий
comment = PuЬlic Directory
# путь
path = /var/samЬa
# Не только чтение, но и запись
read only = no
# Явно разрешаем запись
writaЫe = yes
# Разрешаем гостевой доступ
guest ok = yes
# Разрешить просмотр содержимого каталога
browseaЫe = yes
•
··················································································-1111
-- -
Нс'(!, l.i1111x
1
�.,
,.
Сохраните файл конфигурации и введите команду testparm, которая проверит файл конфигурации Samba и сообщит, нет ли в нем ошибок:
,:
Jt testparm
Load smb config files from / etc/ samЬa/ smЬ. conf
Loaded services file ОК.
Server role: ROLE-DOМAIN-МЕМВЕR
Как видите, файл в порядке, а роль сервера- член домена (ROLE_DOМAIN_
МЕМВЕR), Все, как нам и нужно. Теперь запустим Samba:
sudo service smЬd start
Попробуем подключиться к нашему домену как пользователь user:
Jt net ads join -U user -D МУ
Enter user's password:
Using short domain name
МУ
Joined 'linux' to realm 'my.company'
::с
.,
);а
,::,
Если при подключении к домену вы увидите сообщение "DNS update failed! ",
попробуйте первым делом перезагрузить свой компьютер (linux), прежде
чем разбираться, почему не обновляется DNS.
•
1111------·-······-------------------------------------------------------------------·
Глава 26.
РЕЗЕРВНОЕ
КОПИРОВАНИЕ
л •
lk,1, t.i,111,
,.
26.1. Средства резервного копирования
В данной главе Linux будет рассмотрен через призму задач администратора
(опытного пользователя), работающего на Linux.
Резервное копирование - важнейшая задача администратора. Администра­
тору могут простить многое, но не потерю данных. Именно поэтому важно
разработать план резервного копирования и следовать ему.
При разработке вашего плана резервного копирования нужно предусмотреть
методы защиты от:
• отказа жесткого диска;
• случайного удаления файлов;
• повреждения содержимого файлов;
• полного уничтожения компьютера (например, при пожаре).
Подумаем, как мы можем защититься от этих проблем. От отказа жесткого
диска нас может спасти использование RАID-массивов. Как правило, при
использовании RАID-массива проблема выхода жесткого диска из строя ре­
шается полностью.
От случайного удаления файлов1 или повреждения их содержимого могут по­
мочь снимки (snapshots) файловых систем. LVМ2опомоrает создать снимки и
использовать их для подобного рода восстановления.
•
.....................................................................................
1 1,111,1 �(,
l't· lt'IIIIIIOt' h:IIIIIIIIOШlllllt'
От полного уничтожения компьютера, например, при пожаре, защитить­
ся сложнее. Ведь при пожаре могут быть повреждены и резервные копии.
Именно поэтому нет смысла ,целать резервные копии на второй жесткий
диск, который установлен в вашем сервере. Резервные копии нужно делать
на внешний жесткий диск, который будет хран'иться в безопасном месте, в
идеале - в пожаростойком сейфе и в другом помещении. Также можно хра­
нить резервные копии на удаленной машине, которая находится в другом
кабинете или вообще в другом здании. Это снижает вероятность того, что
пожаром будут повреждены обе машины.
Существуют полностью автоматические средства резервного копирования
вроде Amanda или Bacula, но когда есть несколько серверов (а не целый
парк), их использование нецелесообразно, поскольку можно легко обойтись
стандартными средствами Linux, что и будет показано в этой главе.
26.2. Разработка плана резервного копирования
для веб-сервера
Также нужно разработать план резервного копирования сервера.
Я предлагаю довольно простой план: сначала создается эталонный диск,
который поможет при полном "падении" сервера. Резервные копии данных
будем делать каждый день. Теоретически делать резервные копии можно и
чаще, но, как правило, резервное копирование производится ежедневно - в
начале или в конце дня. Каждая следующая резервная копия будет переза­
писывать предыдущую. Решение, может, и не очень хорошее, но довольно
эффективное, если предполагается круглосуточная (или около того) работа
службы поддержки.
Представим, что мы будем делать резервные копии в 4 часа утра. Как по мне,
это оптимальное время для создания резервной копии, поскольку "совы" уже
спят, а "жаворонки" еще не проснулись.
Скажем, в 7 часов утра еще не проснувшийся "жаворонок" нечаянно удаляет
файл index.php. Он отправляет администратору сервера запрос с просьбой
восстановить этот файл из резервной копии. Поскольку она была создана в 4
утра, то этот файл будет в составе резервной копии, и администратор сможет
его восстановить .
•
··················································································-IIII
Если пользователь еще что-то "начудит", то до 4 часов утра и у пользователя,
и у администратора есть достаточно времени, чтобы связаться и произвести
восстановление.
Если крутлосуточной тех.поддержки не планируется, ситуация немного ме­
няется. Представим, что администратор работает до 19:00, -пользователь
удаляет свой файл в 22:00, а в 4:00 будет создана новая резервная копия, в
которой уже нет файла index.php. Что делать? Тогда нужно изменить наше
расписание. Ранее мы договорились, что будем делать резервные копии на
другие машины или на внешний жесткий диск. Достаточно купить несколь­
ко (минимум два) внешних жестких дисков и использовать их поочередно.
Хотя можно обойтись и одним. Просто нужно изменить расписание.
Например, рабочий день администратора начинается в 9:00, резервная копия
создается в 10:00. В 19:00 администратор уходит домой. Пользователю не
спится, и в 22:00 он удаляет файл. Он отправляет запрос администратору, и у
администратора до создания резервной копии есть час, чтобы восстановить
файл.
Такая схема очень неплохая, но вы никогда не задумывались, почему резерв­
ные копии создаются ночью или рано утром? Правильно, чтобы снизить на­
грузку на сервер. Представим, что у вас есть 100 пользователей и каждому
вы предоставили 1О Гб места на диске. Если каждый из пользователей будет
использовать все выделенное ему дисковое пространство, то нужно заархи­
вировать 1 Тб данных, а это довольно много. Поэтому сервер может немного
"подтормаживать", и пользователи будут жаловаться на то, что сайты откры­
ваются не так быстро, как хотелось.
Поэтому можно купить два внешних жестких диска и чередовать их. Один
используем по четным числам, другой - по нечетным. Используя такую
схему, можно настроить планировщик на создание резервной копии в 4 часа
утра, как было предложено ранее, но при этом резервная копия будет соз­
даваться во время минимальной нагрузки на сервер. И овцы целы, и волки
сыты.
Все, что нужно сделать администратору, - это подмонтировать нужный
внешний диск до того, как он пойдет домой. В некоторых организациях исс
пользуют 7 разных жестких дисков - на каждый день недели, тогда мож­
но восстановить состояние фай�а, скажем, за прошлую среду. Такой способ
очень затратный, но зато наиболее эффективный;
•
•
....................................................................................
1 1,11\,1 �(,
l'l'll'(HIIIOl' h:OIJll(JOll.tllll�
Что же касается- внешних жестких дисков, то на сегодняшний день есть
USВ-диски размером 12 Тб, так что для резервного копирования среднеста­
тистического сервера должно .быть достаточно.
Также можно копировать резервные копии на внешние машины для лучшей
сохранности - чем больше резервных копий, тем лучше.
26.3. Разработка сценария резервного
копирования
Представим, что у нас есть веб-сервер хостинг-провайдера и нужно обе­
спечить его резервное копирование. Повторюсь, я буду использовать толь­
ко стандартные средства, чтобы показать, насколько гибким может быть
Linux. Что же касается уже готовых комплексов резервного копирования, то
у каждого из них есть своя документация и множество статей в Интернете
на русском языке. Поэтому не вижу смысла переписывать руководство еще
раз другими словами.
Итак, приступим. Первым делом настройте сервер, чтобы он работал. Убе­
дитесь, что настроили все и вам больше не придется вносить изменения в
конфигурацию сервера. Будем считать, что пользовательские данные будут,
как обычно, храниться в каталоге /home.
Базы данных пользователей, как обычно, хранятся в /var/liЫ
mysql/<имн>.
Для упрощения нашей конфигурации будем считать, что одному пользовате­
лю будет принадлежать только одна база данных, которая совпадает с име­
нем пользователя.
Например, есть сайт www.example.com, он принадлежит пользователю
examplecom, его НТМL-код хранится в ·каталоге /home/examplecom/puЫic_
html, а база данных - в каталоге /var/liЬ/mysql/examplecom.
Сразу рекомендую настраивать RАID-массивы, чтобы была возможность го­
рячей замены, и вы могли на лету восстанавливать работоспособность сер­
вера в случае выхода из строя одного из жестких дисков.
•
·----------------------------·-----·--··-···--------------------------------------CIII
t::
u
lkll, 1 i1111,
После этого используйте инструмент клонирования системы (или Clonezilla,
или Remastersys Backup, если у вас Debian/UЬuntu) для создания эталонного
диска. Созданный образ запишите на болванку и положите где-то подальше
от вашего сервера - в сейф лучше всего или вообще унесите себе домой,
если правила компании разрешают делать это. При создании эталонного
диска каталог /home включать в состав образа не нужно.
Если с сервером произойдет катастрофа, которая уничтожит все его диски,
то ни RAID, ни что-либо еще не спасет его. Зато вы сможете взять другой
сервер и произвести установку с эталонного диска. При этом вам уже не
придется тратить время на его настройку. Итак, можно счит·ать, что мы обе­
зопасили сервер от полного фиаско.
Теперь нужно позаботиться о создании резервной копии данных. Нам нужно
копировать подкаталоги каталога /home и /var/liЬ/mysql. В первом хранятся
НТМL-код и вспомогательные файлы сайтов пользователей, а во втором база данных.
Разработаем первую версию нашего сценария backup.
Сначала нужно создать сам сценарий:
11 cd /Ьin
11 touch backup
11 chmod +х backup
11 nano backup
Затем введите следующий код:
11!/Ьin/bash
rm /mnt/backup/*
cd /home
for dn in '1s /home'; do
echo "Creating backu� for $dn"
tar -czf /mnt/backup/$�n.tar.gz·$ctn
done
Разберемся, что и к чему.
•
....................................................................................
1 1.111.1 '(,
l't· 1t·р1111щ• 1ш11111юва1111t'
Первым делом мы удаляем старые резервные копии (команда rm) .
. Проrрамма tar с параметром с создает новый архив, но если файл архива су­
ществует, он не будет перезаписан. Чтобы добавить файлы в уже существу­
ющий архив, можно использовать параметр u, но его нельзя использовать
вместе с параметром с, поэтому нужно проверять, существует ли файл архи­
ва. Если нет, тогда нужно создать архив (параметр с), если да, тогда нужно
модифицировать архив (параметр u).
Далее мы создаем архив для каждого домашнего каталога пользователя.
Например, если в /home у вас есть два подкаталога - userl и user2, то будут
созданы архивы userl .tar.gz и user2.tar.gz. Заметьте: мы не делаем резервную
копию всего /home. Тогда мы получим один большой архив, с которым будет
очень неудобно работать (да и можем превысить оrраничение на максималь­
ный размер файла - все зависит от объемов данных, с которыми вы работа­
ете), поэтому проще и правильнее создать несколько меньших архивов.
Цикл for проходится по всем элементам вывода команды 1s /home. В этом
каталоге (/home) обычно находятся только каталоги (файлов в нем нет, толь­
ко в его подкаталогах), то нам достаточно просто вывести его содержимое
командой 1s, а затем передать каждую строку вывода команце tar.
Опции czf означают, что нам нужно создать архив (с) в файле (параметр t)
и при этом его сжать.
Команда tar может создавать архивы и на ленточных устройствах, поэтому
важно задать параметр f.
Второй параметр - это имя архива, в нашем случае это будет /mnt/
Ьасkuр/<имя_пользователя>.tar.gz.
Третий параметр - это имя каталога, который мы будем архивировать.
Каталог /mnt/Ьackup должен существовать, и к нему должен быть подмонти­
рован внешний жесткий диск. Об этом наш сценарий не заботится, но при
желании никто не помешает вам добавить строку вроде этой:
mount /dev/sdcl /mnt/backup
Эта строку нужно поместить до команды rm, а в самой команде нужно из­
менить имя устройства (в нашем случае это /dev/sdcl) .
•
....................................................................................
Q
с:
lkcl, [,i1111,
Если вы решились управлять монтированием через сценарий, то в конце
сценария нужно добавить строку размонтирования диска:
umount /mnt/backup
Также мы можем скопировать по SSH созданные архивы на удаленную ма­
шину. Тогда у вас будет две резервных копии, что повышает надежность на­
шего плана резервного копирования. После команды tar добавьте команду:
scp $dn.tar.g� user@examle.com:/backups
Данная команда скопирует файл <имя_пользователя>.tаr.gz на SSH-cepвep
example.com в каталог /Ьackups.
Вот только есть один момент: программа scp запрашивает пароль пользо­
вателя для копирования файлов на удаленный сервер. Чтобы этого не про­
исходило (тогда вам нужно присутствовать в 4 утра перед компьютером и
вводить пароль), нужно настроить аутентификацию с помощью ключей.
Пока не будем на этом останавливаться, а рассмотрим измененную версию
нашего сценария:
#!/Ьin/bash
mount /dev/sdcl /mnt/backup
rm /mnt/backup/*
cd /home
for dn in '1s /home'; dci
echo "Creating backup for $dn"
tar -czf /mnt/backup/$dn.tar.gz $dn
scp $dn.tar.gz user@examle.com:/backups
done
# Сбрасываем буфер� на диск (не обязательно)
sync
# Размонтируем файловую систему
umount /mnt/backup
•
.
.....................................................................................
1 1,111,1 �(, l'l' ll'l)BIIOl' 1.01111рова1111l'
Если вам нужно копировать только с.одержимое каталога /home, то у вас есть
уже рабочая версия сценария. Однако у нас еще есть каталог /var/liЬ/mysql.
Однако код цикла для создания резервной копии (5удет отличен, поскольку
в каталоге /var/liЬ/mysql, кроме подкаталогов с файлами баз данных, есть
еще и обычные файлы, которые нам не нужно никуда копировать. Поэтому в
цикле нужно проверить, является ли элемент, который вывела проrрамма ls,
каталогом, и заархивировать только его:
echo. "Database backup ..."
cd /var/liЬ/mysql
for dn in 'ls /var/liЬ/mysql'; do
test -d && "$dn" && tar -czf /mnt/backup/dЬ/$dn.tar.gz $dn
done
ОБРАТИТЕ ВНИМАНИЕ: архивы создаются в каталоге /mnt/
backup/db: если имя базы данных у нас совпадает с именем
пользователя, то ничего хорошего из затеи хранить архив в ка­
талоге /mnt/backup у нас не выйдет. Поэтому мы должны создать
каталог db заранее и хранить в нем резервные копии баз дан­
ных.
Кроме домашних каталогов и базы .данных, нужно еще сделать резервную
копию почтовых яшиков пользователей, которые обычно хранятся в катало­
ге /var/mail. Здесь все просто - каждому пользователю соответствует файл
почтового ящика, поэтому можем использовать код, подобный созданию ре­
зервной копии домашнего каталога, только резервные копии будем хранить
в каталоге /mnt/Ьackup/mail:
cd /var/mail
for dn in 'ls /var/mail'; do
echo "Creating backup for $dn [mail]"
tar -czf /mnt/backup/mail/$dn.tar.gz $dn
i Если нужно, раскомментируйте строку
# scp $dn.tar.gz user@examle.com:/backups/mail
done
•
·---·----·----------------------------·---------·----·--------------·--------------&1
1
lk,1, 1 i1111\
Теперь интегрируем наши два сценария в один общий (листинг 26.1).
[J ЛИСТИНГ 26.1. С
# ! /bi'n/bash
ценарий /Ыn/bac_k_u_P_______
___ ,l_ J1
mount /dev/sdcl /mnt/backup
# Рекурсивное удаление всего из /mnt/backup
rm -r /mnt/backup/*
# Создаем каталог для хранения базы данных
mkdir /mnt/backup/dЬ
# Каталог для почтовых ящиков
mkdir /mnt/backup/mail
cd /home
# Копируем домашние каталоги
for dn in '1s /home' ;' do
echo "Creating backup for $dn"
tar -czf /mnt/backup/$dn.tar.gz $dn
done
# Копируем базы данных
echo "Database backup... :•
cd /var/liЬ/mysql
for dn in '1s /var/liЬ/mysql'; do
test -d && "$dn" && tar -czf /mnt/backup/dЬ/$dn.tar.gz $dn
done
cd /var/mail
for dn in '1s /var/mail'; do
echo "Creating backup for $dn [mail]"
tar -czf /mnt/backup/mail/$dn.tar.gz $dn
done
# Если нужно хранить резервные копии на удаленной машине
# scp -r /mnt/backup user@example.com:/backups
\
# Сбрасываем буферы на диск (не обязательно)
sync
# Размонтируем файловую систему
umount /mnt/backup
•
------------------------------------------------------------·-------------------····
•
1 1.11<,1 �(,
l't·1t·1 11111щ• 1.111111111111а11щ·
Наш сценарий,готов полностью. Осталось только настроить SSH-cepвep на
аутентификацию без пароля. Для этого на клиенте (то есть на нашем сер­
вере, резервное копирование которого вы будете производить, далее SSНклиент) введите команду:
,
# ssh-keygen -t rsa
Generating puЫic'/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id,rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your puЫic key has been saved in /root/.ssh/id_rsa.pub.
;;
с.;
:5.
с::
Эта команда созлает пару приватного/публичного ключей.
r
1
1 ОБРАТИТЕ ВНИМАНИЕ, что когда прог рамма попросит вас 1
вве сти ключевую фразу, вводить ничего не нужно - вы же не
: хотите вводи ть пароль?
:
1
!
!
�--------------------------------------------------------------�
1
Теперь на SSH-cepвepe (на компьютере, на который вы будете отправлять
резервные копии) откройте файл конфигурации sshd. Обычно это /etc/ssh/
sshd_config. Добавьте в него строки:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Обычно они в нем уже есть, но их нужно раскомментировать.
Строка "¾h/.ssh/authorized_keys" означает, что ключи будут храниться в до­
машнем каталоге пользователя (¾h), подкаталог .ssh, файл authorized_keys.
Если этого файла там нет, вы можете его создать самостоятельно.
Скопируем наш файл публичного ключа на SSH-cepвep (команду вводим на
SSН-клиенте):
•
scp /root/.ssh/id_rsa.pub root@example.com:/root/
··················································································-l!II
lkcl, 1 illll\
На SSH-cepвepe вводим следующую команду, помещающую ваш ключ в
файл authorized_keys:
cat /root/id_rsa.pub >> /root/.ssh/autho.rized_keys
Перезапустите SSH-cepвep:
t service ssh restart
Теперь переходим на SSН-клиент и попробуем скопировать файл на сервер.
На этот раз команда ssh не должна запраш·ивать пароль:
scp /root/.ssh/id_rsa.pub root@exampl�.com:/root/
Все, наш SSH-cepвep настроен. Не забудьте на нем создать каталог /Ьackups,
и можно приступать к тестированию сценария резервного копирования.
Когда вы убедитесь, что все работает как нужно, добавьте вызов сценария
/Ьin/Ьackup на вашем веб-сервере в таблицу расписания планировщика.
Теперь на секундочку задумайтесь,. что мы только что создали. Мы создали
систему резервного копирования с ротацией резервных копий и возможно­
стью хранения резервных копий на удаленной машине.
И все это - стандартными средствами.
Если у вас есть несколько серверов, вы можете скопировать сценарий backup
на каждый сервер (возможно, придется модифицировать пути, в зависимо­
сти от настроек и специфики сервера) и настроить его на автоматический за­
пуск. Единственный мой совет - настраивайте резервное копирование каж­
дого сервера на разное время, например с промежутком в полчаса или даже
час, если информации много. Если вы создаете резервную копию первого
сервера в 4 утра, второго создавайте в 4:30, третьего в 5:00 и т.д.
•
..............................-..................................................... .
Глава 27.
ОБЕСПЕЧЕНИЕ
БЕЗОПАСНОСТИ
л •
lk с 1, 1 i111"
Данная глава может потребовать от вас дополнительных знаний, т.к. обеспе­
чение безопасности сервера на Linux - вопрос достаточно емкий. По сути,
можно написать отдельную книгу - и такие книги есть. При обеспечении
безопасности любого объекта нужно ответить на три вопроса:
1. Что нужно защитить? Определите, что именно вы хщите защитить. Воз­
можно, это хранимые данные, а может, сетевой сервис (например, вы не
хотите, чтобы неавторизированные пользователи им пользовались).
2. От чего вы защищаетесь? Что больше всего вас беспокоит? Утечка кон­
фиденциальных данных? Потеря данных? Потеря дохода, вызванная тех­
ническим сбоем?
3. От кого вы защищает_есь? От действий неквалифицированных пользова­
телей или от действий хакеров-профи? Меры безопасности будут суще­
ственно отличаться в этих двух случаях.
15
Далее мы рассмотрим следующие вопросы:
• Локальная безопасност ь - здесь мы поговорим об обеспечении без­
опасности сервера внутри предприятия, чтобы с ним, родимым, ничего
плохого не случилось.
• Защита от сетевых атак - сетевые атаки могут быть как внутренними
(злоумышленник находится во внутренней сети), так и внешними. Ранее
мы рассматривали настройку брандмауэра, в этой главе мы поговорим о
том, как настроить брандмауэр, чтобьi защитить сервер от сетевых атак.
Здесь же будет рассмотрена защита от брутфорса паролей SSH и предот­
вращение сканирования портов сервера.
•
....................................................................................
1 1,111,1 �7 ( )iit't'Ш"l('IIIH' 11(' 11111:l('IIЩ' 1 11
• Защита сетевых служб - это отдельный вопрос в области обеспечения
безопасности. Для общей защиты всех сетевых сервисов мы будем ис­
пользовать популярное решение fail2ban.
• Шифрование данных - будет рассмотрено
' шифрование файловой
системы посредством eCryptfs. Если вас интересует защита данных как
таковая, то eCruptfs - достойное решение. Если же вам нужна защита
персональных данных в рамках ФЗ-152, то придется поискать друтое ре­
шение, поскольку eCryptfs не поддерживает ГОСТ-алгоритмы шифрова­
ния и для проверяющих такая защита окажется недостаточной, хотя алго­
ритм AES, используемый в eCryptfs, ничем не хуже.
• Настройка собственноrо VPN-cepвepa - если файловая система
eCryptfs защищает данные, которые хранятся на жестком диске, то VPN­
cepвep будет защищать данные, передаваемые по сети.
27.1. Локальная безопасность сервера
Локальная безопасность сервера начинается с организации серверной ком­
наты - отдельного помещения, в котором будут находиться серверы и дру­
гое сетевое оборудование. При этом должны соблюдаться следующие требо­
вания к серверному помещению:
• Организация пропускного режима, например электронный замок с чип­
картой, чтобы было видно, кто входил в помещение. Такая система
позволяет ограничить доступ сотрудников в отдельные помещения·'пред­
приятия.
• Организация видеонаблюдения не только за входной дверью, но и внутри
помещения, в том числе за консолью сервера, чтобы было видно, кто и
что делал в помещении.
• Обеспечение оптимальной температуры для работы оборудования, как
правило, это 18 градусов.
• Обеспечение отдельного помещения для IТ-отдела. Запомните: серверная
- это серверная, человек должен там находиться, если возникла какая-то
проблема, которую невозможно реµ�ить удаленно (из ·другого кабинета).
В серверной не должен находиться П-персонал, и наоборот - сервер не
должен находиться в IТ-отделе.
•
··················································································C!JI
lkcl, 1 illll\
• Установка пожарной сигнализации.
• Установка охранной сигнализации с датчиками движения, открытия две­
рей, разбития стекла.
• Установка решеток на окна и дополнительных (неэлектронных) замков.
• Резервирование интернет-канала и электросети. С интернет-каналом
проще - достаточно хотя бы подключения к другому провайдеру. Линии
двух провайдеров, скорее всего, будут проходить по одному и тому же
участку и в случае стихийного бедствия будут обе повреждены. Но, по
крайней мере, вы хотя бы будете застрахованы от проблем у какого-то
из провайдеров. Бывают всякие технические сбои, а пока основ­
ное соединение "отремонтируют", вы будете пользоваться резервным. С
электричеством сложнее. Самый простой и дешевый вариант - дизель­
генераторы, но их не всегда можно установить. Источники бесперебой­
ного питания, если они нужны не только для корректного завершения ра­
боты, обойдутся довольно дорого. Цена ИБП уровня предприятия легко
достигает нескольких тысяч долларов, и это без батарей.
Если на вашем предприятии готовились документы по защите персональ­
ных данных, то все эти требования должны быть учтены в документе, име­
нуемом Модель угроз. В нем приводятся актуальные угрозы и способы их
устранения.
""
=
:а
' .
1
Как видите, много чего нужно сделать до того, как установить пломбы на
корпус сервера и пароль на ВIOS. Организация серверного помещения дело не дешевое, поэтому многие организации предпочитают размещать
сервер в дата-центре (colocation), где все эти условия уже созданы. Так
выходит дешевле. Еще дешевле будет, если сервер не покупать вообще, а
ограничиться виртуальным сервером. Виртуальный сервер начальной кон­
фигурации обойдется даже дешевле услуги colocation физического сервера.
Поэтому если вы только начинаете планировать инфраструктуру предпри­
ятия, задумайтесь о виртуальных серверах как средстве экономии средств
предприятия.
Вот, а теперь настало время поговорить о том, что многие считают локаль­
ной безопасностью:
• Установите плqмбы на корпус сервера (серверgв) и пароль на вход в
BIOS. Этим вы немного обезопасите себя от злоумышленника, который
загрузится с LiveUSB/LiveCD для получения доступа к данным сервера
в обход о·перационной системы. При желании, конечно, можно сорвать
E!t··················································································
,. ,ава '27 Обt•с11ечс1111t• бс!0ШICII0C111
пломбы и сбросить настройки BIOS, но это не останется незамеченным.
Пароль нужно устанавливать не на загрузку, а на вход в BIOS, иначе при
перезагрузке сервера вам HYJJ<НO будет лично присутствовать для ввода
пароля.
• Установите пароль загрузчика GRUB2. Аналогично, пароль нужно уста­
навливать не на загрузку, а на изменение параметров GRUB2, чтобы
никто не смог подменить систему инициализации и обойти проверку па­
роля.
О втором случае хотелось бы поговорить отдельно.
Напомню, что параметр ядра init позволяет задать систему
инициализации.
В качестве значения init вы можете указать любую другую программу, и
она будет выполнена с максимальными правами (поскольку ядро запускает
систему инициализации с максимальными правами). Проведем небольшой
эксперимент с дистрибутивом Astra Linux. Перезагрузите систему и в меню
загрузчика нажмите е для редактирования параметров ядра. Добавьте пара­
метр init=/Ьin/Ьash, как показано на рис. 27 .1.
•
Рис. 27.1. Передача параметров ядра
··················································································&1
t
u
lkc 1. 1 i1111,
После этого ,нажмите FlO и дождитесь завершения загрузки. После этого
вы увидите приглашение командной строки (ведь мы запустили командный
интерпретатор вместо системы инициализации) с решеткой, что свидетель­
ствует о максимальных правах (рис. 27.2). Все, теперь вы можете делать с
системой все, что вам захочется.
Рис. 27.2. Получены максимальные права
Некоторые дистрибутивы блокируют запуск в подобном режиме - предла­
гают ввести пароль root, но Astra Linux к таким не относится, что является
существенным недостатком, особенно для дистрибутива, который позицио­
нирует себя как дистрибутив "особого назначения".
Защититься поможет только установка пароля загрузчика, как было расска­
зано ранее. Данный пароль попросту не позволит редактировать параметры
ядра и подменить систему инициализации.
27.2. Защита от сетевых атак
Существует много различных атак сети. Среди них можно выделить три ос­
новных вида:
1. DоS-атаки;
2. Атаки, целью которых является получение доступа к сети;
3. Разведывательные атаки, ц�лью которых является получение информа­
ции о сети.
•
....................................................................................
1 l,IH,I � 7 ( )бt.•t"ll("H.'llllf.' fit.• 1н11at.0IIH(" I II
В этом разделе мы поговорим о DоS-атаках, их разновидностях, обнаруже­
нии и защите сети от этих DоS-атак средствами маршрутизатора. При этом
маршрутизатор может быть как программным (компьютер под управлением
Linux и с должным образом настроенным ПО), так и программно-аппарат­
ным ("коробочка" от Cisco или другого вендора).
27.2.1. DoS- и DDоS-атаки
DоS-атака, иnи атака на отказ в обслуживании (Denial of
Service - DoS), является наиболее распространенной в
информационном мире атакой.
С другой стороны, DоS-атака является наиболее молодой.
О DоS-атаках всерьез заговорили только в 1999 году, когда были "завале­
ны" WеЬ-сайты известных корпораций (Amazon, Yahoo, CNN, еВау, E-Trade
и др.). Хотя сама техника DоS-атак появилась в 1996 году, но до 1999 на нее
особо никто не обращал внимания.
Позже появились распределенные DоS-атаки (Distributed Denial of Service,
DDoS). В этом случае атака производится не одним узлом, а несколькими,
что усложняет пресечение атаки и обнаружение источника атаки.
Что же такое DоS-атака? Ее цель - захватить все ресурсы компьютера­
жертвы, чтобы другие пользователи не смогли использовать этот компьютер.
К ресурсам относятся: память, процессорное время, дисковое пространство,
сетевые ресурсы �др.
Рассмотрим наиболее распространенные виды DоS-атак:
• Smurf - злоумышленником отправляются широковещательные есhо­
пакеты (протокол ICMP), в заголовках которых в качестве источника
указывается адрес жертвы, в результате все системы, получившие ping­
зaпpoc, "заваливают" жертву есhо-ответами.
• ICМP-jiood - похожа·на Smurf, но отправляет IСМР-запросы напрямую
на узел-жертву, без использования широковещательного адреса.
•
• UDP-jlood - отправка на узел-мишень огромного количества UDР­
пакетов, что приводит к "связыванию" сетевых ресурсов.
·-----------------------------------------------------------------------------------
lkcl, 1 illll\
• TCP-jiood - аналогична предыдущей, но используются ТСР-пакеты.
• ТСР SYN-jiood - одна из самых интересных атак. О ней в этой книге мы
уже говорили, я позволю себе напомнить вам ее принцип. Злоумышлен­
ник отправляет на открытый порт много SУN-пакетов с недостижимым
адресом источника. Атакуемый маршрутизатор должен ответить пакетом
<SYN, АСК>, но ведь узел, указанный в качестве источника, недоступен,
поэтому трехступенчатая схема установления ТСР-соединения не завер­
шается. Поскольку таких SУN-пакетов очень много, лимит на·количество
открытых соединений очень быстро превышается, и жертва отказывается
принимать зарросы на установление соединения от обычных пользовате­
лей сети. В результате страдают обычные пользователи сети, которые не
могут подключиться к серверу.
Далее мы поговорим, как обнаружить DоS-атаку и как защититься от нее
средствами маршрутизатора.
Для защиты от DoS· мы будем использовать перехват ТСР-соединений (ТСР
lntercept), пакетный фильтр, NВAR и ограничение потока IСМР-пакетов.
Нужно отметить, что далеко не всегда можно уберечься от DоS-атаки, но
при правильной настройке всегда можно свести старания злоумышленника
на нет.
27.2.2. Обнаружение атаки
Вот основные симптомы DоS-атаки:
.;�
• огромное количество АRР-запросов;
• огромное количество записей в вашей NАТ/РАТ-таблице;
• повышенное использование памяти маршрутизатора;
• повышенное использование процессорного времени маршрутизатора.
Напомню, что мы рассматриваем управляемые маршрутизаторы, оснащен­
ные собственной операционно'й системой.
Для обнаружения симптомов DоS-атаки вам нужно подключиться к своему
маршрутизатору- и, используя диагностические утилиты операционной
системы маршрутизатора, выяснить, имеет ли место DоS-атака.
•
В.1----------------·-······-··--··-····-········-·······--·-·-···--··-·············-·
1 ,.,н., : - Оii,·,·ш·•1,·111н· ii,· ю11а,·1юс� 11
Например, в Cisco 10S просмотреть использование процессора можно с по­
мощью команды show processes ери.
В Linux можно использовать коNlанду top или аналогичные альтернативные
команды.
27.2.3. Специальные настройки ядра
Используя специальные настройки ядра, можно предотвратить DDoS-aтaкy.
Для этого откройте файл /etc/sysctl.confи добавьте в него следующие строки:
kerne�.printk = 4 4 1 7
kernel.panic = 10
kernel.sysrq = О
kernel.shmmax = 4294967296
kernel.shmall = 4194304
kernel.core_uses_pid = 1
65536
kernel.msgmnb
kernel.msgmax = 65536
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
fs.file-max = 2097152
262144
net.core.netdev_max_backlog
net.core.rmem default = 31457280
net.core.rmem max = 67108864
net".core.wmem default = 31457280
net.core.wmem max = 67108864
net.core.somaxconn = 65535
net.core.optmem_max = 25165824
4096
net.ipv4.neigh.default.gc_threshl
8192
net.ipv4.'heigh.default.gc_thresh2
net.ipv4.neigh.default.gc_thresh3
16384
net.ipv4.neigh.default.gc_interval = 5
net.ipv4·.neigh.default.gc_stale_time = 120
net.netfilter.nf_conntrack_max =. 10000000
net.netfilter.nf_conntrack_tcp_loose = О
net.netfilter.nf_conntrack_tcp_timeout_estaЫished = 1800
net.netfilter.nf conntrack tcp timeout close = 10
net.netfilter.nf=conntrack=tcp=timeout=c·1ose_wait = 10
net.netfilter.nf_conntrack_tcp-'-timeout_fin_wait = 20
•
···--·---···-····-······-··-·--··---··--··························-···-····-···--··flll
t
u
lkc ,. 1 i1111,
net.netfilter.nf_connt:eack_tcp_timeout_last_ack
20
20
net.netfilter.nf_conntrack_tcp_timeout_syn_recv
net.netfilter.nf_conntrack_tcp_timeout_syn_sent
20
. net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10
net.,ipv4.tcp_slow_start_after_idle = О
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_no_pmtu_disc = 1
net.ipv4.route.flush = 1
net.ipv4.route.max_size = 8048576
net.ipv4.icmp_echo_ignore_broadca$ts = 1
1
net.ipv4.icmp ignore bogus error responses
net.ipv4.tcp_;ongestion_co�trol � htcp
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.udp_rmem_min = 16384
·net.ipv4.tcp_wmem = 4096 87380 33554432
net.ipv4.udp wmem min = 16384net.ipv4.tcp=max_tw_buckets = 1440000
net.ipv4.tcp_tw_recycle = О
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 400000
net.ipv4.tcp window scaling = 1
net.ipv4.tcp=rfc1337 = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp synack retries = 1
net.ipv4.tcp=syn�retries = 2
net.ipv4.tcp max syn backlog = 16384
net.ipv4.tcp=tim�sta�ps = 1
riet.ipv4.tcp_sack = 1
net.ipv4.tcp_fack =·1
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 10
net.ipv4.tcp_no_metrics save = 1
net.ipv4.ip_forward = О
net.ipv4.conf.all.accept_redirects = О
net.ipv4.conf.all.send_redirects = О
net.ipv4.coлf.all.accep_t_source_route
О ,
net.ipv4.conf.all.rp_filter = 1
Все эти строки помогут повысить производительность вашего сервера во
время DDоS-атаки - он дольше продержится, и у вас будет дополнительное
....................................................................................
1 1,111,1 27 Oiit·t·щ·•1t·11щ• iit· 111ш1t·11щ·111
время на определение источника атаки и его блокировку. Чтобы данные из­
менения вступили в силу, выполните команду sudo sysctl -р,
27.2.4. Блокируем все подозрительное
Предотвратить DDoS-aтaкy могут и определенные правила брандмауэра .
Мы будем использовать iptaЬ!es, поскольку он более гибкий в настройке и
предоставляет те возможности, которых нет в других продуктах,
Блокируем неправильные пакеты:
iptaЬles -t mangle -А PREROUTING -m conntrack --ctstate INVALID -j
DROP
Блокируем новые нe-SYN пакеты:
iptaЫes -t mangle -А PREROUTING -р tcp
NEW -j DROP
--syn -m conntrack --ctstate
Данное правило блокирует все пакеты, которые являются новыми (не при­
надлежат уже установленному соединению) и не используют флаг SYN.
Блокируем пакеты с неправильным значением MSS:
iptaЫes -t mangle -А PREROUTING -р tcp -m conntrack --ctstate NEW
-m tcpmss ! --mss 536: 65535 -j DROP
Такие пакеты выглядят подозрительно, поэтому лучше их заблокировать,
чем проглядеть атаку.
Блокируем пакеты с поддельными ТСР-флагами:
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG
NONE -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags FIN, SYN FIN,SYN -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags FIN,RST FIN,RST -j DROP
•
,
................................................................................. ..
с.
:
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags FIN,ACK FIN -j DROP
iptaЬles -t mangle -А PREROUTING -р tcp --tcp-flags ACK,URG URG -j DROP
iptaЫes -t mangle �А PREROUТING -р tcp --tcp-flags ACK,FIN FIN -j DROP
iptaЫes -t mangle �л PREROUТING -р tcp --tcp-flags ACK,PSH PSH -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ALL ALL -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ALL NONE -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ALL FIN,PSH,URG -j DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ALL SYN,FIN,PSH,URG -j
DROP
iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG
-j DROP
Приведенный выше набор правил блокирует пакеты, использующие фик­
тивные флаги ТСР, то есть флаги ТСР, которые нормальные пакеты не будут
использовать.
27.2.5. Блокируем пакеты из-под приватных подсетей
(спуфинг)
Правила будут такими:
iptaЬles -t mangle -А PREROUTING -s 224.0.0.0/3 -•j DROP
iptaЬles -t mangle -А PREROUTING -s 169.254.0.0/16 -j DROP
iptaЫes -t mangle -А PREROUTING -s 172.16.0.0/12·-j DROP
iptaЫes -t mangle -А PREROUTING -s 192.0.2.0/24 -j DROP
iptaЫes -t mangle -А PREROUTING -s 192.168.0.0/16 -j DROP
iptaЫes -t mangle -А PREROUTING -s 10.0.0.0/8 -j DROP
ipt·aыes -t mangle -А PREROUTING -s О.О.О.О/В -j DROP
iptaЬles -t mangle -А PREROUTING -s 240.0.0.0/5 -j DROP
iptaЫes -t mangle -А PREROUTING -s 127.0.0.0/8 ! -i lo -j DROP
Эти правила блокируют поддельные пакеты, исходящие из частных (локаль­
ных) подсетей. На общедоступном сетевом интерфейсе обычно не должно
быть пакетов с локальных подсетей.
Данные правила предполагают, что ваш интерфейс петли (loopback) исполь­
, зует адрес IP 127.0.0.0/8.
'
.
118·----------------------------------------·---·---·---------·-···············-·-···
[ 1,11�.1 �- ()()l'l'IH.''ll'IIJll' fil'HHlal'lltll'l lt
27.2.6. Дополнительные правила
Также не будут лишними следующими правила:
iptaЫes -t mangle -А PREROUTING -р icmp -j DROP
iptaЫes -А INPUT -р tcp -m connlimit --connlimit-above 80 -j
REJECT --reject-with tcp-·res�t
Первое правило удаляет все IСМР-пакеты.
Как правило, ICMP используется только для ping'a - чтобы проверить,
"жив" ли узел или нет. Обычно это вам не нужно (есть и так много средств
мониторинга, позволяющих убедиться, что с узлом все хорошо), а сторон­
ним узлам и пользователям и подавно не нужно ничего знать о вашем узле.
Поэтому от ICMP можно смело отказаться.
Второе правило позволяет предотвратить атаки соединения. Оно отклоняет
соединения от хостов, которые уже установили более 80 соединений. Если у
вас возникнуr какие-либо проблемы с легитимными узлами, вам нужно под­
нять лимит на количество установленных ТСР-соединений.
Следующие правила ограничивают число новых соединений ТСР, которые
клиент может установить за секунду. Они полезны против атак на соедине­
ния, но не годятся против SУN-флуда, поскольку обычно используется бес­
конечное количество разных поддельных IР-адресов источника.
iptaЫes -А INPUT -р tcp -m conntrack --ctstate NEW -m limit
--limit 60/s --limit-burst 20 -j АССЕРТ
iptaЫes -А INPUT -р tcp -m conntrack --ctstate NEW -j DROP
Следующее правило блокирует ·фрагментированные пакеты:
iptaЬles -t mangle -А PREROUTING -f -j DROP
А эти правила ограничивают входящие ТСР RST пакеты, чтобы избежать
ТСР RSТ-наводнения:
•·-----------------------------------------------------------------------------------
lkll, l .i1111\
iptaЫes -А INPUT -р tcp --tcp-flags RST RST -rn lirnit --lirnit
2/s --lirnit-burst 2 -j АССЕРТ
iptaЫes -А INPUT -р tcp --tcp-flags RST RST -j DROP
27.2.7. Полный список анти-DDоS правил
Собирая все вместе, приводим полный список правил, позволяющих суще­
ственно защитить ваш сервер от всякого рода DDoS-aтaк:
#ii 1: Избавляемся от неправильных пакетов И##
/sbin/iptaЬles -t mangle -А PREROUTING -m coппtrack --ctstate INVALID
-j DROP
***
##И 2: Удаляем новые ТСР-пакеты без флага SYN
/sbin/iptaЫes -t maпgle -А PREROUTING -р tcp ! --syn -m conntrack
--ctstate NEW -j DROP
***
##И 3: Удаляем пакеты с подозрительным значением MSS
/sbin/iptaЫes -t mangle -А PREROUTING -р tcp -m conntrack --ctstate
NEW -rn tcpmss ! --mss 536:65535 -j DROP
***
***
4: Блокируем пакеты с фиктивными ТСР-флагами
/sbin/iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags
FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
/sbin/iptaЬles -t mangle -А PREROUTING -р tcp --tcp-flags FIN,SYN
FIN,SYN -j DROP
/sbin/iptaЬles -t mangle -А PREROUTING -р tcp --tcp-flags SYN,RST
SYN,RST -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags FIN,RST
FIN,RST -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags FIN,ACK FIN
-j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ACK,URG URG
-j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -р tcp --tcp-flags ACK,FIN FIN
-j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING '-р tcp --tcp-flags ACK,PSH PSH
-j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -р tcp �-tcp-flags ALL ALL -j
DROP
/sЬin/iptaЫes -t mangle -А PREROUТING -р ,tcp --tcp-flags ALL NONE -j
DROP
/sЬin/iptaЬles -t mangle -А PREROUTING -р tcp --tcp-flags ALL
FIN,PSH,URG -j DROP
•
111!1---------------------------··········-·····························-··············
1 1,IВ,1
27 Oiit•t'llt''lt'IIЩ' Clt' ICIШICllllt· 1 11
/sЬin/iptaЫes -t mangle -А PREROUТING -р tcp --tcp-flags АЦ,
SYN,FIN,PSH,URG -j DROP
/sЬin/iptaЫes -t mangle -А PRfROUTING -р tcp --tcp-flags ALL
SYN,RST,ACK,FIN,URG -j DROP
### 5: Блокируем спуфинг-пакеты###
/sЬin/iptaЫes -t mangle -А PREROUTING -s 224.р.0.0/З -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 169.254.0.0/16 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 172.16.0.0/12 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 192.0.2.0/24 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 192.168.0.0/16 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 10.0.0.0/8 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 0.0.0.0/8 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 240.0.0.0/5 -j DROP
/sЬin/iptaЫes -t mangle -А PREROUTING -s 127.0.0.0/8 ! -i lo -j DROP
### 6: Блокируем ICMP###
/sЬin/iptaЬles -t mangle -А PREROUTING -р icmp -j DROP
### 7: Удаляем фрагментированные пакеты###
/sЬin/iptaЫes -t mangle -А PREROUTING -f -j DROP
### 8: Ограничиваем соединения по IP###
/sЬin/iptaЫes -А INPUT -р tcp -m connlimit --connlimit-above 111 -j
REJECT --reject-with tcp-reset
### 9: Ограничиваем RSТ-пакеты###
/sЬin/iptaЫes -А INPUT -р tcp --tcp-flags RST RST -т limit --limit 2/s
--limit-burst 2 -j АССЕРТ
/sЬin/iptaЫes -А INPUT -р tcp --tcp-flags RST RST -j DROP
### 10: Ограничиваем число ТСР-соединений в секунду с одного IP###
/sЬin/iptaЫes -А INPUT -р tcp -m conntrack --ctstate NEW -m limit
--limit 60/s --limit-burst 20 -j АССЕРТ
/sЬin/iptaЫes -А INPUT -р tcp -m conntrack --ctstate NEW -j DROP
27.2.8. Защита от брутфорса SSH
С помощью правил iptaЫes можно защититься от брутфорса (перебора па­
роля) SSH:
/sbin/iptaЫes -А INPUT -р tcp --dport ssh -m conntrack --ctstate
NEW -m recent --set
/sbin/iptaЫes -А INPUT -р tcp --dport ssh -m conntrack --ctstate
NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
•
··················································································-EII
=.;
о:
;Е
с.
с:
lkcl, l.illll\
27.2.9. Запрет сканирования портов
Также iptaЫes позволяет защититься от сканирования портов:
/sbin/iptaЫes -N port-scanning
/sЬin/iptaЫes -А port-scanning -р tcp --tcp-flags SYN,ACK,FIN,RST
RST -m limit --limit 1/s --limit-burst 2 -j RETURN'
/sЬin/iptaЫes -А port-scanning -j DROP
27.2.10. Определение источника атаки
Определить источник DоS-атаки обычно довольно сложно, но возможно.
Очень важно определить именно источник атаки, а не другие скомпроме­
тированные узлы, которые использовались при атаке. Например, в случае
со Smurf-aтaкoй мнимыми источниками будут все узлы сети, которые "за­
валили" ваш сервер или маршрутизатор рing-пакетами, но ведь кто-то же
отправил такой рing-пакет! Это и есть настоящий источник атаки. С другими
видами DоS-атак ситуация примерно такая же. Сетевой червь может инфи­
цировать целые подсети, которые по команде злоумышленника все вместе
будут отправлять ТСР/UDР-пакеты на ваш сервер. Опять-таки есть первоис­
точник атаки.
Что делать, если вы уже подверглись DоS-атаке? Первым делом все силы
нужно направить на то, чтобы такая атака не повторилась. Да, нежелатель­
ный трафик вы уже обратно не вернете, и его придется оплатить. Тут уже
ничего не поделать.
Нужно сообщить своему провайдеру об атаке - вместе вам будет проще
отследить источник атаки. Провайдер, в свою очередь, может обратиться к
вышестоящему провайдеру с целью обнаружения реального источника ата­
ки. Помните, что любой пользователь, которь1й подключается к Интернету,
подписывает договор о том, что он не будет причинять вреда другим поль­
зователям. Может, рядовой пользователь такой договор и не подписывает,
зато его подписывают провайдеры. То есть в крайнем случае можно подать в
суд на провайдера, в сети которого находился злоумышленник. Защититься
от DоS-атаки поможет правильно продуманная политика безопасности сети,
правильно �-:-·:троенные маршрутизаторы, брандмауэры, прокси-серверы
(если все это ... ,:)льзуется в вашей сети). Довольно эффективным способом
•
•
88-·-·············-·--···-········-···--···-···-····--························-······
1 J,!B,I �- ( )iit·1.:1н.·•1t'll llt' iit· 30llat'IIHt' 111
защиты от DоS-атаки является переключение на резервный канал (о котором
не знает злоумышленник) в самом начале атаки - да, злоумышленника вы
не накажете, но зато уменьшите �атериальный ущерб.
В любом случае о каждой атаке нужно официальн� (вплоть до письменного
уведомления) оповещать своего провайдера, ведь ваша безопасность и в его
интересах.
27.3. Защита сетевых служб
Основное правило при защите сетевых служб следующее:
отключайте неиспользуемые сетевые службы.
Нет ничего хуже включенной, но не настроенной сетевой службы. Это
просто черная дыра в безопасности вашего сервера.
Пока службы отключены, они не представляют угрозу безопасности. Одна­
ко, включая их, вам, по следующим причинам, следует проявлять бдитель­
ность:
• По умолчанию файрвол не включен, поэтому если служба прослушивает
все сетевые интерфейсы, они фактически становятся общедоступными.
• У некоторых служб нет учетных данных для аутентификации, они дают
вам их установить при первом использовании. У цекоторых е.сть стан­
дартные учетные записи, их логины и пароли широко известны. Проверь­
тет чтобы пароли доступа к службам были заданы либо изменены на те,
которые знаете только вы.
• Многие службы работают под суперпользователем, с полными админи­
стративными привилегиями, поэтому несанкционированный доступ к
.ним или дыры в системе их безопасности обычно приводят к серьезным
последствиям.
Для каждой сетевой службы есть свои рекомендации по обеспечению безо­
пасности, и вы без проблем найдете их в Интернете. Кроме вьшолнения этих
рекомендаций, настоятельно рекомендуется установить средство fail2ban,
позволяющее защитить сразу несколько сете11ых служб и даже защититЬСJ!
....................................................................................
lkcl, 1 illll\
от DDoS-aтaк, которым удалось просочиться сквозь наш грозный брандмау­
эр, который мы настроили в прошлом разделе.
Для установки fail2ban введите команду:
sudo apt install fail2ban
Основной конфигурационный файл находится по пути /etc/
fail2ban/jail.conf.
Однако его не рекомендуется менять, а для настройки лучш� использовать
подключаемые файлы из каталога /etc/fail2ban/jail.d. Настройки по умолча­
нию хранятся в файле /etc/fail2ban/jail.d/default.conf.
Рассмотрим секцию DEFAULT:
[DEFAULT]
maxretry = 4
findtime = 4В0
bantime = 720
action = firewallcmd-ipset
ignoreip = 127.0.0.1/В
где:
• maxretry - количество действий, которые разрешено совершить до бана;
• fmdtime - время в секундах, в течение которого учитывается maxretry;
• bantime - время, на которое будет блокироваться IР-адрес;
• action - действие, которое будет выполняться, если Fail2ban обнаружит
активность, соответствующую критериям поиска;
• ignoreip - игнорировать защиту, если запросы приходят с перечислен­
ных адресов.
В данном примере, если в течение 8 минут (480) будет найдено 5 строк
(maxretry = 4), содержащих критерий фильтра, Fail2ban заблокирует IР­
адрес, с которого идет подключение на 12 минут (720).
..................................................................................
,
1 1.11:.1 -,- ( )i.t•t'll(.'1lt'llllt' i.t· tн11at·11ot· 1 11
В секции [DEFAULT] хранятся общие настройки для всех правил. Каждую
из настроек можно переопределить при конфигурировании самого правила.
Для настройки новых правил нужно создать новый конфигурационный файл
в каталоге /etc/fail2ban/jail.d.
Например, создадим файл ssh.conf, в котором будут правила для защиты сер­
виса ssh:
[ssh]
enaЫed,: true
port = ssh
filter = sshd
action = iptaЫes[name=sshd, port=ssh, protocol=tcp]
sendmail-whois[name=ssh, dest=****@gaail.CXIII, sender=fail2Ьan@lllyhost.ru]
logpath = /var/log/auth.log
maxretry = 3
Ьantime = 600
1
r
1' ВНИМАНИЕ! Следите за тем, чтобы путь к файлу хранения ло- '1
1
1 гов (logpath) был указан корректно.
t______________________________________________________________J
�--------------------------------------------------------------,
1
1
1 ПРИМЕЧАНИЕ. Вы можете хранить конфигурацию защиты от- 1
1 дельного сервиса в отдельном
файле, а можете собрать все 11
·
1
: приведенные далее секции в один файл - servlces.conf. Как :
1 вам будет удобнее.
1
t______________________________________________________________J
Если выполнено более 3 неудачных попыток подключения к серверу через
основные порты SSH, то IР-адрес, с которого выполнялась авторизация, по­
падет в баи на 10 минут (600 секунд).
Правило запрета будет добавлено в iptaЫes.
В то же время владелец сервера получит уведомление на e-mail, указанный в
значении переменной dest, о том, что указанный IP был заблокирован за по­
пытку получения несанкционированного доступа по протоколу SSH. Также
в сообщении будет указана WНOIS информация о заблокированном IP.
•
Для защиты от DDоS-атаки на SSH можно создать секцию:
················.---·······························································811
lkc 1, l.i1111,
[ssh-ddos]
enaЫed = true
port
. = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 2
Ниже представлены примеры настроек конфигурационного файла для за­
щиты почтового сервера postfix.
[postfix]
enaЫed = t;rue
=·smtp,ssmtp,submission
port
action = iptaЫes [name=Postfix-smtp, port=smtp, protocoi=tcp]
filter = postfix
'logpath = /var/log/mail.log
bantime •= 86400
maxretry = З
findtime = 3600
ignoreip = 127.0.0.1
Для защиты веб-сервераАрасhе можно использовать следующие настройки
Fail2ban:
[apache]
enaЫed =· true
port
= http,https
filter = apache-auth
0
logpath = /var/log/apache2/error.log
maxretry = З
/
[apache-multiport]
�naЬled = true.
= http,https
port
filter = apache-auth
log.path = /var/log/apache2/error.log
maxretry = з
[apache-noscript]
enaЬled =. true
•
....................................................................................
1 l,IH,1 �- ()iit·t·11t.'1ll'lllll' fit·1011at·11tн..·1 11
= http,https ·
port
fil ter = apache-noscript
logpath� /var/log/apache�/error.log
maxretry = 3
Как вы уже могли заметить, в используемых выше секциях конфигурации
отсутствуют значения параметра action.
В этом·случае при обнаружении атаки на сервис Apache программа Fail2ban
будет выполнять действие, определенное в секции [DEFAULT], а именно
action = iptaЬ!es-multiport. Это значит, что атакующий IР-адрес будет забло­
кирован в iptaЫes при помощи так называемого модуля multiports. Модуль
multiports позволяет настроить правило сразу для диапазонов портов.
Для защиты FТР-сервера vsftpd с помощью Fail2ban можно использовать
следующие параметры:
[vsftpd]
enab!ed. = true
port
= ftp, ftp-data" ftps, ftps-data
=
filter
vsftpd
logpath = /var/log/vsftpd.log
action = iptaЫes[name=VSFTPD, port= 21, protocol=tcp]
bantime = 600
maxretry = 3
findtime = 1800
Не забудьте о необходимости перезапуска Fail2ban после каждого редакти­
рования конфигурационного файла:
sudo systemctl restart fail2ban
27.4. Шифрование данных
В этом разделе мы поговорим о криптографической файловой системе
eCryptfs и зашифруем каталог с данными (/opt/data).
•
Первым делом нужно установить утилиты eCryptfs.
····················································;·····························-88
lkc1, l,i1111\
На данный момент у меня Debian, поэтому для их установки буду использо­
вать apt-get:
sudo apt install ecryptfs-utils
Чтобы зашифровать каталог, нужно его подмонтировать, указав тип файло­
вой системы ecгyptfs:
sudo mount -t ecryptfs /opt/data /opt/data
Вывод будет таким (жирным выделено то, что нужно ввести вам):
Passphrase: <сехре...,._ фра3v
Select cipher:
1) aes: Ыocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) Ыowfish: Ыocksize = 16; min keysize = 16; max keysize = 56 (not loaded)
3) des3_ede: Ыocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: Ыocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
5) cast6: Ыocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: Ыocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]: просто НUСМИ'1'8 Enter
Select key bytes:
1) 16
2) 32
3) 24
Selection [16): НUСМИ'1'8 Enter
ЕnаЫе plaintext passthrough (y/n) [n): n
ЕnаЫе filename encryption (y/n) [n): n
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=lб
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt),
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? yes
Would you like to append sig [bd28c38da9fc938b) to
[/root/.ecryptfs/sig-cache.txt)
,
in order to avoid this warning in the future (yes/no)? yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs
•
....................................................................................
1 1,11<,1 '_ 7 Oiit•t'Щ"lt'llllt' llt' IIIШlt'IIOt' 111
Теперь разберемся, что произошло. Мы согласились на использование ал­
горитма по умолчанию (AES). Если считаете, что другой алгоритм лучше,
можете выбрать его.
Также мы отказались от шифрования имен файлов (ЕnаЫе filename
encryption): если что-то случится с зашифрованным каталогом, то разобрать­
ся, где и какой файл, будет сложно.
На данный момент /opt/data зашифрован. Осталось самое глав­
ное
проверить, а зашифрован ли на самом деле каталог?
Попробуем скопировать в него любой файл из незашифрованной файловой
системы:
ер /etc/rnotd /optta
Размонтируем зашифрованный каталог:
sudo urnount /opt/data
Теперь пробуем прочитать /opt/data/motd:
cat /opt/data/rnotd
Если вы увидите всякого рода иероглифы и абракадабру, значит, шифрова­
ние работает.
27.5. Настройка VPN-cepвepa
Представим, что у нас есть торговая организация, представители которой
"рассекают" по всей стране. Им часто приходится пользоваться публичны­
ми Wi-Fi-сетями (.например, в ресторанах и отелях) для передачи данных в
главный офис. Кто и как настраивал такие публичные сети - непонятно.
Перехватывают ли они передаваемые пользователями данные - тоже не­
понятно, но риск такой есть, и его нужно минимизировать. Для этого мы
настроим VPN-cepвep, подключившись к которому пользователи смогут без-
•
··················································································1111
lkLI, (jJJU\
опасно передавать данные в главный офис, не опасаясь их перехвата. При
использовании VPN-cepвepa весь трафик будет проходить в зашифрованном
виде, и вы можете не опасаться за его перехват на участке "точка доступа =>
провайдер=> офис".
Конечно, можно использовать один из множества уже готовых VРN­
сервисов, и вы также получите шифрование трафика.
Но здесь есть ряд "но":
• Собственный VPN-cepвep подконтролен вам и только вам.
Что происходит с данными, которые вы передаете через сторонние сер­
висы, - неизвестно. Да, трафик будет зашифрован, но внутри VРN­
соединения данные на VPN-cepвep будут отправлены в незашифрованном
виде. Может, VРN-сервис хранит' все передаваемые данные и потом они
окажутся в ненужных руках? Некоторые VРN-сервисы прямо заявляют
об этом, что, мол, ведется лог и по первому запросу правоохранительных
органов вся активность пользователя будет передана им. Вы-то ничего
не делаете противозаконного, но беспокоит сам факт протоколирования
всего, что вы передаете. А вдруг произойдет утечка данных?
• Ограничения по скорости - у VРN-сервиса очень много пользовате­
лей, и они вынуждены ограничивать скорость соединения. Ваш собствен­
ный VPN будет работать явно быстрее.
• Стоимость - хороший VРN-сервис стоит 20-30$ в месяц, у вас в шта­
те 30-50 торговых представителей. Экономию в месяц можете подчитать
самостоятельно.
• Стабильность - с 2020 года перестал работать популярный сервис
SecurityКISS. Представьте, что вам в срочном порядке нужно найти но­
вый сервис, настроить 30-50 аккаунтов и т.д. В собственном сервере
можно быть уверенным. Что же касается обеспечения его бесперебойной
работы, то для начала хватит хорошего ИБП, а если нужна доступность
24/7, то никто не мешает арендовать виртуальный сервер и настроить его
как VPN. В месяц это обойдется 2-3 тыс. рублей, что гораздо дешевле
600-1500$ затрат на VРN-сервис (все цены могут отличаться в зависимо­
сти от даты прочтения данного материала).
Далее будет описана настройка VPN в UЬ�tu. Если вы будете арендовать
виртуальный сервер, то на них часто используются старые версии UЬuntu
вроде 16.04; 17.04 - ничего страшного. Самая последняя версия вам не нуж-
•
•
-----------------------------------------------------------------------------------·
1 1,11\,1 �- Oiit•t'lll''ll'll11, lll'IOll.t,IIOl' 111
на, к тому же из ее репозиториев удалили много полезного ПО-разработ­
чики готовятся переходить на снапы, поэтому настраивать VPN, например, в
20.04 вам будет некомфортно.
27.5.1. Создание всех необходимых сертификатов и ключей
Создание VPN-cepвepa требует некоторого времени, хотя ничего сложного
нет. Установите программное обеспечение:
sudo apt install openvpn easy-rsa
Первый пакет-это сам OpenVPN, а второй-еаsу-rsа-это пакет, позво­
ляющий построить собственный сервер сертификации.
Далее нужно настроить центр сертификации. OpenVPN использует TLS/
SSL, поэтому нам нужны сертификаты для шифрования трафика между сер­
вером и клиентом. Чтобы не покупать сертификаты (мы же хотим макси­
мально сэкономить!), мы создадим собственный центр сертификации.
Скопируйте каталог easy-rds в домашний катwюг командой make-cadir:
make-cadir ~/openvpn-ca·
cd ~/openvpn-ca
Далее нужно редактировать файл vars, воспользуемся для этого редактором
nano:
nano vars
Н;�йдите следующие переменные и задайте свои значения. Данные перемен­
ные используются при создании сертификатов:
export KEY·COUNTRY="RU"
export КЕУ PROVINCE=" "
export КЕУ CITY="Moscow"
•
....................................................................................
lk,1, 1 illll\
export КЕУ ORG="ABC Со"
export КЕУ EМAIL="admin@abc.com"
export KEY_OU="SomeWorkgroup"
Также найдите и отредактируйте переменную КЕУ_NАМЕ:
(j
3
export КЕУ NAМE="server"
Для простоты можно использовать просто "server" (или любую другую стро­
ку, но запомните, какую именно). Если вы будете использовать название, от­
личное от "server", тогда вам придется изменить некоторые команды, в кото­
рых встречается это название.
Приступим к созданию центра сертификации:
\
cd ~/openvpn-ca
source vars
Вывод будет примерно таким:
NOTE: If you run ./clean-all, I will Ье doing а rm -rf on /
home/den/openvpn-ca/keys
После этого введите команды:
./clean-all
./build-ta
Первая команда удаляет имеющиеся ключи, а вторая запускает процесс соз­
дания ключа и сертификата 1\Орневого центра сертификации. Все значения
уже указаны в файле vars, поэтому вам нужно будет только нажимать Enter
для подтверждения выбора. На данный момент у 1:1ас есть собственный
центр сертификации, который мы будем использовать для создания серти­
фиката, ключа и файлов шифрования для сервера.
•
&8-------------------------------------------·-----·-----·--·····------------------·
1 1 ll 1 )
( )1)t.·t. IH''lt.'IIIH' 1-н· iн11at.·11нt.· 1 11
ПрИС1)'ПИМ к созданию сергификата и ключа для сервера. Для создания клю­
чей для сервера введите команду (замените server на свое значение, если вы
его изменили в vars):
,/build-key-aerver aerver
Процесс создания ключей очень прост - нажимайте Enter в ответ на пред­
лагаемые значения. Значение cha//enge password задавать не нужно. В конце
процесса нужно два раза ввести у - для подписи и для подтверждения соз­
дания сергификата (сергификат выдается на 1 О лет, так что в ближайшие 1 О
лет вас оставят в покое и вам не нужно будет его обновлять):
Certific:ate ia to Ье certified until Jul 10 11:14:12 2030 GМТ (3650 days)
Sign th8 certificate? (y/n]:y
1 out of 1 certificate requests certifled, carrnit? [y/n] у
Write out dataЬaae with 1 new entries
Data Вам Updatecl
Осталось создать остальные файлы:
,/build-dh
openvpn --genkey --aecret keys/ta.key
Команда build-dh создает ключи протокола Диффи-Халлмана, вторая коман­
да - генерирует подпись НМАС. В зависимости от мощности вашего сер­
вера, эти команды моrут работать несколько минут каждая. Так что сервер
не завис, он работает.
Осталось создать сертификат и ключи для клиента, и мы сможем наконец-то
приступить к настройке самого сервера. Создать данные ключи можно как
на клиенте (а потом подписать полученный ключ центром сергификации на
сервере), так и на сервере. Проще это делать на сервере.
Сейчас мы создадим ключ и сергификат для одного клиента.
Клиентов у нас несколько, поэтому данный процесс нужно будет повторить
для каждого из них. Можете оформить последовательность действий в Ьаsh­
сценарий для экономии времени.
•
·----------------------------------------------------------------------------------CII
=
.;
:Е
�=
с.
lkc 1, 1 illll\
Команда build-key используется для создания файлов без
пароля для облегчения автоматических соединений.
Пример:
cd ~/openvpn-ca
source vars
./build-key clientl
Если нужны файлы, защищенные паролем, используйте команду
build-key-pass:
cd ~/openvpn-ca
source vars
./build-key-pass clientl
27.5.2. Настройка сервера
Когда все сертификаты и ключи сгенерированы, можно приступить к
настройке сервера. Первым делом скопируйте сгенерированные ранее фай­
лы из каталога openvpn-ca/keys в /etc/openvpn:
::с
]
);.
cd ~/openvpn-ca/keys
sudo ер ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/
openvpn
Пример файла конфигурации можно взять из файла /usr/share/doc/openvpn/
examples/sample-config-files/server.conf.gz.
Его нужно распаковать в /etc/openvpn/server.conf.
После того как распакуете шаблон файла конфигурации:, можно приступить
к его редактированию. Оrкройте /etc/openvpn/server.conf в любимом тексто­
вом редакторе.
•
.....................................................................................
] 111\,1 :- ()fit.'l..'IH''ll..'Jllll' fit•HJll�H.'IIHl..'111
Далее приведен фрагмент этого файла. Внимательно читайте комментарии:
# Раскомментируйте эту строкУ
tls-auth· ta.key О
# Установите key-direction в О
key-direction О
# Раскомментируйте эту строку
cipher AES-128-CBC
# Сразу -досле строки с cipher д�бавьте следующую строку:
auth SHA256
# Укажите имя пользователя и группы, от имени которых будет
запускаться сервер:
user nobody
group nogroup
# Чтоб,ы VРN-соединение использовалось для всего трафика, нужно
"протолкнуть''
# нас
· тройю:t DNS на машины клиентов. Для этого раскомментируйте
следующую
# строку:
push "redirect-gateway defl bypass-dhcp"
# Также добавьте DNS-cepвepы (используем OpenDNS):
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
i При необходимости измените порт и протокол:
port 443
proto tcp
# Если при вызове build-key-server вы указали значение, отличное от
•· "server", измените имена файлов сертификата и ключа
cert server.crt
key server.key
Теперь нужно немного настроить сам сервер. Разрешите пересьшать трафик,
если вы этого еще не сделали.
Откройте файл sysctl.conf:
sudo mcedit /etc/sysctl.conf
.
Раскомментируйте строчку:
net.ipv4.ip_forward=l
·---------------------------------------------------------------------------------&1
Чтобы изменения вступили в силу, введите команду:
sudo sysctl -р
Нам осталось только настроить брандмауэр, и можно запускать VPN-cepвep.
Будем считать, что используется брандмауэр UFW (в современных дистри­
бутивах используется вместо iptaЬ!es). Вы должны знать иwi: публичного ин­
терфейса, пусть это будет еnsЗЗ - для примера, в вашем случае имя публич­
ного интерфейса будет отличаться. Выяснить это можно командой:
ip route I grep default
Данное название нужно добавить в файл /etc/ufw/Ьefore.rules.
В самое начало этого файла нужно добавить строки (также укажите IР-адрес
и маску вашей подсети):-
:.�
а:
# START OPENVPN RULES
# NAT tаЫе rules
*nat
: POSTROUTING АССЕРТ [О: О]·
# Allow traffic from OpenVPN client to еnsЗЗ
-А POSTROUTING -s 19f,168.0.0/24 -о ens33 -j МASQUERADE
СОММIТ
# END OPENVPN RULES
Вместо еnsЗЗ нужно указать имя вашего публичного интерфейса.
Теперь откройте файл nano /etc/default/ufw и найдите директиву DEFAULT_
FORWARD POLICY:
=
DEFAULT_FORWARD_POLICY•"ACCEPT"
-:о
Откроем порт для OpenVPN:
;
sudo ufw allow 443/tcp
•
---------------------------'
...................... ........................................................... .
_.
1 1,111,1 �/ Oбt•t'Ш"ICllllt' Ut'Шll:tt'IIOCIII
или
sudo ufw allow 1194/udp
Первую команду нужно вводить, если вы используете протокол ТСР, вто­
рую - если используется протокол UDP. Чтобы изменения вступили в силу,
брандмауэр нужно перезапустить:
sudo ufw disaЬle
sudo ufw.enaЬle
Все готово для запуска VPN-cepвepa. Запустим его командой:
sudo systernctl sta.rt openvpn@server
Проверить состояние сервера можно так:
sudo syst�rnctl status ·openvpn@server
Вы должны увидеть что-то вроде этого:
openvpn@server.service - OpenVPN connection to serv�r
Loaded: loaded (/liЬ/systernd/systern/openvpn@.service; disaЬled;
vendor preset: enaЫed)
Active: active (running) since Tue 2020-07-10 13:16 0:05 EDT;
25s· ago
Если все нормально, тогда обеспечим автоматический запуск сервера:
sudo systernctl еnаЫе openvpn@server
•
······································································:···········CD
lkc1, 1 i1111,
Теперь готовимся встречать клиентов. Прежде чем клиенты смогут подклю­
читься, нужно позаботиться об инфраструктуре настройки клиентов.
Создадим каталог для хранения файлов:
mkdir -р ~/clients/riles
c hmod 700 ~/clients/files
Такие права доступа нужны, поскольку данный каталог будет содержать
ключи клиентов.
Далее установим базовую конфигурацию:
cd /usr /share/doc/o penvpn/examples/sample-config-files/
ер cltent.conf ~/clients/base.conf
Откройте файл -/clients/Ьase.conf.
В нем нужно сделать несколько изменений:
# Укажите IР-адрес сервера и порт (1193 для UDP или 443 для ТСР)
remote IР-адрес порт
# Укажите протокол udp или tcp
proto протокол
f Раскомментируйте директивы
user nobody
group nogroup
# Найдите директивы са, cert и key. Закомментир�е их
#са ca.crt
#cert client.crt
ikey client.key
11 Добавьте параметры cipher и auth так,. как они описаны в server.conf
cipher AES-128-CBC
auth SНА256
# Установите key-direction в 1
key-dir
, ection 1
:::i
-:,
�
==
.
Теперь создадим сµенарий генерации файлов конфигурации (листинг 27.1):
'
ll!t-----------------·--·------·-------·------------·--········---------------··-·····
1 1,11\,1 :- Oiit't'Ш"H'IIIH' IIL'IOll:IL'llot' 1 11
cd ~/clients
touch make_config
chmod +х make_config
mcedit make..:.config
[1 ЛИСТИНГ 27.1. Файл make_config
t!/Ьin/bash
1
j/ First argument: Client identifier
,KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/clients/files
BASE_CONFIG•~/clients/base.conf
cat ${BASE_CONFIG} \
<(echo -е '<са>') \
${KEY_DIR}/ca.crt \
<(echo -е '</ca>\n<cert>') \
${KEY�DIR}/${1}.crt \
<(echo -е '</cert>\n<key>') \
${КEY_DIR}/${1}.key \
<(echo -е '</key>\n<tls-auth>') \
${КEY_DIR}/ta.key \
<(echo -е ' 1 </tls-auth>') \
· > ${0UTPUT_DIR}/$(1}.ovpn.
Используя этот сценарий, вы сможете легко генерировать файлы конфигу­
рации клиентов:
cd ~(clients
./make_config userl
Если все прошло успешно, то в -/clients/files вы найдете файл userl.ovpn.
27.5.3. Подключаем клиентов
,
Передайте файлы конфигурации (.ovpn) клиентам. Можете отправить по
электронной почте вместе со следующей инструкцией.
................................................................................ ..
i{,cl, \ illll\
Сначала рассмотрим настройку клиента в Linux.
Установите openvpn:
sudo apt-get install openvpn
Откройте файл userl .ovpn, полученный с сервера. Раскомментируйте следу­
ющие строки:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Если в вашем дистрибутиве нет файла /etc/openvpn/update-resolv-conf, то де­
лать ничего не нужно!
Теперь подключитесь к VPN-cepвepy:
-------------------
sudo openvpn --config use 7 1.ovpn
Для сравнения, в Windows полученный .оvрn-файл нужно поместить в ка­
талог C:\Program Files\OpenVPN\config, предварительно установив клиент
OpenVPN для Windows.
Загрузить эту ,программу можно с официальной странички проекта:
��"
https://openvpn.netlindex.php/open-source/downloads.html
После запуска OpenVPN должен автоматически увидеть ваш профиль.
Щелкните на пиктограмме клиента на панели быстрого запуска правой
кнопкой мыши и выберите команду Подключиться. Все достаточно просто.
•
....................................................................................
Глава 28.
НАСТРОЙКА
ВЕБ-СЕРВЕРА
л •
lkcl, l,i1111\
::а
-.::,"'
.,
":::
Е:
Как уже упоминалось ранее, не секрет, что весьма часто Linux применятся
в роли операционной системы для веб-сервера. Она столь популярна в этом
направлении, что в этой книге про Linux созданию и настройке веб-сервера
мы решили уделить сразу несколько глав.
Начнем мы с настройки веб-сервера.
. В данной главе будет произведена установка программного обеспечения,
необходимого для реализации веб-сервера. По сути, нам необходима связка
Apache + РНР + MySQL. В сети очень много руководств по организации
такой связки. Повторяться и писать еще одно подобнее руководство не хо­
чется, тем более все равно они не раскрывают всех нюансов подобной уста­
новки. А нюансы могут заключаться в том, что устанавливаемая CMS не
поддерживает версию РНР, которую вы установили. И узнаете вы об этом
только тогда, когда будете устанавливать CMS и она не пройдет провер­
ку системных требований. В этой главе мы подготовим наш веб-сервер под
установку CMS Magento. Это довольно требовательная CMS: разные ее вер­
сии требуют разных версий РНР, а также, кроме базовых пакетов, она требу­
ет множества расширений РНР.
�--------------------------------------------------------------,
1
:
1
1
:
:
1
ПРИМЕЧАНИЕ. Часть материала в этой главе может местами :
повторять матер'иал предыдущих глав, это сделано чтобы на- 11
помнить читателю какие-либо важные моменты и не заставлять :
его перелистывать назад нашу немаленькую книгу.
:
t ______________________________________________________________ J
•
-----------------------------------------------------------------------------------
1 1,1в,1 �� lla,· 11н1111,а 11,·ii-,·,·pв,·pa
28.1. Установка и настройка Apache
Администратор может использовать в качестве веб-сервера или Apache, или
nginx. Выбор зависит от предпочтений администратора. В этой книге мы бу­
дем использовать Apache, при необходимости всегда можно перенастроить
сервер на работу с nginx (хотя некоторое внимание nginx мы все же уделим
- там, где вопросы касаются нетривиальной настройки).
Установить веб-сервер можно так:
sudo apt install apache2
Здесь мы устанавливаем пакет apache2. Команда sudo подразумевает исполь­
зование rооt-прав. Если вы вошли на свой сервер уже как пользователь root,
тогда ее вводить не нужно, и команда будет сокращена до следующей:
apt install apache2
Команда apt - это менеджер пакетов, использующийся в
Ubuntu и DeЫan.
Если же вы испоцьзуете CentOS или Fedora, то вместо нее нужно использовать команду dnf.
dnf install apache2
После установки нужно настроить сервер. Как минимум, вам нужно указать,
что ваш сервер будет использовать купленное ранее доменное имя.
Первым делом нужно зайти в панель управления ,доменным именем и до­
бавить А-запись для вашего домена, указывающую на IР-адрес вашего VDS­
cepвepa. Как это сделать? Проще всего обратиться в службу технической
поддержки регистратора, у которого вы покупали доменное имя, поскольку
регистраторов очень много и все они часто используют панели управления
•
·--·························-·--··············-···--···-···--·--·--······--·-----·DI
lkc1, l.irш,
собственной разработки, поэтому невозможно в книге привести руководство
абсолютно для всех регистраторов. Тогда бы книга называлась "Как управ­
_лять доменом".
Далее желательно установить файловый менеджер Midnight Commander, ко­
торый позволит производить операции с файлами более удобно:
sudo apt install mc
Перейдите в каталог /etc/apache2/sites-enaЫed и откройте файл 00-default.
conf. Мы не будем создавать отдельные веб-серверы для каждого сайта.
Будем считать, что у нас есть один сайт и его конфигурация как раз будет
храниться в файле 00-default.conf. Реальный пример конфигурации приве­
ден на рис. 28.1.
Рис. 28.1.' Конфигурация сервера
Основные директивы:
•
81---------------------------------------------------------------------------------·
1 1,111.1 �:-: lla,·1pш11,a щ•ii-,·,·111н·ра
• ServerName - здесь нужно указать купленное доменное имя;
• DocumentRoot - указывает, ,где будут храниться файлы сайта, мы ис­
пользуем каталог по умолчанию /var/www/html;
• ServerAdmin - можно указать адрес электронной почты администрато­
ра сервера.
Мы сейчас не будем подключать SSL-сертификат, а сделаем это чуть позже,
в последующих главах.
Осталось запустить сервис веб-сервера:
sudo systemctl start apache2.service
или
sudo service apache2 start
Первая команда сработает в более современных дистрибутивах, вторая будет
работать даже в относительно древних, хотя она с успехом, как показывает
практика, работает и в новых версиях UЬuntu - она оставлена по соображе­
ниям обратной совместимости, поскольку уж очень нравится администра­
торам.
Аналогично, для перезапуска и останова сервиса можно использовать сле­
дующие команды:
sudo systemctl restart apache2.service
sudo systemctl stop apache2.service
или
sudo service apache2 restart
sudo service apache2 stop
•
··········-··-·-···················································-·········-····&1
lkc 1, 1 i,111,
28.2. Установка сервера баз данных. Создание
базы данных и пользователя
..
�
Как уже рассматривалось ранее, для установки СУБД MySQL нужно ввести
команды:
sudo apt install mysql-server mysql-client
sudo mysql_secure_installation
Первая команда устанавливает необходимые пакеты - сервер и клиент.
Вторая запускает настройку так называемой безопасной инсталляции, в ходе
которой будут произведены:
,.,е
:: .,
,., ::,
-1:.
�;
�=
:с
1. Установка пароля для МуSQL-пользователя root. Обратите внимание, что
этот пользователь и системный пользователь root - две разные лично­
сти, поэтому постарайтесь, чтобы и пароли у них были разные.
2. Удаление тестовой базы данных.
3. Запрет подключения к серверу баз данных извне, только с локального
узла. Это означает, что к СУБД сможет подключиться ПО, работающее
только на этом сервере, а не все желающие. Не беспокойтесь: к вашему
магазину смогут подключаться все пользователи, просто они не смогут
напрямую подключаться к БД, что нежелательно с точки зрения безопас­
ности.
После этого нужно ввести команду:
mysql -и root -р
CREATE DATABASE magento2;
CREATE USER magento2user@localhost IDENTIFIED ВУ 'password';
GRANT ALL PRIVILEGES ON magento2.* ТО magento2user@localhost
IDENTIFIED ВУ 'password';,
FLUSH PRIVILEGES;
exit
•
....................................................................................
1 1.11,.1 �.\
Нас I ро111,а Bl'ii-l'l'(JIH'(J:t
Здесь запускается клиент и от имени МуSQL-пользователя root выполняют­
ся запросы.
Первый запрос создает базу данн'ъrх magento2, второй - создает пользова­
теля magento2user, от имени которого Magento буiет обращаться к СУБД.
Третий запрос - предоставление полномочий пользователю magento2user
ко всем таблицам базы данных magento2. Естественно, вместо 'password'
укажите какой-то сложный пароль.
Последний запрос осуществляет применение полномочий, а команда exit вьrход из клиента mysql.
28.3. Установка и настройка РНР. Выбор версии
Самое дело остановиться и подумать. Если вы производите установку на
виртуальный сервер, сделайте снапшот сервера, чтобы можно бьшо легко
откатиться к предыдущему состоянию.
Снапшот можно сделать в панели управления VDS, которую вам предоста­
вил ваш облачный провайдер.
Нужно решить, какую вер�ию РНР установить (табл. 28.1).
На данный момент существует пять актуальных версий - 7.0, 7.1, 7.2, 7.3
и 7.4, 8.0 и 8.2. Дело в том, что одна из текущих версий Magento 2.3 требует
версии РНР 7.1.3-7.3. Самой.последней на данный момент версией Magento
является версия 2.4.3, но она еще не исследована вдоль и поперек, как пред­
шествующие ей версии, поэтому ее мы рассматривать не будем.
Предыдущая версия Magento - 2.2 - изначально не поддерживала 7.2, ей
нужна или 7.0, или 7.1. Поддержка версии 7.2 появилась лишь в версии
2.2.10.
Дополнительная информация доступна по ссылкам:
https://devdocs.magento.corn/guides/v2.4/install-gde/system-requirements-tech.html
https://devdocs.magento.corn/guides/v2.3/install-gde/system-requirements-tech.html
•
https://devdocs.magento.corn/guides/v2.2/install-gde/system-requirements-tech.html
······································································.············CII
t
u
lk,1,li1111,
Таблица 28.1. Мagento и выбор версии РНР
с
Версп
Magento
7.0.0--7.0.11
2.2
-
+
+
2.3
-
-
7.1.3+
7.8.13-7.8.J:
7.1.а ...
'
2.4
.'
7.k' '
;5 ,
--.�
i-'
,..�
�?,�
:\s ;:
патч
2.2.10
-
-
+
+
-
+
(2.4.0),
+
не
реком.
Самая последняя версия Magento- 2.4-требует РНР 7.4. Возможно устано­
вить версию 2.4.0 на РНР 7.3, но это не рекомендуется.
Казалось бы, что тут такого - нужно установить Magento 2.3 и РНР 7.2 или
7.3 (смотря какая версия есть в дистрибутиве), ведь мы устанавливаем все с
нуля. Но это неправильное решение.
Может оказаться так, что нужное вам расширение или тема оформления не
поддерживают версию 2.3.
Когда я установил Magento 2.3 и подключил MarketPlace (https://marketplace.
magento.com), то обнаружил, что в списке расширений не бьmо необходимо­
го мне расширения для моей СRМ.
Именно поэтому сначала нужно выбрать шаблон для вашего сайта и соста­
вить список расширений, которые вам будут нужны.
Возможно, это будут расширения, добавляющие необходимые вам способы
оплаты/доставки (интеграция с платежной системой и службой доставки то­
варов), производящие интеграцию с СRМ и т.д.
Составьте табличку совместимости (табл. 28.2).
Например, в моем случае она выглядела так:
•
В8····································---------------------------------------------·
1 1.ш.1 �:-; llat·11ю11�,:а ш•r.-t·,·рв,·ра
Таблица 28.2. Таблица совместимости
Jtааввревве/шабnон
MageoJo2.1
Mageoto2.2
Mageoto2.3
SM Destino
х
х
х
retai!CRМ
х
х
-
Поставьте крестик в поле, если шаблон/расширение поддерживает версию
Magento. Как правило, вся необходимая информация есть в документации
по расширению/шаблону. Также обратите внимание на младшую версию
Magento, например, в документации по шаблону может быть сказано, что он
поддерживает версию 2.2.6, а вот с сайта Magento в данный момент доступна
для загрузки версия 2.2.7. Лучше не рисковать, а перейти в архивы и скачать
версию 2.2.6. Конечно, на момент разработки шаблона могло просто не быть
версии 2.2.7 или же разработчик не тестировал свой шаблон в этой версии,
но вы хотите потратить несколько часов времени, чтобы это проверить?
Теперь, когда вы выбрали версию РНР, осталось ее установить. Некоторые
руководства предлагают устанавливать ее так (такая длинная команда):
sudo apt install php php-cli openssl php-curl php-gd php-mcrypt
php-xml php-intl php-zip php-mЬstring php-soap php-mysql php-json
libapache2-mod-php php-xsl composer
Здесь устанавливается версия РНР по умолчанию для вашего дистрибути­
ва. Например, для UЬuntu 16.04 это будет 7.0, для UЬuntu 18.04 - РНР 7.2,
UЬuntu 20.04 - РНР 7.4 и т.д. Но правильнее указывать номера версий не­
обходимых вам пакетов. Конечно, это усложнит задачу, но тем не менее.
sudo apt install php7.0 php7.0-cli openssl libcurlЗ php7.0-curl
php7.0-gd php7.0-mcrypt php7.0-xml php7.0-intl php7.0-zip php7.0mЬstring php7.0-soap php7.0-mysql php7.0-json libapache2-mod-php
php7.0-xsl php7.0-bcmath php7.0-ldap composer
•
Другими словами, после "php" нужно указать нужную версию.
··················································································&1
IJ,'ll, 1 illll\
Кроме самого РНР, данная команда установит все необходимые для работы
Magento расширения РНР, composer (также нужен для Magento), OpenSSL
и библиотеку libcur\3 (или libcur\4 для РНР 7.2). Если какие-то расширения
понадобятся, вы об этом узнаете в процессе установки Magento и сможете
их доустановить.
r--------------------------------------------------------------,
1
1
: ПРИМЕЧАНИЕ. Расширение php-mcrypt удалено из РНР 7.2, :
: поэтому устанавливать его не нужно - вы просто не найдете :
1
1
: необходимого пакета.
:
�------------------------- ·------------------------------------�
1
,
1
1
ПРИМЕЧАНИЕ. Небольшая заметка об установке Magento 2.3.4 :
в Ubuntu 20.04. Когда работаешь в команде, не всегда можешь !
проконтролировать действия других ее членов. Системный ад- :
министратор развернул виртуальную машину с Ubuntu 20.04 (хо- :
тел как лучше - самую последнюю версию) и передал бразды :
правления разработчику, у которого стояла задача развернуть
Magento 2.3.4, поскольку планируемая тема оформления рабо­
тала только с этой версией. В Ubuntu 20.04 по умолчанию ис­
пользуется РНР 7.4 и MySQL 8.0. С РНР все оказалось проще
- с помощью репозитория ondrej (см. далее) была установлена
версия 7.3 - та, которая была нужна версии 2.3, и даже уже
была запущена установка Magento. Но при установке выясни­
лось: что инсталлятор никак не может подключиться к базе дан­
ных - он просто не поддерживает MySQL 8.0, а вот установить
MySQL 5.7 вместо 8.0 уже так просто не вышло. Пришлось соз­
дать виртуальную машину заново - на базе Ubuntu 18.04...
Внимательные читатели заметили два факта.
Первый- какая версия 7.0 будет установлена в UЬuntu по умолчанию? Ведь
нужна версия 7.0.13 или более новая.
::::
11
�
�
Все в порядке, по умолчанию на данный момент устанавливается версия
7.0.32.
Узнать версию можно командой:
php -v
•
•
....................................................................................
-"
�
u
Рис. 28.2. Версия РНР
Что делать, если вам нужна версия 7.2, н_о ее нет в вашем дистрибутиве?
Тогда введите следующие команды:
·sudo apt-get install- software-properties-common
sudo add-apt-repository· ppa:ondrej/php
sudo apt-get update
Они подключают необходимый репозиторий и обновляют список пакетов.
Теперь можно установить РНР:
sudo apt install php7.2 php7.2-cli
После установки введите команду php -v, чтобы убедиться, что установлена
версия 7.2. Если все· хорошо, тогда установите необходимые расширения,
как было показано ранее.
•
······································································-···········81
lk, 1, 1 i1111,
Теперь нужно настроить РНР и Apache.
Первым делом откройте файл конфигурации РНР (Х - версия):
sudo mcedit /etc/php/7.X/apache2/php.ini
В нем нужно установить лимит памяти:
memory_limit
1024М
�--------------------------------------------------------------,
1
1
i ПРИМЕЧАНИЕ. Не забудьте отредактировать .htaccess после i
i1 установки Magento - в нем таюке задается лимит памяти. По 1i
i умолчанию - 768 Мб. Учитывая прожорливость Magento, лучше i
i выделить 1024 Мб.
i
�--------------------------------------------------------------�1
1
Можно установить и другие параметры; но об этом мы поговорим далее в
этой книге, когда пойдет речь об оптимизации сервера.
::::1
�
"'..,
i
Сохраните файл, выйдите из редактора и добавьте необходимые модули
Apache:
sudo a2enmod rewrite
Также, чтобы нормально работали SEF URL Magento, нужно открыть ваш
файл конфигурации /etc/apache2/sites-enaЫed/000-default.conf и добавить в
секцию Virtua!Нost строки:
<Directory /var/www/html/magento_test>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
..
Все, можно перезапускать Apache:
sudo service apache2 restart
•
····················:·····························································
28.4. Директивы файла конфигурации Apache
Основной файл конфиrурации Apache называется /etc/
apache2/apache2.conf.
Конфигурация Apache просто огромна:
• Основной файл конфигурации apache2.conf "весит" более 7 Кб и содер­
жит 224 строки конфигурации.
• Посредством директивы Include в конфигурацию Apache включают­
ся другие файлы из каталога /etc/apahce2. Например, директива Include
ports.conf в основном файле конфигурации говорит о том, что в месте ди­
рективы нужно вставить содержимое ports.conf. Аналогично, вы можете
создать файл my.conf и вставить его содержимое с.помощью директивы
Include my.conf.
• С помощью директивы IncludeOptional включается содержимое всех фай­
лов конфигурации из каталога /etc/apache2/sites-enaЬled. Как правило, в
этих файлах конфигурации принято храни_ть описание виртуальных уз­
лов, или, попросту говоря, сайтов. Принцип прост. Сам файл конфигу­
рации для определенного сайта помещается в каталог sites-availaЫe
(доступные сайты), а затем на него создается ссылка в каталоге sites­
enaЬled (включенные сайты). Если сайт нужно временно отключить, то,
чтобы не удалять его конфигурацию, просто удаляют ссьшку на файл кон­
фигурации из каталога sites-enaЫed.
Теоретически вы можете хранить всю конфигурацию в файле apache2.conf.
Тогда ваш файл конфигурации будет еще больше. Вряд ли вам будет удобно,
но такая возможность есть.
Директивы конфигурационного файла сервера Apache можно условно раз­
делить на такие группы:
•
1. Общие. К общим директивам относятся глобальные директивы, влия­
ющие на работу всего WеЬ-сервера. Это директивы ServerName, Server-
··················································································al
lkcl, l.ilНI\
Туре, Port, User и Group, ServerAdmin, ServerRoot, PidFile, DocumentRoot,
UserDir.
2. Директивы протоколирования: EпorLog, TransferLog, HostnameLook­
ups,
3. Директивы ограничения доступа: AllowOverride, Options, Limit.
4. Директивы управления производительностью: StartServers, Max­
SpareServers, MinSpareServers, а также директива CacheNegotiatedDocs.
5. Директивы обеспечения постоянного соединения с клиентом: Timeout,
KeepAlive, KeepAliveTimeout.
6. Директивы настройки отображения каталога. Оформить отображение
каталогов можно с помощью директив настройки отображения катало­
, гов: Directorylndex, Fancylndexing и AddlconВyType.
7. Директивы обработки ошибок. Директивой обработки ошибок НТТР­
сервера является директива EпorDocument, С ее помощью можно устано­
вить реакцию на любую ошибку сервера, например; на ошибку 404 (до­
кумент не найден).
8. Директивы перенаправления: Redirect, Alias и ScriptAlias.
9. Директивы для работы с многоязычными документами: AddLanguage
и LanguagePriority.
10.Директивы обработки МIМЕ-типов. Настроить свой сервер для обра­
ботки различных МIМЕ-типов можно с помощью директив DefaultType,
AddEncoding, AddType, AddНandler и Action.
11. Директивы со:щания виртуальных узлов: Vu1ua!Нost, Listen, BindAddress.
Директив много, но вам не нужно редактировать все директивы сразу.
Вы можете постепенно кастомизировать (настраивать) ваш веб-сервер- по
мере поступления задач от руководства, Как минимум, вам нужно изменить
две следующие директивы:
• ServerName - директива, которая определяет имя сервера Apache. При­
чем здесь должно быть задано официальное имя сервера в таком виде,
в котором оно должно появляться в строке' адреса браузера. Данное имя
должно 61,, rь зарегистрировано в сервере DNS вашей сети.
•
•
............................................................ : ...................... .
11,111.1 2S llac11н111...:a Bl'II-Cl'jJ11cpa
• ServerТype - директива, которая определяет тип сервера. По умолчанию
используется значение standalone. Если вы хотите достичь максимальной
производительности вашего Ws:b-cepвepa, не изменяйте эту опцию.
Друтие полезные директивы веб-сервера приведены в таблице 28.3.
..
;-
Таблица 28.3. Некоторые директивы файла конфигурации АрасЬе
о
Директива
Описание
User и Group
Директивы User и Group определяют идентификаторы пользователя и группы, от имени
которых будет работать сервер. Данные идентификаторы присваиваются серверу, если он
запушен в автономном режиме. Можно использовать как имена пользователей, так и их
числовые эквиваленты - UID. По умолчанию
используется имя пользователя www-data. Из
соображений безопасности не рекомендуется
изменять это значение и присваивать имя реального пользователя. В этом случае WеЬ-сервер
получит доступ только к тем файлам, которые
разрешены для чтения для всех пользователей.
Нужно заметить, что указанный пользователь и
группа должны сушествовать в вашей системе.
Ни в коем случае не запускайте сервер от имени
пользователя root!
ServerAdmin
Задает электронный адрес веб-мастера �ашего
WеЬ-узла. Если возникнут какие-то проблемы, связанные с работой сервера, то по этому
адресу будет отправлено соответствующее
сообщение. Обычно используется значение
webmaster@Yoш_Host.com. Пользователь
webmaster, как правило, не существует реально
в системе. Для определения имени (псевдонима) webmaster используется файл псевдонимов
электронной почты /etc/aliases
....................................................................................
ServerRoot
В этой директиве указывается местонахождение
файлов конфигурации сервера Apache. По умолчанию для этих целей используется каталог /etc/
apache2
BindAddress
Данная директива используется для поддержки
виртуальных хостов и применяется, чтобы сообщить серверу, какой IР�адрес следует прослушивать. Значением данной директивы может
быть"*" (любой адрес), IР-адрес или полное
имя домена
ErrorLog и
ТransferLog
Определяют расположение журналов сервера
Apache. Обычно для этих целей используется
каталог /var/log/apache2. В журнале errorlog
протоколируются диагностические сообщения,
а также сообщения об ошибках , которые порождают СGI-сценарии. В журнале trasferlog
протоколируются запросы клиентов. Если
включена директива HostNameLookups, то вместо IР-адреса клиентов будут регистрироваться
им�на компьютеров. Данные директивы можно
использовать для задания отдельных журналов
для каждого виртуального узла. При определении виртуального узла (см. далее) вы можете
задать другие журналы , индивидуальные для
этого узла
Timeout
Задает промежуток времени в секундах , в течение которого сервер продолжает попытки
возобновления приостановленной передачи
данных. Значение директивы Timeout распространяется не только на передачу, но и на прием данных. Если вам нужно получать большие
файлы,·рекомендую увеличить данное значение
•
---------------·········---·-·--·----·······-------····---··-·-··-···-···-·-·······
1 1,11,,1 ':-: lla,· 1 р11111,а 11,·б-,·,·111и·ра
•
KeepAlive
Разрешает постоянные соединения, то есть такие соединения, в которых производится более
одного запроса за один раз
KeepAliveTimeOut
Определяет тайм-аут для постоянного соединения
MaxClients
Иногда поступающих запросов настолько много, что компьютеру не хватает ресурсов для
загрузки новых копий сервера в память и их
выполнения. Директива MaxClients определяет
максимальное число копий сервера, которые
могут выполняться одновременно
MaxRequestsPerChild
После обработки определенного количества запросов, указанного в директиве
MaxRequestsPerChild, копия сервера завершается, а вмес'!о нее запускается новая
Listen
Позволяет вам связывать Apache с определенным IР-адресом и (или) дополнительными портами
DocumentRoot
Директива, определяющая местонахождение
корневого каталога документов вашего сервера.
Значение по умолчанию - /var/www/html. Как
правило, для каждого виртуального узла задается собственное значение для DocumentRoot
UserDir
Задает названия подкаталога в домашнем
каталоге пользователя, из которого берутся
документы. В этом случае вы активизируете
возможность использования пользовательских
каталогов. Если вы не хотите включать эту возможность, укажите UserDir DISAВLED. Более
подробно эта директива будет рассмотрена
позже
·······················································-··························-
�
u
Позволяет задать название документа, который
будет возвращен по запросу, который не содержит имя документа.
С помощью данной директивьr можно задать
несколько имен файлов.
Directorylndex
Значениями по умолчанию являются index.html
index.php index.htm index.shtml index.cgi Default.
htm default.htm index.phpЗ.
Например, если вы введете в строке адреса браузера http://localhost, то будет возвращен один
из указанных в директиве Directorylndex документов.
Если в каталоге будет несколько документов,
описанных в Directorylndex, то будет возвращен
первый из них (в данном случае - index.html)
При получении запроса, не содержащего имени
документа, сервер передаст один из файлов,
указанных в директиве Directorylndex.
Если такой файл не существует, клиенту будет
возвращено оглавление каталога.
Fancylndexing
При включении директивы Fancylndexing, в
оглавлении каталога будут использованы значки
и описания файлов.
Если директива Fancylndexing выключена,
оглавление будет представлено в более простом
виде
•
-----------------------------------------------------------------------------------·
1 1,111,1 ,� llac1 рш11,а м·ii-,·,·1н1,·ра
Сопоставляет значок типу файла. Значок бу­
дет использоваться при выводе каталога, если
включена директива Fancylndexing. Директива
AddlconВyType имеет следующий формат:
AddlconByType (ТЕХТ, URL)
mime-type
Параметр tEXT определяет текстовое описание
типа, которое увидят пользователи, использу­
ющие текстовый браузер, или пользователи, у
которых отключено отображение рисунков.
AddlconByТype
Параметр URL определяет адрес значка, а па­
раметр mime-type - это тип файла, с которым
нужно сопоставить значок. Полнь1й перечень
МIМЕ-типов приведен в файле apache-mime.
types. В качестве имени файла можно задать
не только МIМЕ-тип, но и символы, которыми
заканчивается имя файла, но для этого нужно
использовать директиву Addlcon вместо AddIconВyType.
AddiconByType (VID,/icons/movie.gif) video/*
Addicon /icons/binary.gif .bin .ехе
Первая директива сопоставляет типу video
значок /icons/movie.gif.
Вторая директива сопоставляет бинарным
файлам *.bin и *.ехе значок /icons/Ьinary.gif.
Значок по умолчанию задается директивой
Defaultlcon
DefaultТype
•
Если запрашиваемый клиентом тип не соответ­
ствует ни одному из МIМЕ-типов, используется
МIМЕ-тип, указанный в директиве DefaultType
································--·················································tlil
lkc1, l,i1111\
Для сокращения времени передачи файла клиентам используется сжатие данных.
AddEncoding
Браузеры имеют встроенные программы для
распаковки, запускаемые при получении архивов определенных МIМЕ-типов.
Именно эти МIМЕ-типы и указываются в директиве AddEncoding
В большинстве браузеров можно задать предпочитаемый язык: Благодаря этому вы можете
предоставлять документы на разных языках.
Директива AddLanguage сопоставляет расширение файла аббревиатуре языка.
AddLanguage
Для русского языка используется аббревиатура
ru, для английского - еп.
При этом в корневом каталоге вашего сервера
могут находиться несколько индексных файлов
на разных языках.
Например, для русского языка нужно использовать имя файла index.html.ru, а для английского
- index.html.en
•
-----------------------------------------------------------------------------------·
1 1 11, 1 ', ll.н· 1 po111,a щ•ii-,·,·рв,·ра
Если на вашем сервере размещены документы
на разных языках, то с помощью директивы
LanguagePriority можно указать приоритеты
различных языков. Например, вы установили
директиву LanguagePriority так:
Languag,ePriority en ru
LanguagePriority
Клиент вводит в строке адреса своего браузера
адрес http://www.server.com/. Если в свойствах
· браузера имеется возможность задать предпочитаемый язык, то возвращен будет файл на нужном языке, если такой существует. Если браузер
клиента не поддерживает такую возможность,
будет возвращен файл на языке, имеющим наиболее высокий приоритет.
В рассмотренном случае (см. пример) это
английский язык. Если файл на нужном языке,
например на немецком, не существует, то будет
возвращен файл на английском языке. Для того
чтобы сервер поддерживал нужный вам язык,
предварительно установите правильное значение директивы AddLanguage
•
Alias
С помощью директивы Alias можно предоставить доступ не только к ·файлам, находящимся в
каталоге, указанном директивой DocumentRoot,
и его подкаталогах, но и в других каталогах. По
умолчанию определен только псевдоним для
каталога /icons
ScriptAlias
Аналогична директиве Alias, но пqзволяет
задать месторасположение каталога для.СGIсценариев
....................................................................................
lk, ,, 1 irнl\
AddТype
AddHandler и Action
С помощью этой директивы можно добавить
новый МIМЕ-тип, который не указан в файле
apache-mime. types
Директива AddНandler позволяет сопоставить
определенному МIМЕ-типу какой-нибудь обработчик. А с помощью директивы Action можно
определить какое-либо· действие для обработчика. Например, вы можете запустить какую-нибудь программу для обработки файла данного
типа. Пример:
AddHandler text/dhtml dhtml
Action text/dhtml /cgi-bin/dhtml-parse
ErrorDocument
Директива, сопоставляющая коды ошибок сервера URL-aдpecaм на этом же ·сервере
Redirect
Используется для перенаправления с одного
адреса на другой
В таблице 28.3 не рассмотрены директивы Location и Directory, которые
заслуживают отдельного разговора.
Директива Directory определяет свойства каталога.
Например:
<Directory />
Options Indexes Includes FollowSymLinks
AllowOverride None
</Directory>
•
....................................................................................
J 1,11\,1 �' ll,н·1 ро111,а lll'll-l'l'Jllll'pa
Свойства каталога можно указывать в директиве Directory или в файле
.htaccess, который находится в том каталоге, для которого необходимо уста­
новить нужные параметры.
В блоке Directory могут находиться директивы управления доступом.
К ним относятся директивы AllowOverride, Options, Lirnit.
Рассмотрим по порядку все эти директивы.
Директива AllowOverride может принимать значения, указанные в табл. 28.4.
Таблица 28.4. Значения директивы AllowOverride
Звачеиве
Описание
Сервер Apache будет игнорировать файлы .htaccess.
None
Рекомендую установить данную опцию, так как это повысит производительность сервера
Al/
Пользователи имеют право переопределять в файлах
.htaccess глобальные параметры доступа. Из соображений безопасности лучше не использовать этот режим
Options
Разрешает использовать директиву Options
Limit
Разрешает использовать директиву Limit
AuthConfig
Разрешает использование директив AuthName,
AuthType, AuthUserFile и AuthGroupFile
Filelnfo
Разрешает использовать в файлах .htaccess директивы
AddType и AddEncoding
С помощью директивы Options можно определить функции
сервера, которые будут доступны для использования в
определяемом каталоге.
lkc1, l.i1111x
Данную директиву можно использовать как в файле apache2.conf, так и в
файлах .htaccess. Допустимые опции для директивы Options предстiвленьi
в табл. 28.5.
Таблица 28.5. Допустимые опции директивы Options
1-
Опция
Описание
None
Не разрешается использование каких-либо
функций
All
Разрешаются все функции
FollowSymLinks
Разрешается использовать символические
ссылки. С точки зрения безопасности не рекомендуется использовать этот режим
SymLinkslfOwnerMatch
Разрешается использование символических
ссылок, если ссылка указывает на объект, который принадлежит тому же пользователю,
что и ссылка
ExecCGJ
Разрешается выполнение СGI-сценариев
Jndexes
Если эта опция выключена, сервер не будет
передавать содержимое каталога при отсутствии файла index.htmVindex.php
Jncludes
Разрешено использование серверных включений. Рекомендую отключить эту опцию, поскольку это сильно нагружает сервер
lncludesNoExec
'
Разрешает использование серверных включений, но запgещает запуск из них внешних
программ
•
.CJI-··················································································
1 , 11,,1 �,; llat'I Р"111,а 11t'ii-,·,·111н·pa
Директива Llmlt ограничивает доступ к файлам в
определенном каталоге.
Параметр метод определяет метод передачи, например GET или РОSТ.
Директиву Limit можно использовать внутри блоков Directory, Location или
в файле .htacccess.
В блоке Limit можно использовать такие директивы: aUow (разрешить), deny
(запретить), order (порядок), require (требуется).
Директивы allow и deny аналогичны директивам allow и deny файла конфи­
гурации сервера ProFTPD.
После директивы allow следует слово from, после которого можно указать
· '
IР-адрес, адрес сети, домен или просто имя компьютера.
Слово а// обозначает все компьютеры. Например, вам требуется запретить
доступ всем компьютерам, кроме компьютеров, которые входят в домен ru:
<Limit GET>
order deny, allow
deny fro111 all
allow fro111 ru
</Limit>
Следующий пример показывает, как разрешить доступ компьютерам .только
из вашей сети. Пусть при этом ваша сеть имеет адрес 192.168.1.0.
<Limit GET>
order deny, allow
deny from all
allow from 192 .• 168 .1.
</Limit>
•
Директива order определяет порядок выполнения директив
allow и deny.
··················································································C!I
"::,.
lkc 1, 1 i1111\
Кроме значений al\ow,deny и deny,allow, директива order может содержать
значение mutual-failure. В этом случае доступ будет отказан всем компьюте­
рам, которые явно не указаны в списке allow.
Директива Location позволяет задать определенный URL­
aдpec, который предназначен для обозначения каталогов,
файлов или групп файлов.
Обозн�чить группу файлов можно с помощью шаблонов, например, шаблон
* .html определяет все файлы, имена которых заканчиваются на .html.
В URL-aдpec не включается протокол и имя сервера.
Пример:
<Location URL>
директивы управления доступом
</Location>
28.5. Определение виртуальных узлов
Концепция виртуальных хостов позволяет серверу Apache поддерживать
несколько WеЬ-узлов - попросту говоря, несколько сайтов. Получается, что
один WеЬ-сервер заменяет несколько серверов, и вместо одного узла поль­
зователи видят отдельные WеЬ-узлы. Это очень удобно, если нужно органи. зовать персональные WеЬ-узлы пользователей или собственные WеЬ-узлы
подразделений компании, например sa\es.mycompany.com.
Сервер Apache можно настроить несколькими способами: чтобы запускался
один сервер, который будет прослушивать ВСЕ обращения к виртуальным
серверам, и1ли запускать отдельный процесс для каждого виртуального сер­
вера.
В первом случае один сервер будет одновременно обслуживать все вирту­
альные.
Если вас интересует такой вариант, нужно настраивать виртуальные сервера
с помощью директивы Virtua\Host.
•
............................................................................·....... .
1 1,111.1 �� llac I pmii,:a вt·б-с�рвt•ра
Настройка отдельных процессов для каждого сервера
осуществляется с помощью директивы Listen и
BindAddress.
В этом разделе рассматривается именно первый случай, поскольку он наи­
более часто используется на практике.
Внутри блока директивы Virtua!Host можно использовать любые дирек­
тивы, кроме ServerType, BiпdAddress, Listen, NameVii-tualНost, ServerRoot,
TypesConfig, PidFile, MiпRequestPerChild, MaxSpareServers, MiлSpareServers,
так как некоторые из них относятся к основному НТТР-серверу (например,
ServerType), а некоторые - ко второму варианту настройки виртуальных
серверов и здесь неприемлемы. Обязательно должны присутствовать дирек­
тивы ServerName, DocumentRoot, ServerAdmin и ErтorLog.
Виртуальные серверы можно идентифицировать по имени или по IР-адресу.
Идентификация по имени имеет существенное преимущество перед иденти­
фикацией по IР-адресу: вы не оrраничены количеством адресов, имеющимся
у вас в распоряжении. Вы можете использовать любое количество виртуаль­
ных серверов, и при этом вам не потребуются дополнительные адреса. Такое
возможно благодаря использованию протокола НТТР/1.1. Данный протокол
давно поддерживается всеми современными браузерами.
В листинге 28.1 приведен файл конфигурации реального виртуального узла,
изменено только имя сервера.
ЛИСТИНГ 28.1. Конфигурация виртуального узла
# Поддерживаем протокол НТТР (порт 80) для перенаправления на НТТРS-версию.
i Если клиент вводит адрес http://exarnple.com, вьmолняем перенаправление на
i https://example.com
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
# Основная конфигурация
<VirtualHost *:443>
ServerAdmin it@example.com
# Имя узла
ServerName example.com
# Псевдоним и IР-адрес
•
···············································-···-········--···-···--···········CD
lk, 1, 1 i1111,
ServerAlias www.example.com 111.111.111.115
i Каталог документов
DocumentRoot /srv/www/example.com/htdocs
# Журнал ошибок
ErrorLog /srviwww/exaпiple.com/logs/error_log
# -Журнал достуnа
CustornLog /srv/www/example.com/logs/access_log comЬined
1# Включаем поддержку SSL
SSLEngine on ·
# Подключаем SSL-сертификат
SSLCertificat�File /etc/ssl/sert.pem
SSLCertificateKeyFile /etc/ssl/server .'key
SSLCertificateChainFile /etc/ssl/chain.pem
# Настройка каталога документов
<Directory /srv/www/example.com/htdocs/>
Directoryindex index.php
Options FollowSyrnLinks
AllowOverride All
Order allow,deпy
Allow from All
</Directory>
</VirtualHost>
28.6. Пользовательские каталоги
Директива UserDlr включает поддержку пользовательских
каталогов. Эта директива определяет общее название
подкаталога в домашних каталогах всех пользователей.
По умолчанию 1fСПользуется каталог puЫic_html. Данная возможность очень
удобна при использовании ее в большой корпорации, где каждый сотрудник
имеет собственную страничку. Аналогичное решение можно использоваrь
для сервера кампуса, где администратору лень создавать отдельный вирту­
альный узел для каждого студента.
Раньше эта возможность часто использовалась на серверах, предоставляю­
щих бесплатный хостинr.
Может быть, помните адреса вида http://www.that.ru/-mypage?
•
Сейчас же все чаще используется технология виртуальных серверов, кото­
рую мы рассмотрели ранее, но знать, что такое каталоги пользователей и
•
С8······························································-------------------·
как с ними работать, тоже не помешает. Тем более что домашние каталоги
настраиваются намного быстрее и проще, чем виртуальный сервер - нужно
всего лишь определить директи�у UserDir и указать месторасположения до­
машних каталогов.
Доступ к файлам, расположенным в этих каталогах,
производится с помощью указания через наклонную.черту
nоnьэоватеnя после имени сервера.
Например, пусть имя сервера www.server.com, имя пользователя - mark,
тогда URL-aдpec будет выглядеть так: http://www.server.com/-mark/.
При этом сервер самостоятельно определит, где именно расположен домаш­
ний каталог пользователя. Если домашний каталог пользователя /home/mark,
то сервер передаст клиенту файл /home/mark/puЫic_htmVindex.html.
28. 7. Оптимизация веб-сервера
Сервер Apache для каждого соединения запускает отдельную копию, кото­
рая будет обрабатывать запросы клиента.
Управлять запущенными копиями позволяют директивы
StartServers, MinSpareServers, MaxSpareServers.
Директива StartServers задает количество копий, которые
будут созданы при запуске исходной копии сервера.
При этом исходная копия сервера получает запросы и передает их свобод­
ным копиям. Это позволяет равномерно распределить нагрузку между от­
дельными процессами и повысить производительность сервера, однако на
практике все не так хорошо, как хотелось бы. Существенного прироста про­
изводительности можно добиться только в случае большой загрузки серве­
ра. По умолчанию запускается пять копий сервера.
············----------------------------------------------------------------------CD
•
lkc 1, 1 i1111,
Если число поступающих запросов превышает количество запущенных ко­
пий сервера, запускаются дополнительные процессы-серверы.
Эти процессы не завершаются после обработки своего запроса, а продолжа­
ют находиться в памяти.
Директива MaxSpareServers позволяет указать
максимальное число таких процессов.
Если это количество превышено, то лишние процессы завершаются.
Если количество "серверов на подхвате" меньше, чем задано
директивой MinSpareServers, запускаются дополнительные
копии.
Сервер Apache ведет журнал доступа других компьютеров.
Если вы включите директиву HostnameLookup (значение on), то в журнал
будет записано доменное имя компьютера-клиента.
Если эта опция выключена (ofl), в журнал будет записан IР-адрес клиента.
Включение данной опции замедляет работу сервера, так как требуется до­
полнительное время на ожидание ответа от сервера DNS.
Поэтому из соображений оптимизации сервера директиву HostnameLookup
нужно выключить.
28.8. Защита сервер_а Apache
По окончании настройки сервера запретим изменение и удаление файла кон­
фигурации apache2.conf:
sudo ch�ttr +i /etc/apache2/apache2.conf
'
.
.....................................................................................
После этого вы (i:i никто другой) не сможете изменить этот файл, даже с по­
мощью конфигуратора. Если изменить файл все же нужно, снимите атрибут:
sudo chattr -i /etc/apache2/apache2.con�
Не нужно, чтобы посторонние глаза смогли посмотреть, а руки - изме­
нить (и выполнить) файлы, находящиеся в каталогах /etc/apache2 и /var/log/
apache2:
sudo chrnod 700 /etc/apache2
sudo chrnod 7,00
' /var / log/apache2
.
···················································································CD
Глава 29.
ПОДКЛЮЧЕНИЕ
SSL-CEPTИ ФИКАТА
•
lkc1, l.i1111\
Продолжая тему безопасности веб-сервера на Linux хотел бы сделать
заявление: хотим мы того или нет, но переход на https неизбежен.
Активно стимулирует владельцев к переходу на безопасную версию http
· компания Google: как минимум, в адресной строке Chrome (да уже и других
браузеров) будет отметка о том, что соединение не защищено, как максимум,
поисковые результаты с сайта не будут появляться в так называемых rich
snippets, что довольно плохо для интернет-магазинов.
29.1. Заказ сертификата
Здесь все достаточно просто: выбор огромен, и по СуТИ, если вам нужен про­
сто значок "защищено" в адресной строке браузера, то все равно ,' у кого ку­
пить SSL.
Это можно сделать у вашего провайдера или непосредственно у поставщи­
ков сертификатов вроде Comodo. Выбирайте сертификат по цене - где пре­
доставят более выгодные условия, там и покупайте.
\
Сертификаты отличаются не только вендором и щ:ной. При покупке серти­
. фиката нужно обратить· внимание на его тип, определяющий функционал
сертификата.
•
•
....................................................................................
1 1,1в,1 :,) 1lo 11,.110•1,·11 щ· SS 1 -ct'I" 11ф110-:а I а
Три основных типа:
1. DV (Domain Validation) -,используется для подтверждения домена.
Данный сертификат подтверждает, что польз?ватель находится именно
на том сайте, на который он осуществил переход, то есть такой серти­
фикат удостоверяет сервер, обслуживающий сайт. DV-сертификат не со-.
держит информации о компании-владельце, поэтому не может считаться
безопасным для оказания коммерческих услуг. Если вы будете обраба­
тывать платежи, поступающие от ваших· клиентов, самостоятельно, то
такой сертификат нельзя считать безопасным. Если же обработкой по­
ступающих платежей занимается другой сервис, например РауРа\, а ваш
сайт только выполняет перенаправление на страницу покупки, то можно
обойтись DV-сертификатом. Если вы вообще ничего не продаете, а вам
нужен сертификат, чтобы слева от имени вашего сайта в браузере не было
строки "Не защищено", то данный тип сертификата тоже подойдет.
2. OV (Organization Validation) - используется для подтверждения орга­
низации и домена. Сертификат этого типа позволяет подтвердить не толь­
ко доменное имя, но и организацию-владельца веб-сайта. Подлинность
организации проверяется по регистрационным данным юридического
лица, которые пересьшаются провайдеру SSL-сертификата при заказе
ОV-сертификата. Такие сертификаты наиболее популярны на сегодняш­
ний день.
3. EV (Extended Validation) - служит для расширенного подтверждения
организации и домена. Данный сертификат обладает самым высоким
уровнем доверия со стороны других узлов. Если вам нужна строгая кон­
фиденциальность передаваемых данных (например, обработка платежей
именно на вашем сайте), то вам нуженЕV-сертификат.
Шифрование между браузером и сайтом обеспечивают все типы сертифика­
тов. Если вам нужно только организовать шифрование трафика по HTTPS,
вы можете выбрать любой тип сертификата. Как правило, выбирают DV как
самый дешевый.
У всех этих сертификатов есть дополнительные опции WildCard и SAN.
.
Первая подтверждает домен и все его поддомены следующего уровня. То
есть можно купить сертификат DV с опцией WildCard для домена example.
com и использовать его для подтверждения не только example.com, но и всех
. ..
···············································································:
!\с,,. 1 i,111,
его подцоменов следующего уровня, то есть computers.shop.com, phones.
shop.com, software.shop.com и т.д.
Опция SAN подтверждает домены по списку, указанному при получении
SSL-сертификата.
ЕV-сертификаты заслуживают отдельного разговора, поскольку являются
самыми дорогими. Они подразумевают расширенную периодическую про­
верку данных. владельца сайта для предотвращения подмены этих данных.
Так, если ОV-сертификат считается действительным на протяжении всего
своего срока и проверка организации осуществляется только при покупке
сертификата, то в случае с ЕV-сертификатом такая проверка может осущест­
вляться несколько раз (с определенной периодичностью) на протяжении
всего срока действия сертификата.
Изначально все продаваемые SSL-сертификаты бьши типа OV, то есть под­
разумевали проверку данных организации. Но спрос рождает предложение,
и появились более дешевые DV-сертификаты с упрощенной проверкой, под­
разумевающей проверку только самого домена. Мошенники могут исполь­
зовать DV-сертификаты в своих целях - ведь при наличии такого сертифи­
ката браузер не будет предупреждать пользователя о возможных проблемах
с подлинностью сайта. Отчасти виновником этой проблемы стали браузеры,
требующие SSL-сертификат. В погоне за зеленым значком в адресной строке
многие стали покупать SSL-сертификаты, платить за OV никому не хочется
(да и иногда нет самой организации, которую нужно проверять, например,
когда сертификат покупает частное лицо для личного сайта), и провайдеры
SSL-сертификатов стали предлагать более дешевые DV-сертификаты,
При желании можно вообще не покупать SSL-сертификат.
:::::
""�
);;;
Вы можете настроить бесплатный сертификат Let's Encrypt и не платить ни
копейки. В этой главе будет показано, как это сделать.
Для нашей цели - зеленый значок в адресной строке - данного бесплат­
ного сертификата вполне достаточно. Единственный недостаток - его нуж­
но перегенерировать каждые 3 месяца. Но эту задачу можно поручить cron,
поэтому можно сказать, что сертификат SSL можно получить бесплатно.
Далее будет показано, как прописать полученный сертификат (без разни­
цы - купили вы его или получили бесплатно) в конфигурационных файлах
веб-серверов Apache и nginx; а затем будет рассмотрен процесс получения
бесплатного сертификата.
•
&1---------------------------------------------------------------------------------·
1
,.,в., ."J 111111. 1ю•1<·1111t· SSl.-t·t·p1 1нlн11,a1a
29.2. Настройка Apache
В результате заказа сертификата вам будут предоставлены два файла SSL-файл сертификата (расширение .рет) и ключевой файл (расширение
.key). Оба эти файла нужно поместить в каталог /etc/ssl.
Перейдите в каталог /etc/apache2/sites-availaЫe. В нем хранятся конфигура­
ционные файлы сайтов, работающих на вашем веб-сервере.
Откройте файл, содержащий конфигурацию сайта, для которого вы купили
сертификат. Далее представим, что наш сайт называется example.com.
Конфигурация для него будет следующей:
<VirtualHost *:80>
ServerName example.corn
Redirect perrnanent / https://exarnple.corn/
</VirtualHost>
<VirtualHost *:443>
ServerAdrnin adrnin@example.com
ServerNarne exarnple.corn
ServerAlias www.example.com ххх.ххх.ххх.ххх
DocurnentRoot /srv/www/example.corn/htdocs
ErrorLog /srv/www/example.corn/logs/error_log
CustornLog /srv/www/example.corn/logs/access_log cornЬined env= !loopback
SSLВnqine on
SSLC8rtiflcate /etc/ssl/exuple.})811
SSLC8rtiflcatel(eyFile /etc/ssl/server.key
</VirtualHost>
Разберемся, что и к чему. Сначала мы создаем виртуальный хост для порта
80, который будет работать как перенаправление - на https-вepcию сайта.
Можно было бы сделать это и через .htaccess, но поскольку у нас есть доступ
к конфигу сервера, то можно сделать это прямо здесь.
Далее мы описываем виртуальный хост для порта 443 (используется SSL).
Настройки такие же, как и для обычной версии сайта ( ServerName,
DocumentRoot и т.д.).
Отличие заключается только в наличии трех SSL-директив.
'----------------------------------------------------------------------------------
11-с 1, ( ilHI\
Первая включает SSL, вторая задает РЕМ-файл, третья - КЕУ-файл (имена
файлов, понятное дело, у вас будут отличаться).
После этого нужно сохранить файл конфигурации и перезапустить Apache:
sudo systemctl restart apache2.service
или (в зависимости от вашего дистрибутива)
sudo service apache2 restart
Обратитесь к вашему сайту.
· Если вместо надписи Не защищено появилось изображение зеленого замка,
то все хорошо и настройку можно считать завершенной.
r--------------------------------------------------------------�
ПРИМЕЧАНИЕ. Иногда замок отображается не зеленым, а се­
рым, и не закрытым, а открытым. Это означает, что не все ре­
сурсы сайта загружаются по протоколу https. Откройте исход­
ный код страницы и произведите поиск по строке "http://" (без
кавычек). Ваша задача - найти адреса ресурсов (JS, CSS, кар­
тинок), которые загружаются по протоколу http. Исправьте URL
проблемных ресурсов на https:// и снова обновите страницу сай­
та. Если вы все сделаете правильно, вы увидите зеленый замок
соединения.
�--------------------------------------------------------------
29.3. Настройка nginx
Когда сертификат уже есть, осталось дело за малым - настроить веб-сервер.
,..,::::1
ig
�
Переходим к нужному файлу конфигурации виртуального узла и приводим
его к виду:
server {
listen 443 ssl default_server;
•
....................................................................................
11.11,.1:<J
ll1111,.1ю•1t·1111t·SSl-й•p1 11ф11i-a1a
;Listen 80;
server name <имя>;
ssl_certificate /nyть/fuilchain.pem;
ssl_certificate_key /nyть/privkey.pem;
root /var/www/<кaтaлoг>;
index index.php index.html;
location /.well-kno�n/acme-challenge
root /vаr/w�w/<каталог>;
t Другие параметры
:.
::.
::;
",:,..
t::
Обратите внимание на следующие моменты:
1. Данный виртуальный узел является сервером по умолчанию (default_
server). Если в друrом конфигурационном файле уже есть default_server,
то произойдет конфликт, и придется выбрать сервер по умолчанию.
2. Мы слушаем порты 443 и 80. Порт 80 пока не убирайте - он пригодится,
если движок сайта пока еще не готов к SSL.
3. Директивы ssl-* задают путь к сертификату и ключу сертификата. Про­
верьте правильность пути.
4. Каталоги в директивах root должны быть одинаковы.
5. В конфигурационном файле Apache ключевой файл имел расширение
.key, сейчас - .рет. Никакой ошибки нет. Некоторые сертификаты по­
ставляются в виде двух файлов с расширением .рет. Узнать, какой из них
ключевой, можно по названию самого файла. Let's Encrypt- не исключе­
ние. При заказе этого сертификата вам будет сгенерировано два файла fullchain.pem и privkey.pem. Второй файл - ключевой, и при настройке
Apache его нужно указать в директиве SSLCertificateKeyFile.
Заставим nginx перечитать конфиг:
•
sudo nginx -t •&& sudo nginx -s re1oad
·-·-···--····---······-·--·-·····--···-···--····-···-··----··-··------···-···-·--·&1
==
�=
о:
,:,..
t::
lkcl, 1 i1111�
29.4. Генерирование сертификата Let's Encrypt
Let's Encrypt - это новый центр сертификации (СА),
предоставляющий бесплатные и автоматизированные SSU
ТLS-сертификаты.
На данный момент Let's Encrypt поддерживается большинством современ­
ных браузеров, в том числе IE, и даже старыми операционными системами,
такими как Windows Vista. По сути все, что вам нужно знать, - это то, что
он бесплатный и поддерживает автоматическое обновление.
29.4.1. Установка клиента Let's Encrypt
Установим клиент с помощью команды:
sudo git clone https://github.com/certbot/certbot /opt/letsencrypt
Если git не установлен, то сначала нужно установить его, а потом уже уста­
навливать клиент для Let's Encrypt (далее certbot). Файлы будут загружены
в каталог /opt/letsencrypt.
29.4.2. Каталог webroot-path/.well-known/acme-challenge/
Данный каталог позволяет серверу Let's Encrypt убедиться, что ваш сайт
пытается получить бесплатный SSL-сертификат. Каталог нужно.создавать в
корне веб-сервера.
Например, если корень у вас /var/www/shop, то в нем и нужно создать нуж­
ный каталог:
cd /var/www/shop
mkdir .well-known
1 1,111,1 �•! llн11,.1ю•1t•1111t· SSl.-t·t•p1 111f1111,a1a
.wel.1-known/acme-challenge
-type d -ехес chown www-data:www-data {} \;
29.4.3. Файл конфигурации
Теперь нужно создать файл конфигурации для вашего домена. Если ваш
домен называется example.com, то файл будет называться /etc/letsencrypt/
configs/example.com.conf.
Содержимое файла:
# Ваш домен (хотя и можно создать один сертификат для нескольких
доменов,
# мы рекомендуем создавать отдельные сертификаты и, следовательно,
отдельные
# файлы конфигурации для разных доменов)
domains = example.com
# Размер ключа
rsa-key-size = 2048 # или 4096
# Сервер сертификации
server = https://acme-v0l.api.letsencrypt.org/directory
* Адрес, на который будут приходить напоминания об обновлении
email = my-email
J Отключаем ncurses UI
text = True
* Задаем путь к каталогу .well-known (см. выше)
authenticator = webroot
webroot-path = /var/www/shop/
29.4.4. Заказ сертификата
Настало время запросить сам сертификат. Во второй команде вам нужно за­
менить точное имя файла конфигурации:
•
··················································································&1
i5.
е\
о:::
11" 1, 1 illLI\
cd /opt/letsencrypt
$ • / certbot-au.to --config /etc/letsencrypt/configs/example. сот. conf
certonly
В результате в каталоге /etc/letsencrypt/live/<нaзвaниe сайта>/ будут сгенери­
рованы два файла - fullchain.pem и privkey.pem.
Их и нужно будет прописать в конфигурационном файле сервера, как бьmо
показано ранее.
29.4.5. Автоматическое обновление сертификата
Наш сертификат будет действителен в течение 90 дней, после чего должен
быть обновлен. Для обновления можно использовать следующий сценарий
renew-letsencrypt.sh:
f!/Ьin/sh
cd /opt/letsencrypt/
./certbot-auto --config /etc/letsencrypt/configs/my-domain. conf certonly
if [ $? -ne О ]
then
ERRORLOG='tail /var/log/letsencrypt/letsencrypt.log'
echo -е "The Let's Encrypt cert has not been renewed!\n\n "
$ERRORLOG
el:se
nginx :-s relo,ad
exit О
В расписание cron нужно добавить строку:
О О 1 JAN,МAR,МAY,JUL,SEP,NOV * /path/to/renew-letsencrypt.sh
И не забудьте создать каталог /var/log/letsenciypt/ (если он еще не создан) и
•
изменить соответствующим образом права доступа (пользователь, от имени
•
....................................................................................
которого вьшолняется обновление сертификата, должен иметь право писать
в этот каталог).
29.5. Настройка редиректа
Остались последние штрихи, например настройка обязательного редиректа
с http на https (если вы решите оставить listen 80 в настройках nginx).
Для этого в файл .htaccess добавьте строки:
RewriteEngine On
RewriteCond %{SERVER PORT} ! л 443$
RewriteRule .* https�//%{SERVER_NAМE}%{REQUEST_URI} (R=З0l,L]
29.6. Готовим движок сайта к SSL
Мало настроить SSL на веб-сервере, нужно движку сайта указать, что он
работает по SSL, иначе он будет генерировать ссылки http://, а не https://.
Здесь все зависит от движка, и более подробные инструкции вы можете по­
лучить в документации по нему. Именно поэтому ранее мы рекомендовали
. не убирать работоспособность обычного протокола http - чтобы вы могли
зайти в панель управления сайтом для его настройки на SSL.
29.7. Конвертирование сертификатов разных
форматов
Довольно часто для успешной установки SSL-сертификатов на разных
платформах и устройствах нужно преобразовать их в другой формат. Так,
Windows-cepвepы используют, как правило, РFХ-формат, а для Apache нуж­
ны РЕМ-файлы, имеющие расширение .crt или .cer. Попытаемся разобрать­
ся, какие форматы бывают и как конвертировать их из одного в другой.
•
·--------------------------------·----·····-------·-------------··--·------·-··--·CIII
t
u
lkcl, l.i1111\
Рассмотрим часто используемые форматы SSL-сертификатов:
• РЕМ - самый распространенный формат сертификата. Файлы в таком
формате имеют расширение .рет, .crt, .cer и .key (файл приватного клю­
ча). Сами по себе файлы являются обычными АSСП-файлами, закодиро­
ванными в формате Base64.
При открытии такого сертификата в текстовом редакторе вы видите строку
---BEGIN CERTIFICATE---, после чего следует закодированный сертификат,
а после - строка ---END CERTIFICATE---. Веб-сервер Apache использует
формат РЕМ. В одном файле могут содержаться несколько SSL-сертификатов
и даже приватный ключ. В этом случае каждый сертификат отделяется от
остальных тегами BEGIN и END. Однако Apache требует, чтобы сертифика­
ты и приватный ключ были в разных файлах.
• DER - бинарный тип сертификата - в отличие от РЕМ, где сертификат
хранится в АSСП-файле. Файлы сертификатов в этом формате часто име­
ют расширение .cer, но можно встретить и расширение .der.
Если перед вами файл с расширением .cer, то для вычисления его форма­
та нужно открыть его в текстовом редакторе. Если вы увидите теги начала
и окончания сертификата (BEGIN/END), то это формат РЕМ. Формат DER
используется, как правило, на Jаvа-платформах.
• PKCS # 7 / Р7В - файлы сертификата в этом формате хранятся в форма­
те Base64 ASCII и имеют расширение файла .р7Ь или .р7с. В файлах на­
ходятся теги начала и окончания сертификата: "-- BEGIN PKCS7 --"
и"-- END PKCS7 --". Данный формат поддерживается Windows и_
Java Tomcat.
• PFX - бинарный формат, при использовании которого в зашифрован­
ном файле хранятся ваш личный сертификат сервера, промежуточные
сертифик1'ТЫ центра сертификации, а также закрытый ключ. РFХ-файлы,
как правило, имеют расширение .pft или .pl 2. Обычно используются в
Windows для импорта и экспорта файлов SSL-сертификатов и приватного
ключа.
Таблица 29.1 содержит команды конвертирования SSL-сертификатов из од­
ного формата в другой.
•
-----------------------------------------------------------------------------------·
1 1ава 29 llо.1клю•1с1111с SSl,-ccp111ф11ка1 а
Таблица 29.1. Команды конвертирования
•
Направление
Команда
РЕМ-+DER
openss\ х509 -outform der -in certificate.pem -out
certificate.der
РЕМ-+Р7В
openssl cr\2pkcs7 -nocrl -certfi\e certificate.cer -out
certificate.p7b -certfi\e CACert.cer
РЕМ-+ PFX
openss\ pkcs12 -export -out certificate.pfx -inkey
privateKey.key -in certificate.crt -certfile CACert.crt
DER-+ РЕМ
openssl х509 -inform der -in certificate.cer -out
certificate.pem
Р7В-+ РЕМ
openss\ pkcs7 -print_certs -in certificate.p7b -out
certificate.cer
Р7В-+ PFX
openssl pkcs7 -print_certs -in certificate.p7b -out
certificate.ceropenssl pkcsl2 -export -in certificate.
cer -inkey privateKey.key -out certificate.pfx -certfile
CACert.cer
PFX-+ РЕМ
openssl pkcsl2 -in certificate.pfx -out certificate.cer
-nodes
·----------------------------------------------------------------------------------C!II
Глава 30.
ВЫБОР И УСТАНОВКА
П АНЕЛИ УПРАВЛЕНИЯ
СЕРВЕРОМ
л •
lkL 1, 1 i1111,
""':="' ,'
3:
;:
Далеко не всегда удобно администрировать систему посредством консоли.
Многие специалисты предпочитают настраивать сервер на Linux и управ­
лять им удаленно посредством панели управления с веб-интерфейсом. В
этой главе мы рассмотрим несколько панелей управления сервером, а потом
установим одну из них.
При выборе панели управления сервером, кроме функционала, часто при­
ходится учитывать бюджет решения. Как и в случае с другими программ­
ными продуктами, панели управления бывают платными и бесплатными. В
этом разделе мы поговорим о коммерческих решениях. Обычно такие реше­
ния устанавливаются на серверах хостинг-провайдеров - хостеры желают
предоставить своим клиентам лучший функционал, поскольку часто именно
панель управления определяет выбор хостинга.
Некоторые пользователи выбирают хостинг, поскольку на нем используется
привычная или удобная админка11 чтобы не привыкать к другим продук­
там. Самописные решения вообще не в тренде - пользователи могут ку­
пить хостинг с самописной панелью, только если стоимость такого хостин­
га значительно ниже, чем у конкурентов. Не все компании готовы к такому
демпингу, поэтому дешевле обзавестись xopoureй панелью управления, чем
снижать в несколько раз стоимость услуг.
11
-
•
-----------------------------------------------------------------------------------·
J 1а11,1
,о BыfioJJ 11 �t.'I а1юш,а ШIШ'.111 � IIJHlll.lt'IIIIII t.'t.'JJl\t'(JO\I
1
r
1 ПРИМЕЧАНИЕ. Обращаем внимание, что, как и в других гла- 1
: вах, цены, указанные в этой главе были актуальны на момент 1
написания данного материала, и могут отличаться в зависимо1 сти от времени прочтения нашей книги.
1
!
!
t______________________________________________________________ J
30.1.1. Привычная cPanel
Одна из наиболее часто используемых админок - cPanel - пользуется
популярностью как на отечественных, так и на зарубежных ресурсах.
Одна из самых "древних" панелей управления. Пока не появилась
DirectAdmin, данная панель была одной из самых популярных.
t:Panel
....
�
,,
Q•---....
о
� W!'I r,.,,
■
f .. .,
!
'11n,C•l<t�Ml<,t"")I
11'>-....,,,...,.....
о�е�..
•
'
•
·
..
11"\/C'f�
0 �.,,�f•
.
•-·"'-"'
........ •-•fЗ,-,...
1)1.t(.,Ql.1'0.,,•t-""''"a
i..1t1.0111111' ........
l?. ..�1.130
-,..,,..с,�м-,<;(.Ц
, �,
""'"""
Рис. 30.1. cPanel
Официальный сайт - www.cpanel.net, демоверсия доступна по адресу
https://demo.cpanel.net:2083/cpsess8730353636/.
•
··································,···············································Clil
Таблица 30.1. Преимущества и недостатки cPanel
Преимущества
Недостатки
Высокая производительность
Перегруженность функциями, что
делает ее не очень удобной для
новичка, да и не всем нужны все
ее функции, получается, что вы
платите за функционал, которым не
пользуетесь
Удобный текстовый редактор и
диспетчер файловой системы
Ограниченные возможности по
управлению DNS
Простая и быстрая установка дополнительных модулей
Некоторые проблемы с обновлением панели
Удачные функции резервного копирования
Поддержка русского языка
Преимуществ у данной панели управления больше, чем недостатков.
Отлично подойдет для сервера хостинг-провайдера с большим количеством
клиентов. Для индивидуального проекта ее функции избыточны, а цена вы­
сока. Хотя появился тариф Solo на одну учетную запись и стоимостью 15$ в
месяц - подойдет для отдельного проекта, хотя в этом случае можно уста­
новить что-то бесплатное вроде Vesta. Максимальная версия Premier стоит
45$ в месяц. За эти деньги вы получите 100 учетных записей, каждая учет­
ная запись свыше этих 100 обойдется в 0.20$. Друrими словами, эти 0.20$
придется включить в стоимость услуrи для своих клиентов.
30.1.2. Конкурент cPanel - DirectAdmin
•
Данная панель моложе, чем cPanel, но она довольно быстро стала популяр­
ной и удерживает позиции. Она позволяет управлять записями DNS, учет•
-----------------------------------------------------------------------------------·
1 1,11<,1 111 B1.1iiop 11 н· 1 а1111в1,а 11.111t'. 111 � 11ра11 1t·11ш1 t'l'(Jвt'(JO\I
ными записями почты и FTP, базами данных, расписанием cron, содержит
файловый менеджер и т.д. Для облегчения поиска инструменты разбиты на
группы.
Рис. 30.2. DirectAdmin
Таблица 30.2. Преимущества и недостатки DirectAdmin
�••>:
:.�Jfbl�
,
НедОСТ8ТК11
Высокая производительность благодаря тому, что написана С++ и
работает как отдельный сервис
Некоторые сложности с локализацией, но поддержка русского языка
есть
Не зависит от наличия веб-сервера,
использует собственный сервер,
работающий на порту 2222 (по
умолчанию)
Нет встроенной справочной
системы
Удобные функции резервного копирования
•
Поддерживает перепродажу (реселлинr) ресурсов
··················································································С/8
lkc1, l.i111ix
Неограниченное количество доменов и пользователей (версия
Standard)
Простота установки, настройки,
поддерживается автоустановщик
модулей
DirectAdmin рекомендуется как для администраторов хостинга, так и для
конечных клиентов. Также ее с успехом можно установить на виртуальный
сервер для управления отдельным проектом.
Демоверсия доступна на сайте https://www.directadmin.com/demo.html.
Основное преимущество данной панели - это ее цена. Самая полная версия
Standard, позволяющая работать с неограниченным количеством учетных за­
писей и рекомендуемая для больших хостеров и компаний-реселлеров, стоит
всего 29$ в месяц. Это вам не 45$ за 100 учетных записей у cPanel!
30.1.3. ISPManager
Данная панель отличается хорошо продуманным интерфейсом, поэтому от­
лично подойдет "чайникам". Ее интерфейс чем-то напоминает интерфейс
обычных настольных Windоws-приложений, имеются качественные перево­
ды на русский язык. Также в "админку" встроены обучающие видеоролики
и имеется хорошая справочная система.
::с
);..
't:I
::,
.. *. �[i:j,,, •
• lspmй11ager
�--
'"'"";,,.,.и,_....,
:==-..=,:..-:=,.:_-:-__-:;,
о
.,.........,
.
•-·-··
,
--
.....
. .........,... .............-......., -- -·- -
Рис. 30.З. ISPManager
•
....................................................................................
1 1.111.1 \il Bыiiop 11 �,·1а1111н�-а 11аш· 111 �11 р:111.1<·111111 ,·,·111н·р11,1
Таблица 30.3. Преимущества и недостатки ISPManager
Преимущества
, Недостатки
Простой интерфейс
ОграниtJенные возможности миграции пользователей (перенос
между серверами)
Мастера настройки системных
служб
Требует установки веб-сервера
Поддержка русского языка
Хорошая справочная система
Неограниченное количество учетных записей и сайтов
. Возможность кастомизации
Самая полная версия ISP Manager стоит 1065 рублей (цены приводятся в ва­
люте, указанной на сайте разработчика) в месяц для одного сервера.
Версия для одного виртуального сервера называется Lite и стоит 355 рублей
в месяц. При оплате �а год действует скидка - 15%.
ISPManager идеально смотрится на виртуальном сервере. Эта панель боль­
ше подходит для отдельного проекта, чем для установки на хостинr-с.ервер,
хотя она поддерживает реселлинr хостинrа и организацию кластера.
Демоверсия: https ://ispmgrl .demo. ispsystem.net: 1500/ispmgr.
30.1.4. Plesk
Разработчиком данной панели управления является компания SWSoft, но в
наши дни она распространяется компанией Parallels.
•
····································-·····--···-----------------------------------CII
lkct, l,i1111\
'
:,;
.
' о
.
--·----�--·---,,,.......--...�----
,_...,,..,_,__А
�---
......
.................,...,.,...
�- -............
·
1"'·�
Рис. 30.4. Plesk
Таблица 30.4. Преимущества и недостатки Plesk
Преимущества
Недостатки
Богатый набор функций с подцержкой плагинов
Не очень удобный интерфейс
Перегруженность ненужными мо-
Поддержка плагинов, расширяющих функционал
дулями
Возможность реселлинга
Стоит это чудо 1404 рублей в месяц (редакция Host Edition). Это дороже, чем
в предыдущем случае, но дешевле, чем DirectAdmin, не говоря уже о cPanel.
Правда, за все нужно платить. Хотите языковый пакет? Доплатите 438 ру­
блей. Хотите пакет для хостинга - доплатите 1404 рубля. Если включить все
опции, то получится 5564 рубля в месяц. Вы тоже подумали о DirectAdmin?
Просмотреть "демку" можно по адресу:
https:llsupport.plesk.com/hc/en-uslarticles/115ар 140 7434cНow-to-access-Plesk­
demo-online-servers.
•
•
....................................................................................
J 1,11<,1 ,11 Bыiiop 11 �-"11111111,:а 11а11,·.111 �11paB.IL'IIIIII .L'JJIIL'jJO\I
Учитывая перегруженность функциями, возможность ресселинга, Plesk
больше подходит для хостинг-провайдеров, чем для отдельных пользовате­
лей.
30.1.5. Рекомендации
Поскольку все панели управления, представленные в этом разделе, - плата
ные, то первое, на что нужно смотреть, - на стоимость лицензии.
Определите, какую сумму вы готовы платить в месяц, затем сравните функ­
ционал панелей управления - будут ли доступны нужные вам функции за
ваш бюджет? Если да, то можете смело покупать выбранный вариант. Если
же нет, нужно или повышать бюджет, или посмотреть на бесплатные· реше­
ния, представленные в следующем разделе. Таблица 30.5 содержит сравне­
ние некоторых характеристик платных панелей управления. Возможно, она
поможет вам определить, что для вас лучше.
Недорогая панель ISPManager обойдется от 355 р. (версия Lite) до 1065 р.
(версия Business) в месяц. Для индивидуального проекта вполне хватит вер­
сии Lite, а для сервера хостера - только Business.
Та же cPanel обойдется (в зависимqсти от тарифного плана)- от 20$ до 45$
в месяц. Plesk ненамного дешевле - от 10$ до 79$ в месяц (максимальный
вариант со всеми плюшками).
DirectAdmin на фоне всего этого безобразия со своей ценой в 29$ выглядит
очень привлекательно.
Таблица 30.5. Характеристики панелей управления
Plesk
cPanel
ISPManager
DirectAdmin
Поддерживаемые
DeЬian, UЬuntu,
CentOS,RНEL,
Cloud Linux,
Amazon Linux,
Virtuozzo Linux,
Windows Server
CentOS,
CloudLinux,
RНEL,Amazon Linux
CentOS,
DeЬian,
UЬuntu
DeЬian; FreeBSD,RНEL,
CentOS, CloudLinux
Стоимость лицензии на I хост
в месяц (на сайте
разработчика)
8$- 79$
15$-45$
5$- 15$
2$-29$
ос
•·------------------------------------------------------------------------------------
lk,1, l.i1111x
Поддерживаемые
веб•серверы
Apache
Nginx
Apache
Поддержка
Nginx на
стадии тести•
рования
Уnравление досту•
nом no FTP
+
+
+
+
Поддерживаемые
СУБД
MySQL
MSSQL
MySQL
MySQL
PostgreSQL
MySQL
MariaDB
Уnравление no•
чтовым сервисом
+
+
+
+
Настройка до•
менов и заnисей
DNS
+ (через внеш•
ний сервис)
+
+
+
Установка скриn•
ТОВ и CMS
+
+
+
+
Плагины/модули
+
+
+ (незначи•
тельное коли•
чество)
+
Альтернативные
версии РНР
+
+
+
+
Файловый менед•
жер
+
+
+
+
Резервное копиро•
ванне
+
+
+
+
Мобильное при•
ложение
Для iOS и
Android
.
Организация хо·
стинга (создание
реселлеров и та•
рифных планов)
Есть в некого•
рых редакциях
Apache
Nginx
Apache
.
Есть в версии
ISPManager
Business
Есть
Nginx
.
В версии
Standart
;
•
.....................................................................................
l ,1,111.1
,о Выбор 11 �с 1 :IIHШIOI ШIШ'.111 � 11(1:IIЫCIIIIII Ct'(Jllt'(JOM
30.2. Бесплатные решения
30.2.1. Стандартная Webmin
Webmin - полностью бесплатная панель управления, входящая в состав по­
пулярных дистрибутивов Linux. Именно поэтому мы назвали ее стандартной
- она доступна "из коробки", и для ее установки даже не придется подклю­
чать сторонние репозитории.
"'"' =
rn ... с,* Q.s"a«t.
Настройка Webmin
з
-·- - -.. -�- --�1 870
/Д
�
,\\lr.,.,,._.i,i,
�
�
Гfроо:�м-
$';/
..._�
,._
...
(11
[П
- ·-- ,,.,,,•__
-__
-·
1
и,._
\(,,,1
,
_,.,_
Ь,
\A"llf'-J
�
<,
\,/n
Рис. 30.5. Webmin
К преимуществам данной панели управления можно отнести простоту уста­
новки, удобный интерфейс, локализацию "из коробки" (какая есть). Но са­
мое главное - она не зависит от веб-сервера и может быть установлена на
уже работающий сервер, а не только на новый сервер, на котором еще не
производилась установка ПО.
К недостаткам можно отнести отсутствие поддержки как таковой, правда,
в большинстве случаев все пройдет нормально - каких-либо проблем не
замечено. Второй недостаток - весьма посредственная русификация, что и
показано на иллюстрации выше .
•
·----------------------··-----------------------------------------------------------
lkc 1, 1 i,111,
30.2.2. VestaCP
Довольно популярная для индивидуальных проектов админка. Русифика­
ция, в отличие от Webmin, выполнена полностью.
(")
:;1
�
'
(j)
USER
о
user
с....,......... • ,�
--
11�
admjn
··О
Рис. 30.6. VestaCP
Интерфейс VestaCP выглядит привлекательнее, также она может работать
сразу же после установки, ничего не нужно "допиливать". На этом преиму­
щества заканчиваются, и начинаются недостатки. Поддержки нет, точнее
есть, но за нее нужно платить. Платить придется и за файловый менеджер 3$ в месяц или 50$ за пожизненную :Лицензию. Но самый основной недоста­
ток - она требует установки на чистый сервер. Если же вы уже настроили
веб-сервер, вам придется его удалить перед установкой "Весты".
30.2.3. Бесплатная и открытая ISPConfig
Панель управления ISPConfig позволяет управлять несколькими серверами,
а также выполнять биллинг клиентов. Подоft,цет как для индивидуальных
проектов, так и для хостинг-серверов. Бесплатная админка с открытыми ис­
ходниками.
•
....................................................................................
1 1,111.1
,о В1,1бор 11 �t·1 а�нни,:а 11a1Н\III � Щ).IB.ICIIIIII CCJ)HCJ)(I\I
AvailaЫe Modules
li -
,.,.,...,5-..,..,.,__
-••!;>Н!.:
•-""'"--
W.ЬID Нurddillk Quotв
--w
Рис. 30. 7. ISPConjig
Подходит для управления несколькими серверами, поддерживает биллинг,
обладает модульной структурой. Очень хорошо для бесплатной панели.
Но для индивидуального проекта функционала слишком много, поэтому па­
нель можно рекомендовать только для хостеров, которым жалко заплатить
29$ за DirectAdmin. К слову, таких немало, поэтому к данной панели пользо­
ватели тоже успели привыкнуть.
К недостаткам можно отнести разве что некоторую сложность установки.
Но это все решаемо.
30.2.4. Ajenti
Бесплатная панель управления, разработанная Евгением Паньковым.
Панель довольно удобная, но к серьезным недостаткам можно отнести от­
сутствие поддержки Apache (поддерживается только nginx).
Второй существенный недостаток - мало кто знаком с этой панелью, и если
у пользователя будет выбор за одни и те же деньги купить хостинг с Ajenti
или хостинг с привычной DirectAdmin, то выбор будет не в пользу Ajeцti.
•
....................................................................................
lkcl, l.i,111,
•
tfAJ•nti.orJ
ajenti.org
♦AOOWIDGH
UЬ1юtн 12,04,2 LTS
С
,!-COflliJIH•
C(P1u11n�
.•.d (PUu••I"
].1Нl,y\.,'Jll\:1J:00
mш,
••
ilit.ctas
ЙР•�1<•1••
i!!Pro�•н•••
100'lo
"'
(Dc,on
► sup•l'VI•«
wus.,.
• н
."
• н
ТОО<>
► je-nl<irli
Рис. 30.8. Ajenti
30.2.5. Рекомендации
Каждая панель по-своему хороша. При установке панели управления на но­
вый сервер, на котором еще не установлено ПО, кроме самой операционной
системы, можно рассмотреть VestaCP (как один из вариантов).
Во всех остальных случаях VestaCP не подойдет - иначе придется удалять
все установленное ПО и только потом устанавливать "Весту". К тому же она
не совсем бесплатная - за поддержку и за файловый менеджер придется
заплатить.
Ajenti не подойдет, если нужен Apache. Она его попросту не поддерживает.
Если по тем или иным причинам вам нужен Apache, эту панель можно сразу
вычеркивать из списка претендентов. К тому же она малоизвестная - об
этом уже говорилось.
Остаются два варианта - Webmin и ISPConfig. Здесь достаточно просто если нужна панель управления для индивидуального проекта, то с этой за­
дачей лучше справится Webmin, если для хостера - ISPConfig.
•
....................................................................................
J 1,IВ,1
,о Выбор 11 �t·1 а11011ю1 ШIIIC.111 � IIJ!all.lt'IIШI ct•p11t•J)(Ш
Полученная "картина" представлена в таблице 30.6. Для хостинг-провайдера
рекомендация одна - ISPConfig. А вот для индивидуальных проектов есть
варианты.
Таблица 30.6. Выбор бесплатной панели управления
Индивидуальный
проект
Требовании
Хостинг-провайдер
VestaCP
Особых требований нет
Webmin
ISPConfig
Ajenti
Поддержка Apache
Уже функционирующий
сервер
VestaCP
Webmin
Webmin
ISPConfig
ISPConfig
VestaCP
Никаких платежей
Webmin
ISPConfig
Ajenti
30.3. Установка панели управления Webmin на
сервер
30.3.1. Знакомство с Webmin
Панель управления Webmin хороша тем, что входит в состав дистрибутивов
Linux и ее достаточно просто установить "из коробки". Вам нужно пони­
мать, что, поскольку продукт бесплатный, никакой поддержки не будет, и
если что-то пойдет не так, решение придется искать самостоятельно. Не­
которую дополнительную информацию можете найти. на http://www. webmin.
com/community.html, остальное придется искать на профильных форумах.
,
............................................................:................... ..
IJ<.:L 1, ( illll\
Возможности у Webmin типичные для панели управления Linux-cepвepoм:
управление учетными записями пользователей, настройка служб и серви­
сов, создание почтовых ящиков, мониторинг работы системы. В поставке
по умолчанию Webmin содержит более 500 различных скриптов, которые
можно использовать для настройки различных компонентов системы. Благо­
даря этим скриптам возможностей у Webmin будет больше, чем у VestaCP,
где некоторые модули, например файловый менеджер, придется покупать
(50 долларов пожизненно или 3 доллара в месяц).
30.3.2. Установка Webmin
Как правило, для установки webmin нужно установить одноименный пакет.
Если же в вашем дистрибутиве почему-то не оказалось webmin или же вы
хотите установить самую последнюю версию, нужно подключить репози­
торий с webmin. Далее будет показана установка Webmin в UЬuntu/DeЬian.
Чтобы добавить репозиторий Webmin, откройте файл /etc/apt/sources.list
(команда sudo папо /etc/apt/sources.list) и добавьте в него строки:
:аа
�
�
deb http://download.webmin.com/download/repository sarge contr-ib
deb http://webmin.mirror.somersettechsolutions.eo.uk/repository
sarge contrib.
Добавьте GРG-ключ:
.ig
wget' http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
Осталось обновить списки пакетов и установить пакет webmin:
sudo'apt-get 'update
sudo apt install webmin'
Чтобы неб-интерфейс мог беспрепятственно работать, нужно обновить пра­
вила брандмауэра (разрешить порт 10000):
•
11!1··················································································
1 1.ш.1
�о В1,1бор 11 �t· 1 :1110111,а шшt•.111 � 11pa11.1t•111111 сср11сро,1
sudo ufw allow 10000
Собственно, теперь панещ, управления Webmin установлена.
30.3.3. Вход в панель управления
Запустите браузер и введите адрес:
https://ip_aдpec_cepвepa:10000
Браузер сообщит, что сертификат SSL не является доверенным, добавьте со­
ответствующее исключение в браузер (рис. 30.9).
8 lns«urt Connкtюn
х
Serwr
Loatlon: {Шi!Whii•f&fi)iiiAi1s•Ф
C•rtltktt1Stetus
Th1s ,rt. 1ttemptsto ldentify ltиtf wlth inv•lld informкion.
WrontSlte
Thtc«t:Шute ь.longsto • dlrffftnt sltt, wkkh could mнn tlwt somюn• 1s ttying to
lmp«soмtethlssite.
Unlcn-nld1ntlty
Tht urШ'lc.tt- 11 not trusted �use lt h1sn't � verlfied ,1s iuued Ьу1 trusted 1uth0flty
uslng I иcure �9n1ture.
Sfe,rмnently$t«tthlsexaptlon
' ьonl'irmЖUrltyfx�
Рис. 30.9. Добавляем исключение безопасности
После этого вы увидите форму входа - используйте имя пользователя и
пароль с привилегиями root (рис. 30.1 О).
•
··················································································al
ф Logln to WtЬmln
··• О *
f-
О.. Starch
11 l!J
-
�Webmin
Youmus1en1treu11ttnamtand
l)ISSWOfd 101091n 10 tht &evl!r оо
46.229.l2D.1l7
. '
Рис. 30.10. Вход в Webmin
Основной экран Webmin достаточно минималистичен. Если вы раньше ис­
пользовали Webmin, то наверняка заметили изменение дизайна в лучшую
сторону. Действительно, у современных версий Webmin интерфейс тоже со­
временный и уже не отдает началом 2000-х, как бьmо раньше .
l'lt'Pl:f. 46.129.220.1111,'l()OO;.,,,('Om r,,">'�.r,1111t,un�1
11]
... '-='
*
11 m -
а.. !.t�Щ•
Webmin Configuration
!!'!
,,,_
ll'df-rf'-,t
1..�
т,..
R"""он1
-- - ...
/Л
Pl•JIМNtn
�
ti,
,__,кt,,,
......,
-&
,a,J:ht,wil;мDI
r"Lo::k"9
с:;
-'"Ahtflliata,
1
-,,,_
i}
...
,
-_
8
#
........
lW"61!
WeЬminl 870
U•erlnl.,t.c,,,
....... ,..
w-
-......
•
ь ...0...... .......
,,,_
-- .,...,...
�
R�••IJ'I
Вk,:•е<1Нс111s
$yll.nlltld
11\
,.,
[D
ИDdl.lllTillм
..,,.
Рис. 30.ll. Конфигураt(IIЯ панели управления
E!I··················································································
1 1.ш,1 ,О B1.1iiop 11 �с 1а�ю111,:а 11:111t·.111 �11р:ш.1t•111н1 сt·1шt•1ю\1
По умолчанию язык интерфейса
очень просто.
английский. Русифицировать Webmin
Зайдите в конфигурацию самой панели (рис. 30.11), выберите раздел
Language, далее - выберите русский язык из списка (рис. 30.12) и нажмите
кнопку Change Ianguage.
После проделанных манипуляций язык будет изменен на русский (рис.
30.13).
..
Language
This page •llows you to clюol:e which Janc;iuage №Ьrnirl will 1,11;е IOf dlsplay"'9 tnles, i-omf){• and messaqe,
WeЬmin language
[lii!!!!<'"ffi.u_yr� -::. i-.:]
Displayrl�
Рис. 30.12. Выбираем язык
, Настройка Webmin
Wl!Olt'lln1.170
-·- .,.... -·- --- ---,� -·- ....
..
-......
-•
1
&
,
-��
-· ----· - --·
- ,_
{fj
.,_
�
/Д
�
�
Af,..,,....,_
.&
""'-
Jf
&!Р
Twt-<'.aar
All!'-nlO:-alion
�
�
, ,...
()1
'�·
�,ск,еоа
т�.. �
о,..,..
\iJ
�
[D
�
д�,--
усtр<КТI
•
�"'ilr•1
Рис. 30.13. Панель управления русифицирована
············.. ·····················································,···············&1
lkLI, 1 i,111,
На этом все. Webmin готова к использованию. Далее можно управлять сервером на Linux посредством панели управления.
•
-----------------------------------------------------------------------;-----------·
Глава 31.
ПОВЫШЕНИЕ.
ПРОИЗВОДИТЕЛЬНОСТИ
СЕРВЕРА
л •
lkc 1, 1 i1111,
Продолжаем рассматривать все особенности сервера на Linux.
Довольно часто бывает, что сайт работает не так быстро, как бы нам этого
хотелось. Порой поиск узкого место может занять довольно много времени.
31.1. Чек-лист производительности сервера
Если сервер (сайт) работает медленно, необходимо проверить следующее:
1. Количество клиентов и конфигурацию сервера - здесь все просто,
если, скажем, месяц назад сайт работал нормально, а сейчас начал "тор­
мозить", посмотрите на количество клиентов, одновременно работающих
с сайтом. Это можно сделать, например, с помощью команды netstat I grep
http I grep ЕSТАВ (нас интересуют только установленные соединения, а
не соединения с ТIМЕ_WAIТ и друтими статусами). Если клиентов мно­
го, тогда рассмотрите модернизацию оперативной памяти и выделите
больше места под работу каждого процесса РНР (далее будет показано,
как это сделать). Если же клиентов немного (рис. 31.1) или сайт тормозит
изначально, сразу после его настройки, то д;ело в чем-то другом.
•
..................................................... , ............................. .
1 1а11,111
Пш11.1111с1111с 11()(111\IIO,\ll lt',11,IIOCIII CC(Hlt'pa
Рис. 31.1. Вывод команды netstat I grep http I grep ESTAB
2. Настройки Apache - некоторые настройки Apache существенно влияют
на производительность. Такие настройки уже были рассмотрены ранее, и
мы не будем повторяться.
3. Версия РНР - установка правильной версии РНР позволит добиться су­
щественного ускорения. Так, по данным инструмента РНР Benchmarks
(с отчетом вы можете ознакомиться по адресу https://kinsta.com/Ыog/php­
benchmarks/) версии РНР 7.0 и 7.1 в 2.5 раза быстрее, чем версия 5.6. Вер­
сии 7.3 и 7.4 - в 3 раза быстрее, чем версия 5.6. Но нужно понимать, что
не каждая версия РНР подходит для вашего ПО. Например, Magento 2.3.х
требует версии 7.1.3, 7.2.0 и 7.3.0. Magento 2.2.х, наоборот, не поддер­
живает версию 7.3 (иногда версия CMS подбирается под определенное
расширение, которого нет для другой версии, поэтому нет возможности
установить самую последнюю версию CMS). Все эти моменты. нужно
учитывать при смене версии РНР.
4. Директива memory_limit - данная директива ограничивает объем па­
мяти, выделяемый процессу РНР. Бывает так, что оперативной памяти
у сервера достаточно, а под один процесс выделено мало ОЗУ, поэтому
тяжелые CMS начинают "тормозить". Здесь нужно просто увеличить ко­
личество ОЗУ Часто память ограничивается на уровне 256Мб, этого на
•
···---·········---···--······---··--··--····-·--·-·---·---·······-··----·--···-··---
lkёl, J,i1111\
сегодняшний день мало и в зависимости от CMS и нагрузки на сервер,
нужно'увеличить это число до 512 - 1024 Мб.
5. Директива max_execution_time - устанавливает максимальное вы­
полнение сценария РНР. Некоторые сценарии выполняются достаточно
долго. Например, переиндексирование индекса URL Rewrite на одной из
машин с Magento 1 занимало около 14 часов. А теперь представим си­
туацию. Планировщик запускает периодически перестроение индексов.
Процесс индексатора видит, что индекс требует перестроения и начинает
работу. Но выполниться не успевает, поскольку РНР преждевременно за­
вершает его. И так будет продолжаться до бесконечности - а потом мы
ломаем голову, почему индексы не перестраиваются и почему сервер тор­
мозит. Нормальная практика - установка этого значения в О, чтобы время
выполнения не ограничивалось. Либо же установка большого значения,
например, 5-7 часов, а может и больше - в зависимости от ситуации.
6. Настройка сжатия и кэширования - включение сжатия страниц
позволяет уменьшить объем передаваемых клиенту данных - данные бу­
дут переданы раньше, нагрузка на сервер будет ниже. Довольны окажутся
все - и клиент, и администратор. Потери производительности, необходи­
мые на сжатие контента и его распаковку (на клиенте) вполне оправданы.
Настройка кэширования позволяет задать время кэширования контента
на стороне клиента. Сервер "отдает" заголовки, устанавливающие вре­
мя кэширования определенных ресурсов - картинок, CSS и т.д. Браузер,
прокэшировав один раз ресурс, больше не будет его загружать, пока не
выйдет время, указанное сервером. В результате имеем: сайт загружается
быстрее, а нагрузка на сервер ниже.
::с
..,
\а
7. Включение кэширования на стороне сервера - для этого используется
специальные инструменты вроде Pagespeed и Memcached.
8. Настройка CMS - иногда параметры самой CMS не предполагают опти­
мизации. Например, в настройках CMS можно включить минимизацию
CSS/JS и их объединение в один файл. В результате вместо 20 запросов к
серверу (для загрузки скриптов и таблиц стилей) будет всего два запроса
- один на загрузку стилей, другой - скриптов. Учитывая, что код мини­
мизирован (из него удалень, лишние пробелы и комментарии), то время
загрузки страницы снижается. Такой трюк возможен не всегда, особенно
со скриптами - начинаются всевозможные конфликты, но попробовать
стоит.
•
&1---------------------------------------------------------------------------------·
1 1.1н.1 ;1
llo111.1111t.·11ш· 11ро111110111 1,· 11.110,111 ct'JJllt·pa
WordPress 5.3
400
..
300
,..
200
РНР 7.0
РНР 7.1
РНР 7.2
РНР 7.3
Requests/Se<:
РНР 7.4
КIПS'tO
Рис. 31.2. График производительности (источник: kinsta.com)
31.2. Смена версии РНР и его настройка
Здесь все зависит от того, какой у вас сервер. Если у вас обычный физиче­
ский сервер или же виртуальный сервер с полноценным rооt-доступом, то
следуйте инструкциям из предыдущих глав для установки нужной версии
РНР. Да, все придется делать вручную, но другого выбора у вас нет.
Если же у вас виртуальный сервер, управляемый через панель управления,
то сменить версию РНР можно в панели управления. Правда, четкие ин­
струкции зависят от используемой панели управление.
Так, на ресурсе cloudways для смены версии РНР нужно выполнить следую­
щие действия:
l . Войдите в панель управления серверами;
2. Выберите ваш сервер;
3. Перейдите в раздел Settings & Packages, на вкладку Packages;
4. Нажмите значок карандаша напротив версии РНР;
•
5. Выберите другую версию РНР (рис..31.3) и нажмите кнопку Save;
··················································································-III
6. Дождитесь, пока система поменяет версию РНР. Помните, что ваше ПО
может перестать работать после смены версии РНР! Поэтому смена вер­
сии РНР - это очень ответственный шаг.
SETTINGS & PACkдGES
г
�-Ь..S�иtt:1t9мwtilмpe,ckaQ,es.
ВASIC
..,,,,.,,
ADVANCED
""""'
Р.11 РНРS.6
_,.о
РНР7.1
РНР7.2
РНРU
NotlnstЬ,lt,dl
-ф
___,
INSТ,11,LL
NotlnSUilled IНSfAU
Рис. 31.З. Смена версии РНР
Теперь нам нужно устаJ{овить максимальные лимиты для доступной про­
цессу памяти· и доступного времени выполнения. Опять-таки, все зависит
от того, какой у вас сервер. При наличии полноценного rооt-доступа (или
физического сервера), откройте файл конфигурации РНР. Как правило, это
/etc/phpN/apache2/php.ini (N - номер версии РНР ) и установите новые зна­
чения для директив max_execution_time и memory_limit (рис. 31.4). После
этого заставьте сервер перечитать файл конфигурации или попросту переза­
грузите его.
r----------------------------------------------------. ---------�
1
:
:
1
:
:
1
ПРИМЕЧАНИЕ. Для директивы max_executlon_time значение :
указывается в секундах. Например, 3600 - это 1 час. Значение О :
1
отключает проверку времени выполнения и сценарии могут вы- :
полняться вечно.
:
�--------------------------------------------------------------�
1
1
Создайте сценарий info.php в корне вашего веб-сервера:
<?php
phpinfo();
?>
•
111111---------------------------------------------------------------------------------·
1 1.11<.1 ; 1
l l11111,1111t·111н· 111н11111111 111 1 ,. 11,11щ· 1 11 ,·,·р1н·ра
Рис. 31.4. Редактирование php.ini
Выполните этот сценарий (http://имя_cepвepa/info.php) и убедитесь, что из­
менения вступили в силу и сценариям доступны выделенные ресурсы.
Если же вы используете Cloudways или подобные сервисы, изменить необ­
ходимые параметры можно в панели управления.
В случае с Cloudways они находятся на вкладке Basic раздела Settings &
Packages (рис. 31.5). Просто установите нужные значения и нажмите кноп­
ку Save changes.
�--------------------------------------------------------------�
1
,
1
1 ПРИМЕЧАНИЕ. Фрагменты материала в этой главе могут :
11 частично повторять материал предыдущих глав. Это сделано 11
: чтобы напомнить читателю какие-либо важные моменты и не :
: заставлять е го перелистывать назад нашу немаленькую книгу. :
t ______________________________________________________________J
................................................................................ ..
·
lkc1, 1 i1111,
BASIC
ADVANCED
PACКAGES
MAINTENANCE
""°'""""'"'ф
22000
"""'"'
SМТР
uP\.OAOSIZE@
,о
МЕМОА'УLМТФ
мв
1024
OCSP\.AYERЯORФ
Но
ERAOIIREPOAТING (i)
РНРnмЕZ'ОNЕФ
. j
''М,ltt,-�._,.,.,.,.,_to_,..,��
Рис. 31.5. Изменение параметров РНР
31.3. Настройка сжатия и кэширования
Сегодня все браузеры поддерживают сжатия (картинок, файлов), поскольку
это является частью спецификации протокола НТТР 1.1.
Сжатие текстовых форматов (например, CSS, Javascipt или HTML) сможет
уменьшить их объем до 70%.
Работает это следующим образом:
• Прежде чем отправить ответ, сервер выполняет сжатие данных
• При получении сжатого ответа от сервера браузер выполняет обратную
процедуру и разжимает сжатый контент и выводит результат.
�
=
�
�
�
Кэширование также помогает ускорить загрузку страницы. Когда ресурс
находится в кэше браузера, то браузер будет•исполыовать его локальную
версию, и не будет загружать с сервера. Как работает кэширование, хорошо
видно в средствах разработчика. Откройте вкладку Network (Сеть) средств
•
•
.....................................................................................
1 .ыв,1 , 1
Пов1,1111е1111е 11р1111 шо.1111 t•.11,1юе111 сервер;�
разработчика браузера (рис. 31.6) и вы увидите, что часть ресурсов сайта
загружаются с локального кэша. На загрузку этих ресурсов браузер не тратит время, что снижает время 3�1,rрузки страницы и нагрузку на сервер.
Рис. 31.6. Средства разработчика Chrome
Далее будет показано, как включить сжатие и кэширование в двух самых по­
пулярных веб-серверах - nginx и Apache.
31.3.1. Настройка nginx
Файл конфигурации nginx называется /etc/nginx/nginx.conf.
Нам и придется его редактировать. В файл конфигурации сервера (или от­
дельного хоста, если нужно включить сжатие не для всех сайтов, а только
для конкретного) нужно добавить следующие строки:
#GZIP
gzip оп;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;
# Выделяем буфер для gzip
gzip_buffers 32 4k;
•
·-·-··············-··························-···-········--······················tJII
lkLъ l,i1111x
# Устанавливаем уровень сжатия, от 1-9
gzip_comp_level 9;
# Убираем поддержку IЕб
gzip_disaЫe "msieб";
# Устанавливаем версию http для использования gzip (1.0 или 1.1)
gzip_http_versioп 1.1;
# Разрешаем использовать статику
gzip_static оп;
gzip_vary оп;
# Определяем, какие типы файлов нужно сжимать
gzip_types text/css text/javascript text/xml text/plaiп text/x­
compoпent application/javascript applicatioп/x-javascript application/
jsoп applicatioп/xml applicatioп/rss+xml foпt/truetype application/x­
font-ttf font/opentype applicatioп/vпd.ms-foпtobject image/svg+xml;
Теперь настроим кэширование. При настройке времени кэширования пом­
ните и об обратном эффекте кэширования. Если вы внесете изменения в
ваши стили или скрипты, то пользователи увидят их только, когда загрузят
новую версию. Чтобы увидеть изменения раньше, нужно будет очистить кэш
браузера, а как это сделать, как показывает практика, знают не все полъзователи. В любом случае приведенный конфиг предполагает хранения файлов
в кэше 1 сутки (86400 секунд). Если вы вносите изменения в сайт редко,
можно увеличить это время до 10-30 суток. Для статического контента, ко­
торый никогда не меняется (выложили файл и забыли о нем) кэширование
включено сроком на 1 год.
# Хранить кзш 24ч\1 сутки
expires 86400s;
# Добавляем заголовки (хеадеры)
add_header Pragma puЫic;
add_header Cache-Control "max-age= 86400, puЫic, must-revalidate,
proxy-revalidate'';
#add_header "X-UA-CompatiЬle" "IE=Edge,chrome=l";
# Правила rewrite для версированного CSS + JS через дерйктиву filemtime
location ~* '.+\.(cssljs)$ {
rewrite '(.+)\.(\d+)\.(cssljs)$ $1.$3 last;
# Задаем, сколько будет храниться кэш
expires 31536000s;
# Выключаем легирование
access_log off;
log_not_found off;
# Добавляем заголовки (хеадеры)
add header Pragma FuЬlic;
•
Et-------------------···--··--·--···-·-·--·-------·----·-----·------·--·---·-------·
1 1.111.1 11
l lш11,11ш·1111t· 111ю1111щ IJJ н·. 11.1111с 1 11 t·t·p1н·pa
add header Cache-Control "max-age=31536000, puЫic";
}
# Агрессивное кэширование для статических файлов
location ~* \. (asflasxlwaxlwmvlwmxlavilbmplclassldivxldocldocxleotlex
elgiflgzlgziplicoljpgljpegljpelmdЫmidlmidilmovlqtlmp31m4almp41m4vlmpe
glmpglmpelmpplodblodclodflodglodplodslodtlogglogvlotflpdflpnglpotlppsl
pptlpptxlralramlsvglsvgzlswfltarlt?gzltifltifflttflwavlwebmlwmalwofflwri
lxlalxlslxisxlxltlxlwlzip)$ (
# Задаем сколько будет храниться кэш
expires 31536000s;
# Выключаем легирование
access_log off;
log_not_found off;
# Добавляем заголовки (хеадеры)
add header Pragma puЫic;
add_header Cache-Control "max-age=31536000, puЫic";
31.3.2. Настройка Apache
Файл конфигурации Apache называется /etc/apache2/
apache2.conf.
Это основной файл конфигурации. Если нужно изменить конфигурацию для
определенного сайта, поищите его конфиг в папке /etc/apache2/sites-availaЫe.
По умолчанию модуль mod_defiate должен быть включен в apache.
Но лучше убедиться и выполнить проверку и поискать следующую строку в
конфиге веб-сервера apache:
LoadМodule deflate module modules/mod_deflate.so
Мы можем определить, какие типы файлов нужно сжать:
AddOutputFilterByType DEFLATE text/html text/plain text/css
application/javascript
•
....................................................................................
!!,·,,, 1 i1111,
Установите следующую конфигурацию в виртуальный хост Apache и это
включит сжатие mod_deflate для вашего сайта:
<Directory /var/www/html/>
<IfModule mod_mime.c>
AddType application/x-javascript .js
AddType text/css· .css
</IfModule>·
·<IfModule mod_deflate.c>
t Сжимаем НТМL, CSS, JavaScript; Text, XML и шрифты
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE app�ication/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
1
AddOutputFilterByType DEFLATE application/x-font-truet ype
AddOчtputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
. .
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE te_xt/xml
t Следующая строка для .js и .css
AddOutputFilter DEFLATE js_css
AddOutputFilterByType DEFLATE text/plain text/xml application/
xhtml+xml text/css application/javascript application/xml
application/rss+xml application/atom_xml application/x-javascript
application/x-httpd-php application/x-httpd-fastphp text/html
</IfModule>
<IfModule mod_setenvif.c>
# Удалить ошибки,браузера (требуется только для очень старых
браузеров)
BrowserMatch лмozil�a/4 gzip-only-text/html
BrowserMatch лмozilla/4\.0(678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
<IfModule m
l1eaders. с>
Header арр ·1.1 Vary User-Agent env= ! dont-vary.
•
------------·-------·---·····-···---------------------------··-·-········--·---··--·
Г.1,ша 31
1 IOBl,IIШ'lllll' IIJJ(lll ll!0.1111 C.11,IIOC 111 CCJJBl'JJ:I
</IfModule>
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file . (html?JtxtJcssJjslphplpl)$
mod_gzip_item_include handler лcgi-script$
mod_gzip_item_include mime лtext/.*
mod_gzip_item_include mime лapplication/x-javascript.*
mod_gzip_item_exclude mime лimage/.*
mod_gzip_item_exclude rspheader лcontent-Encoding: .*gzip.*
</ifModule>
</Directory>
Для включения кэширования можно вынести конфигурацию за пределы ос­
новного файла и создать файл .htaccess в корневом каталоге документов.
Содержимое этого файла будет следующим:
# кеширование в браузере на стороне пользователя
<IfModule mod expires.c>
#Включаем поддержку директивы Expire·s
ExpiresActive On
# Задаем время для хранения файлов (картинок) в кэше для каждого типа
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text:/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plns 1 year"
ExpiresByType image/jpg "access plus 1 year"
,ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>
# Cache-Control
<ifModule mod headers.c>·
# Задаем 30 дней для данного типа файла
<filesMatch "\. (ico I pdf I flv I jpg I jpeg I png I gif I swf) $">
Header set Cache-Control "max-age=2592000, puЬlic"
</filesMatch>
# Задаем 30 дней для данного типа файла
<filesMatch "\. (css I js) $">
Header set Cache-Control "max-age=2592000, puЫic"
•
....................................................................................
�
"'::,.
8.
с::
lkcl, 1 illll\
</filesMatch>
t Задаем 2 дня для данного типа файла
<filesMatch "\. (xrnl I txt)$"> . ·
Header set Cache-Control "rnax-age= l72800, puЫic, rnust-revalidate"
</filesМatch>
t Задаем 1 день для данного. типа фа·йла.
<filesMatch "\. (htrnl}htrn}php)$">
Header set Ca.che-Control "rnax-age= l 72800, private, rnust-revalidate"
</filesMatch>
</ifModule>
t исnольэован�е кеша брауэеров
FileETag MTirne. Size
<ifmodule rnod expires.c>
<filesrnatch ". (jpg I jpeg I gif I png I ico I css I js)$">
ExpiresActive on
Expi_resDefault "access plus 1 year"
</filesrnatch>
</ifrnodule>
iЗаnрет отдачи НТТР-эаголовков Vary брауэерам семейства MSIE
<IfModule mod_setenvif.c>
BrowserMatch "MSIE" force-no-vary
BrowserMatch "Mozilla/4. [0-9] (2)" force-no-vary
</IfModule>
Чтобы все это добро работало, вам нужно включить модули hea.ders и
expires. Это делается командами:
# a2enmod heade.rs
# a2enmod expires
# service apache2 restart
Последняя команда перезагружает сервер - в принципе вам все равно это
нужно было сделать, чтобы он перечитал конфигурационный файл.
Конечно, можно бьшо бы обойтись reload, но тогда бы модули headers и
expires не были бы загружены; если до этого вы их не использовали.
•
.............................. , .................................................... .
11,111,1
\I
IIHlll,IIIIL'IIШ'll(IOIIШHIII I L'll,IICIL'I IIL't'()IH'():I
31.4. Включение кэширования на стороне
сервера
Теперь поговорим о кэшировании на стороне сервера. Хорошо, если дви­
жок сайта обладает возможностью кэширования страниц - это может суще­
ственно повысить его производительность. Для многих CMS разработаны
расширения кэширования. Вы можете использовать эти расширения или же
настроить инструменты Pagespeed и Memcached на сервере.
-Выбрать средство кэширования поможет следующий алгоритм:
• Существуют ли расширения кэширования на вашей CMS:
» Да - можете использовать их. Если они платные, то или их придется
покупать или использовать инструменты сервера.
» Нет - использовать инструменты сервера
• Планируете ли вы смену CMS?
» Да - используйте инструменты сервера, тогда ничего не придется ре­
шать с кэширование после установки новой CMS, все уже будет рабо­
тать.
» Нет - можно использовать расширения кэширования для CMS.
Далее будет показано, как настроить Pagespeed и Memcached для сервера
Apache.
31.4.1. Настройка Pagespeed
Первым делом нужно определить разрядность операционной системы. Ко­
нечно, сегодня найти 32-разрядный VDS - еще та задача, но все же.
Введите команду:
uname -а
Если увидите в выводе х86_64 - ваша система 64-разрядная и нужно ввести
следующие команды:
'-········-················································-······················CII
Н,·,1, 1 i,111,
cd /trnp
wget https://dl-ssl.google.corn/di/linux/direct/rnod-pagespeed­
staЫe current·arnd64.deb
sud? dpkg -i rnod-pagespeed-st�Ыe�current_arnd64.deb
Для 32-разрядной системы нужно ввести команды:
cd /trnp
wget https://dl-ssl.google.corn/dl/linux/direct/rnod-pagespeed .:..
staЫe current iЗВб.dеЬ
sudo dpkg -i rnod-pagespeed-staЫe_current_iЗBб.deb
Хотя, как правило, ваша система окажется 64-разрядной и последний абзац
можно бьmо бы и не писать. Но мало ли. Вдруг кому-то пришла в голову
светлая мысль организовать веб-сервер на 32-битной машине.
После этого нужно перезапустить Apache:
sudo service apache2 restart
Собственно, на этом все. Больше ничего делать не нужно.
31.4.2. Настройка Memcached
Демон Memcached позволяет добиться сушественного ускорения загрузки
страниц. Он доступен из репозитариев UЬuntu:
sudo apt install rnerncached
После установки демона нужно узнать порт, на котором он работает. Введи­
те команду:
netstat -tap I grep rnerncached
•
.....................................................................................
11,111,111 llo111,1111c111н· 11ро1111ю11 11,•.11,1юс1 11 с,·1нн·ра
Порт будет выведен после слова localhost, например, localhost: 11211. Это
стандартный порт для Memcached, который нужно указать в конфигурации
mod_pagespeed.
Для ускорения РНР-приложений нужно установить пакет php-memcached:
apt install php-memcached
Осталось настроить mod_pagespeed на работу с помощью Memcached. Для
этого откройте файл /etc/apache2/mods-availaЫe/pagespeed.conf:
mcedit /etc/apache2/mods-availaЫe/pagespee�.conf
Произведите поиск по строке ModPagespeedMemcachedServers. Раскоммен­
тируйте строку:
i ModPagespeedМemcachedServers localhost:11211
Она должна быть такой:
ModPagespeedМemcachedServer� localhost:11211
Перезапустите Apache:
sudo service apache2 rest�rt
После этого можете наблюдать некоторое ускорение работы вашего сайта.
Для более тонкой настройки обратитесь к документации по memcached.
31.5. Ускорение CMS
•
В этом разделе будет рассмотрено ускорение Magento 2 - одной из самых
требовательных к ресурсам CMS. Приведенные советы будут актуальны и
·-----------------------------------------------------------------------------------
.
:.
�
"'с.
' 8.
:
1:::::
lk.:1, l,illll\
для других CMS, но, интерфейс панели управления, ясное дело, будет от­
личаться.
Часто свежеустановленная Magento работает очень медленно. Особенно си­
туация ухудшается после установки нестандартной темы оформления. Без
скина магазин работает еще более или менее, но как только "одели" тему,
начинаются заметные тормоза. Рано или поздно, конечно, вам все равно при­
дется добавить ресурсов (количество vCPU и оперативной памяти), но до
этого нужно выжать максимум из того, что есть. Добавить ресурсов всегда
можно.
31.5.1. Включение кэша
Включение кэширования существенно ускоряет загрузку страниц магазина.
При установке расширений обычно нужно выключить кэширование. Вполне
возможна ситуация, когда вы кэш выключили, но забыли включить
Перейдите в Система, Управление кэшем. Убедитесь, что все типы кэша
включены. Для включения кэша:
1. Выберите все выключенные типы кэша.
2. Из списка выберите действие Включить
3. Нажмите кнопку Отправить
Рис. 31. 7. Включаl!Jlt кэш
1 1,111.1 11
l l11111.1111t·11ш· 11рн�111111111 1 t·.11.11щ· 111 t·t•pщ•pa
На рис. 31.7 показ.ано, что один из типов кэша отключен. Это кэш разметки
страницы. В данном случае система вынуждена проверять разметку каждый
раз при-генерировании страницы, что, разумеется, негативно.сказывается на
производительности.
31.5.2. Включаем сжатие и объединение JavaScript и CSS
Тема оформления и расширения добавляют множество JavaScript-cцeнapиeв
и CSS. Ускорить загрузку этих ресурсов можно путем включения сжатия
(минимизации - когда из кода удаляются все лишние пробельные символы)
и объ�динения сценариев в один большой блок кода. Логика проста - мини­
мизация уменьшает размер передаваемых данных, а объединение ресурсов в
один файл сокращает количество запросов к серверу. Например, у вас было
20 сценариев JavaScript, следовательно, браузер должен• был сделать 20
запросов к серверу. Вместо этого будет один запрос.
Перейдите в Магазины, Конфигурация, Расширенные, Разработчик,
Настройки Javascript /Настройки CSS. Включите параметры Объедине­
ние файлов JavaScript / Группирование файлов CSS (или Объединение
файлов CSS - название параметра зависит от локализации Magento). Также
включите параметры Мииифицировать файлы JavaScript и Минифика­
ция СSS-файлов.
8-n.l=W'd, �=========--- -_-_-_-_-_-::_ ::::__-___-_::__::_
.._.__
_
ot--:=""'� � -_-__
.........,_,!��•Scr� ::
..
...__
Lo,JSlrrontoЖl,00!\�
L"J51t,.,...10Ж...,��
_..._.
0
::I:]
,.--...
_
Н••
---,-
Dl);·taю_,,-i,
�..."..,...
0
СSSнктроkм
•
0
Рис. 31.8. Параметры JS/CSS
··-----····;··--·-·----------------·--·--·----------·--······-····················811
lkcl, 1 illlt\
На рис. 31.8 с настройками JavaScript все хорошо - они объединяются и ми­
нимизируются. А вот файлы CSS отравляются как есть - без группировки и
минимизации. Это тоже может быть причиной плохой производительности.
31.5.3. Оптимизируйте изображения
Используйте изображения подходящего размера и качества. Например, если
слайдер на домашней странице подразумевает использование картинок раз­
мером 1920х1080, то не нужно использовать картинки в 2-3 раза больше это только увеличит время загрузки страницы.
Существенно уменьшить размер JРЕG-картинок можно, если уменьшить ка­
чество до 80%: визуально это не будет заметно, а вот размер файла станет
намного меньше. Также для ускорения загрузки изображений можно исполь­
зовать CDN. Правда, они платные в большинстве случаев, но, тем не менее,
использование CDN позволяет ускорить. загрузку изображений, поскольку
изображения будут загружаться с ближайшего к пользователю сервера.
31.5.4. Использование Flаt-катеrорий и продуктов
Перейдите в раздел Магазины, Конфигурация, Каталог, Каталог, Витри­
на и установите параметры, как показано на рис. 31._9. Вы должны включить
параметры Использовать плоский каталог категории и Использовать
плоский Каталог продукции.
------ .
;;;
0
е
1·1.:.1
··-----­
;
Рис. 31.9. Настройки плоских категорий и продуктов
•
lllt·················································································•
11.1н111
llo111,1111t·111 1t· 111ю111110111 1 t•.11, 11ос111 t·с1нн·ра
Подобные настройки уменьшают количество запросов к БД и сайт будет ра­
ботать быстрее.
31.5.5. Переводим Magento в production-peжuм
Magento сама по себе нерасторопная система. А в режиме разработчика она
еще более медленная. После того, как все будет готово, вы можете перевести
ее в режим production, который подразумевает компиляцию кода.
Для этого подключитесь к своему серверу по SSH, перейдите в каталог с
Magento и введите команду:
php _bin/magento deploy:mode:set production
Переводить в режим production нужно только тогда, когда сайт полностью
готов - установлены все необходимые расширения, тема оформления, вне­
сены изменения в CSS/JS. Разница в том, что в режиме разработчика все
изменения вносятся сразу же. В режиме production вам нужно выполнить
развертывание системы после внесения изменений, иначе вы их попросту не
увидите. Команда, выполняющая развертывание статических файлов:
php bin/magento setup:static-content-deploy -f
Для дополнительной информации о режиме разработчика обратитесь к до­
кументации Magento.
31.5.6. Настройка MySQL
При настройке MySQL обратите внимание на параметры раздела Fine
Tuning. Опять тут все зависит от размера вашей базы данных и от размера
оперативной памяти.
На рис. 31.10 приведена конфигурация рабочего сервера.
•
····----------------------------·--------------------------------·------------------
lkLI, J,i1111,
Рис. 31.10. Конфигурация MySQL для Magento
•
....................................................................................
Глава 32.
НАСТРОЙКА ПОЧТЫ НА
ВЕБ-СЕРВЕРЕ
л •
..., '
�:
"' '
..!
Е;
;а
Залог успешной работы веб-сервера - правильная настройка почты.
Ведь, если почта настроена неправильно, он не сможет отправить пользова­
телям важные уведомления:
• Письмо со ссылкой подтверждения регистрации - полиователь не полу­
чит письмо со ссьшкой для подтверждения учетной записи и не сможет
зарегистрироваться.
• Письмо с уведомлением о заказе - это не так страшно, но все равно не
приятно.
• Письмо администратору с уведомлением о возникших проблемах - адми­
нистратор ничего не узнает о проблемах на сервере.
Для успешной рароты mправки писем РНР должен быть настроен правильно. В этой главе будет показано, как это сделать.
32.1. Проверяем, работает ли почта
=
Напишем небольшой сценарий mail.php:
;;
mail ('ваш email', 'Test', 'Hello');
-g=
=
;
<?php
?>
•
аа---------------------------------------------------------------------------------·
1 1.1в.1 ;� llac 11нн1�,:а 110•111,1 на иt·ii-ccpиt•pt•
Выполним сценарий:
php ma il . php
Проверьте ваш почтовый ящик, в том числе и папку Спам. Если письмо
есть, можете дальше не читать эту главу. Но, скорее всего, письма не будет ведь никто кроме вас почту не настраивал.
32.2. Принцип настройки
Для отправки почты нам нужен SМТР-сервер. Но далеко не все облачные/
обычные провайдеры предоставляют своим клиентам почтовые серверы.
Это первый момент.
Второй заключается в том, что стандартная функция mai/0 не поддерживает
аутентификацию, а все современные SМТР-серверы просто так письма не
отправляют.
Выход есть. Мы создадим почтовый ящик, на том же gmail, установим про­
грамму-посредник ssmtp, настроим ее соответствующим образом, а затем
укажем РНР, что нужно отправлять почту через эту программу. Все доволь­
но просто и на все про все (с регистрацией почты) у вас уйдет не более 15
минут.
32.3. Установка и настройка ssmtp
Итак, регистрируйте почтовый ящик, от имени которого ваш магазин будет
отправлять письма. Возможно, уже такой ящик создан. Тогда можно присту­
пить к установке ssmtp:
sudo apt install ssmtp
После этого открываем файл конфигурации /etc/ssmtp/ssmtp.conf и приво­
дим его к следующему виду:
'----------------------------------------------------------------------------------
1\с l l, ( illll\
. .,
!
# Почта пользователя root
root=root@localhost
# Yes - будет писаться отладочная информация (в случае проблем)
# No - ничего писаться не будет
debug=No
�
�
# Параме�ры SМТР-сервера - имя и порт (настройки для Google)
mailhub=smtp.gmail.com:587
�·
=
2
# Перезаписать домен:
# rewritreDomain =your.shop.com
�.
,., е
�-; :.
� "'�
# Имя пользователя
AuthUser=email@gmail.com
AuthPass=PrettySecretPassword
UseSTARTTLS=Yes
Данная настройка идеально подходит для Google, все, что вам остается ввести ваш адрес электронной почты и пароль. Также не забудьте настроить
сам Gооglе-аккаунт и разрешить использование небезопасных приложений.
Инструкция находится по адресу:
https://support.google.com/accounts/answer/6010255?hl=ru
32.4. Настройка РНР
Откройте нужный файлрhр.iпi.
Он хранится, как правило, в каталоге /etc/php7/apache2/php.ini или /etc/php5/
apache2/php.ini (если используется РНР 5).
Найдите параметр sendmail_path и установите его так:
sendmail-path = /usr/sbin/ssmtp -t
'
-о
§
�
�
.
Теперь попробуйте отправить 'почту функцией mai!Q. Все должно быть нормально. Если же нет, функция mailO сразу же вам сообщит о проблеме и это
будет не просто сообщение, а сообщение с подробным описанием ошибки.
,
a!I··················································································
1 1 ll', 1 ; 1 11.11: 1 рн111,а IIH'l 11,1 11,1 1н·tl-t.·t:pвt.·1н·
32.5. Возможные проблемы
Нужно понимать, что не только РНР будет использовать ssmtp. Эта програм­
ма при установке заменяет системную программу sendmail, следщ1ательно,
почта, отправляемая друтими процессами, также будет поступать на указан­
ный в конфигурационном файле почтовый ящик.
Самый опасный процесс - cron. В его расписан:ии могут быть команды, вы­
полняемые раз в минуту. Следовательно, раз в минуту cron будет отправлять
администратору отчет о выполнении команд. На практике это приведет не
только к захламлению почтового ящика, но и к тому, чтo,Google перестанет
вас обслуживать (посчитает спаммером, так как вы очень часто отправляете
почту).
Что делать?
Нужно отредактировать расписание cron как минимум для трех пользовате­
лей - текущего (от имени которого вы обычно работаете), www-data и root.
Соответствующие команды:
crontab -е
crontab -е -и www-data
crontab -е -u root
В расписании нужно убедиться, что в качестве параметра MAILTO указана
пустая строка:
МAILTO=""
Вот теперь с почтой должно быть все хорошо. Если что-то пойдет не так, вы
всегда сможете просмотреть журнал /var/log/mail.log (рис. 32. l ).
· Как видите, на все про все ушло немного времени, и почта теперь настроена.
Аналогичным образом можно использовать и другие аккаунты, а не только
Google. При использовании Google помните, что максимум вы можете
отправить не 9олее 500 сообщений в день. Именно поэтому нам и пришлось
,
................................................................................ ..
: S: с:;·
lk'1, l.iriu,
отключить отправку писем планировщиком cron - он может генерировать
слишком много писем и на отправку полезных писем пользователем уже не
хватит квоты. Если 500 писем для вас - мало, рассмотрите использование
Яндекса - там лимит 3000 сообщений в сутки, что значительно выше, чем у
Google.
Рис. 31.1. Журнал maiLlog
•
.....................................................................................
Глава 33.
РЕШЕНИЕ ТИПИЧНЫХ
ПРОБЛЕМ С СЕРВЕРОМ
л •
Во время эксплуатации веб-сервера периодически возникают проблемы.
Это не очень хорошо, но вполне нормально и в некоторых случаях - пред­
сказуемо. В этой главе мы рассмотрим ряд типичных проблем и их решение.
33.1. Сайт недоступен. Поиск причины
Иногда сайт "падает", попросту говоря - становится недоступным. Если ваш
сайт - не ваша персональная страничка, то простой может стоить как денег,
так и репутации. С репутацией понятно. С деньгами тоже - вы не сможете
продавать свой продукт, если сайт "лежит". Чем быстрее вы поймете, в чем
причина, тем лучше. А чтобы оперативно узнавать, что сайт недоступен, рекомендуем или установить агент мониторинга вроде Zabbix (это сложнее,
зато сообщаемая статистика более качественная - можно узнать и о нагрузке
на сервер, и о переполнении дискового пространства и т.д.) или восполь­
зоваться сервисами вроде Яндекс.Метрика - такие сервисы периодически
опрашивают веб-сайт и отправляют уведомление администратору, если сайт
недоступен.
.;;
Далее мы рассмотрим три наиболее вероятных причины "падения" сайта.
�
ческам, то с "железом" все в порядке и нет никаких аппаратных неисправностей.
Е
:,:
�
Будем считать, что сайт нкрутится 11 на виртуаль:ыом сервере, а если на физи-
•
................................................................................... .
_
1 1,11\,1 '' 1•t..•111t..'IIIH.' 1 111111'1111.1\ 11pofi lt..'\I t..· (.'t..•р1н.·рн,1
33.1.1. Закончилось дисковое пространство/свободные иноды
Самая банальная причина падения сайта. Во время работы сетевые сервисы
вроде Apache, MySQL генерируют приличные объемы данных - журналы,
временные файлы, не говоря уже о загружаемых пользователями данных.
Сервису просто некуда дальще писать данные и он "крашится". Также при­
чиной падения· того же Apache может быть чрезвычайно большой размер
журнала.
Проверить свободное дисковое пространство можно
командой df-h.
Я рекомендую следующее:
• Чтобы регулярно не проверять дисковое пространство, установить сер­
. вис мониторинга для автоматизации данного процесса. Можно настроить
тот же ZabЬix или написать сценарий на bash для мониторинга дискового
пространства.
• Настроить logrotate для ротации и сжатия файлов журналов основных
сервисов. Как правило, после установки logrotate все необходимые на­
стройки уже будут в конфигурационных файлах, администратору оста­
нется только убедиться в том, что logrotate запускается автоматически.
Далее будет показано, как это сделать.
Куда подевалось дисковое пространство?
• Временные файлы - загляните в /tmp. Как правило, оттуда можно уда­
лить сразу все.
• Файлы сессий -_каталог зависит от настроек движка.
• База данных - для сокращения ее размера базу данных можно оптими­
зировать. Также можно выполнить специфические для движка запросы.
Например, для WordPress следующий запрос удаляет комментарии со
спамом, что может существенно сократить размер базы данных:
,
DELETE FROM wp_commentmeta WHERE comment id NOT IN (SELECT
comment_id FROM wp_comments)
................................................................................ ..
..,.
lkc1, 1 irнl\
• Мэйл-боксы - стандартные почтовые ящики мало кто проверяет, а они
могут быть заспамлены. Обычно они хранятся в /var/mail. Несколько ги­
габайтов спама - вполне реально.
• Журналы - просмотрите в /var/log. Лучше всего настроить logrotate для
ротации и сжатия журналов, но если некоторые журналы слишком боль­
шие и из-за них сервис не запускается, их можно удалить.
• Резервные копии - возможно, вы не воспользовались услугой резерв­
ного копирования, а настроили создание бэкапов с помощью системного
ПО. В этом случае проверьте каталог с бэкапами и удалите старые резерв­
ные копии.
А теперь внимание! Иногда заканчивается не свободное место, а свободное
количество инодов (i-node). Результат такой же - система не может создать
файл и сайт "падает" из-за подвисания сетевого сервиса. Куда подевались
иноды? Некоторые движки, например, Magento, генерируют слишком много
файлов сессий (обычно хранятся в /var/session, но все зависит от настроек
движка). Такие файлы очень маленькие, места практически не занимают,
зато крадут драгоценные иноды. Одна из тактик - регулярно чистить каталог
сессий. В cron добавляется вот такой сценарий:
cd /var/�ession
for i in sess *; do rm -fv $i; done
Недостаток этого способа в следующем:
• При удалении сессий стирается вся информация о пользователе, напри­
мер, его корзина и данные о регистрации. Заходит пользователь в ваш ма­
газин, выбирает товары и помещает в корзину. Тут запускается сценарий
очистки и мало того, что корзина стерта, так ему еще и предлагают заново
войти. Продаж магазину это не добавит.
• На одном из сайтов популярность была такова, что сессии очень быстро
съедали все доступные иноды. Приходилось запускать их чистку чуть ли
не раз в час, иначе сайт нормально не работал. Сами понимаете, раз в
час всех пользователей, в том числе и менедж�ров будет "выбрасывать" с
сайта - дело не очень хорошее.
•
ID-----------····················-·········-·············-···-··-··········--··-····
1 1,ш.1 , , Pl·111r1111r 1111111•1111.1, 11poii.1l'\I с l't'IHll'po,1
Альтернативное и более правильное решение заключается в создании еще
одного диска (или раздела) с файловой системой reiserfs. Она не блещет
производительностью, зато позволяет в одном блоке хранить несколько фай­
лов - пока размер блока физически не заполни�ся. Reiserfs полностью ре­
шила проблему с инодами. Теперь сервер спокойно держит миллионы фай­
лов инодов и чистить /var/session пр�ходится довольно редко - на данном
сервере автоматическая чистка вообще выключена и производится вручную
администратором раз в месяц при регулярном обслуживании сервера.
33.1.2. Нехватка прочих ресурсов
Кроме дискового пространства, не нужно забывать о памяти и ресурсах про­
цессора.
Здесь поможет команда htop, которая показывает не только
запущенные процессы, но и потребляемые ресурсы.
Одна из причин падения сайта - нехватка ресурсов, особенно, если речь
идет о монстрообразных движках вроде Symfony, Magento и т.д. Они чув­
ствительны не только к оперативке, но и к количеству ядер.
Если у вас виртуальный сервер, вам повезло - добавить новые ресурсы мож­
но с помощью пары кликов мышкой. А вот с физическим сложнее - придет­
ся докупать оперативную память и модернизировать сервер вручную. Все
это - время и деньги.
33.1.3. Неправильная конфигурация сервера
Мало выделить ресурсы, важно еще их правильно использовать.
Если программное обеспечение использует ресурсы неэффективно, сайт мо­
жет "падать". Типичный пример - "крушение" Apache из-за нехватки макси­
мального количества процессов, которые может запустить Apache. В логах
сообщение выглядит примерно так:
•
·---------------------------------------------------------------------------------111
t;
u
11" 1, 1 i1111\
[Sat Jun 27 11: 59: 59. 443036 .2020) [mpm_prefork: error] [ pid 37252)
АНОО161: server reached MaxRequestWorkers setting, consider raising
the MaxRequestWorkers setting
Здесь все казалось бы просто.
Нужно открыть ко'нфиг /etc/apache/apache2.conf и повысить значение
MaxRequestWorkers. Но не спешите этого делать. Сначала выполните htop
и посмотрите размер процесса Apache. Например, пусть процесс Apache за­
нимает 100 Мб. Если вы установите 150 одновременных процессов, то пона­
добится 150 * 100 почти 15 Гб памяти и это нужно учитывать. Не забывайте,
что для системы и других процессов (того же MySQL) также нужна память.
Поэтому не переусердствуйте с этим параметром и не забывайте добавлять
необходимые ресурсы в панели управления сервером.
Если же установить MaxRequestWorkers больше, чем может поместиться в
памяти, в логах появится неоднозначная запись:
[Sat Jun 27 15:29:04.747616 2020) [core:notice] [pid 37252) АН00051:
child pid 32103 exit signal Segmentation fault (11), possiЫe coredump
in /var/coredumps
Экспериментальным путем было выяснено, что причина в нехватке оперативной памяти.
Сервис MySQL особенно с его движком lnnoDB тоже требователен к пра­
вильной настройке. База данных может легко подвиснуть при сохранении
изменений вот с такой ошибкой:
SQLSTATE[HY000J: General error: 1205 Lock wait timeout
exceeded; try restarting transaction
Если MySQL еще жив, можно попробовать от админа БД ввести запрос:
SET GLOBAL innodb lock wait timeout
120;
•
....................................................................................
) 1,11"1 '�
p(.'IIH'IIIH.' 1111111'1111.1\ lll)Ofi l(.'\J (.' t'('l)IH'l)O\I
Этот же оператор поможет, если перезапуск MySQL временно невозможен.
Для постоянной установки значения конфигурации нужно открыть файл
/etc/my.cnfи установить новое щачение:
[mysqld]
innodb lock wait timeout=l20
После этого нужно перезапустить MySQL и попробовать поработать при но­
вом значении.
Ошибки в работе могут быть вызваны и неправильной установкой параме­
тра innodb_buffer_pool_size.
В этом случае в логе может быть такое сообщение:
Memory size allocated'for the tempprary tаЫе is more than 20% of
innodЬ_buffer_pool_size.
Такое сообщение будет сгенерировано, если размер памяти, выделяемый для
временной таблицы на 20% больше, чем значение innodb_buffer_pool_size.
Нужно просто увеличить значение этого параметра.
В большинстве случаев журналы помогут в расследовании падения сервера
- в них даже приводятся четкие указания относительно того, какие параме­
тры нужно. изменить для нормальной работы сайта. Если подытожить, то
причины падения сайта сводятся к нехватке ресурсов и неправильной кон­
фигурации программного обеспечения.
33.2. Сценарии автоматического перезапуска
служб в случае сбоя
Очень плохо, когда сайт падает. Гораздо хуже, когда он падает по непонят­
ной причине. Иногда на установление причины сбоя может понадобиться
продолжительное время, если все это время сайт будет "лежать" админи­
стратора могут просто уволить. К счастью, есть решение, позволяющее не­
много скрасить "горечь падения" и оно будет описано в этом разделе.
•
·--------------------·-·-··-·-··---··--·-········-···-·-··············-·······-··-111
Суть решения в следующем: нужно настроить/написать самому средство
мониторинга работоспособности сайта. Если сайт "упал", это средство будет
перезапускать сервисы Apache и MySQL (или только Apache - все зависит от
специфики сайта и причины сбоя).
Решение, конечно же, временное. Нужно найти и устранить причину паде­
ния, но зато такой "костыль" позволяет быстро восстановить работоспособ­
ность сайта: руководство даже не заметит сбой. Что же касается обычных
пользователей, то даже если кто-то и получит ошибку Server Error, а через
минуту сайт уже будет работать, вряд ли кто-то будет особо жаловаться.
Проверять работоспособность сайта можно двумя способами: или пытать­
ся получить реальный файл (можно для этого создать пустой файл в корне,
важно получить 200-ый ответ от сервера) или же мониторить наличие сер­
висов apache/mysq\ в памяти. Второй способ не защищает от ситуации, когда
сервисы "подвисли" - в памяти они есть, но на самом деле сайт "лежит".
Первый способ не позволяет убедиться в работоспособности MySQL: файл
веб-сервер может и "отдать", а база данных может не работать.
33.2.1. Проверка работоспособности веб-сервера
Проще всего проверить работоспособность веб-сервера путем обращения к
его главной странице: если получен ответ 200, значит с сервером все хорошо.
Ваsh-сценарий будет выглядеть так (адрес можно заменить на https://, если
используется защищенный протокол):
#!/Ьin/bash
if curl -s --head --request GET http://site.name I grep "200 ОК" >
/dev/null;
then
echo "�ite is UP"
else
echo "site is DOWN, restarting Apache"
/usr/sЬin/service apache2 restart
fi
•
Вызов сценария нужно поместить в расписание cron. Периодичность зави­
сит от частоты падения сервера - если сервер сбоит иногда, можно раз в 5-1 О
....................................................................................
1 1,111.1" l'r111c1111t• 1111111'1111,ix 11pou.1t'\I t· ct•p11t•1m,1
минут, если сайт "лежит" часто - раз в минуrу. Да, это создаст дополнитель­
ную нагрузку на сервер, но зато обеспечит его перезапуск в течение одной
минуты.
33.2.2. Проверка работоспособности MySQL
Напишем небольшой РНР-сценарий, подключающийся к БД и возвращаю­
щий 1, если соединение удалось и О, если соединение не работает.
Собственно, код этого сценария очень·прост:
<?
include "config.php";
// здесь параметры доступа к БД
$mysqli = new mysqli($DBHOST, $DBUSER, $DBPASSWD, $DBNAМE};
if ($mysqli->connect_errno}
echo "0";
else "1";
?>
// connect ok
Затем создается Ьаsh-сценарий подобный этому:
#!/Ьin/bash
RESULT=$(/usr/Ьin/php test-mysql.php}
if [ $RESULT -eq О]; then
echo "Restarting MySQL"
/etc/init.d/mysqld restart
fi
Как и в случае с первым нашим Ьаsh-сценарием, вызов этого сценария нуж­
но поместить в расписание планировщика.
Можно объединить эти два Ьаsh-сценария в один и вызывать все сразу.
•
··················································································al
t:
u
lk ll, 1 i,111,
33.2.3. Если падают процессы
Если процессы не виснут, а "падают", то есть после сбоя вообще нет про­
цессов Apache/МySQL в таблице процессов, тогда поможет следующий сце­
нарий:
#!/Ьin/bash
RESTART="/etc/init.d/apache2 restart"
PGREP.="/usr/Ьin/pgrep"
HTTPD':'"apache2"
$PGREP ${HTTPD)
if· [ $? -ne В]; then
$RESTART
date >> /var/log/srvmon.log
echo "Apache restarted" >> /var/log/srvmon.log
fi
RESTARTM="/etc/init.d/mysql restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD)
if [ $? -ne О]; then
$RESTART
$RESTARTM
date >> /var/log/srvmon.log
echo "Services ·restarted" > /var/log/srvmon.log
fi
Он не только перезапускает "упавшие" сервисы, но и ведет небольшой лог записывает время, когда сервисы были перезапущены.
33.2.4. Monit: если нет таланта программиста
Все приведенное ранее можно сделать и с помощью сервиса monit.
�
�
�
.
Его задача - мониторинг работоспособности сервера. Если что-то не так, то
monit может перезапустить ту или иную служ(Зу.
'
-----------------------------------------------------------------------------------·
1 I,Iн,I ; { Pt.·111t.·111н· 111111111111.1, 11рнi» н·,1 t.· t.·t.•р1н·1нн1
В Интернете есть множество статей, посвященных monit, к тому же у него
очень хорошая документация. Поэтому переписывать ее не станем. Вместо
этого приведем реальный конфигурационный файл мониторинга Apache:
check process apach-e with pidfile /var/run/apache2 .pid
group www
group apache
start program
"/etc/init.d/apache2 start"
stop program
"/etc/init.d/apache2 stop"
f если загрузка cpu > 90% 5 циклов то перезапустить процесс.
if cpu > ·90% for 5 cycles then restart
f если не удается получить файл server-status, перезапустить
if failed host localhost port 80 with protocol http and request
"/server-status" with timeout 25 seconds for 4 times within 5 cycles
then restart
depend apache bin
depend apach�=rc
check file apache_Ьin with path /usr/sЬin/apache2
group apache
include /etc/monit/templates/rootЬin
check file apache_rc with path /etc/init. d/apache2
group apache
include /etc/monit/templates/rootЬin
Конфигурация monit понятна даже новичку. На конкретном сервере была
проблема с большой загрузкой процессора, после пика загрузки сервер па­
дал. Поэтому было добавлено две проверки: если загрузка процессора выше
90%, сервис перезапускался и если сервер уже упал (не удается получить
файл), то сервис тоже перезапускался.
33.3. Борьба с сессиями Magento: защита от
переполнения диска
Magento хранит в сессиях информацию о деятельности пользователя на сай­
те, в том числе информацию о корзине посетителя. Примечательно, но эта
информация так и не удаляется, в конечном счете, в каталоге var/session
собирается огромнее количество файлов (конечно, если в настройках
••
....................................................................................
lkc1, l,i1111x
Magento указано, что сессии хранятся в файловой системе, а не в базе дан­
ных).
Хранение сессий в базе данных решает эту проблему, но создает новую база данных будет изрядно подтормаживать со временем.
Когда в каталоге var/session накопится очень много файлов, это приведет к
тому, что обычная команда rm * работать не будет - вы получите сообщение
о том, что список файлов слишком длинный. Другими словами, просто так
их уже не удалишь.
Вторая часть проблемы в том, что на диске, на котором хранится каталог
с сессиями, могут закончиться свободные иноды. Свободное пространство
еще будет, но не будет свободных блоков для хранения файлов.
Эта проблема характерна для файловых систем, которые используют мини­
мум один блок для хранения одного файла. Представьте, что размер блока
равен 4096 байтов, а файл занимает 200 байтов. Тогда эти 200 байтов займут
весь блок размером 4096 байтов.
Для диагностики проблемы помогут следующие команды:
df -h
df -i
cd var/session
1s -1 1 wc -1
Первая возвращает информацию о свободном пространстве, вторая - об
использовании инодов, последние 2 команды - подсчитывают количество
файлов сессий. Несколько миллионов сессий за один месяц - вполне нор­
мальное число.
Все это приводит к тому, что сама Magento начинает изрядно подтормажи­
вать, а если закончатся свободные иноды, то сервер перестанет функциони­
ровать, поскольку система не сможет записать данные на диск.
33.3.1. Решение 1: сценарий
Следующий сценарий удаляет все файлы из каталога сессий:
•
---------------------------------------------------------···········-·········-·--·
1 1 tв.1 � � Pt.·111t.·1111t.· 1 11111111111.1, 11 рнГ..1е,1 t.· t.·t.·1нн·1н1,1
Jt!/Ьin/bash
4f измените путь к каталогу с сессиями
cd /пyть/var/session
for i in sess_*; do rm -fv $i; done
Данный сценарий нужно запускать регулярно (добавить в расписание cron).
Слишком часто запускать его не нужно - ведь при удалении файла сессии у
пользователя будет очищена корзина, а все менеджеры будут "выброшены"
из панели управления. Именно поэтому запускать его нужно не чаще раза в
сутки и не в бизнес-время. Лучше всего часа в 3-4 ночи, когда посетителей
на сайте минимум.
33.3.2. Решение 2: смена файловой системы
Если файлы сессий "плодятся" чаще, чем того хочется, тогда придется соз­
дать еще один виртуальный диск и отформатировать его как reiserfs. Пре­
. имущество этой файловой системы в том, что в одном блоке она может
хранить несколько мелких файлов, и проблема с недостатком инодов будет
решена сама собой. Да и работает reiserfs с множеством мелких файлов уве­
реннее - Magento перестанет тормозить.
Отформатировать раздел диска как reiserfs можно так:
sudo mkreiserfs /dev/sdЫ
Здесь раздел /dev/sdЫ будет использовать файловую систему reiserfs. Учи­
тывая, что сессии занимают немного места, не нужно покупать огромный
виртуальный диск. Несколько гигабайтов (до 10) будет вполне достаточно.
Затем этот раздел нужно указать в /etc/fstab для его автоматического мон­
тирования (будем считать, что монтироваться будет к /rnnt/reiserhdd - этот
каталог должен существовать):
/dev/sdЫ /media/reiserhddreiserfs
•
·ctefaults
1
о
·---------------------------------------------------------------------------------CD
�
u
1 {,' 1, 1 i1111 \
Подмонтируем каталог:
sudo mount /dev/sdЫ
Осталось указать новый каталог в файле app/etc/config.xml:
<default>
<system>
<filesystem>
reiserhdd</session>
<session>/media/
,
</default>
33.4. Ротация журналов сервера
..., :
::
:а '
.."'.,
..=
w
:а
''
Журналы в Linux иногда разрастаются до неприличных размеров, что при­
водит к снижению производительности и в некоторых особо запущенных
случаях может даже вызвать переполнение дискового пространства. К сча­
стью, администратор может использовать утилиту logrotate для управления
журналами.
Logrotate - это утилита, выполняющая ротацию и сжатие
файлов протоколов (журналов).
При правильной настройке файл журнала никогда не разрастется до огром­
ных размеров. Если же Logrotate не установлена или же неправильно на­
строена, файлы журналов некоторых сервисов (например, Apache) могут за­
нять все доступное дисковое пространство.
По умолчанию Logrotate установлена в UЬuП'tu, начиная с версии 16.04 и
настроена для обработки журналов всех установленных пакетов и приложе­
ний, в том числе rsyslog. В других дистрибутивах она может быть даже не
•
....................................................................................
•
1 1,111,1 ; ;
Рt.·11н·111н· 11111 1.-1111.1, 11рнt» It.·,1 �.- t.·t.·pнt.·pн,1
установлена, а на некоторых виртуальных серверах - по непонятным при­
чинам - не настроена.
Не смотря на то, что Logrotate уtтановлена по умолчанию, будет нелишним
проверить ее конфигурацию. На одном из моих серверов почему-то не вы­
полнялась ротация журналов Apache, в результате прризошло переполнение
дискового пространства.
Конфигурация Logrotate хранится в следующих местах:
• Файл /etc/logrotate.conf - основной файл конфигурации. Как правило, он
содержит некоторые параметры по умолчанию, настройки для несколь­
ких журналов, не принадлежащим системным пакетам и инструкцию in­
clude для подключения конфигурации, хранящейся в файлах каталога /
etc/logrotate.d
• Каталог /etc/logrotate.d содержит файлы с конфигурацией Logrotate.
Здесь вы найдете конфигурацию для rsyslog, apport, dpkg и других си­
стемных пакетов. Каждый файл - это конфигурация ротации того или
иного журнала. Вы можете добавить свои файлы конфигурации, которые
также будут обработаны утилитой Logrotate.
Рассмотрим конфигурацию ротации журналов для apport - файл /etc/
logrotate.d/apport:
/var/log/apport.log
daily
rotate 7
delaycompress
compress
notifempty
missingok
Вот что означают все эти параметры:
• daily - ротацию выполнять ежедневно (для редко используемых сервисов
можно использовать команду monthly - ежемесячно или weekly - еже­
недельно)
,
• rotate 7 - хранить последние 7 файлов журналов
................................................................................ ..
lkcl, \,i1111\
• compress - сжать обновленные файлы (по умолчанию используется сжа­
тие gzip)
• delaycompress - отложить сжатие предыдущего файла журнала до сле­
дующего циклического сдвига. Эта директива имеет силу только в ком­
бинации с compress. Это может быть использовано в том случае, если не­
кой программе нельзя указать закрыть ее файл журнала, и таким образом,
можно некоторое время продолжать запись в предыдущий файл журнала
• notifempty - не ротировать пустой файл
• missingok - не записывать сообщение об ошибке, если журнал пуст
Конечно, это далеко не все допустимые параметры конфигурации. О допол­
нительных вы можете узнать в справке (команда тап logrotate) или найти в
сети Интернет.
Теперь представим, что у нас есть некий сервис daemond, хранящий свои
файлы ·журналов в каталоге /var/log/daemond. Нужно настроить ротацию
журналов этого сервиса.
Все достаточно просто: нужно в /etc/logrotate.d создать файл daemond
(название может быть другим, важно, чтобы вы понимали, что находится в
этом файле сразу по его названию) и заполнить конфигурацию ротации.
Создадим файл конфигурации ·ротации:
touch· /etc/logrotate.d/daemond
�
�
]
�
§
§
Конфигурация может быть такой:
/var/log/daemond/*.log
daily
missingok
rotate 7
compress
notifempty
create 0640 daemon-data daemon-data
sharedscripts
postrotate
s-ysterc;rt.l reload daemond
endscript
}
•
•
....................................................................................
1 1,1в,1 � � Ренн.·11111..· 1 111111'1111.1, 11pofi.1e,1 1...· t't'JH\l')HJ\I
Первая строчка задает файлы журналов. В нашем случае - это все lоg-файлы
из каталога /varЛog/daemond. С,первыми пятью командами вы уже знакомы.
Команда create определяет, что после ротации будет создан новый пустой
файл журнала с правами 0640, владельцем daemon-data и группой daemon­
data. Если ваш сервис выполняется от имени какого-то пользователя
(например, daemon-data), а не от root, то очень важно указать правильно имя
пользователя и группы.
Параметр sharedscripts означает, что скрипт postrotate будет f!ЫПолняться
только один раз, а не после обработки каждого файла.
Параметры postrotate и endscript позволяют указать скрипт, который будет
запушен после того, как файл журнала обновится. В примере приложение
перезагружается.
Осталось настроить Logrotate на автоматический запуск. Чтобы эта утилита
запускалась автоматически, от имени root введите команду crontab -е и в
появившемся редакторе добавьте строку:
10 * * * *·/usr/sЬin/logrotate /etc/logrotate.conf
Сохраните файл и выполните выход из редактора. Мы создали расписание
планировщика, которое будет выполнять logrotate на 1 О-ой минуте каждого
часа. Конфигурация будет загружаться из файла /etcЛogrotate.conf.
: 33.5. Десятка утилит для мониторинга сервера
Мониторинг сервера - одна из обязанностей администратора, а сейчас мы
рассмотрим некоторые полезные инструменты, позволяющие сделать вы­
полнение этой обязанности комфортнее. В этом разделе будут рассмотрены
только простые утилиты, не требующие сложной настройки и даже установ­
ки - многие из них устанавливаются по умолчанию. Конечно, для полно­
ценного мониторинга необходимо установить систему вроде Zabbix, но не
всегда администратор захочет разбираrься с установкой довольно сложной
системы, если есть с десяток отличных и простых утилит.
•
·----------·-·----------·--·-·-·····---·--·--·---·---·-··------···········----·------
lkc1, l.iriux
33.5.1. htop - информативная версия top
Команда htop является усовершенствованной версией всем нам знакомой ко­
манды top.
::::1
,::,
".,
::
о:
Кроме информации об использовании системных ресурсов
процессами, которая мало чем отличается от команды
top, но представлена в более удобном виде, команда htop
строит псевдографические графики загрузки каждого ядра
процессора, памяти и свопа.
В принципе практически то же самое, что и top, но красивее и нагляднее.
"
Рис. 33.1. htop - ·более информативная версия top
•
....................................................................................
1 1:111,1 1 � l'c111t•1111t· 1 111111•1111,1, 111юfi.1t'\I с ct•1111t•1ю\l
33.5.2. atop - продвинутый монитор процессов
Если команда htop - более наmядная версия top, то atop - совсем другая
зверушка.
atop - это продвинутый интерактивный монитор
производительности. В отличие от top, выводит только новые
изменения об активных системных процессах и позволяет
контролировать нагрузку процессора, памяти, накопителя,
сети, а также просматривать распределение нагрузок по
работающим процессам.
В UЬuntu и DeЬian запускается автоматически и постоянно записывает ин­
формацию о процессах в /var/log/atop.log.
•
Рис. 33.2. аtор-монитор производительности
························································--························81
Весь l,inux
33.5.3. apachetop - мониторинг веб-сервера в реальном
времени
apachetop предоставляет информацию о текущем положении
дел веб-сервера и даже о URL, к которым обращаются в
данный момент.
Утилита apachetop не устанавливается по умолчанию, для ее установки
нужно инсталлировать одноименный пакет. Опция -/позволяет задать файл
access_log, если его расположение отличается от стандартного или если
нужно мониторинг журнал доступа определенного виртуального хоста.
::с:
-6 :
Рис. 33.3. Утилита apachetop
33.5.4. mytop - мониторинг MySQL
Если есть утилита мониторинга Apache, то, вероятно, должна быть и утили­
та мониторинга MySQL.
....................................................................................
l .1ава .В. Реше,ше l llllll'IIIЫX 11poб!IC\I С CCJJBCJ)O\I
Для ее запуска нужно указать три параметра:
1. -и - задает имя пользоватещ;
2. -р - задает пароль;
3. -d- база данных.
Предоставляет информацию о нагрузке на сервер базы данных и даже пока­
зывает текущие SQL-запросы, поступаемые от МуSQL-пользователей.
Рис. 33.4. Утилита mytop: мониторинг MySQL
33.5.5. iotop - мониторинг ввода/вывода
Сервер тормозит? Есть подозрение на дисковую подсистему?
•
·-----------------------------------------------------------------------------------
lkt:1, l.illll\
Утилита iotop позволяет определить процесс, узурпировавший
всю подсистему ввода/вывода.
Рис. 33.5. Утилита iotop
33.5.6. iftop - мониторинг сетевого интерфейса
Утилита iftop похожа на утилиту top, но вместо проверки
использования процессора она прослушивает сетевой
трафик на выбранных интерфейсах и отображает таблицу
текущего использования.
Она позволяет ответить на вопрос: "Почем)' мое соединение такое медлен­
ное?".
............
•
--------·---·------··---··-·-···--···--------'-·--··---··-·-·----·-----·
l11a11a 13 l'cшc1111t· 1 111111'1111,1\ 11роб.1t•\1 с t·t·1111t·1ю\l
Рис. 33.6. Утилита iftop
Если у вас - виртуальный сервер, то вы будете удивлены,- когда узнаете, ка­
кими жадными могут быть облачные провайдеры. Некоторые из них выделя­
ют канал для виртуального сервера - не более 1 О Мбит/с. И это в 2024 году ...
А дополнительная пропускная способность будет доступна, правильно, за
дополнительную плату.
33.5.7. jnettop - еще один монитор сетевого интерфейса
На первый взгляд _похожа на ifiop, но отличия есть и существенные.
˘˜
˛ˇ˜
•
iftop ˛ˇ˜
˜ ˜
ˇ˚˜
˜ ˛˜
˜
˙˜
˜ ˛˜
˙˜
ˆ˜
ˆ˜ jnettop
˝˜
....................................................................................
=
::,.
о:
:;,::
lk,ъ l.i11ux
Можно увидеть, какие файлы (картинки, сценарии, НТМL-страницы и т.д.)
передаются в данный момент клиентам.
Не устанавливается по умолчанию, для ее установки нужно инсталлировать
одноименный пакет.
Рис. 33.7. Ymuлumajnettop
33.5.8. iptraf - мониторинг трафика
Утилита предоставляет различные полезные метрики вроде
счетчика ТСР-пакетов, счетчика байтов, статистику по
интерфейсу, индикаторы активности и т.д.
•
---················································································
1 1ав,1 :,:, l'сшс1111с 1 11111t'IIIЫ\ щюб.Н.'\1 с ccpнcptl\l
::;
;;:
:;;
с.
"'
UOP (328 bytes) frot11 е.е.е.е:68 to 2ss.2ss.2ss.2ss:67 on ethe
UDP (64 bytes) frOII 18.10.1.20:55488 to 10.10.1.1:sз on ethe
UDP (64 by1:os) froot 10.10.1.20:55480 to 10.10.1.1:53 on othe
UOP (212 bytes) from 18.10.1.1:53 to 18.10.1.20:S5480 on @th0
UDP (260 by1:os) fro,n 1е.1е.1.1:53 to 1е.1е.1.2е:5548е on othe
UDP (328 bytes) from е.е.е.0:68 to 255.255.255.255:67 on ethe
UDP (328 Ь tes) froo, 0.е.е.е:68 to 255.255.255.255:67 on ethe
..s �
.... :
1U'9
�-
11:1' fJao r8t8:
Рис. 33.8. Мо11иторинг трафика с помощью iptraf
33.5.9. ngrep - утилита для профессионала
Утилита ngrep - это то же самое, что и обычный grep, но
для сетевого уровня. Она позволяет просмотреть все
передаваемые пакеты.
Есть возможность задания фильтров, в том числе с помощью регулярных
выражений.
Примеры использования ngrep можно найти по этой ссылке: http://ngrep.
sourceforge.net/usage.html
•
··-···------·--·--·---··-------------------------·--------·---·-----------·---------
lkLI, l.i1111\
g
Рис. 33.9. Утилита ngrep
�
33.10. nmon - швейцарский нож
�
�
Утилита nmon - мониторинг на все случаи жизни. Запустите ее и выберите
объект, по которому вы хотите получить статистику - процессор, память,
диски, ядро, сеть, виртуальная память и т.д.
�.,
В заключение этой главы хотел бы добавить небольшой лайфхак - для выхо­
да из большинства утилит нужно использовать q, Ctrl + Х или Ctrl + С. Один
из этих способов да сработает - это на случай, если программа не выводит
подсказку.
•
аа------------------------------------------------------------------·-····-··-·-··-·
l .1a11a 31. 1>сшс1111с 1111111•1111,1, 111юfi.1t•�1 t· сt•рщ•рн,1
�
u
Рис. 33.10. Утилита птоп
•
······························--·-···-·-·------·--·-·--··---··----·--·---------·--·al
ПРИЛОЖЕНИЕ 1.
КОМАНДНЫЙ
ИНТЕРПРЕТАТОР BASH
л •
I\" 1 1 itlll\
В этом приложениw мы рассмотрим командный интерпретатор bash. Это·
больше, чем просто средство для ввода команд, у него есть свои параметры
и свои команды. Да, да, именно команды. На bash можно написать сценарии
(подобно тому, как в MS DOS создавались ВАТ-файлы). Возможности bash
подобны языку программирования - есть управляющие структуры, циклы и
т.д. Знание возможностей bash не менее важно для полноценного использо­
вания операционной системы Linux, чем использование функций ядра или
рабочего окружения. Обо всем этом мы поговорим в данной главе.
Пl.1. Настройка bash
bash - это самая популярная командная оболочка (командный интерпрета­
тор) Linux.
Основное предназначение bash - выполнение команд,
введенных пользователем.
Пользователь вводит команду и bash ищет программу, соответствующую ко­
манде, в каталогах, указанных 1 в переменной окружения РАТН. Если такая
программа найдена, то bash запускает ее и передает ей введенные пользо­
вателем параметры. В противном случае выводится сообщение о невозмож­
ности выполнения команды.
•
.....................................................................................
\\р11,южс1111с I Кома11.111ыii 1111н·р11рt·1а1ор /11/\/1
Интерпретатор bash - не единственная оболочка, доступная в вашей
системе.
Список доступных оболочек д'оступен в файле /etc/shells. В большинстве
случаев по умолчанию используется bash.
Файл /etc/profile содержит глобальные настройки bash, он
влияет на всю систему - на каждую запущенную оболочку.
Обычно /etc/profi\e не нуждается в изменении, а при необходимости изме­
нить параметры bash редактируют один из файлов:
• ~/.bash_profile - обрабатывается при каждом входе в систему;
• ~/.bashrc - обрабатывается при каждом запуске дочерней оболочки;
• ~/.bash_logout- обрабатывается при выходе из системы.
Файл ~/.bash_profile часто не существует, а если и существует, то в нем есть
всего одна строка:
source ~/.bashrc
Данная строка означает, что нужно прочитать файл .bashrc. Поэтому будем
считать основным конфигурационным файлом файл .bashrc. Но помните,
что он влияет на оболочку текущего пользователя (такой файл находится
в домашнем каталоге каждого пользователя, не забываем: "~" означает до­
машний каталог). Если же вдруг понадобится задать параметры, которые
повлияют на всех пользователей, то нужно редактировать файл /etc/profile.
..
с.
Файл .bash_history (тоже находится в домашнем каталоге)
содержит историю команд, введенных пользователем .
,
Здесь вы можете просмотреть свои же команды, которые вы накануне вво­
дили.
................................................................................ ..
lkcl, l,intJ\
Конфигурация bash хранится в файле .bashrc.
Обычно в этом файле задаются псевдонимы команд, определяется внешний
вид приглашения командной строки, задаются значения переменных окру­
жения.
Псевдонимы команд задаются с помощью команды alias, вот несколько при­
меров:
alias h='fc -1'
alias 11='1s -laFo'
alias l='ls -1'
alias g='egrep -i'
Псевдонимы работают.просто: при вводе команды/ на самом деле будет вы­
полнена команда ls -/.
Теперь рассмотрим пример изменения приглашения командной строки.
Глобальная переменная PS I отвечает за внешний вид командной строки. По
умолчанию командная строка имеет формат:
пользователь@компьютер:рабочий_каталог
Значение PS I при этом будет:
PS1='\u@\h:\w$'
В табл. ПI .1 приведены допустимые модификаторы командной строки.
Q
"',.,
Таблица П 1.1. Модификаторы командной строки
Модификатор
Описание
\а
АSСП-символ звонка (код 07). Не рекомендуется его
использовать - очень"Скоро начнет раздражать
\d
Дата в формате "день недели, месяц, число"
•
&1-------------------------------------------------------------------·-----·-------·
llp111,>,1,с·1111с· 1
\h
h'o,ia111111,111 1111н·р111н·1а111р lll/\11
Имя компьютера до первой точки
Полное имя компьютера
•
\j
Количество задач, запущенных в оболочке в данное
время
\/
Название терминала
\п
Символ новой строки
\r
Возврат каретки
\s
Название оболочки
\t
Время в 24-часовом формате (ЧЧ: ММ: СС)
\Т
Время в 12-часовом формате (ЧЧ: ММ: СС)
\@
Время в 12-часовом формате (АМ/РМ)
\и
Имя пользователя
\v
Версия bash (сокращенный вариант)
\V
Версия bash (полная версия: номер релиза, номер патча)
\w
Текущий каталог (полный путь)
\W
Текущий каталог (только название каталога, без пу ти)
\!
Номер команды в истории
\#
Системный номер команды
\$
Если UID пользователя равен О, будет выведен символ
#, иначе - символ $
\\
Обратный слэш
$ ()
Подстановка внешней команды
·----------······-····--········---·---·-·--··---·--···--·----··········-···--·--·--
::а..
.,о:
с,.
<>
I\" 1, \ illll\
Вот пример альтернативного приглашения командной строки:
PSl=' [\u@\h] ${date +%m/%d/%y) \$'
Вид приглашения будет такой:
[denis@hosting] 08/04/19 $
В квадратных скобках выводится имя пользователя и имя компьютера, за­
тем используется конструкция $0 для подстановки даты в нужном нам фор­
мате и символ приглашения, который изменяется в зависимости от иденти­
фикатора пользователя.
Установить переменную окружения можно с помощью команды export, что
будет показано позже.
Пl.2. Зачем нужны сценарии bash
Представим, что нам нужно выполнить резервное копирование всех важных
файлов, для чего создать архивы каталогов /etc, /home и /usr. Понятно, что
понадобятся три команды вида:
tar -cvjf имя_архива.tаr.Ьz2 каталог
Затем нам нужно записать все эти три файла на DVD с помощью любой про­
граммы для прожига DVD.
"'
..,"
Если выполнять данную операцию раз в месяц.(или хотя бы раз в неделю),
то ничего страшного. Но представьте, что вам нужно делать это каждый день
или даже несколько раз в день? Думаю, такая рутинная работа вам быстро
надоест. А ведь можно написать сценарий, который сам будет создавать ре­
зервные копии, и записывать их' на DVD! Все, что вам нужно, - это вста­
вить чистый DVD перед запуском сценария.
,
Можно пойти и иным путем: написать сценарий, который. будет делать
резервные копии системных каталогов, и записывать их на другой раздел
..................................................................................
l lp11 10,1,с·1111с· 1
h:o,1a11 1111.111 1111 н·11111н· 1 :11 ор '""''
жесткого диска. Ведь не секрет, что резервные копии делаются не только на
случай сбоя системы, но и для защиты от некорректного изменения данных
пользователем. Помн�, удалил важную тему форума и попросил своего хо­
стинг-провайдера сделать откат. Я был прият�о удивлен, когда мне предо­
ставили на выбор три резервные копии - осталось лишь выбрать наиболее
подходящую. Не думаете же вы, что администраторы провайдера только и
занимались тем, что три раза в день копировали домашние каталоги пользо­
вателей? Поэтому, автоматизация - штука полезная, и любому администра­
тору нужно знать, как автоматизировать свою рутинную работу.
Пl.3. Сценарий Привет, мир!
По традиции нап�шем первый сценарий, выводящий всем известную фразу:
Hello, world!. Для редактирования сценариев вы можете использовать люби­
мый текстовый редактор, например, nano или ее (листинг Пl.1).
[1
ЛИСТИНГ ПР1.1. Первый сценарий
# ! /Ьin/bash
11
echo "Привет, мир!"
Первая строка нашего сценария - это указание, что он должен быть обра­
ботан программой /Ьin/Ьash. Обратите внимание: если между # и ! окажется
пробел, то_данная директива не сработает, поскольку будет воспринята как
обычный комментарий. Комментарии начинаются, как вы уже наверняка
знаете, с решетки:
# Комментарий
Вторая строка - это оператор echo, выводящий нашу строку. Сохраните
сценарий под именем hello и введите команду:
,
$ chmod +х hello
_________________.__ : ____________________________________________________________ __
lkll, I.i1111\
Для запуска сценария введите команду:
./hello
На экране вы увидите строку:
Привет, мир!
Чтобы вводить для запуска сценария просто hello (без .!), сценарий нужно
скопировать в каталог /usr/Ьin (точнее, в любой каталог из переменной окру­
жения РАТН):
# ер ./hello /usr/bin
Пl.4. Переменные в сценариях
В любом серьезном сценарии вы не обойдетесь без использования перемен­
ных. Переменные можно объявлять в любом месте сценария, но до места их
первого применения. Рекомендуется объявлять переменные в самом начале
сценария, чтобы потом не искать, где вы объявили ту или иную переменную.
Для объявления переменной используется следующая конструкция:
��
�
"'"'
�
переменная = значение
Пример объявлен�я переменной:
ADDRESS=firma. ru
echo $ADDRESS
При объявлении переменной знак доллара не ставится, но он обязателен при
использовании переменной. Также при объявлении переменной не должно
быть пробелов до и после знака =.
•
-----------------------------------------------------------------------------------·
llp11 JOA,,1111, 1
Ко\1:1111111.11i 1111н·р11рс1а1ор /т,/1
Значение для переменной указывать вручную не обязательно - его можно
прочитать с клавиатуры:
read ADDRESS
или со стандартного вывода программы:
ADDRESS='hostname'
Чтение значения переменной с клавиатуры осуществляется с
помощью инструкции read.
При этом указывать символ доллара не нужно. Вторая команда устанавли­
вает в качестве значения переменной ADDRESS вывод команды hostname.
В Linux часто используются переменные окружения. Это специальные пере­
менные, содержащие служебные данные. Вот примеры некоторых часто ис­
пользуемых переменных окружения:
• BASH - полный путь до исполняемого файла командной оболочки bssh;
• BASH_VERSION - версия bash;
• НОМЕ - домашний каталог пользователя, который запустил сценарий;
• НОSТNАМЕ - имя компьютера;
• RANDOM - случайное число в диапазоне от О до 32 767;
• OSTYPE - тип операционной системы;
• PWD - текуший каталог;
• PS 1 - строка приглашения;
• ШD - Ш пользователя, который запустил сценарий;
• USER - имя пользователя.
•
Для установки собственной переменной окружения
используется команда export.
....................................................................................
Пример:
# присваиваем переменной значение
$ADDRESS=firma. ru
# экспортируем переменную - делаем ее переменной окружения
# после этого переменная ADDRESS будет доступна в других
сценариях
export $ADDRESS
Пl.5. Передаем параметры сценарию
Очень часто сценариям нужно передавать различные параметры, например,
режим работы или имя файла/каталога. Для передачи параметров использу­
ются следующие специальцые переменные:
• $0 - содержит имя сценария;
• $п - содержит значение параметра (п - номер параметра);
• $# - позволяет узнать количество параметров, которые были переданы.
Рассмотрим небольшой пример обработки параметров сценария. Я пони­
маю, что конструкцию case-esac вы, возможно, не знаете, но общий принцип
должен быть понятен (листинг Пl.2).
ЛИСТИНГ П1.2. Получение параметров сценария
# Сценарий должен вызываться так:
# имя_сценария параметр
,.,
,.,
"'"
"С
-::,
# Анализируем первый параметр
case 11 $1" in
start)
# Действия при получении параметра start
echo "Запускаемся .. . "
..
stop)
# Действия при получении параметра sto�
echo "Завершаем работу... "
•
•
··········-····---------------------------·-·------------------------------------·
l l11111щ,c·1111L' 1
*)
l,o,1a111111.111 1111н·р111н'1а1ор /111,/1
t Действия в остальных случаях
t Выводим подсказку о том, как нужно использовать сценарий, и
t завершаем работу сценария
echo !'Использовать: $0 { start I stop · } "'
exit 1
esac
;-;
Думаю, приведенных комментариев достаточно, поэтому подробно рассма­
тривать работу сценария из листинга Пl.2 не будем.
Пl.6. Обработка массивов
Интерпретатор bash позволяет использовать массивы. Массивы объявляют­
ся подобно переменным.
Вот пример объявления массива:
ARRAY[O]=l
ARRAY[l]=2
Выводим элемент массива:
echo $ARRAY[OJ
Пl.7. Циклы/оr и while
Как и в любом языке программирования, в bash можно использовать циклы.
Мы рассмотрим циклы for и while, хотя вообще в bash доступны также
циклы until и select, но они применяются довольно редко.
Синтаксис цикла/оr выглядит так:
for переменная in список
do
•
···········································································-······а:1
о:
с.
lkcl, l.i1111,
команды
done
В цикле, при каждой итерации, переменной будет присвоен очередной эле­
мент списка, над которым будут выполнены указанные команды. Чтобы
было понятнее, рассмотрим небольшой пример:
for n in 1 2 3;
do
echo $n;
done
Обратите внимание: список значений и список команд должны заканчивать­
ся точкой с запятой.
Как и следовало ожидать, наш сценарий выведет на экран следующее:
1
2
3
Синтаксис цикла while выглядит немного иначе:
while условие
do
команды
done
Цикл while выполняется до тех пор, пока истинно заданное условие. Под­
робно об условиях мы поговорим, возможно, чуть позже, а сейчас напишем
аналог предыдущего цикла, т. е. нам нужно вывести 1, 2 и 3, но с помощью
while, а не for:
n= l
while [ $n -lt
do
echo "$n "
n=$ ( ( $n+l ) ) ;
done
4 ]
•
....................................................................................
llp11 ll1,hёllllё I
h:O\lall 1111,lii 1111 н·рщ�t· 1 а I ор /т,/1
Пl.8. Условные операторы
В bash доступны два условных оператора: ifи case.
Синтаксис оператора if следующий:
if условие_l then
команды_l
elif условие_2 then
команды_2
elif условие_N then
команды_N
else
команды_N+l
fi
Оператор if в bash работает аналогично оператору if в других языках про­
граммирования. Если истинно первое условие, то выполняется первый спи­
сок команд, иначе - проверяется второе условие и т. д. Количество блоков
elif, понятно, не ограничено. Самая ответственная задача - это правильно
составить условие. Условия записываются в квадратных скобках. Вот при­
мер записи условий:
11 Переменная N
[ N==l0 ]
10
11 Переменная N не равна 10
[
N!=l0 ]
Операции сравнения указываются не с помощью привычных знаков > или <,
а с помощью следующих выражений:
• -lt - меньше;
• -gt - больше;
• -le - меньше или равно;
,
• -ge - больше или равно;
• -eq- равно (используется вместо =).
............ ; ................................................................... ..
lk,1, 1 i1111\
Применять данные выражения нужно следующим образом:
[ переменная выражение эначениеlпеременная]
Например:
# N меньше 10
[ $N -lt ·10 ]
# N меньше А
[ $N -lt $А]
В квадратных скобках вы также можете задать выражения для проверки су­
ществования файла и каталога:
• -е файл - условие истинно, если файл существует;
• -d каталог - условие истинно, если каталог существует;
• -х файл - условие истинно, если файл является исполняемым.
"':.а
=
"'.,
":а
С оператором case мы уже немного знакомьi, но сейчас рассмотрим его син­
таксис чуть подробнее:
case переменная in
эначение.:._1) ':команды_l ,,
эначение_N) :команды_N ,,
*) :команды_по_умолчанию;;
esac
Значение указанной переменной по очереди сравнивается с приведенными
значениями (значение_!, ..., значение_N). Если есть совпадение, то будут
выполнены команды, соответствующие значению. Если совпадений нет, то
будут выполнены команды по умолчанию. Пример использования case был
приведен в листинге Пl.2.
....
•
•
: _____________________________________________________________________________ ,
l lp11 '"'''' ""L' 1
l,0,1:111 1111.111 1111 н·р11рt' 1 а 1ор ////,/1
В bash можно использовать функции. Синтаксис объявления функции сле­
дующий:
имя () { список; }
Вот пример объявления и использования функции:
list_txt ()
{
echo "Text files in current directory:"
1s *.txt
Пl.10. Практические примеры сценариев
Проверка прав пользователя
Для сценариев, требующих полномочий root, сначала нужно проверить, ка­
кой пользователь запустил сценарий. UID пользователя root всегда равен О.
Проверка, является ли пользователь, запустивший сценарий, пользователем
root, может выглядеть так, как показано в листинге Пl .3.
ЛИСТИНГ П1.З. Проверка полномочий пользователя
#!/Ьin/bash
ROOT_UID=0
if [ "$UID" -eq "$ROOT_UID"
then
echo "Root"
else
echo "Обычrtый пользователь"
fi
•
exit О
'
-------------.-----...---....-.----.-.....-. --.-. --.-.-----.........-..-------
. ...
IJ"'' l.illll\
Проверка свободного дискового пространства с уведомлением
по e-mail
Следующий сценарий проверяет свободное дисковое пространство сервера
и отправляет уведомление по e-mail администратору, если осталось мень­
ше 2000 Мбайт дискового пространства. Сценарий целесообразно запускать
через планировщик заданий (например, через cron) с заданной периодично­
стью (например, каждый час). Код сценария приведен в листинге Пl.4.
ЛИСТИНГ П1.4. Проверка свободного дискового пространства
#!/Ьin/Ьash
t В переменную freespace будет записано свободное пространство
t на контралируао4 �ске - /dev/sdal (в ИSайт)
freespace='df -m I grep "/dev/sdal" 1 awk • (print $4} •'
t Есnи места на �е < 2000 М:>, то отправляем письмо администратору
�
g
if [ $freespace -lt 2000 ];
then
echo "На сервера меньше < 2000 МВ" 1 110il -s "Свободное
acknin@finna.ru
fi
место заканчивается!"
ПРИЛОЖЕНИЕ 2.
СЕТЕВАЯ ФАЙЛОВАЯ
CИCTEMANFS
л •
lkl'I, l.illll\
П2.1. Вкратце о NFS и установке необходимых
пакетов
Сетеван файnован система NFS (Network File System) старый, но проверенный способ предоставления доступа к
общим файлам.
NFS позволяет монтировать файловые системы, которые физически нахо­
дятся на других компьютерах в вашей локальной сети.
Принцип работы NFS прост: на сервере устанавливается демон nfsd, ко­
торый экспортирует файловые системы. NFS-клиент монтирует экспорти­
руемые файловые системы. После монтирования с удаленной файловой
системой можно работать, как с локальной - для пользователя ничего не
изменится, разве что скорость доступа к файлам будет чуть ниже, поскольку
данные ведь передаются по сети.
В вашей сети может быть несколько NFS-cepвepoв и несколько NFS­
клиентов. По сути, каждый NFS-клиент может выступать и в роли NFS­
cepвepa, но обычно NFS используется иначе. Выделяется один NFS-cepвep,
который будет экспортировать общую файловую систему, которая может ис­
пользоваться для хранения общих файлов - довольно частый сценарий.
Чтобы установить NFS-cepвep и/или NFS-клиент произведите поиск пакета
по слову 'nfs'. Далее прочитайте описания Паfетов и установите необходи­
мые вам пакеты. Названия пакетов могут отличаться в зависимости от дис­
трибутива.
1
•
•
----------------------------------------------------------------------------------·
•
111111 '"''''""'
' ( 1'11'11,111 ф.111юва111·щ·11·\1:1 \l·S
Например, в openSUSE на сервере нужно установить следующие пакеты:
• nfs-kernel-server - содер>I\Ит NFS-cepвep;
• nfswatch - утилита мониторинга NFS-трафика (можно не устанавливать);
• quota-nfs - система дисковых квот для NFS.
На клиенте нужно установить только пакет nfs-cUent.
П2.2. Файл /etc/exports
В файле /etc/exports прописываются экспортируемые файловые системы.
Эти экспортируемые файловые системы могут монтировать клиенты. Об­
щий формат записи в файле exports следующий:
файловая_система [компьютер] (опции)
Вот типичный пример:
/home/puЫic (rw)
/home/templates '(ro)
В данном случае каталог /home/puЫic сервера будет доступен NFS-клиентам
для чтения и записи (rw), а каталог /home/templates - только для чтения (ro).
При желании можно еще и указать узлы, которым будет доступен экспорти­
руемый каталог, например:
/home/sharel 192.168.1.100 (rw)
/home/share2 host.example.com (rw)
/home/shareЗ * .ex·ample.com (rw)
Здесь первый каталог (/home/share) будет доступен только узлу с IР-адресом
192.168.1.100, второй каталог - только узлу с доменным именем host.
example.com, а третий - всем узлам из домена example.com.
•
··················································································-aD
\1·.
В.:.:1, l.i1111"
Также можно указать целую IР-сеть и ее маску, например:
/home/share4 192.168.1.0/28 (rw)
В данном случае получить доступ к /home/share4 смогут лишь первые 16
IР-адресов - от 192.168.1.0 до 192.168.1.15. Компьютеры с IР-адресами
192.168.1.16 и выше не смогут использовать эту файловую систему.
Обычно можно обойтись только опциями ˆ rw и ˆ
Последняя ис­
пользуется для запрещения доступа к файловой системе. Например, вы хо­
тите запретить узлу 192.168.1.5 доступ к файловой системе:
/home/share4 192.168.1.5 (noaccess)
Остальные опции NFS приведены в таблице П2.1.
Таблица П2.1. Опции экспорта файловой системы в NFS
Опция
Описание
Преобразует идентификаторы групп и пользователей в
анонимные
ˆ
Разрешает запросы с любых портов, см. secure
ˆ
ˆ
ˆ
Не изменяет символические ссылки (по умолчанию)
ˆ
ˆ
Абсолютные ссылки будут преобразованы в относительные
Преобразует все запросы от ˆ
в запросы от анонимного пользователя
ˆ
ˇ˘ˆˆ
ˆ
ˆ
Разрешает доступ к файловой системе от имени ˆ
Не рекомендуется
Принимает запросы на монтирование файловой системы только с портов с номерами< 1024. Такие порты
может создавать только root, поэтому такое соединение
считается безопасным. Используется по умолчанию
•
•
.....................................................................................
llp11 10,l,L'llllё:, Ct'lt'IШII фа11.1tJШ\11 CIICll'\Ш :\1:s
После редактирования файла /etc/exports не забудьте перезапустить или за­
пустить службу nfs:
# service nfs start
или
# service nfs restart
П2.3. Использование NFS-клиента
Для монтирования сетевой файловой системы используется
та же команда mount.
Синтаксис вызова команды такой:
mount -t nfs сервер:ФС точка_монтирования
Вот пример:
mount -t nfs 192.168.1.157:/home/share /mnt/share
Сервер 192.168.1.157 экспортирует файловую систему /home/share. Мы под­
монтируем эту файловущ систему к каталогу /mnt/share (должен существо­
вать на момент вызова команды mount). Также обратите внимание на пара­
метр -t, который задает тип файловой системы.
Конечно, вы не будете вводить эту команду после каждой перезагрузки.
Поэтому если удаленную файловую систему нужно использовать постоян­
но, лучше прописать ее в файле /etc/fstab:
192.168.1.157:/home/share /mnt/share nfs bg,hard,rw О О
Нужно отметить, что NFS - довольно старое решение, как говорят, класси­
ческое. Существуют различные варианты сетевых и распределенных фай-
'--------------· ---------------------------------------· -------------------------81
ловых систем, например, ClusterNFS, OpenAFS, Parallel Virtual File System
(PVFS) и др.
Основной недостаток NFS - отсутствие какого-либо шифрования передава­
емых по сети данных. Если вы используете NFS в защищенной локальной
сети, то это, как правило, не проблема (при отсутствии угроз внутри сети).
Но когда есть необходимость передавать данные по Интернету, то нужно ис­
пользовать шифрование. Один из способов добавления шифрования к NFS
- использование виртуальных частных сетей (VPN), в которых все данньiе
между удаленными системами передаются в зашифрованном виде. В этом
случае NFS имеет право на существование в Интернете.
Список использованных источников информации:
•
Колисниченко Д.Н. «LINUX. Полное руководство по работе и администрированию»
•
https://ru.wikipedia.org/wiki/Softlanding_Linux_System
•
https://docs.huihoo.com/doxygen/linux/kemel/3.7/structtask_struct.html
•
http://tldp.org/НOWТO/LVM-HOWТO/
•
http://www.iakovlev.org/index.html
· •
https://mirтors.edge.kemel.org/pubЛinux/libs/pam/
•
https://www.insight-it.ru/categoryЛinux/
•
http://wiki.opennet.ru/RPM
•
http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_password
•
https://www.starwindsoftware.com/converter
•
https://www.vmware.com/support/developer/ovf/
•
http://awsdocs.s3.amazonaws.com/EC2/ec2-clt.pdf
•
https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
•
http://ftp.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/
•
https://it-Ыack.ru/linux/3/
•
https://ru.wikipedia.org,iwiki/Softlanding_ Linux_System
•
https://icon-icons.com/ru/%D0%B7%D0%BD%D0%B0%Dl%87%D0%BE%D0%BA/%D0%9B%D0%
88%D0%BO%D1%83%D0%BA%D1%81-%D0%BE%D1%80%D0%B8%D0%В3%D0%B8%D0%BD
%D0%B0%D0%BB-%D0%BB%D0%BE%D0%B3%D0%BE%D1%82%D0%B8%D0%BF/146433
•
https://icon-icons.com/icon/linux-c)ient-monitor/4882
•
------------------------------------------------------------------------------------
Издательство «Наука и Техника» выпускает книги более 25 лет!
Уважаемые авторы 1
Приглашаем к сотрудничеству по созданию книг
по IТ•технолоrиям, электронике, электротехнике, медицине, педаrоrике.
Наши преимущества:
•
являемся одним из ведущих технических издательств ст раны;
выпускаем книги большими тиражами, что положительно влияет на гонорар авторов;
регулярно переиздаем тиражи, автоматически выплачивая гонорар за каждый тираж;
применяем индивидуальны й подход в работе с каждым автором;
работаем профессионально: от корректуры до ав торских дизайн-проектов;
проводим политику доступной цены;
имеем собственны е каналы сбыта : от федеральных сетей, крупнейших книжных
магазинов РФ, ведущих маркетnлейсов ОЗОН, Wildberгies, Яндекс-Маркет
и др. до ведущих библиотек вузов, ссузов.
Ждем Ваши предложения:
•
тел. (812) 412-70-26
эл. почта: nltmall(!!)nlt.com.ru
Будем рады сотрудничеству!
Для заказа книг:
► интернет-маrазин: nit.com.ru
более 3000 пунктов выдачи на территории РФ, доставка 3-5 дней
более 300 пунктов выдачи в Санкт-Петербурге и Москве, доставка 1-2 дня
тел. (812) 412-70-26
эл. почта nitmail@nit.com.ru
►
магазин издательства: r. Сан1<т-Петер.бурr, пр. Обуховской обороны, д. 107
метро Елизаровская, 200 м за ДК им. Крупской
ежедневно с 10.00 до 18.00
справки и заказ: тел. (812) 412-70-26
►
книжные сети и маrазины
•
►
«Читай-город» - сеть магазинов
«6у1<воед» - сеть магазинов
Московс1<ий дом книги- сеть магазинов
ТД «БиблиоГлобус»
<сдмиталь» - сеть магазинов
Дом книги, r. Екатеринбург,
Дом книги, r. Нижний Новгород
Приморский торговый Дом книги
тел. +7 (495) 424-84-44
тел. +7 (812) 601-0-601
тел. +7 (495) 789-35-91
тел. +7 (495) 781-19-12
тел. +7 (473) 223-00-02
тел. +7 (343) 289-40-45
тел. +7 (831) 246-22-92
тел. +7 (423) 263-10-54
маркетnлейсы ОЗОН, Wildberries, Яндекс-Маркет, Myshop и др,
Матвеев М. Д.
ВЕСЬ LINUX
ДЛЯ ТЕХ, КТО ХОЧЕТ СТАТЬ ПРОФЕССИОНАЛОМ
Группа_ подготовки издания:
Зав. редакцией компьютерной литературы: М В. Финков
Редактор: Е. В. Финков
Корректор: А. В. Громова
Изображение на обложке исnОЛЬЗОIJ(ЖО с pecypcoвfreepik.com и vecteezy.com
ООО "Издгrельство Наука и Техника"
ОГРН 1217800116247, ИНН 7811763020, КIШ 781101001
192029, r. Санкт-Петербург, пр. Обуховской обороны, д. 107, лит. Б, пом. 1-Н
Подписано в печ,rп"05.01.2024. Форм,rг 70х100 1/16.
Бумага rазеrнах. Печаrъ офсеrнах. Объем 44 п. л.
Тираж 1500. Заказ 8526.
Отпечатано с готового ориrинал-макега
ООО «Принт-М», 142300, М.О., r.Чехов, ул. Полиграфистов, д.1
Download