---
# System prepended metadata

title: Linux_Basic-Синицын_Антон-Практика-2

---

# 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)
