# Занятие Линукс 2
# Модуль Линукс 2.1
1. Команда df и ее производные:






2. Команда du и ее производные:
du-сообщает приблизительный объем диск пространства, используемого данными файлами или каталогами




3.Команда free
предоставляет информацию об общем объеме физической памяти и памяти подкачки, а также о свободной и используемой памяти

4. Установка sysstat

4.1 Iostat
отчет со средней статистикой с момента включения системы до момента запуска программы



Интересный метод анализа системы:
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
отчет о использовании процессоров


6. vmstat
о неполадках, приводящих к снижению производительности
Содержит статистическую информацию о нитях ядра, находящихся в очереди выполнения и ожидающих запуска, а также об оперативной памяти,подкачке,дисках, прерыаниях,системных вызовах,переключении контекста и работе процессора.



7.утилита/команда w


8. htop
установка


*Значение столбцов htop*

Программа 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`

# Модуль Линукс 2.2 и 2.3
## + эксперимент, который занял несколько дней (в конце)
### 2.2
### Установка SSH

по умолчанию он не включился, поэтому пришлось включить

потренировалась изменять параметры в конфиге

перезапуск для корректной работы конфига

Для установки соединения не по паролю, а по ключам необходимо их сгенерировать.

ну и отредактировать конфиги клиента и сервера, но здесь лучше не торопиться отключать соединение по паролю.
Ну и отсюда начинается самое **интересное**
В конце 2.2 я вижу упоминание о подключении по ssh с линукса на винду через putty. И отсюда начинаются 4 дня мучения в поисках ответа.
Я уже начала сомневаться в каждом параметре конфигурации. НО решила попробовать просто к другой машинке на линукс (а это оказалась 2.3). Поставила дебиан. И все по маслу пошло:

просто скопировала публичный ключ, обозначив, что это идентификационный файл (-i), в папку пользователя. И, собственно, подключение с первого раза красиво реализовалось. Даже обидно было
И затем главное правило, вынесенное из этой работы: "**ВСЕ НУЖНО ГУГЛИТЬ НА АНГЛИЙСКОМ**"
https://www.youtube.com/watch?v=Wx7WPDnwcDg&ab_channel=WilliamCampbell
Ни один русскоязычный источник не указал на главную суть проблемы на винде. ПРАВА. F должны быть!



И все выполняется исключительно из терминала. Не красота ли?
# Модуль Линукс 2.4
1.Базовый сбор информации
cat /etc/*release - информация о дистрибутиве и какая версия его

По ядру linux можно понять следующее:
**uname -a**

**whoami**
Как следует из названия, команда whoami выводит имя пользователя для эффективного идентификатора пользователя. Другими словами, он отображает имя текущего вошедшего в систему пользователя

Команда uptime покажет, когда и сколько система работала и соответственно, если она работала без перерыва 3 года, то злоумышлинник может воспользоваться старыми уязвимостями для получения доступа или внедрения кода

Давайте посмотри права директории /home

Чтобы ограничить права другим пользователям делаем следующее
**sudo chmod o-rx /home/kali**

ip neigh - показывает с какими компьютерами происходит обмен данными

sudo ss -tlnp - показывает какие сервисы и с какими портами запущены

sudo -l - позволяет нам понять, что есть в этом машинки и что пользователь может

2.Суидные файлы
В системе могут быть различные закладки
sudo find / -user root -perm -4000 -exec ls -ldb {} \\; 2> /dev/null

Нам надо скопировать ссылку данной утилиты и скачать её с помощью wget например в директорию /tmp **
wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz

Затем давайте проверим контрольную сумму с сайта и то, что мы скачали

Далее переходим в директорию lynis

Далее запускаем утилиту lynis

Перенаправлять файлы лучше через стандартный report утилиты:
/var/log/lynis-report.dat

Для просмотра пакетов в системе **dpkg -l**

Для просмотра установленных утилит необходимо набрать следующую команду: **dpkg -L coreutils**

Установим пакет debsums

Введем команду sudo find / -printf "%T@;%Tc;%p\\n"

Далее если надо сделать по одному конкретному пользователю необходиму следующие:

Но давайте отсортируем данный файл с помощью команды:
sort -rn timeline.csv | less
где флаг -r как раз будет указывать, что последнее изменение будет первым

# Модуль Линукс 2.5
### 1
### Просмотр списка системных переменных окружения
Просмотр всех присутствующих в Linux системных и пользовательскых переменных и их понятий с помощью команды ***printenv***

### 2
### Запуск команд с указанием нового значения переменной окружения
Можно изменить опцию любого параметра, чтобы запустить с ним определенную программу или выполнить любые другие действия. В таком случае в консоли будет достаточно прописать env VAR=VALUE, где VAR — название переменной, а VALUE — ее значение, например, путь к папке /home/kali


### 2.1
### Установка и удаление локальных переменных окружения
Установка и удаление локальной переменной при помощи команды ***VAR=VALUE***

### 2.2
### Добавление и удаление пользовательских переменных
Посмотрим пользовательскую конфигурацию через **sudo nano .bashrc.**


### 2.3
### Создание и удаление системных переменных окружения
Отредактируем файл **/etc/profile**
