====== Основы администрирования систем 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]]