Матвеев М. Д. ВЕСЬ Для тех, кто хочет стать профессионалом "Издательство Наука и Техника" Санкт-Петербург УДК 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