### Отчет Никита Кузенков ## Занятие 2. Администрирование Linux ### Задача к практической работе 2.1: 1. Команда df в linux Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать Утилита отображает стандартный набор колонок, но понять в ее выводе что-то с первого раза сложно. Все данные выводятся в килобайтах. Теперь давайте попросим утилиту выводить данные в более читаемом формате: `df -h` Это самое популярное сочетание опций, потому что оно дает максимально понятную информацию и уже можно судить о том, что происходит на диске. Например, мы видим, что в домашней папке уже занято 87% места и, возможно, пора что-то удалить. Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы: `df -a` ![](https://i.imgur.com/5fZv0eH.png) Здесь отображается огромное количество виртуальных файловых систем ядра. Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs: `df -x tmpfs` Также можно отфильтровать две файловые системы: `df -x devtmpfs -x tmpfs` Или же указать файловую систему, которую нужно отображать: `df -t ext4` Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды: `df -h /dev/sdb6` С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе: `df -hi /dev/sdb6` Вывести объем доступного пространства в каталоге: `df -h /home` Команда df – очень простой в освоении, но эффективный инструмент, позволяющий всегда быть в курсе использования дискового пространства в ваших системах. ![](https://i.imgur.com/QsAqE2n.png) 2. Команда du в Linux **Команда du** , сокращение от «использование диска», сообщает приблизительный объем дискового пространства, используемого данными файлами или каталогами. Это практически полезно для поиска файлов и каталогов, занимающих большие объемы дискового пространства. `du [OPTIONS]... FILE...` Если данный FILE является каталогом, du будет суммировать использование диска для каждого файла и подкаталога в этом каталоге. Если *FILE* не указан, *du* сообщит об использовании диска в текущем рабочем каталоге . При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах. `du ~/Documents` Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов: `du ~/Documents ~/Pictures ~/.zshrc` Если вы запустите du для файла или каталога, для которого у вас нет прав, вы получите что-то вроде «du: невозможно прочитать каталог». В этой ситуации вам нужно будет добавить к команде sudo . **du много опций, я выделю только наиболее часто используемые.** Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге. `du -a ~/Documents` Обычно вы хотите отображать только пространство, занимаемое данным каталогом, в удобочитаемом формате. Для этого используйте параметр *-h* . Например, чтобы получить общий размер */var/lib* и всех его подкаталогов, вы должны выполнить следующую команду: `sudo du -h /var` ![](https://i.imgur.com/8hOZypi.png) Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр -s Параметр -c указывает du сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов. Если вы хотите отобразить использование диска подкаталогами n-уровня, используйте параметр --max-depth и укажите уровень подкаталогов. ![](https://i.imgur.com/t5tSoci.png) По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель --apparent-size . «Видимый размер» файла — это фактический объем данных в файле. du также позволяет использовать шаблон оболочки. **Использование du с другими командами** Команду *du* можно комбинировать с другими командами с конвейерами. Например, чтобы напечатать 5 самых больших каталогов внутри каталога */var* вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов ![](https://i.imgur.com/1S86KHq.png) 3. Команда free в Linux free Вывод будет включать три строки, заголовок, одну строку для памяти и одну для свопа Доступно — оценка объема памяти, доступного для запуска новых приложений без подкачки. По умолчанию команда free показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мегабайтах и гигабайтах), используйте параметр -h Например, чтобы отобразить результат в мегабайтах, введите --mega Чтобы отобразить строку, показывающую итоги столбца, используйте параметр -t . Это дает вам сумму памяти и свопа в столбцах total, used и free. Чтобы постоянно отображать информацию о памяти на экране, вызовите free с параметром -s ( --seconds ), за которым следует число, определяющее задержку. Например, чтобы распечатывать информацию о памяти каждые пять секунд, вы должны выполнить: `free -s 5` free команда будет продолжать отображать результат, пока вы не нажмете CTRL+C Это похоже на поведение команды watch . Чтобы отображать результат определенное количество раз, используйте параметр -c ( --count ). В примере ниже команда выведет результат десять раз: `free -s 5 -c 10` ![](https://i.imgur.com/Lby4jgF.png) 3.1 Команда free в Linux с примерами ![](https://i.imgur.com/jlEif2C.png) ![](https://i.imgur.com/ATFmUyw.png) 4. iostat `sudo iostat` В первой части отчёта находится информация о загруженности процессора. Тут есть такие колонки: - %user - процент использования процессора программами, запущенными на уровне пользователя; - %nice - процент использования процессора программами запущенными тоже в пространстве пользователя, но только с изменённым приоритетом; - %system - процент использования процессора ядром; - %iowait - процент времени затраченного на ожидание завершения операций ввода/вывода; - %steal - процент простоя виртуального процессора, пока гипервизор отдаёт мощность другому виртуальному процессору; - %idle - процент времени пока процессор не занят ничем. - tps - означает количество запросов на чтение или запись к устройству в секунду; - KB_read/s, MB_read/s - количество килобайт или мегабайт, прочитанных с устройства за секунду; - KB_wrtn/s, MB_wrtn/s - количество килобайт или мегабайт записанных на устройство в секунду; - KB_dscd/s, MB_dscd/s - скорость освобождения блоков данных на устройстве, килобайт или мегабайт в секунду; - KB_read, MB_read - общее количество прочитанных данных с диска с момента загрузки системы; - KB_wrtn, MB_wrtn - количество записанных данных с момента загрузки системы; - KB_dscd, MB_dscd - количество освобождённых блоков на диске в результате выполнения операции trim в килобайтах или мегабайтах. ![](https://i.imgur.com/k5XDykp.png) ![](https://i.imgur.com/og0chR9.png) Для просмотра данных в удобном формате выполните: `sudo iostat -h` ![](https://i.imgur.com/PsxDSsB.png) Чтобы посмотреть данные по нужному устройству просто укажите это устройство: `sudo iostat /dev/nvme0n1` Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p: `sudo iostat -p /dev/nvme0n1` Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например: `sudo iostat -p /dev/nvme0n1 1` ![](https://i.imgur.com/hXjMJVN.png) Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал: `sudo iostat -y -p /dev/nvme0n1 1` ![](https://i.imgur.com/mTM5aU0.png) 4.1 Профилирование нагрузки на файловую систему с помощью iostat ![](https://i.imgur.com/IsfmWR1.png) ![](https://i.imgur.com/0rHHcF4.png) 5. mpstat 5.1 Отображение всей информации ![](https://i.imgur.com/dpHrNQx.png) 5.2 Показать статистику CPU индивидуального процессора (или) ядра ![](https://i.imgur.com/sdnGx5H.png) 5.3 Для отображения статистически о конкретном CPU или ядре ![](https://i.imgur.com/r6qfTIZ.png) 5.4 Можно выполнить «mpstat -V» чтобы показать версию утилиты: ![](https://i.imgur.com/cwK0i34.png) 5.5 Дополнительные опции ![](https://i.imgur.com/qhVIr48.png) 6. vmstat ![](https://i.imgur.com/Bp9oMYA.png) Приведенный ниже пример иллюстрирует применение vmstat для обнаружения программ, которые потребляют слишком много ресурсов CPU. **vmstat -a** (active/inactive memory) - активная/неактивная память **vmstat -f** (number of forks since boot) - количество вилок с момента загрузки **vmstat -d** (disk statistics) - статистика диска **vmstat -D** (summarize disk statistics) - (общая статистика диска) ![](https://i.imgur.com/WJFIx33.png) ![](https://i.imgur.com/cvx8wBV.png) 7. Утилита/команда " w " В таблице для каждого пользователя выводятся следующие поля: ``` USER — имя пользователя. TTY — название терминала. FROM — название удаленного компьютера или IP-адрес. LOGIN — время входа в систему. IDLE — время бездействия. JCPU — время, использованное всеми процессами, подключенными к tty. Оно не включает завершенные фоновые задания, но включает фоновые задания, работающие в данный момент. PCPU — время, использованное текущим процессом, который указан в поле WHAT. WHAT — текущий процесс (командная строка текущего процесса). ``` - h Не выводить заголовок у таблицы. - u Игнорировать имена пользователей при определении времени текущего процесса и времени CPU. - s Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU. - f Включить или выключить вывод поля from, которое соответствует имени удаленного хоста (remote hostname). В зависимости от дистрибутива Linux (версии утилиты w), поле from может выводиться или не выводиться по умолчанию. - i Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно. - o Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится. - V Вывести версию утилиты w. ![](https://i.imgur.com/sS3sgW8.png) 8. Утилита htop **В самом верху показана нагрузка на каждое ядро центрального процессора (цифры от 1 до 12).**` ``` Mem — это общее количество оперативной памяти и используемая память. Task — обобщённая статистика по процессам Swp — уровень занятости файла подкачки (если он есть) Load average — средняя загрузка центрального процессора Uptime — время работы операционной системы с момента последней загрузки ``` ![](https://i.imgur.com/Jr8u14X.png) ### Практическая работа №2.2 1. Установка пакетов SSH ![](https://i.imgur.com/CJKbWSJ.png) ![](https://i.imgur.com/156kEm9.png) 2. Настройка SSH ![](https://i.imgur.com/VS7FJAN.png) ![](https://i.imgur.com/cyNJ2Bc.png) ![](https://i.imgur.com/KOxqflX.png) ![](https://i.imgur.com/PryGeva.png) по паролю ![](https://i.imgur.com/JPU4djX.png) 4. Для генерации ключей используется утилита ssh-keygen: ![](https://i.imgur.com/t0Hlu9c.png) ![](https://i.imgur.com/Y2MUgoO.png) 5. Подключиться к серверу linux c хостовой операционной системы через Putty. ![](https://i.imgur.com/Cu1QL21.png) ![](https://i.imgur.com/11IRl3w.png) по ключу ![](https://i.imgur.com/QztzqA5.png) ### Практическая работа №2.3 2. Создание ключей SSH ![](https://i.imgur.com/t0Hlu9c.png) 3. Как скопировать открытый ключ на ваш сервер ![](https://i.imgur.com/BBKiAKk.png) Аутентификация на сервере с использованием ключей SSH ![](https://i.imgur.com/rlzWFWP.png) 5. Отключение аутентификации с помощью пароля на сервере ![](https://i.imgur.com/WpEeMXo.png) 6. Копирование открытого ключа с помощью SSH ![](https://i.imgur.com/Vl1IXAv.png) ### Практическая работа №2.4 1. Базовый сбор информации Начнём со сбора информации о дистрибутивах ![](https://i.imgur.com/5iMYAy1.png) **По ядру linux можно понять следующее:** **uname -a** ![](https://i.imgur.com/HoeQioY.png) Команда uptime покажет, когда и сколько система работала и соответственно, если она работала без перерыва 3 года, то злоумышлинник может воспользоваться старыми уязвимостями для получения доступа или внедрения кода. ![](https://i.imgur.com/O7Pc4e0.png) Давайте посмотри права директории /home ![](https://i.imgur.com/n8M6ofd.png) Чтобы ограничить права другим пользователям делаем следующее sudo chmod o-rx /home/kali ![](https://i.imgur.com/Xagwk2V.png) ip neigh - показывает с какими компьютерами происходит обмен данными sudo ss -tlnp - показывает какие сервисы и с какими портами запущены sudo -l - позволяет нам понять, что есть в этом машинки и что пользователь может ![](https://i.imgur.com/cc3npRs.png) 2. Суидные файлы ![](https://i.imgur.com/xcp34fz.png) ![](https://i.imgur.com/GQVcCMz.png) ![](https://i.imgur.com/XiEdx98.png) ![](https://i.imgur.com/HXoKzla.png) ![](https://i.imgur.com/SbGwAsC.png) ![](https://i.imgur.com/uKHfVC1.png) ![](https://i.imgur.com/IZRwyoP.png) 3. Проверка целостностей пакетов ![](https://i.imgur.com/3bzNrkx.png) ![](https://i.imgur.com/7yO17Xg.png) ![](https://i.imgur.com/1AG0g7E.png) ![](https://i.imgur.com/qQjutAh.png) ![](https://i.imgur.com/76jkfHL.png) ![](https://i.imgur.com/Ryybsjm.png) ![](https://i.imgur.com/Q8aEWzw.png) ![](https://i.imgur.com/InyuZwc.png) ![](https://i.imgur.com/X4Z0o3Q.png) ### Практическая работа №2.5 1. Просмотр списка системных переменных окружения ![](https://i.imgur.com/FLrvUk2.png) 2. Запуск команд с указанием нового значения переменной окружения ![](https://i.imgur.com/tZzGqq2.png) 2.1 Установка и удаление локальных переменных окружения ![](https://i.imgur.com/HR8FWVO.png) 2.2 Добавление и удаление пользовательских переменных ![](https://i.imgur.com/ZSohVrm.png) ![](https://i.imgur.com/dUWS1UI.png) ![](https://i.imgur.com/yfqPL4l.png)