====== Основы администрирования систем Linux ====== * "UNIX в основном простая операционная система, но нужно быть гением, чтобы понять её простоту" (Денис Ритчи) * "Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий" (Козьма Прутков) * https://global.gotomeeting.com/join/313682141 ===== Программа курса ===== * [[https://www.specialist.ru/course/yun1-b|Linux. Уровень 1. Основы администрирования систем Debian, Ubuntu, CentOS]] ===== Модуль 0. Подготовка стенда в классе ===== * Узнать свой номер стенда * Удалить виртуальные машины * Удалить профили putty * Отключить не используемые адаптеры * Записать логин пароль рабочей станции * Сообщить преподавателю IP адрес рабочей станции * Проверить наличие дистрибутивов и образов ===== Часть 1. Работа в системе Linux ===== ==== Offline материалы ==== * [[http://val.bmstu.ru/unix/Docs/unix1_materials.zip]] ==== Видео уроки ==== * [[Видео уроки#На старт - работа в системе Linux]] ===== Модуль 1. Знакомство с UNIX ===== ==== Теория ==== История и стандарты * [[https://ru.wikipedia.org/wiki/Bell_Labs|Лаборатории Белла]] * [[https://ru.wikipedia.org/wiki/Space_Travel_(игра)|Space Travel]] * [[https://ru.wikipedia.org/wiki/UNIX|UNIX]] * Список команд 1-й редакции UNIX (1971) ''cat, chdir, chmod, cp, ed, find, mail, mkdir, mkfs, mount, mv, rm, rmdir, wc, who.'' * [[https://ru.wikipedia.org/wiki/UNIX_System_V|UNIX System V]] * [[https://ru.wikipedia.org/wiki/BSD|UNIX BSD]] * [[https://ru.wikipedia.org/wiki/POSIX|POSIX]] * [[https://ru.wikipedia.org/wiki/История_Linux|История Linux]] * [[Организация системы UNIX]] * [[https://youtu.be/jAhvVBpx3IM|Видео: Как пользователи использовали UNIX :)]] Подключение к UNIX * [[https://ru.wikipedia.org/wiki/Телетайп|Телетайп]] * [[https://ru.wikipedia.org/wiki/Текстовый_терминал|Текстовый_терминал]] * [[https://ru.wikipedia.org/wiki/RS-232|Интерфейс RS-232]] * [[https://ru.wikipedia.org/wiki/Telnet|Telnet]] * [[https://ru.wikipedia.org/wiki/SSH|Протокол SSH]] * [[https://ru.wikipedia.org/wiki/X_Window_System|X Window System]] * [[https://ru.wikipedia.org/wiki/XDM|X Display Manager]] Работа в командной строке * [[https://ru.wikipedia.org/wiki/Интерфейс_командной_строки|Интерфейс командной строки]] * [[https://ru.wikipedia.org/wiki/Bash|Bourne again shell]] ==== Лабораторные работы ==== Входное тестирование - скачать свежий образ netinst под архитектуру amd64 с сайта * https://www.debian.org/ Подключение к уже установленной и настроенной системе * [[https://youtu.be/7lE8Y8U4M0g|Видео урок: Принцип работы терминала UNIX]] * [[https://www.tutorialspoint.com/unix_terminal_online.php|Unix Terminal Online]] * [[http://www.freeemulator.com/online-terminal-emulator/|ONLINE TERMINAL EMULATOR]] * getty/login (будем использовать после инсталляции новой системы) * putty, winscp (во 2-м модуле) * ssh из unix в unix (после развертывания собственной системы) Принципы работы в системе * [[https://youtu.be/jAhvVBpx3IM|Видео урок: Как пользователи использовали UNIX :)]] * [[Структура команд UNIX]] * [[Документация UNIX]] ==== Вопросы ==== - Какие Windows программы могут быть использованы для подключения к UNIX системе по протоколу ssh? - Что определяют аргументы команды/утилиты? - Что определяют ключи/опции команды/утилиты? - Какая команда используется для чтения UNIX документации? - Как осуществляется поиск в UNIX документации? ===== Модуль 2. Файлы в UNIX ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/Файловая_система|Файловая система]] * [[https://ru.wikipedia.org/wiki/Unix_File_System|Unix File System]] * [[https://ru.wikipedia.org/wiki/Ext|Linux Extended File System]] * [[https://ru.wikipedia.org/wiki/Procfs|procfs]] * [[https://ru.wikipedia.org/wiki/Udev|udev]] * [[Структура файловой системы]] ==== Лабораторные работы ==== * [[Команды для работы с файловой системой]] * [[Команды чтения содержимого файлов]] * [[Текстовые редакторы ed, sed, vi, vim]] ([[https://youtu.be/r8e7F46un7A|Видео урок]]) * [[Текстовый редактор nano]] * [[Настройка командных интерпретаторов]] (комбинации клавиш, повтор и автоподстановка команд) * [[Команды фильтры]] (выполнить работу в теме перенаправления ввода вывода) * [[Регулярные выражения]] ([[https://youtu.be/BhbDsKetNn8|Видео урок]]) * [[Утилиты diff и patch]] ([[https://youtu.be/vqPaHyisBB0|Видео урок]]) * [[Система контроля версий rcs]] ([[https://youtu.be/QyhaKdgg4LE|Видео урок]]) * [[Генератор отчетов awk]] ([[https://youtu.be/4PkkMzB7fIM|Видео урок]]) * [[Команда tar]] (выполнить работу в конце курса) * Программа WinSCP * Команды scp, wget (в лабораторных работах следующего модуля) ==== Вопросы ==== - Что обозначают ключи «a», «l» в команде ls? - Какой командой можно создать файл? - Что означает символы "~", ".", "..", "/" в имени файла? - Что обозначают ключи "h/H", "v", "r/R" во многих командах? - Какие команды используются для анализа занятого места на диске/в каталоге? - Какой командой можно удалить непустой каталог? - Какие команды могут быть использованы для поиска файлов? - Какие команды используются для просмотра содержимого файлов? - Какая программа может быть использована для копирования файлов между UNIX и Windows по протоколу ssh? - Какой ключ команды tail позволяет "в онлайне" наблюдать процесс появления новых записей в файле? - Какая последовательность клавиш позволяет выйти из редактора vi без сохранения изменений? - Какой командой можно найти содержимое в файле по шаблону? - Какой ключ команды sort позволит отсортировать данные по числовому столбцу? - Что обозначают символы "^", "$", ".", "|" в регулярных выражениях? - Что обозначают ключи "c", "t", "x", "z", "f" в команде tar - Что появится на экране в результате последовательности команд: mkdir dir1; cd dir1/; touch echo ls; * - Каким образом можно определить тип файла в UNIX? ===== Модуль 3. Процессы в UNIX ===== ==== Теория ==== * [[Процессы UNIX]] ==== Лабораторные работы ==== * [[Перенаправление потоков ввода/вывода]] * [[Переменные окружения#Управление процессами через переменные окружения]] * [[Настройка командных интерпретаторов]] (управление приглашением ко вводу PS1) * [[Коды завершения]] * [[Сигналы]] * Управление заданиями bg, fg, jobs (демонстрирует преподаватель) ==== Вопросы ==== - Что обозначают ключи "a", "x" в команде ps? - Что такое STDIN, STDOUT, STDERR и какие у них номера? - Что обозначают элементы "<", ">", "2>", "&1", "|" в выражениях shell - Объясните, как работает конструкция :> file1 - Чем отличается команда set от команды env? - Что влияет на выбор языка интерфейса в *NIX программах? - Как посмотреть код завершения процесса и какое он должен иметь значение, если не было ошибок? - Что обозначают элементы "&&", "||", ";", "&" в выражениях shell - Объясните, что происходит при использовании комбинаций "Ctrl C", "Ctrl D", "Ctrl Z"? - Как обрабатываются сигналы "HUP", "INT", "TERM", "KILL", "TSTP" процессами? ===== Часть 2. Администрирование системы Linux ===== ==== Видео уроки ==== * [[Видео уроки#Администрирование системы Linux]] ===== Модуль 4. Выбор дистрибутива, установка и анализ системы ===== ==== Теория ==== === Выбор дистрибутива === * [[https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%BE%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD,_%D0%A0%D0%B8%D1%87%D0%B0%D1%80%D0%B4_%D0%9C%D1%8D%D1%82%D1%82%D1%8C%D1%8E|Столлман, Ричард Мэттью]] * [[https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D1%80%D0%B2%D0%B0%D0%BB%D1%8C%D0%B4%D1%81,_%D0%9B%D0%B8%D0%BD%D1%83%D1%81|Торвальдс, Линус]] * {{:which_linux_distribution_is_the_best.pdf|Какой дистрибутив Linux самый лучший?}} * [[http://distrowatch.com/|DistroWatch - обзор дистрибутивов Linux]] * [[https://ru.wikipedia.org/wiki/Debian|Debian - Википедия]] * [[https://bits.debian.org/2018/02/debian-linuxjournal-readers-choice-award.html|Debian won Linux Journal's Readers' Choice Award for Best Linux Distribution!]] * [[https://wiki.debian.org/LTS|Debian Long Term Support]] * [[https://ru.wikipedia.org/wiki/CentOS|CentOS - Википедия]] * [[https://ru.wikipedia.org/wiki/Ubuntu|Ubuntu - Википедия]] === Оборудование === * [[https://ru.wikipedia.org/wiki/X86|Архитектура процессора x86 - Википедия]] * [[https://ru.wikipedia.org/wiki/SATA|Serial ATA - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0%D1%82%D0%B0|Сетевая плата - Википедия]] === Системное ПО === * [[https://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D0%BE_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B|Ядро операционной системы - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_%D1%8F%D0%B4%D1%80%D0%B0|Загружаемый модуль ядра]] * [[https://ru.wikipedia.org/wiki/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80|Драйвер - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8_Linux|Процесс загрузки Linux - Википедия]] === Прикладное ПО === * [[https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0|Файловая система - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BC%D0%BE%D0%BD_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%29|Демон — компьютерная программа - Википедия]] ==== Лабораторные работы ==== === 4.1 Загрузка актуального дистрибутива === Задание: выяснить какие бывают, способы загрузки и варианты установки дистрибутивов * [[https://debian.org/|Debian]] * [[https://ubuntu.com/|Ubuntu]] * [[https://centos.org/|CentOS]] === 4.2 Установка системы === Задание: - установить систему, не менять значения по умолчанию в процессе инсталляции - добавить пользователя student/password - в linux установить sshd * [[Инсталляция системы Linux]] Задание для преподавателя: - установить CentOS (NetworkManager) - установить Ubuntu (Netplan) Задание на дом: * [[https://youtu.be/5Y67Q7um1WU|Видео урок: Корпоративный WebVPN на основе прокси-сервера Squid]] === 4.3 Анализ оборудования системы === Задание: найти информацию о процессоре, памяти, дисках и сетевых платах * [[Анализ оборудования в Linux]] === 4.4 Анализ ядра, модулей и дистрибутива === Задания: - выяснить версию ядра - выяснить, какие модули ядра загружены (например, для оборудования) - выяснить дистрибутив (для linux) * [[Управление ядром и модулями в Linux]] * [[Выбор дистрибутива Linux]] === 4.5 Анализ процессов в системе === Задание: выяснить, запущен ли сервис sshd * [[Процессы UNIX#Команды мониторинга процессов]] * Команда [[Команды фильтры#grep]] === 4.6 Управление загрузчиком системы === Задание для преподавателя: - восстановить забытый пароль (альтернативно можно показать ​исправление fstab в модуле про ФС, или, загрузка в однпользовательском режиме для переноса /var на другой диск) * [[Использование загрузчика GRUB]] * [[Использование загрузчика LOADER]] ==== Вопросы ==== - Что общего и в чем разница между Linux и UNIX? - Что такое Source-based, Binary based, Rolling release, LTS дистрибутивы? - Назовите этапы загрузки системы - Какие команды позволят определить аппаратные ресурсы системы? - Какие команды помогут определить версию ядра и дистрибутив системы? - Для чего нужны модули ядра? - Для чего служат переменные ядра? ===== Модуль 5. Настройка и тестирование сети ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_OSI|Сетевая модель OSI - Википедия]] * [[https://ru.wikipedia.org/wiki/Ethernet|Ethernet - Википедия]] * [[https://ru.wikipedia.org/wiki/TCP/IP|TCP/IP - Википедия]] * [[https://netplan.io/|Netplan]] * [[https://ru.wikipedia.org/wiki/NetworkManager|NetworkManager]] ==== Лабораторные работы ==== === 5.0 Настроить маршрут с рабочей станции в сеть стендов === * !!! только, если не в комплексе Радио windows> route -p add 172.16.1.0 mask 255.255.255.0 10.10.102.250 windows> ping 172.16.1.254 === 5.1 Команды для настройки сети === Задание: - выяснить состояние сетевых интерфейсов в системе, назначить им ip/mask/gate - выяснить состояние переменных ядра отвечающих за forwarding ip пакетов и базовое значение ttl * [[Настройка сети в Linux#Команды для настройки]] сети в Linux === 5.2 Команды для диагностики сети === Задание: используя настроенную сетевую подсистему ядра проверить ее функционирование и подключиться к системе по протоколу ssh * [[Настройка сети в Linux#Команды для диагностики]] сети в Linux === 5.3 Файлы конфигурации сети === Задание: отредактировать файлы конфигурации сети используя любой тестовый редактор, перезагрузить систему проверить работу сети после перезагрузки системы. * [[Текстовые редакторы ed, sed, vi, vim#Редактор vi, vim]] ([[https://youtu.be/r8e7F46un7A|Видео урок]]) * [[Текстовый редактор nano]] * [[Настройка сети в Linux#Файлы конфигурации]] сети в Linux * [[Настройка сети в Linux#Файлы конфигурации Debian/Ubuntu16]] * [[Настройка сети в Linux#Файлы конфигурации CentOS/SL/RHEL]] * [[Настройка сети в Linux#Файлы конфигурации Ubuntu18]] === 5.4 Дополнительные утилиты для тестирования сети === Задание: посмотреть какой порт "слушает" сервис ssh * [[Настройка сети в Linux#Команды для диагностики]] сетевой подсистемы в Linux Задание: посмотреть содержимое трафика ssh командой tcpdump * [[Утилиты для тестирования сети]] Задание: проверить работу клиента DNS * [[Сервис DNS#Утилиты тестирования DNS]] ==== Вопросы ==== - Какие команды используются для управления/диагностики сетевых параметров системы? - Какие команды используются для тестирования настроек DNS? - Какие команды используются для анализа открытых сетевых портов системы? - Что общего между файлами /etc/resolv.conf и /etc/hosts? - Какие варианты управления файлом /etc/resolv.conf могут быть? ===== Модуль 6. Система безопасности UNIX ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C|Компьютерная безопасность - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%A3%D1%87%D1%91%D1%82%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C|Учётная запись - Википедия]] * [[Система безопасности UNIX#Управление маской доступа]] * [[http://help.ubuntu.ru/wiki/%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0_unix|Права доступа Unix, SUID, SGID, Sticky биты]] ==== Лабораторные работы ==== === 6.1 Управление пользователями в системе === Задание: - выяснить, какие учетные записи присутствуют в системе - какие из них можно использовать для подключения по ssh - создать пользователя userX, указав его ФИО, shell и пароль * [[Управление учетными записями в Linux]] === 6.2 Управление правами пользователей в системе === Задание: познакомиться с утилитами umask, chmod, chown * [[Система безопасности UNIX]] Задание: назначить userX администратором системы, а затем, лишить его этих полномочий. * [[Управление учетными записями в Linux]] * Команда su (gentoo wheel) * [[Пакет sudo]] * [[https://youtu.be/M_aRKbMndfU|Видео урок: команды su и sudo]] Задание: отключить текущую сессию бывшего администратора (можно в теме управления сервисами) * [[Сигналы]] ==== Вопросы ==== - В каком виде хранится пароль пользователя в системной базе данных ? - Для чего предназначены команды umask, chmod, chown? - Что определяет маска 640 или -rw-r----- для файла? - Что обозначает бит "x" для файла и каталога - Что обозначает значение атрибута EUID=0 для процесса? - Что обозначает бит "s" для файла, содержащего программу? - Для чего предназначены команды su и sudo? ===== Модуль 7. Управление ПО ===== ==== Теория ==== === Сборка и установка ПО === * [[https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4|Исходный код - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D0%BC%D1%8B%D0%B9_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C|Исполнимый модуль - Википедия]] * [[https://ru.wikipedia.org/wiki/Make|Утилита make]] * [[https://ru.wikipedia.org/wiki/Portage|Cистема управления портами в Gentoo Linux - Википедия]] * [[https://ru.wikipedia.org/wiki/Dpkg|Cистема управления пакетами в Debian - Википедия]] * [[https://ru.wikipedia.org/wiki/RPM|Cистема управления пакетами в Red Hat - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9|Репозиторий - Википедия]] * [[https://ru.wikipedia.org/wiki/APT|Advanced Packaging Tool - Википедия]] * [[https://ru.wikipedia.org/wiki/Yellow_dog_Updater,_Modified|Yellow dog Updater, Modified - Википедия]] === Обновление ПО === * [[https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%82%D1%87|Патч - Википедия]] * [[http://www.ubuntu.com/usn/|Ubuntu security notices]] * [[http://www.ubuntu.com/info/release-end-of-life|Ubuntu release end of life]] * [[http://www.asterisk.org/downloads/security-advisories|Asterisk Security Advisories]] ==== Лабораторные работы ==== === 7.1 Сборка и установка ПО из исходных текстов === * [[Установка ПО из исходных текстов]] ([[https://youtu.be/oz3WCD-dDpc|Видео урок]]) Задание для преподавателя: * [[Установка ПО из исходных текстов#Пример установки текстового браузера]] === 7.2 Установка ПО из скомпилированных пакетов === * [[https://eax.me/checkinstall/|Как создать бинарный пакет с помощью CheckInstall]] * Linux [[Управление ПО в Linux#Использование команды dpkg]] * Linux [[Управление ПО в Linux#Использование менеджера пакетов APT]] * Linux [[Управление ПО в Linux#Использование команды rpm]] * Linux [[Управление ПО в Linux#Использование менеджера пакетов YUM]] * Linux [[Управление ПО в Linux#Snap]] === 7.3 Обновление ПО внутри релиза === Задание: установить необходимые обновления в системе * [[Управление ПО в Linux#Использование менеджера пакетов APT]] * [[Управление ПО в Linux#Использование менеджера пакетов YUM]] ==== Вопросы ==== - Какие недостатки установки ПО "вручную" из исходных текстов? - Какие команды используются для установки пакетов в Debian и CentOS? - Какие команды используются для работы с репозиториями ПО Debian и CentOS? - В чем опасность использования сторонних репозиториев с ПО? - Какие проблемы могут возникнуть при обновлении системы до следующего релиза? ===== Модуль 8. Управление сервисами ===== ==== Теория ==== === Управление запуском ПО === * [[https://ru.wikipedia.org/wiki/Init|Cистема инициализации UNIX init и ее альтернативы в Linux - Википедия]] * [[https://wiki.gentoo.org/wiki/OpenRC|OpenRC - Gentoo Wiki]] * [[https://ru.wikipedia.org/wiki/Systemd|Systemd - Википедия]] === Управление сообщениями сервисов === * [[https://ru.wikipedia.org/wiki/Syslog|Syslog - Википедия]] ==== Лабораторные работы ==== === 8.1 Управление запуском сервисов === Задание: - с помощью сигналов отключить пользователя userX - включить/выключить сервис clamav из автозагрузки - добавить в автозагрузку свой собственный сервис * [[Сигналы]] * [[Сервис SSH#Аутентификация с использованием ключей ssh]] # ssh-keygen # ssh-copy-id userX@gate.isp.un * Linux [[Управление сервисами в Linux#Система загрузки rc.local]] * [[https://youtu.be/GxVmukxVUo0|Видео урок: Программирование на sh]] * [[Средства программирования shell#Примеры использования скриптов sh в системах загрузки]] * Linux [[Управление сервисами в Linux#Система загрузки SysV]] * Linux [[Управление сервисами в Linux#Система загрузки Systemd]] * Linux [[Управление сервисами в Linux#Универсальный скрипт service]] === 8.2 Регистрация действий сервисов === Задание: - выяснить, куда пишутся журнальные сообщения от сервисов - научиться отправлять журнальные сообщения из командной строки * [[Локализация системы|Локализация временной зоны]] * [[Сервис NTP|Установка даты и времени]] * [[Регистрация событий в Linux]] # cat /etc/ssh/sshd_config ... LogLevel... ... ==== Вопросы ==== - Почему вместо rc.local стали применять системы инициализации/загрузки? - Что делает команда init n ? - Какие команды используются для вывода списков управляемых сервисов в системах инициализации SystemV, OpenRC, Systemd, rcNG? - Как включить/отключить автоматический запуск сервиса? - Какова причина наличия типа сообщения в системах syslog? - Что нужно сделать, что бы получать больше отладочной информации о работе сервиса? ===== Модуль 9. Управление файловыми системами ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0|Файловая система - Википедия]] * [[https://habrahabr.ru/post/327572/|Сравнение структур разделов GPT и MBR]] * [[https://ru.wikipedia.org/wiki/Unix_File_System|Unix File System - Википедия]] * [[http://ru.wikipedia.org/wiki/Ext2|Ext2 - Википедия]] * [[http://ru.wikipedia.org/wiki/Ext4|Ext4 - Википедия]] * [[http://ru.wikipedia.org/wiki/ReiserFS|ReiserFS - Википедия]] * [[https://ru.wikipedia.org/wiki/LVM|LVM - Википедия]] * [[http://wolandblog.com/601-zfs-novyj-vzglyad-na-fajlovye-sistemy/|ZFS — новый взгляд на файловые системы]] ==== Лабораторные работы ==== === 9.1 Анализ конфигурации дисковой подсистемы === Задание: - Проанализировать конфигурацию дисковой подсистемы - Смонтировать привод CDROM * [[Управление файловыми системами в Linux]] === 9.2 Подключение новых дисков к системе === Задание: - Подключить дополнительный жесткий диск к системе - Определить наличие новых дисков в системе - Создать файловую систему на новом диске и примонтировать к каталогу /disk2 * [[Управление файловыми системами в Linux#Добавление дисков в Linux]] Задание для преподавателя: - С помощью линка и [[Пакет RSYNC]] перенести на второй диск каталог /var/ или /home/ [[Использование загрузчика GRUB]] - Добавить 2-й диск, изменив номер первого в системе - Продемонстрировать загрузку в одно пользовательском режиме для исправления fstab - Продемонстрировать использование UUID дисков - В Linux LVM расширить логический том корневого раздела за счет нового диска * [[Управление файловыми системами в Linux#Использование LVM]] ==== Вопросы ==== - Какие команды используются для монтирования/размонтирования устройств? - Почему следует монтировать устройства в пустые каталоги? - Что может помешать размонтированию устройств? - В чем преимущество использования таблицы разделов GPT по сравнению с MBR? - Какая файловая система самая лучшая? - В чем преимущество использования UUID разделов вместо имен устройств? - В чем преимущество использования LVM и ZFS по сравнению с классической схемой использования дисков? - В каком файле конфигурации определяются монтируемые при загрузке файловые системы? ===== Модуль 10. Резервное копирование и восстановление ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5|Резервное копирование - Википедия]] * [[Команда dd]] * [[Команды dump restore]] * [[Команда cpio]] * [[Команда tar]] * [[http://rdiff-backup.nongnu.org/|rdiff-backup]], [[http://ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/|Резервное копирование при помощи rdiff-backup]] * [[https://habrahabr.ru/post/56796/|Спасаем данные в Linux с помощью ddrecovery]] ==== Success Story ==== * [[http://www.softjoys.ru/|СофтДжойс - Восстановление данных]] ==== Лабораторные работы ==== === 10.1 Знакомство с командой tar === * [[Команда tar]] === 10.2 Создание архива на удаленной системе === Задание: предоставить пользователю userX возможность архивного копирования каталога /etc/ на backup сервер по протоколу ssh * [[Пакет sudo]] * [[Команда tar]] === 10.3 Периодическое выполнение задач архивирования === Задание для преподавателя: написать сценарий для периодического копирования каталога /etc/ на backup сервер по протоколу ssh * [[Локализация системы#Локализация временной зоны]] * [[Сервис NTP#Установка даты и времени]] * Команда tar [[Команда tar#Сценарий архивирования каталогов с использованием ssh]] * [[Сервис SSH#Аутентификация с использованием ключей ssh]] * [[Планирование выполнения заданий в Linux]] * [[Сервис atrun]] ==== Вопросы ==== - Что обозначают ключи "c", "t", "x", "z", "f" в команде tar - Что нужно для использования ssh подключений в сценариях выполняемых периодически? - Как лучше оформить сценарии, выполняющиеся раз в минуту, час, день, неделю, месяц? - Как запрограммировать одноразовый запуск сценария в определенное время? ===== Модуль 11. Анализ производительности и оптимизация системы ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8|Тестирование производительности - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5|Нагрузочное тестирование - Википедия]] * [[http://www.brendangregg.com/linuxperf.html|Linux Performance]] * [[https://medium.com/@chrishantha/linux-performance-observability-tools-19ae2328f87f|Linux Performance Observability Tools]] * [[https://help.ubuntu.com/community/Kernel/Compile|Ubuntu Kernel/Compile]] * [[https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel|BuildYourOwnKernel Ubuntu Wiki]] ==== Лабораторные работы ==== === 11.1 Анализ производительности системы === * [[Пакет OpenSSL#Проверка производительности CPU]] в OpenSSL # sysbench --help # sysbench --test=cpu run === 11.2 Стресс тестирование и выявление нагрузки на CPU === * [[Утилита john]] * [[Утилита ps]] * [[Процессы UNIX#top]] $ stress -c 6 -t 60s $ top $ ps ax -o pcpu,pid,user,command --sort pcpu $ uptime linux$ cat /proc/loadavg === 11.3 Стресс тестирование и выявление нагрузки на RAM === $ cat /proc/meminfo $ stress -m 2 --vm-bytes 256M -t 60s $ ps ax -o vsize,pid,user,command --sort vsize === 11.4 Стресс тестирование и выявление нагрузки на HDD === * [[https://www.kernel.org/doc/Documentation/block/stat.txt]] # cat /sys/block/sda/stat $ stress -d 2 --hdd-bytes 2GB $ while true; do head -c 1G myfile;done $ while true; do grep -r `openssl rand -base64 12` /usr /var; done linux# iotop linux# iostat === 11.5 Тестирование производительности и выявление нагрузки на сеть === * [[Утилита iPerf]] # cat /sys/class/net/eth0/statistics/[rt]x_bytes # trafshow -n # tcptrack -i any -n linux# nethogs linux# ss -pantu | grep 5001 === 11.6 Управление ограничениями ОС === * [[Управление сервисами в Linux#Настройка параметров запуска в Systemd]] === 11.7 Оптимизация производительности или ее тестирование на реальной задаче === * [[https://youtu.be/dIqaW47WXf8|Видео урок: Установка Gentoo и сборка ПО из исходных текстов]] * [[https://youtu.be/QFoGnnB3WPg|Видео урок: Сборка ядра в linux]] * [[Управление ядром и модулями в Linux]] ==== Вопросы ==== - Перечислите основные ресурсы системы. - Перечислите команды, позволяющие найти критический ресурс. ===== Модуль 12. Использование Linux в качестве рабочей станции пользователя ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F|Текстовый интерфейс пользователя - Википедия]] * [[http://val.bmstu.ru/openvideo/history_unix_write_mail_talk.html|Видео: Как пользователи использовали UNIX :)]] * [[https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F|Локализация программного обеспечения - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F|Графический интерфейс пользователя - Википедия]] * [[https://ru.wikipedia.org/wiki/X_Window_System|X Window System - Википедия]] ==== Лабораторные работы ==== === 12.1 Текстовый интерфейс === Задание: настроить текстовый интерфейс пользователя * [[Настройка командных интерпретаторов]] * [[Локализация окружения]] * [[Локализация консоли]] * Многооконный текстовый интерфейс linux# apt install gpm * Для демонстрации, запустить процесс процесс установки GUI * [[Пакет screen]] ([[https://youtu.be/YXSC7KeIq3E|Видео урок]]) === 12.2 Графический интерфейс пользователя === !!! RAM не менее 1Gb Задание: настроить графический интерфейс пользователя * [[Инсталяция системы в конфигурации Desktop]] (Установка X сервера, менеджера дисплеев, оконного менеджера и клиентских программ) * [[Сервис CUPS]] * [[Воспроизведение звука]] * [[Воспроизведение видео]] Задание для преподавателя: за время установки GUI у слушателей продемонстрировать: * [[Сервис SSH|SSH вместо XDM]] на примере xbill * xorg, xorg.conf, startx, twm на примере doom * [[Сервис xRDP]] * [[Игровые возможности]] ==== Вопросы ==== - Как запустить долговременный интерактивный процесс на удаленной системе, что бы можно было отключиться до его окончания? - Что определяет язык интерфейса пользователя в UNIX? - Назовите основные компоненты системы XWindow - Что общего между getty, sshd и xdm? ===== Итоговое тестирование ===== * [[https://github.com/ostrovok-team/code-challenge/tree/master/devops|DevOps Engineer Challenge]]