Основы администрирования систем Linux
“UNIX в основном простая операционная система, но нужно быть гением, чтобы понять её простоту” (Денис Ритчи)
“Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий” (Козьма Прутков)
Программа курса
Модуль 0. Подготовка стенда в классе
Узнать свой номер стенда
Удалить виртуальные машины
Удалить профили putty
Отключить не используемые адаптеры
Записать логин пароль рабочей станции
Сообщить преподавателю IP адрес рабочей станции
Проверить наличие дистрибутивов и образов
Часть 1. Работа в системе Linux
Offline материалы
Видео уроки
Модуль 1. Знакомство с UNIX
Теория
История и стандарты
cat, chdir, chmod, cp, ed, find, mail, mkdir, mkfs, mount, mv, rm, rmdir, wc, who.
Подключение к UNIX
Работа в командной строке
Лабораторные работы
Входное тестирование - скачать свежий образ netinst под архитектуру amd64 с сайта
Подключение к уже установленной и настроенной системе
-
-
-
getty/login (будем использовать после инсталляции новой системы)
putty, winscp (во 2-м модуле)
ssh из unix в unix (после развертывания собственной системы)
Принципы работы в системе
Вопросы
Какие Windows программы могут быть использованы для подключения к UNIX системе по протоколу ssh?
Что определяют аргументы команды/утилиты?
Что определяют ключи/опции команды/утилиты?
Какая команда используется для чтения UNIX документации?
Как осуществляется поиск в UNIX документации?
Модуль 2. Файлы в UNIX
Теория
Лабораторные работы
Вопросы
Что обозначают ключи «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
Теория
Лабораторные работы
Вопросы
Что обозначают ключи “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
Видео уроки
Модуль 4. Выбор дистрибутива, установка и анализ системы
Теория
Выбор дистрибутива
Оборудование
Системное ПО
Прикладное ПО
Лабораторные работы
4.1 Загрузка актуального дистрибутива
Задание: выяснить какие бывают, способы загрузки и варианты установки дистрибутивов
4.2 Установка системы
Задание:
установить систему, не менять значения по умолчанию в процессе инсталляции
добавить пользователя student/password
в linux установить sshd
Задание для преподавателя:
установить CentOS (NetworkManager)
установить Ubuntu (Netplan)
Задание на дом:
4.3 Анализ оборудования системы
Задание: найти информацию о процессоре, памяти, дисках и сетевых платах
4.4 Анализ ядра, модулей и дистрибутива
Задания:
выяснить версию ядра
выяснить, какие модули ядра загружены (например, для оборудования)
выяснить дистрибутив (для linux)
4.5 Анализ процессов в системе
Задание: выяснить, запущен ли сервис sshd
4.6 Управление загрузчиком системы
Задание для преподавателя:
восстановить забытый пароль (альтернативно можно показать исправление fstab в модуле про ФС, или, загрузка в однпользовательском режиме для переноса /var на другой диск)
Вопросы
Что общего и в чем разница между Linux и UNIX?
Что такое Source-based, Binary based, Rolling release, LTS дистрибутивы?
Назовите этапы загрузки системы
Какие команды позволят определить аппаратные ресурсы системы?
Какие команды помогут определить версию ядра и дистрибутив системы?
Для чего нужны модули ядра?
Для чего служат переменные ядра?
Модуль 5. Настройка и тестирование сети
Теория
Лабораторные работы
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
5.2 Команды для диагностики сети
Задание: используя настроенную сетевую подсистему ядра проверить ее функционирование и подключиться к системе по протоколу ssh
5.3 Файлы конфигурации сети
Задание: отредактировать файлы конфигурации сети используя любой тестовый редактор, перезагрузить систему проверить работу сети после перезагрузки системы.
5.4 Дополнительные утилиты для тестирования сети
Задание: посмотреть какой порт “слушает” сервис ssh
Задание: посмотреть содержимое трафика ssh командой tcpdump
Задание: проверить работу клиента DNS
Вопросы
Какие команды используются для управления/диагностики сетевых параметров системы?
Какие команды используются для тестирования настроек
DNS?
Какие команды используются для анализа открытых сетевых портов системы?
Что общего между файлами /etc/resolv.conf и /etc/hosts?
Какие варианты управления файлом /etc/resolv.conf могут быть?
Модуль 6. Система безопасности UNIX
Теория
Лабораторные работы
6.1 Управление пользователями в системе
Задание:
выяснить, какие учетные записи присутствуют в системе
какие из них можно использовать для подключения по ssh
создать пользователя userX, указав его ФИО, shell и пароль
6.2 Управление правами пользователей в системе
Задание: познакомиться с утилитами umask, chmod, chown
Задание: назначить userX администратором системы, а затем, лишить его этих полномочий.
Задание: отключить текущую сессию бывшего администратора (можно в теме управления сервисами)
Вопросы
В каком виде хранится пароль пользователя в системной базе данных ?
Для чего предназначены команды umask, chmod, chown?
Что определяет маска 640 или
-rw-r-----
для файла?
Что обозначает бит “x” для файла и каталога
Что обозначает значение атрибута EUID=0 для процесса?
Что обозначает бит “s” для файла, содержащего программу?
Для чего предназначены команды su и sudo?
Модуль 7. Управление ПО
Теория
Сборка и установка ПО
Обновление ПО
Лабораторные работы
7.1 Сборка и установка ПО из исходных текстов
Задание для преподавателя:
7.2 Установка ПО из скомпилированных пакетов
7.3 Обновление ПО внутри релиза
Задание: установить необходимые обновления в системе
Вопросы
Какие недостатки установки ПО “вручную” из исходных текстов?
Какие команды используются для установки пакетов в Debian и CentOS?
Какие команды используются для работы с репозиториями ПО Debian и CentOS?
В чем опасность использования сторонних репозиториев с ПО?
Какие проблемы могут возникнуть при обновлении системы до следующего релиза?
Модуль 8. Управление сервисами
Теория
Управление запуском ПО
Управление сообщениями сервисов
Лабораторные работы
8.1 Управление запуском сервисов
Задание:
с помощью сигналов отключить пользователя userX
включить/выключить сервис clamav из автозагрузки
добавить в автозагрузку свой собственный сервис
# ssh-keygen
# ssh-copy-id userX@gate.isp.un
8.2 Регистрация действий сервисов
Задание:
выяснить, куда пишутся журнальные сообщения от сервисов
научиться отправлять журнальные сообщения из командной строки
# cat /etc/ssh/sshd_config
...
LogLevel...
...
Вопросы
Почему вместо rc.local стали применять системы инициализации/загрузки?
Что делает команда init n ?
Какие команды используются для вывода списков управляемых сервисов в системах инициализации SystemV, OpenRC, Systemd, rcNG?
Как включить/отключить автоматический запуск сервиса?
Какова причина наличия типа сообщения в системах syslog?
Что нужно сделать, что бы получать больше отладочной информации о работе сервиса?
Модуль 9. Управление файловыми системами
Теория
Лабораторные работы
9.1 Анализ конфигурации дисковой подсистемы
Задание:
Проанализировать конфигурацию дисковой подсистемы
Смонтировать привод CDROM
9.2 Подключение новых дисков к системе
Задание:
Подключить дополнительный жесткий диск к системе
Определить наличие новых дисков в системе
Создать файловую систему на новом диске и примонтировать к каталогу /disk2
Задание для преподавателя:
-
Добавить 2-й диск, изменив номер первого в системе
Продемонстрировать загрузку в одно пользовательском режиме для исправления fstab
Продемонстрировать использование UUID дисков
В Linux LVM расширить логический том корневого раздела за счет нового диска
Вопросы
Какие команды используются для монтирования/размонтирования устройств?
Почему следует монтировать устройства в пустые каталоги?
Что может помешать размонтированию устройств?
В чем преимущество использования таблицы разделов GPT по сравнению с MBR?
Какая файловая система самая лучшая?
В чем преимущество использования UUID разделов вместо имен устройств?
В чем преимущество использования LVM и ZFS по сравнению с классической схемой использования дисков?
В каком файле конфигурации определяются монтируемые при загрузке файловые системы?
Модуль 10. Резервное копирование и восстановление
Теория
Success Story
Лабораторные работы
10.1 Знакомство с командой tar
10.2 Создание архива на удаленной системе
Задание: предоставить пользователю userX возможность архивного копирования каталога /etc/ на backup сервер по протоколу ssh
10.3 Периодическое выполнение задач архивирования
Задание для преподавателя: написать сценарий для периодического копирования каталога /etc/ на backup сервер по протоколу ssh
Вопросы
Что обозначают ключи “c”, “t”, “x”, “z”, “f” в команде tar
Что нужно для использования ssh подключений в сценариях выполняемых периодически?
Как лучше оформить сценарии, выполняющиеся раз в минуту, час, день, неделю, месяц?
Как запрограммировать одноразовый запуск сценария в определенное время?
Модуль 11. Анализ производительности и оптимизация системы
Теория
Лабораторные работы
11.1 Анализ производительности системы
# sysbench --help
# sysbench --test=cpu run
11.2 Стресс тестирование и выявление нагрузки на CPU
$ 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
# 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
11.5 Тестирование производительности и выявление нагрузки на сеть
# cat /sys/class/net/eth0/statistics/[rt]x_bytes
# trafshow -n
# tcptrack -i any -n
linux# nethogs
linux# ss -pantu | grep 5001
11.6 Управление ограничениями ОС
11.7 Оптимизация производительности или ее тестирование на реальной задаче
Вопросы
Перечислите основные ресурсы системы.
Перечислите команды, позволяющие найти критический ресурс.
Модуль 12. Использование Linux в качестве рабочей станции пользователя
Теория
Лабораторные работы
12.1 Текстовый интерфейс
Задание: настроить текстовый интерфейс пользователя
linux# apt install gpm
Для демонстрации, запустить процесс процесс установки
GUI
-
12.2 Графический интерфейс пользователя
!!! RAM не менее 1Gb
Задание: настроить графический интерфейс пользователя
Задание для преподавателя: за время установки GUI у слушателей продемонстрировать:
Вопросы
Как запустить долговременный интерактивный процесс на удаленной системе, что бы можно было отключиться до его окончания?
Что определяет язык интерфейса пользователя в UNIX?
Назовите основные компоненты системы XWindow
Что общего между getty, sshd и xdm?
Итоговое тестирование