This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
основы_администрирования_систем_linux [2020/08/17 11:07] val создано |
основы_администрирования_систем_linux [2023/11/27 14:47] (current) val [Лабораторные работы] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Основы администрирования систем Linux ====== | ====== Основы администрирования систем 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 | ||
+ | - Что появится на экране в результате последовательности команд: <code>mkdir dir1; cd dir1/; touch echo ls; *</code> | ||
+ | - Каким образом можно определить тип файла в UNIX? | ||
+ | |||
+ | ===== Модуль 3. Процессы в UNIX ===== | ||
+ | |||
+ | ==== Теория ==== | ||
+ | |||
+ | * [[Процессы UNIX]] | ||
+ | |||
+ | ==== Лабораторные работы ==== | ||
+ | |||
+ | * [[Перенаправление потоков ввода/вывода]] | ||
+ | * [[Переменные окружения#Управление процессами через переменные окружения]] | ||
+ | * [[Настройка командных интерпретаторов]] (управление приглашением ко вводу PS1) | ||
+ | * [[Коды завершения]] | ||
+ | * [[Сигналы]] | ||
+ | * Управление заданиями bg, fg, jobs (демонстрирует преподаватель) | ||
+ | |||
+ | ==== Вопросы ==== | ||
+ | |||
+ | - Что обозначают ключи "a", "x" в команде ps? | ||
+ | - Что такое STDIN, STDOUT, STDERR и какие у них номера? | ||
+ | - Что обозначают элементы "<", ">", "2>", "&1", "|" в выражениях shell | ||
+ | - Объясните, как работает конструкция <code>:> file1</code> | ||
+ | - Чем отличается команда 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 Настроить маршрут с рабочей станции в сеть стендов === | ||
+ | |||
+ | * !!! только, если не в комплексе Радио | ||
+ | |||
+ | <code> | ||
+ | windows> route -p add 172.16.1.0 mask 255.255.255.0 10.10.102.250 | ||
+ | |||
+ | windows> ping 172.16.1.254 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === 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 или <code>-rw-r-----</code> для файла? | ||
+ | - Что обозначает бит "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]] | ||
+ | <code> | ||
+ | # ssh-keygen | ||
+ | |||
+ | # ssh-copy-id userX@gate.isp.un | ||
+ | </code> | ||
+ | |||
+ | * Linux [[Управление сервисами в Linux#Система загрузки rc.local]] | ||
+ | |||
+ | * [[https://youtu.be/GxVmukxVUo0|Видео урок: Программирование на sh]] | ||
+ | * [[Средства программирования shell#Примеры использования скриптов sh в системах загрузки]] | ||
+ | * Linux [[Управление сервисами в Linux#Система загрузки SysV]] | ||
+ | |||
+ | * Linux [[Управление сервисами в Linux#Система загрузки Systemd]] | ||
+ | |||
+ | * Linux [[Управление сервисами в Linux#Универсальный скрипт service]] | ||
+ | |||
+ | === 8.2 Регистрация действий сервисов === | ||
+ | |||
+ | Задание: | ||
+ | - выяснить, куда пишутся журнальные сообщения от сервисов | ||
+ | - научиться отправлять журнальные сообщения из командной строки | ||
+ | |||
+ | * [[Локализация системы|Локализация временной зоны]] | ||
+ | * [[Сервис NTP|Установка даты и времени]] | ||
+ | * [[Регистрация событий в Linux]] | ||
+ | |||
+ | <code> | ||
+ | # cat /etc/ssh/sshd_config | ||
+ | ... | ||
+ | LogLevel... | ||
+ | ... | ||
+ | </code> | ||
+ | ==== Вопросы ==== | ||
+ | |||
+ | - Почему вместо 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 | ||
+ | |||
+ | <code> | ||
+ | # sysbench --help | ||
+ | |||
+ | # sysbench --test=cpu run | ||
+ | </code> | ||
+ | |||
+ | === 11.2 Стресс тестирование и выявление нагрузки на CPU === | ||
+ | |||
+ | * [[Утилита john]] | ||
+ | * [[Утилита ps]] | ||
+ | * [[Процессы UNIX#top]] | ||
+ | |||
+ | <code> | ||
+ | $ stress -c 6 -t 60s | ||
+ | |||
+ | $ top | ||
+ | |||
+ | $ ps ax -o pcpu,pid,user,command --sort pcpu | ||
+ | |||
+ | $ uptime | ||
+ | |||
+ | linux$ cat /proc/loadavg | ||
+ | </code> | ||
+ | |||
+ | === 11.3 Стресс тестирование и выявление нагрузки на RAM === | ||
+ | <code> | ||
+ | $ cat /proc/meminfo | ||
+ | |||
+ | $ stress -m 2 --vm-bytes 256M -t 60s | ||
+ | |||
+ | $ ps ax -o vsize,pid,user,command --sort vsize | ||
+ | </code> | ||
+ | |||
+ | === 11.4 Стресс тестирование и выявление нагрузки на HDD === | ||
+ | |||
+ | * [[https://www.kernel.org/doc/Documentation/block/stat.txt]] | ||
+ | |||
+ | <code> | ||
+ | # cat /sys/block/sda/stat | ||
+ | |||
+ | $ stress -d 2 --hdd-bytes 2GB | ||
+ | |||
+ | $ while true; do head -c 1G </dev/urandom >myfile;done | ||
+ | |||
+ | $ while true; do grep -r `openssl rand -base64 12` /usr /var; done | ||
+ | |||
+ | linux# iotop | ||
+ | |||
+ | linux# iostat | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === 11.5 Тестирование производительности и выявление нагрузки на сеть === | ||
+ | |||
+ | * [[Утилита iPerf]] | ||
+ | |||
+ | <code> | ||
+ | # cat /sys/class/net/eth0/statistics/[rt]x_bytes | ||
+ | |||
+ | # trafshow -n | ||
+ | |||
+ | linux# nethogs | ||
+ | |||
+ | linux# ss -pantu | grep 5001 | ||
+ | </code> | ||
+ | |||
+ | === 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 Текстовый интерфейс === | ||
+ | |||
+ | Задание: настроить текстовый интерфейс пользователя | ||
+ | |||
+ | * [[Настройка командных интерпретаторов]] | ||
+ | * [[Локализация окружения]] | ||
+ | * [[Локализация консоли]] | ||
+ | * Многооконный текстовый интерфейс | ||
+ | <code> | ||
+ | linux# apt install gpm | ||
+ | </code> | ||
+ | |||
+ | * Для демонстрации, запустить процесс процесс установки 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]] |