# Занятие 2. Администрирование Linux
# Практическая работа №2.1
<span STYLE="font-size:16.0pt">**1. Команда df в linux** </span>








<span STYLE="font-size:16.0pt">**2. Команда du в Linux** </span>










<span STYLE="font-size:16.0pt">**3. Команда free в Linux** </span>








<span STYLE="font-size:16.0pt">**4. iostat** </span>







<span STYLE="font-size:16.0pt">**5. mpstat** </span>





<span STYLE="font-size:16.0pt">**6. vmstat** </span>





<span STYLE="font-size:16.0pt">**7. Утилита/команда " w "** </span>








<span STYLE="font-size:16.0pt">**8. Утилита htop** </span>


# Практическая работа №2.2
<span STYLE="font-size:18.0pt">**1. Установка пакетов SSH** </span>
**SSH** - встроенный пакет, поэтому устанавливается одной командой:
<span style="color:red">```$ sudo apt-get install ssh```</span> **В Ubuntu**
<span style="color:red">`$ yum -y install openssh-server openssh-clients`</span> **В CentOS**

Проверка работы SSH-демона:
<span style="color:red">`$ systemctl status sshd`</span> или <span style="color:red">`$ service sshd status`</span>.

<span STYLE="font-size:18.0pt">**2. Настройка SSH** </span>
Настройки демона хранятся в файле /etc/ssh/sshd_config. Посмотреть его можно командой <span style="color:red">`cat /etc/ssh/sshd_config`</span>

Перейти к настройке:
<span style="color:red">`sudo nano /etc/ssh/sshd_config`</span>
Наиболее важными являются следующие параметры:
- **Port (int)** – номер порта, через который будет работать соединение
- **AddressFamily (inet / inet6)** – семейство используемых IP-адресов: IPv4 и IPv6
- **ListenAddress (ip:port)** – порты для отдельных сетевых интерфейсов
- **PubkeyAuthentication (no/yes)** – авторизация и шифрование трафика с помощью SSH-ключей
- **AuthorizedKeysFile (etc/ssh/authorized_keys)** – общий файл для хранения открытых ключей пользователей
- **AuthorizedKeysFile (home/user/.ssh/authorized_keys)** – ключи для отдельного пользователя
- **PasswordAuthentication (no/yes)** – парольный доступ
- **PermitEmptyPasswords (no/yes)** – авторизация по пустому паролю
- **DenyUsers / DenyGroups (user user)** – запрещенные пользователи
- **AllowUsers / AllowGroups (user user)** – разрешенные пользователи
- **PermitRootLogin (no/yes)** – root-доступ
Для применения сделанных настроек необходим перезапуск SSH:
<span style="color:red">`$ systemctl restart sshd`</span> или <span style="color:red">`$ service sshd restart`</span>.
<span STYLE="font-size:18.0pt">**3. Подключение по SSH** </span>
Для подключения к машие через PuTty необходимо ввести доменное имя или ip в соответствующее поле, указать порт подключения (по умолчанию 22) и нажать "open"

Откроется окно, где будет необходимо ввести логин и пароль удаленной учетной записи, после чего можно будет спокойно пользоваться системой

# Практическая работа №2.3
<span STYLE="font-size:18.0pt">**1. Утилита ssh-keygen:** </span>
В случае авторизации по ключу, должна быть предварительно сгенерирована пара SSH-ключей — открытый на стороне сервера и закрыты для авторизации клиента. Для этого используется команда <span style="color:red">`$ ssh-keygen`</span>.

При создании ключей требуется указать путь для хранения ключей и кодовую фразу для ключа с паролем. В пути хранения появятся 2 файла:
<span style="color:red">`id_rsa.pub`</span> – открытый ключ
<span style="color:red">`id_rsa`</span> – закрытый ключ
Команда для отправки открытого ключа на сервер:
<span style="color:red">`ssh-copy-id -i ~/.ssh/id_rsa.pub user_name@host_name`</span>
Или можно подключиться по паролю и вручную сохранить ключи:
<span style="color:red">`cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"`</span>
<span STYLE="font-size:18.0pt">**2. Поддключение по SSH с помощью ключа** </span>
Для подключения к серверу из командной строки используются команды:
<span style="color:red">`ssh remote_host`</span>
<span style="color:red">`ssh remote_username@remote_host`</span>
<span style="color:red">`ssh -p 22 remote_username@remote_host`</span>
`remote_host` - ip или доменное имя, `remote_username` – имя пользователя на удаленной машине, `-p 22` – порт подключения
Если ключи были успешно перенесены на сервер была произведена настройка sshd_config, то подключение произойдет автоматически

# Практическая работа №2.4
<span STYLE="font-size:18.0pt">**1. Утилита wget** </span>
**Wget** — консольная программа для автоматического получения файлов по сети. Скачать ее можно командой <span style="color:red">`sudo apt-get install wget`</span>
Для ее использования достаточно указать url файла:
<span style="color:red">`wget https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz`</span>

