This is an old revision of the document!
Основы администрирования систем 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
Теория
Лабораторные работы
# asterisk -x 'sip show users'
# ps ax | grep asterisk
# kill -s HUP НОМЕР_ПРОЦЕССА
# kill -s HUP `cat /var/run/asterisk/asterisk.pid`
Вопросы
Что обозначают ключи “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” процессами?
Модуль 4. Система безопасности и права доступа
Теория
Лабораторные работы
Управление атрибутами доступа к файлам
Задание: исправить владельца файла конфигурации sip.conf
# ps axu | grep asterisk
# ls -l /etc/asterisk/sip.conf
# cp /etc/asterisk/sip.conf .
# ls -l sip.conf
# rm /etc/asterisk/sip.conf
# cp sip.conf /etc/asterisk/
# service asterisk restart
# asterisk -x 'sip show users'
# chown asterisk:asterisk /etc/asterisk/sip.conf
или
# chmod +r /etc/asterisk/sip.conf
# service asterisk restart
# asterisk -x 'sip show users'
Вопросы
Что обозначают ключ “u” в команде ps?
Для чего предназначены команды chmod, chown?
Что определяет маска 640 или
-rw-r-----
для файла?
Что обозначает бит “x” для файла и каталога
Что обозначает значение атрибута EUID=0 для процесса?
Модуль 5. Программирование на shell
Теория
Лабораторные работы
Вопросы
Объясните, результаты выражений:
a=1;a=a+1;echo $a
a=1;a=$a+1;echo $a
a=1;a='$a+1';echo $a
a=1;a=$(($a+1));echo $a
a=Hello;a=$a World;echo $a
a=Hello;a=$a\ World;echo $a
a=Hello;a='$a World';echo $a
a=Hello;a="$a World";echo $a
a=/bin;a="ls $a | wc -l";echo $a
a=/bin;a='ls $a | wc -l';echo $a
a=/bin;a=`ls $a | wc -l`;echo $a
a=/bin;a=$(ls $a | wc -l);echo $a
Что определяет комбинация “#!” в начале файла?
Что содержит значение переменных $0, $1, $!
Объясните результат выражения:
echo '#!/bin/ls' > ex1; chmod +x ex1; ./ex1
В чем разница и что общего при запуске скрипта следующими способами:
./script.sh
. script.sh
sh script.sh
Объясните элементы выражения
while :;do
Что обозначают операторы continue, break, exit в sh программах?
Чем завершаются операторы if, case, do в sh программах?
Какой оператор поможет запретить прекращение выполнения скрипта комбинацией клавиш “Ctrl C”?
Какой оператор поможет получить ввод пользователя в sh программе?
Объясните элементы выражений
while [ $i -lt 254 ]
while test $i -lt 254
Чем оперирует цикл for в sh программах?
Какой оператор позволяет открывать файлы в sh программах?
Какой оператор необходим для написания на sh искусственного интеллекта?
Модуль 6. Дополнительные лабораторные работы
Программа курса
Модуль 0. Подготовка стенда в классе.
Узнать свой номер стенда
Удалить виртуалки
Удалить профили putty
Отключить не используемые адаптеры
Записать логин пароль и IP (сообщить преподавателю) рабочей станции
Проверить наличие дистрибутивов и образов
Модуль 1 (4). Выбор дистрибутива, установка и анализ системы
Теория
Выбор дистрибутива
Оборудование
Системное ПО
Прикладное ПО
Лабораторные работы
1.1 Загрузка актуального дистрибутива
Задание: выяснить какие бывают, способы загрузки и варианты установки дистрибутивов
1.2 Установка системы
Задание:
установить систему, не менять значения по умолчанию в процессе инсталляции
добавить пользователя student/password
в linux установить sshd
Задание для преподавателя:
установить CentOS
установить Ubuntu18 (netplan)
Задание на дом:
1.3 Анализ оборудования системы
Задание: найти информацию о процессоре, памяти, дисках и сетевых платах
1.4 Анализ ядра, модулей и дистрибутива
Задания:
выяснить версию ядра
выяснить, какие модули ядра загружены (например, для оборудования)
выяснить дистрибутив (для linux)
1.5 Анализ процессов в системе
Задание: выяснить, запущен ли сервис sshd
1.6 Управление загрузчиком системы
Задание для преподавателя:
восстановить забытый пароль (альтернативно можно показать исправление fstab в модуле про ФС, или, загрузка в однпользовательском режиме для переноса /var на другой диск)
Вопросы
Что общего и в чем разница между Linux и UNIX?
Что такое Source-based, Binary based, Rolling release, LTS дистрибутивы?
Назовите этапы загрузки системы
Какие команды позволят определить аппаратные ресурсы системы?
Какие команды помогут определить версию ядра и дистрибутив системы?
Для чего нужны модули ядра?
Для чего служат переменные ядра?
Модуль 2 (5). Настройка и тестирование сети
Теория
Лабораторные работы
2.0 Настроить маршрут с рабочей станции в сеть стендов
C:\>route -p add 172.16.1.0 mask 255.255.255.0 10.N.M.252
*/ примечание, если не в комплексе Радио
2.1 Команды для настройки сети
Задание:
выяснить состояние сетевых интерфейсов в системе, назначить им ip/mask/gate
выяснить состояние переменных ядра отвечающих за forwarding ip пакетов и базовое значение ttl
2.2 Команды для диагностики сети
Задание: используя настроенную сетевую подсистему ядра проверить ее функционирование и подключиться к системе по протоколу ssh
2.3 Файлы конфигурации сети
Задание: отредактировать файлы конфигурации сети используя любой тестовый редактор, перезагрузить систему проверить работу сети после перезагрузки системы.
2.4 Дополнительные утилиты для тестирования сети
Задание: посмотреть какой порт “слушает” сервис ssh
Задание: посмотреть содержимое трафика ssh командой tcpdump
Задание: проверить работу клиента DNS
Вопросы
Какие команды используются для управления/диагностики сетевых параметров системы?
Какие команды используются для тестирования настроек
DNS?
Какие команды используются для анализа открытых сетевых портов системы?
Что общего между файлами /etc/resolv.conf и /etc/hosts?
Какие варианты управления файлом /etc/resolv.conf могут быть?
Модуль 3 (6). Система безопасности UNIX
Теория
Лабораторные работы
3.1 Управление пользователями в системе
Задание:
выяснить, какие учетные записи присутствуют в системе
какие из них можно использовать для подключения по ssh
создать пользователя userX, указав его ФИО, shell и пароль
3.2 Управление правами пользователей в системе
Задание: познакомиться с утилитами umask, chmod, chown
Задание: назначить userX администратором системы, а затем, лишить его этих полномочий.
Задание: отключить текущую сессию бывшего администратора (можно в теме управления сервисами)
Вопросы
В каком виде хранится пароль пользователя в системной базе данных ?
Для чего предназначены команды umask, chmod, chown?
Что определяет маска 640 или
-rw-r-----
для файла?
Что обозначает бит “x” для файла и каталога
Что обозначает значение атрибута EUID=0 для процесса?
Что обозначает бит “s” для файла, содержащего программу?
Для чего предназначены команды su и sudo?
Модуль 4 (7). Управление ПО
Теория
Сборка и установка ПО
Обновление ПО
Лабораторные работы
4.1 Сборка и установка ПО из исходных текстов
Задание для преподавателя:
4.2 Базовое ПО классических UNIX систем
4.3 Сборка и установка ПО из портов
Для FreeBSD /*
Задание для преподавателя: установить сервис asterisk с минимальным количеством опций
1. Установить “чистый” экземпляр FreeBSD предыдущего релиза и дерево портов из дистрибутива
2. Установить переменные окружения BATCH (или все зависимости) и DISABLE_VULNERABILITIES (если потребуется)
3. Установить /usr/ports/net/asterisk11 из портов с опциями GCC NCURSES GSM
*/ см. примечание
4.4 Установка ПО из скомпилированных пакетов
Задание: преподавателю - текстовый браузер lynx, студентам sudo
4.5 Обновление ПО внутри релиза
Задание: установить необходимые обновления в системе
4.6 Обновление системы до актуального релиза
Вопросы
Какие недостатки установки ПО “вручную” из исходных текстов?
Какие достоинства и недостатки установки ПО из Gentoo portage или FreeBSD ports?
Какие команды используются для установки пакетов в Debian, CentOS и FreeBSD?
Какие команды используются для работы с репозиториями ПО Debian, CentOS и FreeBSD?
В чем опасность использования сторонних репозиториев с ПО?
Какие проблемы могут возникнуть при обновлении системы до следующего релиза?
Модуль 5 (8). Управление сервисами
Теория
Управление запуском ПО
Управление сообщениями сервисов
Лабораторные работы
5.1 Управление запуском сервисов
Задание:
с помощью сигналов отключить пользователя userX
включить/выключить сервис clamav из автозагрузки
добавить в автозагрузку свой собственный сервис
# ssh-keygen
# ssh-copy-id userX@gate.isp.un
5.2 Регистрация действий сервисов
Задание:
выяснить, куда пишутся журнальные сообщения от сервисов
научиться отправлять журнальные сообщения из командной строки
# cat /etc/ssh/sshd_config
...
LogLevel...
...
Вопросы
Почему вместо rc.local стали применять системы инициализации/загрузки?
Что делает команда init n ?
Какие команды используются для вывода списков управляемых сервисов в системах инициализации SystemV, OpenRC, Systemd, rcNG?
Как включить/отключить автоматический запуск сервиса?
Какова причина наличия типа сообщения в системах syslog?
Что нужно сделать, что бы получать больше отладочной информации о работе сервиса?
Модуль 6 (9). Управление файловыми системами
Теория
Лабораторные работы
6.1 Анализ конфигурации дисковой подсистемы
Задание:
Проанализировать конфигурацию дисковой подсистемы
Смонтировать привод CDROM
6.2 Подключение новых дисков к системе
Задание:
Подключить дополнительный жесткий диск к системе
Определить наличие новых дисков в системе
Создать файловую систему на новом диске и примонтировать к каталогу /disk2
Задание для преподавателя:
-
Добавить 2-й диск, изменив номер первого в системе
Продемонстрировать загрузку в одно пользовательском режиме для исправления fstab
Продемонстрировать использование UUID дисков
В Linux LVM расширить логический том корневого раздела за счет нового диска
В FreeBSD ZFS добавить раздел RAID1
Вопросы
Какие команды используются для монтирования/размонтирования устройств?
Почему следует монтировать устройства в пустые каталоги?
Что может помешать размонтированию устройств?
В чем преимущество использования таблицы разделов GPT по сравнению с MBR?
Какая файловая система самая лучшая?
В чем преимущество использования UUID разделов вместо имен устройств?
В чем преимущество использования LVM и ZFS по сравнению с классической схемой использования дисков?
В каком файле конфигурации определяются монтируемые при загрузке файловые системы?
Модуль 7 (10). Резервное копирование и восстановление
Теория
Success Story
Лабораторные работы
7.1 Знакомство с командой tar
7.2 Создание архива на удаленной системе
Задание: предоставить пользователю userX возможность архивного копирования каталога /etc/ на backup сервер по протоколу ssh
7.3 Периодическое выполнение задач архивирования
Задание для преподавателя: написать сценарий для периодического копирования каталога /etc/ на backup сервер по протоколу ssh
Вопросы
Что обозначают ключи “c”, “t”, “x”, “z”, “f” в команде tar
Что нужно для использования ssh подключений в сценариях выполняемых периодически?
Как лучше оформить сценарии, выполняющиеся раз в минуту, час, день, неделю, месяц?
Как запрограммировать одноразовый запуск сценария в определенное время?
Модуль 8 (11). Анализ производительности и оптимизация системы
Теория
Лабораторные работы
8.1 Анализ производительности системы
# sysbench --help
# sysbench --test=cpu run
8.2 Стресс тестирование и выявление нагрузки на CPU
$ stress -c 6 -t 60s
$ top
$ ps ax -o pcpu,pid,user,command --sort pcpu
$ uptime
linux$ cat /proc/loadavg
8.3 Стресс тестирование и выявление нагрузки на RAM
$ stress -m 2 --vm-bytes 256M -t 60s
$ ps ax -o vsize,pid,user,command --sort vsize
8.4 Стресс тестирование и выявление нагрузки на HDD
$ 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
freebsd$ top -m io -o total
8.5 Тестирование производительности и выявление нагрузки на сеть
# trafshow -n
linux# nethogs
linux# ss -pan4 | grep 5001
freebsd# sockstat -4 | grep 5001
8.6 Оптимизация производительности или ее тестирование на реальной задаче
Вопросы
Перечислите основные ресурсы системы.
Перечислите команды, позволяющие найти критический ресурс.
Модуль 9 (12). Использование Linux/FreeBSD в качестве рабочей станции пользователя
Теория
Лабораторные работы
9.1 Текстовый интерфейс
Задание: настроить текстовый интерфейс пользователя
!!! RAM не менее 1Gb
linux# apt install gpm
freebsd# service moused onestart
Для демонстрации, запустить процесс процесс установки
GUI
-
9.2 Графический интерфейс пользователя
Задание: настроить графический интерфейс пользователя
Задание для преподавателя: за время установки GUI у слушателей продемонстрировать:
Вопросы
Как запустить долговременный интерактивный процесс на удаленной системе, что бы можно было отключиться до его окончания?
Что определяет язык интерфейса пользователя в UNIX?
Назовите основные компоненты системы XWindow
Что общего между getty, sshd и xdm?