# Linux_Basic-Синицын_Антон-Практика-2 ## Практическая работа №2.1 ### Часть 1. Команда df в linux - a, –all – отобразить все файловые системы, в том числе виртуальные, псевдо и недоступные; ![](https://i.imgur.com/Of8BcIl.png) - B – изменить размер одного блока перед выводом данных, например, можно использовать BM, чтобы вывести все данные в мегабайтах; ![](https://i.imgur.com/11mIWbW.png) - h – выводить размеры в читаемом виде, в мегабайтах или гигабайтах; ![](https://i.imgur.com/KTuXTGt.png) - H – выводить все размеры в гигабайтах; ![](https://i.imgur.com/WwhC6gt.png) - i – выводить информацию об inode; ![](https://i.imgur.com/HMhzqzl.png) - k – выводить размеры в килобайтах; ![](https://i.imgur.com/Gz9I1kY.png) - –output – использовать специальный формат вывода, если не задано, выводит все поля. Доступны такие варианты: ‘source’, ‘fstype’, ‘itotal’, ‘iused’, ‘iavail’, ‘ipcent’, ‘size’, ‘used’, ‘avail’, ‘pcent’, ‘file’ и ‘target’; ![](https://i.imgur.com/TDQMxeO.png) - P – использовать формат вывода POSIX; ![](https://i.imgur.com/D40jJnk.png) - –total – выводить всю информацию про использованное и доступное место; ![](https://i.imgur.com/rUiSCVv.png) - t, –type – выводить информацию только про указанные файловые системы; ![](https://i.imgur.com/xuIuIre.png) - x – выводить информацию обо всех, кроме указанных файловых систем; ![](https://i.imgur.com/Tvw43et.png) ### Часть 2. Команда du в Linux - -a - выводить размер для всех файлов, а не только для директорий ![](https://i.imgur.com/NFzMyMX.png) - -B - указать единицы вывода размера ![](https://i.imgur.com/FKXoQAZ.png) - -d, — максимальная глубина вложенности директорий ![](https://i.imgur.com/p6ZkWjm.png) - -h, - выводить размер в удобных единицах измерения ![](https://i.imgur.com/Pr0YriL.png) ### Часть 3. Команда free в Linux Команда free позволяет указать единицы измерения памяти. Допустимые варианты: - b , --bytes — отображать вывод в байтах. - -kilo — отображать вывод в килобайтах (1 КБ = 1000 байт). - -mega — отображать вывод в мегабайтах. - -giga — Показать вывод в гигабайтах. - -tera — Показать вывод в терабайтах. - k , --kibi — Показать вывод в килобайтах. (1 КБ = 1024 байта). Это единица измерения по умолчанию. - m , --mebi — Показать вывод в мегабайтах. - g , --gibi — Показать вывод в гигабайтах. - -tebi — отображать вывод в теробайтах. - -pebi — Показать вывод в перобайтах. - -si — вместо 1024 используйте --mebi --si 1000. Например, --mebi --si равно --mega . ![](https://i.imgur.com/YIyyEGu.png) - Чтобы постоянно отображать информацию о памяти на экране, можно вызвать free с параметром -s ( --seconds ), за которым следует число, определяющее задержку. ![](https://i.imgur.com/gy9DGdP.png) - Для постоянного использования памяти команда watch free -h: ![](https://i.imgur.com/yWdM15i.png) ### Часть 4. iostat `$ iostat опции устройство интервал` - **-с** — отобразить только информацию об использовании процессора ![](https://i.imgur.com/mOOUWu8.png) - **-d** — отобразить только информацию об использовании устройств ![](https://i.imgur.com/mvCtv1J.png) - **-h** — выводить данные в отчёте в удобном для чтения формат ![](https://i.imgur.com/tHkQgX4.png) - **-k** — выводить статистику в килобайтах ![](https://i.imgur.com/4Pn7rCQ.png) - **-m** — выводить статистику в мегабайтах ![](https://i.imgur.com/ltfW2r7.png) - **-o JSON** — выводить статистику в формате JSON ![](https://i.imgur.com/Uh37JrD.png) - **-p** — вывести статистику по устройству и всех его разделам ![](https://i.imgur.com/0buMP0x.png) - **-x** — вывести расширенную статистику ![](https://i.imgur.com/KmTUfYE.png) - **-y** — отображать статистику с момента запуска утилиты, а не системы ![](https://i.imgur.com/yKtkKGx.png) - **-z** — спрятать информацию о дисках, у которых нет активности ![](https://i.imgur.com/IAeM01w.png) ### Часть 5. mpstat - Для просмотра подробностей по каждому ядру процессора опция -P с параметром ALL: ![](https://i.imgur.com/0DBKmHz.png) - Опция «-А», показывает всю информацию, которая может быть отображена с помощью команды mpstat: ![](https://i.imgur.com/hzfcCxN.png) - Для отображение статистики о конкретном ядре: ![](https://i.imgur.com/p5aWE9n.png) ### Часть 6. vmstat Отчет команды vmstat содержит статистическую информацию о нитях ядра, находящихся в очереди выполнения и ожидающих запуска, а также об оперативной памяти, подкачке, дисках, прерываниях, системных вызовах, переключении контекста и работе процессора. ![](https://i.imgur.com/x2pW103.png) - количество вилок с момента загрузки ![](https://i.imgur.com/PMbYBh5.png) - статистика диска ![](https://i.imgur.com/ogJpvN3.png) - общая статистика диска ![](https://i.imgur.com/sXZv9id.png) ### Часть 7. Утилита/команда " w " Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены: ![](https://i.imgur.com/QkUZF7h.png) USER — имя пользователя. TTY — название терминала. FROM — название удаленного компьютера или IP-адрес. LOGIN — время входа в систему. IDLE — время бездействия. JCPU — время, использованное всеми процессами, подключенными к tty. Оно не включает завершенные фоновые задания, но включает фоновые задания, работающие в данный момент. PCPU — время, использованное текущим процессом, который указан в поле WHAT. WHAT — текущий процесс (командная строка текущего процесса). - -**h (--no-header)** — отказ от вывода заголовков ![](https://i.imgur.com/N41GqA2.png) - -**u (--no-current)** — приказ определять JCPU и PCPU, игнорируя имена учетных записей: ![](https://i.imgur.com/80l5igF.png) - -**s (--short)** — краткий формат вывода: ![](https://i.imgur.com/1sy56HK.png) - -**f (--from)** — управление выводом имени хоста или IP-адреса, с которого был осуществлен вход в систему: ![](https://i.imgur.com/22sHTER.png) - -**i (--ip-addr)** — замена информации об имени хоста на IP-адрес: ![](https://i.imgur.com/buMQ1rO.png) - -**o (--old-style)** — отображение вывода в старом формате: ![](https://i.imgur.com/2vrFGaW.png) ### Часть 8. Утилита htop - Установка ![](https://i.imgur.com/Gnlz9pE.png) - Использование ![](https://i.imgur.com/qLrurk6.png) ## Практическая работа №2.2, №2.3 Установка и настройка сервера SSH в Linux, Установка и настройка SSH-authorized_keys ## ### Часть 1. Установка пакетов SSH ![](https://i.imgur.com/5G2dnn6.png) - Запуск Ssh и проверка статуса ![](https://i.imgur.com/oTMBz5P.png) ### Часть 2. Настройка SSH Настройки демона хранятся в файле `/etc/ssh/sshd_config`. Посмотреть его можно командой `cat /etc/ssh/sshd_config` ![](https://i.imgur.com/uqRyKxX.png) Установим следующие настройки ![](https://i.imgur.com/yM4NPoK.png) Создание псевдонима для ssh: Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в ~/.ssh/config ![](https://i.imgur.com/TjnTh5q.png) **Для применения сделанных настроек необходим перезапуск SSH-сервера:** `$ systemctl restart ssh` ### Часть 3. Настройка и использование клиента SSH - Для подключения по к серверу используется команда: `$ ssh user_name@host_name -p portnumber` ![](https://i.imgur.com/4PZVs9C.png) ### Часть 4. Генерация ключей Для генерации ключей используем команду: `ssh-keygen` ![](https://i.imgur.com/SjJgSFo.png) Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер с помощью команды: `ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user_name@host_name` ![](https://i.imgur.com/mclvxzS.png) Для входа на сервер с хостовой операционной системы необходимо сначала скопировать приватный ключ: `cat ./.ssh/id_rsa` ![](https://i.imgur.com/EdPqyIc.png) Далее создаем на рабочем столе текстовый документ и вставляем ПОЛНОСТЬЮ ключ. После чего через Conversions -> Import Key вставляем ключ, вводим фразу и сохраняем его. Далее в putty вставляем наш ключ перед подключением. ![](https://i.imgur.com/LquoPXU.png) В session жмем open и подключаемся. ![](https://i.imgur.com/E7y4Rqw.png) ## Практическая работа №2.4. Сбор информации о Linux и WGET ### Часть 1.Базовый сбор информации Чтобы получить информацию о дистрибутиве используем команду: - cat /etc/*release ![](https://i.imgur.com/Rod5pb0.png) - Чтобы получить информацию о ядре Linux вводим команду **uname -a**: ![](https://i.imgur.com/7SIkU1b.png) - Чтобы узнать с какой учётной записи мы вошли в систему **whoami** ![](https://i.imgur.com/0Kk1HaK.png) - Команда **Uptime** позволяет получить информацию о текущем времени работы системы, количестве активных пользователей и среднее значение загрузки системы: ![](https://i.imgur.com/wnU4irS.png) - Чтобы посмотреть права на домашнюю директорию **ls -la /home**: ![](https://i.imgur.com/EdN3CNf.png) - Чтобы узнать подключенных соседей **ip neigh**: ![](https://i.imgur.com/k5SHL3I.png) - Показать какие сервисы и с какими портами запущены **sudo ss -tlnp** : ![](https://i.imgur.com/958vrMA.png) - Чтобы узнать какие команды может выполнять пользователь **sudo -l**: ![](https://i.imgur.com/yLDEfAE.png) ### Часть 2. Суидные файлы Существуют специальные биты, которые отвечают за расширенные права доступа к файлам: SUID, SGID, Sticky bit. бит SUID даёт право повысить любому пользователю свои права до владельца файла. Чтобы узнать какие SUID файлы есть в системе используем команду: `sudo find / -user root -perm -4000 -exec ls -ldb {} \\; 2> /dev/null` , где - / - директория, в которой выполняется поиск файлов - root - пользователь, которому принадлежат файлы - 4000 - права доступа(4 — восьмеричное значение suid файла) - **ls -ldb** — команда для вывода найденного файла - /dev/null — “пустота”, в которую будут записываться возможные ошибки ![](https://i.imgur.com/zM9bY6C.png) ## Часть 3. WGET и ****аудит Linux с помощью Lynis**** Утилита WGET, работающая по протоколам HTTP, HTTPS и FTP, позволяет скачивать файлы и веб страницы. Скачиваем: ![](https://i.imgur.com/bbXZwy4.png) Чтобы скачать Lynis: 1. Копируем ссылку кнопки на скачивание с сайта: [https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz](https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz) ![](https://i.imgur.com/tNlqmvM.png) 2. С помощью wget скачиваем файл ![](https://i.imgur.com/r3igWXU.png) 3. Разархивируем скачанный файл: ![](https://i.imgur.com/beHg2DD.png) 4. Проверяем контрольную сумму ![](https://i.imgur.com/UhR0N9m.png) ![](https://i.imgur.com/mTFGuqm.png) Запускаем программу ![](https://i.imgur.com/sK4EhN7.png) Отчет по завершении программы: ![](https://i.imgur.com/81o5Jr7.png) ### Часть 3. Проверка целостностей пакетов Чтобы посмотреть все установленные в системе пакеты: `dpkg -l` ![](https://i.imgur.com/wbKvOSb.png) Чтобы посмотреть установленные утилиты: `dpkg -L coreutils` ![](https://i.imgur.com/mvyH3WV.png) С помощью команды **sudo cp /bin/false /bin/dir** мы можем подменить файл /bin/dir на /bin/false, но для начала сделаем резервную копию: `mv /bin/dir /bin/dir.bak` ![](https://i.imgur.com/f2DqNBC.png) Теперь вводим команду для подмены: `cp /bin/false /bin/dir` ![](https://i.imgur.com/XmlaEOJ.png) При запуске dir ничего не происходит. Чтобы нам быстро проверить этот пакет, мы можем выполнить команду: `debsums` , если утилита не установлена, то `sudo apt install debsums` ![](https://i.imgur.com/qPwuwS7.png) debsums - проверяет MD5 hash-суммы пакетов суммы установленных пакетов. Для запуска проверки: `debsums -ac coreutils` ![](https://i.imgur.com/hx8aiDM.png) Найдена ошибка в /bin/dir Возвращаем изменения: `cp /bin/dir.bak /bin/dir` ![](https://i.imgur.com/bcx2BWK.png) ## Практическая работа №2.5. Переменные окружения в Linux .bashrc, .bash_profile и .bash_login ### Часть 1. Просмотр списка системных переменных окружения Установим утилиту coreutils — пакет содержащий основные утилиты для работы с файлами, оболочками и текстом: `apt-get install coreutils` ![](https://i.imgur.com/S5nd3se.png) Чтобы вывести список всех окружений системы: `printenv` ![](https://i.imgur.com/diTu0jt.png) - ### Часть 2. Запуск команд с указанием нового значения переменной окружения Пользователь может самостоятельно изменить значение переменной окружения с помощью команды env: `env HOME=/root` ![](https://i.imgur.com/9p13bNn.png) ![](https://i.imgur.com/3OJu1r6.png) **Установка и удаление локальных переменных окружения** Чтобы создать локальную(только для текущей сессии) переменную окружения используем команду: `TEST_VAR='Hello World!'` , где ![](https://i.imgur.com/dsHT4vT.png) Чтобы удалить переменную окружения, используем команду: `unset TEST_VAR` **Добавление и удаление пользовательских переменных** Пользовательские переменные оболочки определяются для конкретного пользователя и загружаются каждый раз когда он входит в систему. Такие переменные, как правило, хранятся в файлах конфигурации: .bashrc, .bash_profile, .bash_login, .profile или в других файлах, размещенных в директории пользователя. Пользовательскую конфигурацию можно редактировать командой из домашнего каталога: .zshrc - это файл конфигурации, который содержит команды, запускающие оболочку zsh, точно так же, как файл .bashrc, содержащий команды для оболочки bash. Чтобы добавить свою переменную, переходим в конец файла и прописываем название со значением: `sudo nano .zshrc` ![](https://i.imgur.com/H2e3w58.png) Командой `source .zshrc` обновляем настройки: ![](https://i.imgur.com/1JFy6Q7.png) **Создание и удаление системных переменных окружения** Чтобы перейти в настройки системных переменных: `nano /etc/profile` ![](https://i.imgur.com/HO8hPkX.png) *добавили новую переменную. `source /etc/profile` - чтобы изменения вступили в силу: ![](https://i.imgur.com/9U6krlV.png)