Для проверки контрольной суммы файла или пакета надо выполнить команду <span style="color:red">`sha256sum lynis-3.0.8.tar.gz`</span> и сверить полученное значение

<span STYLE="font-size:18.0pt">**2. Проверка пакета на целостность** </span>
Для проверки целостности пакета существуют 2 команды: <span style="color:red">`dpkg`</span> и <span style="color:red">`debsums`</span>. Первая является утилитой для управления пакетами и довольно сложна для понимания из-за своей низкоуровневости. Вторая более дружелюбна к пользователю направлена исключительно на проверку MD5-сумм.
Для начала подготовим стенд. Для этого получим список всех встроенных утилит и изменим случайный пакет, предварительно создав backup:
<span style="color:red">`dpkg -L coreutils`</span>
<span style="color:red">`sudo mv /bin/ls /bin/ls.bak`</span>
<span style="color:red">`sudo cp /bin/cat /bin/ls`</span>
После этого можно произвести проверку целостности файлов. Для **dpkg** это делается командой <span style="color:red">`dpkg -V coreutils`</span>

Для **debsums** есть несколько вариантов с разными параметрами:
- **-a** - Проверяет все файлы (включая конфигурационные, которые обычно располагаются слева)
- **-e** - Проверяет только конфигурационные файлы пакетов
- **-с** - Выводит список измененных на stdout файлов
- **-I** - Отображает файлы, в которых отсутствует информация о md5sum
- **-s** - Выводит только ошибки; при их отсутствии не производит никаких действий
Пример вывода <span style="color:red">`debsums -ac coreutils`</span> и <span style="color:red">`debsums -cs coreutils`</span>:

# Практическая работа №2.5
<span STYLE="font-size:18.0pt">**1. Введение. .bashrc, .bash_profile и .bash_login** </span>
**Переменные окружения в Linux** - это специальные переменные, определенные оболочкой и используемые программами во время выполнения.
- Системные переменные. Эти опции загружаются сразу же при старте операционной системы, хранятся в определенных конфигурационных файлах, а также доступны для всех пользователей и всей ОС в целом. Обычно такие параметры считаются самыми главными и часто используемыми во время старта самых различных приложений.
- Пользовательские переменные. Каждый пользователь имеет свою домашнюю директорию, где хранятся все важные объекты, к их числу относятся и конфигурационные файлы пользовательских переменных. Они применяются под конкретного юзера в то время, когда он авторизован через локальный «Терминал».
- Локальные переменные. Существуют параметры, применяемые только в рамках одной сессии. При ее завершении они будут навсегда удалены и для повторного старта все придется создавать вручную. Создаются, редактируются и удаляются при помощи соответствующих консольных команд.
Системные и пользовательские переменные имеют свои файлы конфигурации, находящиеся в следующих путях:
- **/etc/profile** – Системные переменные. Эти опции загружаются сразу же при старте операционной системы
- **/etc/environment** — более широкий аналог предыдущей конфигурации. Имеет те же опции, что и предыдущий файл, но без каких-либо ограничений при удаленном подключении.
- **~/.bashrc** — относится к конкретному юзеру, хранится в его домашней директории и выполняется каждый раз при новом запуске терминала.
- **/etc/bash.bashrc** — аналогично .bashrc, но при инициализации Bash читается первым. Не задокументирован в обычной документации Bash по причине того, что эта функция добавлена Debian и принята Ubuntu
- **~/.bash_profile** — то же, что .bashrc, только для удаленного взаимодействия, например, при использовании SSH.
**Ubuntu**:

**Red Hat**

<span STYLE="font-size:18.0pt">**2. Локальные переменные** </span>
Посмотреть список всех переменных окружения можно командой <span style="color:red">`printenv`</span>
Выражение до знака = — название переменной, а после — ее значение.

Для создания локальной переменной используется конструкция <span style="color:red">`VAR=VALUE`</span>, где <span style="color:red">`VAR`</span> – название переменной, а <span style="color:red">`VALUE`</span> - ее значение. Изменение переменных окружения делается похожим образом через <span style="color:red">`env VAR=VALUE`</span>. Для получения значения переменнной перед ее названием требуется указать <span style="color:red">`$`</span>

Удаление параметра происходит через команду <span style="color:red">`unset`</span>

<span STYLE="font-size:18.0pt">**3. Пользовательские переменные** </span>
Пользовательские переменные находятся в конфигурационных файлах, поэтому для их создания и удаления необходимо перейти в <span style="color:red">`~/.bashrc`</span> с помощью <span style="color:red">`nano`</span>

Создание переменных аналогично локальным переменным. Удалить переменную можно не только стерев строку, но и закоментировав ее <span style="color:red">`#`</span>. Чтобы изменения вступили в силу, нужно ввести команду <span style="color:red">`source ~/.bashrc`</span>

<span STYLE="font-size:18.0pt">**4. Системные переменные** </span>
Как и пользовательские переменные, системные находятся в файле конфигурации, но по пути <span style="color:red">`/etc/profile`</span>.

