# Linux_Basic-Синицын_Антон-Практика-2
## Практическая работа №2.1
### Часть 1. Команда df в linux
- a, –all – отобразить все файловые системы, в том числе виртуальные, псевдо и недоступные;

- B – изменить размер одного блока перед выводом данных, например, можно использовать BM, чтобы вывести все данные в мегабайтах;

- h – выводить размеры в читаемом виде, в мегабайтах или гигабайтах;

- H – выводить все размеры в гигабайтах;

- i – выводить информацию об inode;

- k – выводить размеры в килобайтах;

- –output – использовать специальный формат вывода, если не задано, выводит все поля. Доступны такие варианты: ‘source’, ‘fstype’, ‘itotal’, ‘iused’, ‘iavail’, ‘ipcent’, ‘size’, ‘used’, ‘avail’, ‘pcent’, ‘file’ и ‘target’;

- P – использовать формат вывода POSIX;

- –total – выводить всю информацию про использованное и доступное место;

- t, –type – выводить информацию только про указанные файловые системы;

- x – выводить информацию обо всех, кроме указанных файловых систем;

### Часть 2. Команда du в Linux
- -a - выводить размер для всех файлов, а не только для директорий

- -B - указать единицы вывода размера

- -d, — максимальная глубина вложенности директорий

- -h, - выводить размер в удобных единицах измерения

### Часть 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 .

- Чтобы постоянно отображать информацию о памяти на экране, можно вызвать free с параметром -s ( --seconds ), за которым следует число, определяющее задержку.

- Для постоянного использования памяти команда watch free -h:

### Часть 4. iostat
`$ iostat опции устройство интервал`
- **-с** — отобразить только информацию об использовании процессора

- **-d** — отобразить только информацию об использовании устройств

- **-h** — выводить данные в отчёте в удобном для чтения формат

- **-k** — выводить статистику в килобайтах

- **-m** — выводить статистику в мегабайтах

- **-o JSON** — выводить статистику в формате JSON

- **-p** — вывести статистику по устройству и всех его разделам

- **-x** — вывести расширенную статистику

- **-y** — отображать статистику с момента запуска утилиты, а не системы

- **-z** — спрятать информацию о дисках, у которых нет активности

### Часть 5. mpstat
- Для просмотра подробностей по каждому ядру процессора опция -P с параметром ALL:

- Опция «-А», показывает всю информацию, которая может быть отображена с помощью команды mpstat:

- Для отображение статистики о конкретном ядре:

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

- количество вилок с момента загрузки

- статистика диска

- общая статистика диска

### Часть 7. Утилита/команда " w "
Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены:

USER — имя пользователя.
TTY — название терминала.
FROM — название удаленного компьютера или IP-адрес.
LOGIN — время входа в систему.
IDLE — время бездействия.
JCPU — время, использованное всеми процессами, подключенными к tty. Оно не включает завершенные фоновые задания, но включает фоновые задания, работающие в данный момент.
PCPU — время, использованное текущим процессом, который указан в поле WHAT.
WHAT — текущий процесс (командная строка текущего процесса).
- -**h (--no-header)** — отказ от вывода заголовков

- -**u (--no-current)** — приказ определять JCPU и PCPU, игнорируя имена учетных записей:

- -**s (--short)** — краткий формат вывода:

- -**f (--from)** — управление выводом имени хоста или IP-адреса, с которого был осуществлен вход в систему:

- -**i (--ip-addr)** — замена информации об имени хоста на IP-адрес:

- -**o (--old-style)** — отображение вывода в старом формате:

### Часть 8. Утилита htop
- Установка

- Использование

## Практическая работа №2.2, №2.3 Установка и настройка сервера SSH в Linux, Установка и настройка SSH-authorized_keys
##
### Часть 1. Установка пакетов SSH

- Запуск Ssh и проверка статуса

### Часть 2. Настройка SSH
Настройки демона хранятся в файле `/etc/ssh/sshd_config`. Посмотреть его можно командой `cat /etc/ssh/sshd_config`

Установим следующие настройки

Создание псевдонима для ssh:
Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в ~/.ssh/config

**Для применения сделанных настроек необходим перезапуск SSH-сервера:**
`$ systemctl restart ssh`
### Часть 3. Настройка и использование клиента SSH
- Для подключения по к серверу используется команда:
`$ ssh user_name@host_name -p portnumber`

### Часть 4. Генерация ключей
Для генерации ключей используем команду:
`ssh-keygen`

Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер с помощью команды:
`ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user_name@host_name`

