# Занятие Линукс 2 # Модуль Линукс 2.1 1. Команда df и ее производные: ![](https://i.imgur.com/mKJyITV.png) ![](https://i.imgur.com/EPntNQW.png) ![](https://i.imgur.com/fN6WxI9.png) ![](https://i.imgur.com/PsHQaQb.png) ![](https://i.imgur.com/4dEYbBX.png) ![](https://i.imgur.com/QG0PuHU.png) 2. Команда du и ее производные: du-сообщает приблизительный объем диск пространства, используемого данными файлами или каталогами ![](https://i.imgur.com/0BcGS1B.png) ![](https://i.imgur.com/Ig8ZmnM.png) ![](https://i.imgur.com/Dfdal4c.png) ![](https://i.imgur.com/FNj1Ymt.png) 3.Команда free предоставляет информацию об общем объеме физической памяти и памяти подкачки, а также о свободной и используемой памяти ![](https://i.imgur.com/PMQHFzA.png) 4. Установка sysstat ![](https://i.imgur.com/4YuQ6dm.png) 4.1 Iostat отчет со средней статистикой с момента включения системы до момента запуска программы ![](https://i.imgur.com/NM2z9bu.png) ![](https://i.imgur.com/87Tewyb.png) ![](https://i.imgur.com/GpLNTYT.png) Интересный метод анализа системы: iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}' >> iostat.log Желательно запускать на пару суток.В первую очередь обратим внимание на последнюю колонку *%util*. Хотя бы потому, что большое значение этого параметра (90%-100%) для пользователя выглядит как «сервер висит». У нас sda загружен менее чем на 9%. Нормально. Причем в основном разделом *sda7(SQL)*. Далее параметры записи/чтения: пропускная способность колонки rkB/s, wkB/s. Пишем 219 KБ/с iops колонки r/s, w/s — 10,5 запросов в секунду время обработки запроса: await — 156 ms, из них собственно выполнение svctm 8 ms О чем это говорит: Диск не загружен, числа не большие. Но запросы стоит в очереди 200ms время приемлемое, но при «первом шухере расколется», сама подсистема паршивенькая. Хотя однозначно сказать нельзя? ибо опять таки диск не сильно грузится вот и не торопятся данные отправлять из очереди. Что еще полезно: rrqm/s, wrqm/s это собственно число запросов, которые приложения попросили выполнить, но система смогла их объединить в блоки в среднем по avgrq-sz байт. Данные цифры помогут оптимизировать работу приложения: Если вы откроете 100500 файлов, начнете произвольно прыгать по открытым файлам и заниматься прочими излишествами, выкушаете кеш системы — r/s,w/s начнут стремиться к rrqm/s и wrqm/s, и avgrq-sz падать. Это ситуация чистого Random Access — самый медленный сценарий использования диска. А если все будет последовательно, то стремиться они будут к единичке (а лучше к нолику), а avgrq-sz расти. Единственный запрос за интервал — это чистой воды Sequential Access — самый быстрый сценарий использования диска. Проводить его лучше на рабочей машинке, а у меня виртуалка. Не покажет интересного анализа. Если выпрошу ноут у соседки, то апдейтну результаты через несколько суток 5. mpstat отчет о использовании процессоров ![](https://i.imgur.com/KzO8KB6.png) ![](https://i.imgur.com/w8gQJ2l.png) 6. vmstat о неполадках, приводящих к снижению производительности Содержит статистическую информацию о нитях ядра, находящихся в очереди выполнения и ожидающих запуска, а также об оперативной памяти,подкачке,дисках, прерыаниях,системных вызовах,переключении контекста и работе процессора. ![](https://i.imgur.com/Cr5pWaK.png) ![](https://i.imgur.com/2i3eIcR.png) ![](https://i.imgur.com/0UQUc5b.png) 7.утилита/команда w ![](https://i.imgur.com/XEvewdI.png) ![](https://i.imgur.com/wo03Xut.png) 8. htop установка ![](https://i.imgur.com/lKkjPHs.png) ![](https://i.imgur.com/98IuW0b.png) *Значение столбцов htop* ![](https://i.imgur.com/v75rpEm.png) Программа htop выводит следующие столбцы: *PID* Идентификатор процесса. *USER* Имя пользователя владельца процесса или ID если имя не может быть определено. *PRI* Приоритет — внутренний приоритет ядра для процесса, обычно это просто значение nice плюс двадцать. Отличается для процессов имеющих приоритет выполнения real-time. *NI* NICE значение процесса от 19 (низкий приоритет) до -20 (высокий приоритет). Более высокое значение означает, что процесс «приятный» для других и позволяет им иметь более высокий приоритет выполнения. *VIRT* Размер виртуальной памяти процесса (M_SIZE). *RES* Размер резидентного набора (text + data + stack) процесса (т.е. размер используемой физической памяти процесса, M_RESIDENT). *SHR* Размер общих страниц процесса (M_SHARE). *S* STATE, состояние процесса, может быть: S для спящих (в простое) R для запущенных D для сна диска (бесперебойный) Z для зомби (ожидает родитель считает его статус выхода) T для отслеживания или приостановки (т. е. от SIGTSTP) W для подкачки *CPU%* Процент процессорного времени, которое процесс использует в данный момент. *MEM%* Процент памяти, используемой процессом в данный момент (в зависимости от размера резидентной памяти процесса, см. M_RESIDENT выше). *TIME+* Время, измеренное в часах, указывает на то, сколько процесс провёл в пользовательском и системном времени. *Command* Полная командная строка процесса (то есть имя программы и аргументы). для себя (для справки): **Как ускорить или замедлить частоту обновления htop** Для установки времени обновления htop используйте опцию -d после которой укажите время обновления в десятой части секунд. *Например, чтобы программа обновляла окно каждую 1/10 секунды:*`sudo htop -d 1` *Чтобы программа выводила новые данные раз в 5 секунд:*`sudo htop -d 50` **Как вывести процессы в виде дерева** *Для вывода процессов в виде дерева используйте опцию -t:*`sudo htop -t` ![](https://i.imgur.com/7jYDW31.png) # Модуль Линукс 2.2 и 2.3 ## + эксперимент, который занял несколько дней (в конце) ### 2.2 ### Установка SSH ![](https://i.imgur.com/nca7s3n.jpg) по умолчанию он не включился, поэтому пришлось включить ![](https://i.imgur.com/C90ya0n.jpg) потренировалась изменять параметры в конфиге ![](https://i.imgur.com/HmNZoUJ.jpg) перезапуск для корректной работы конфига ![](https://i.imgur.com/NaGKxxt.jpg) Для установки соединения не по паролю, а по ключам необходимо их сгенерировать. ![](https://i.imgur.com/zGbm4ys.jpg) ну и отредактировать конфиги клиента и сервера, но здесь лучше не торопиться отключать соединение по паролю. Ну и отсюда начинается самое **интересное** В конце 2.2 я вижу упоминание о подключении по ssh с линукса на винду через putty. И отсюда начинаются 4 дня мучения в поисках ответа. Я уже начала сомневаться в каждом параметре конфигурации. НО решила попробовать просто к другой машинке на линукс (а это оказалась 2.3). Поставила дебиан. И все по маслу пошло: ![](https://i.imgur.com/xdtChgx.jpg) просто скопировала публичный ключ, обозначив, что это идентификационный файл (-i), в папку пользователя. И, собственно, подключение с первого раза красиво реализовалось. Даже обидно было И затем главное правило, вынесенное из этой работы: "**ВСЕ НУЖНО ГУГЛИТЬ НА АНГЛИЙСКОМ**" https://www.youtube.com/watch?v=Wx7WPDnwcDg&ab_channel=WilliamCampbell Ни один русскоязычный источник не указал на главную суть проблемы на винде. ПРАВА. F должны быть! ![](https://i.imgur.com/Te3Gprx.jpg) ![](https://i.imgur.com/BcidCKm.jpg) ![](https://i.imgur.com/WxWNB8s.jpg) И все выполняется исключительно из терминала. Не красота ли? # Модуль Линукс 2.4 1.Базовый сбор информации cat /etc/*release - информация о дистрибутиве и какая версия его ![](https://i.imgur.com/upalehj.jpg) По ядру linux можно понять следующее: **uname -a** ![](https://i.imgur.com/tASviNJ.jpg) **whoami** Как следует из названия, команда whoami выводит имя пользователя для эффективного идентификатора пользователя. Другими словами, он отображает имя текущего вошедшего в систему пользователя ![](https://i.imgur.com/NDXASTH.jpg) Команда uptime покажет, когда и сколько система работала и соответственно, если она работала без перерыва 3 года, то злоумышлинник может воспользоваться старыми уязвимостями для получения доступа или внедрения кода ![](https://i.imgur.com/opn7UJO.jpg) Давайте посмотри права директории /home ![](https://i.imgur.com/y1xLMG8.jpg) Чтобы ограничить права другим пользователям делаем следующее **sudo chmod o-rx /home/kali** ![](https://i.imgur.com/5qWfKIv.jpg) ip neigh - показывает с какими компьютерами происходит обмен данными ![](https://i.imgur.com/NFjkmVf.jpg) sudo ss -tlnp - показывает какие сервисы и с какими портами запущены ![](https://i.imgur.com/vZc9tDD.jpg) sudo -l - позволяет нам понять, что есть в этом машинки и что пользователь может ![](https://i.imgur.com/qzdxR47.jpg) 2.Суидные файлы В системе могут быть различные закладки sudo find / -user root -perm -4000 -exec ls -ldb {} \\; 2> /dev/null ![](https://i.imgur.com/XzOQiD6.jpg) Нам надо скопировать ссылку данной утилиты и скачать её с помощью wget например в директорию /tmp ** wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz ![](https://i.imgur.com/qhP02tq.jpg) Затем давайте проверим контрольную сумму с сайта и то, что мы скачали ![](https://i.imgur.com/srtshxH.jpg) Далее переходим в директорию lynis ![](https://i.imgur.com/t86ZGDN.jpg) Далее запускаем утилиту lynis ![](https://i.imgur.com/0waCzRI.jpg) Перенаправлять файлы лучше через стандартный report утилиты: /var/log/lynis-report.dat ![](https://i.imgur.com/8xO6olP.jpg) Для просмотра пакетов в системе **dpkg -l** ![](https://i.imgur.com/i5loX86.jpg) Для просмотра установленных утилит необходимо набрать следующую команду: **dpkg -L coreutils** ![](https://i.imgur.com/zrUx7qY.jpg) Установим пакет debsums ![](https://i.imgur.com/TM2UpYm.jpg) Введем команду sudo find / -printf "%T@;%Tc;%p\\n" ![](https://i.imgur.com/DjwHA2U.jpg) Далее если надо сделать по одному конкретному пользователю необходиму следующие: ![](https://i.imgur.com/CNxXLlH.jpg) Но давайте отсортируем данный файл с помощью команды: sort -rn timeline.csv | less где флаг -r как раз будет указывать, что последнее изменение будет первым ![](https://i.imgur.com/jDbpmFp.jpg) # Модуль Линукс 2.5 ### 1 ### Просмотр списка системных переменных окружения Просмотр всех присутствующих в Linux системных и пользовательскых переменных и их понятий с помощью команды ***printenv*** ![](https://i.imgur.com/lqhvc1R.jpg) ### 2 ### Запуск команд с указанием нового значения переменной окружения Можно изменить опцию любого параметра, чтобы запустить с ним определенную программу или выполнить любые другие действия. В таком случае в консоли будет достаточно прописать env VAR=VALUE, где VAR — название переменной, а VALUE — ее значение, например, путь к папке /home/kali ![](https://i.imgur.com/CsQ0ERE.jpg) ![](https://i.imgur.com/GHtfv0M.jpg) ### 2.1 ### Установка и удаление локальных переменных окружения Установка и удаление локальной переменной при помощи команды ***VAR=VALUE*** ![](https://i.imgur.com/hySR4Wv.jpg) ### 2.2 ### Добавление и удаление пользовательских переменных Посмотрим пользовательскую конфигурацию через **sudo nano .bashrc.** ![](https://i.imgur.com/dfRshha.jpg) ![](https://i.imgur.com/oI8wxOp.jpg) ### 2.3 ### Создание и удаление системных переменных окружения Отредактируем файл **/etc/profile** ![](https://i.imgur.com/3KVBA9b.jpg)