Для входа на сервер с хостовой операционной системы необходимо сначала скопировать приватный ключ:
`cat ./.ssh/id_rsa`

Далее создаем на рабочем столе текстовый документ и вставляем ПОЛНОСТЬЮ ключ. После чего через Conversions -> Import Key вставляем ключ, вводим фразу и сохраняем его.
Далее в putty вставляем наш ключ перед подключением.

В session жмем open и подключаемся.

## Практическая работа №2.4. Сбор информации о Linux и WGET
### Часть 1.Базовый сбор информации
Чтобы получить информацию о дистрибутиве используем команду:
- cat /etc/*release

- Чтобы получить информацию о ядре Linux вводим команду **uname -a**:

- Чтобы узнать с какой учётной записи мы вошли в систему **whoami**

- Команда **Uptime** позволяет получить информацию о текущем времени работы системы, количестве активных пользователей и среднее значение загрузки системы:

- Чтобы посмотреть права на домашнюю директорию **ls -la /home**:

- Чтобы узнать подключенных соседей **ip neigh**:

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

- Чтобы узнать какие команды может выполнять пользователь **sudo -l**:

### Часть 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 — “пустота”, в которую будут записываться возможные ошибки

## Часть 3. WGET и ****аудит Linux с помощью Lynis****
Утилита WGET, работающая по протоколам HTTP, HTTPS и FTP, позволяет скачивать файлы и веб страницы.
Скачиваем:

Чтобы скачать Lynis:
1. Копируем ссылку кнопки на скачивание с сайта:
[https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz](https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz)

2. С помощью wget скачиваем файл

3. Разархивируем скачанный файл:

4. Проверяем контрольную сумму


Запускаем программу

Отчет по завершении программы:

### Часть 3. Проверка целостностей пакетов
Чтобы посмотреть все установленные в системе пакеты:
`dpkg -l`

Чтобы посмотреть установленные утилиты:
`dpkg -L coreutils`

С помощью команды **sudo cp /bin/false /bin/dir** мы можем подменить файл /bin/dir на /bin/false, но для начала сделаем резервную копию:
`mv /bin/dir /bin/dir.bak`

Теперь вводим команду для подмены:
`cp /bin/false /bin/dir`

При запуске dir ничего не происходит.
Чтобы нам быстро проверить этот пакет, мы можем выполнить команду:
`debsums` , если утилита не установлена, то `sudo apt install debsums`

debsums - проверяет MD5 hash-суммы пакетов суммы установленных пакетов.
Для запуска проверки:
`debsums -ac coreutils`

Найдена ошибка в /bin/dir
Возвращаем изменения:
`cp /bin/dir.bak /bin/dir`

## Практическая работа №2.5. Переменные окружения в Linux .bashrc, .bash_profile и .bash_login
### Часть 1. Просмотр списка системных переменных окружения
Установим утилиту coreutils — пакет содержащий основные утилиты для работы с файлами, оболочками и текстом:
`apt-get install coreutils`

Чтобы вывести список всех окружений системы:
`printenv`

-
### Часть 2. Запуск команд с указанием нового значения переменной окружения
Пользователь может самостоятельно изменить значение переменной окружения с помощью команды env:
`env HOME=/root`


**Установка и удаление локальных переменных окружения**
Чтобы создать локальную(только для текущей сессии) переменную окружения используем команду:
`TEST_VAR='Hello World!'` , где

Чтобы удалить переменную окружения, используем команду:
`unset TEST_VAR`
**Добавление и удаление пользовательских переменных**
Пользовательские переменные оболочки определяются для конкретного пользователя и загружаются каждый раз когда он входит в систему. Такие переменные, как правило, хранятся в файлах конфигурации: .bashrc, .bash_profile, .bash_login, .profile или в других файлах, размещенных в директории пользователя.
Пользовательскую конфигурацию можно редактировать командой из домашнего каталога:
.zshrc - это файл конфигурации, который содержит команды, запускающие оболочку zsh, точно так же, как файл .bashrc, содержащий команды для оболочки bash.
Чтобы добавить свою переменную, переходим в конец файла и прописываем название со значением:
`sudo nano .zshrc`

Командой `source .zshrc` обновляем настройки:

**Создание и удаление системных переменных окружения**
Чтобы перейти в настройки системных переменных:
`nano /etc/profile`

*добавили новую переменную.
`source /etc/profile` - чтобы изменения вступили в силу:
