# Linux basics 2
# Практика 2 Администрирование Linux
*Выполнил Андреев Игорь Константинович*
# Практика 2.1 - Основы мониторинга OS Linux с помощью утилит df, du, free, iostat, mpstat, vmstat, w, htop.
## Часть 1 - команда df
### 1.1 Команда df в linux
### Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать

### 1.2 Утилита отображает стандартный набор колонок, но понять в ее выводе что-то с первого раза сложно. Все данные выводятся в килобайтах. Теперь давайте попросим утилиту выводить данные в более читаемом формате

### 1.3 Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы

### 1.4 Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs

### 1.5 Также можно указать файловую систему, которую нужно отображать

### 1.6 Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды

### 1.7 С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе

### 1.8 Вывести объем доступного пространства в каталоге

## Часть 2 - команда du
### 2.1 При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах

### 2.2 Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов

### 2.3 Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге

### 2.4 Обычно вы хотите отображать только пространство, занимаемое данным каталогом, в удобочитаемом формате. Для этого используйте параметр -h

### 2.5 Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр -s

### 2.6 Параметр -c указывает du сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов

### 2.7 Если вы хотите отобразить использование диска подкаталогами n-уровня, используйте параметр --max-depth и укажите уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать

### 2.8 По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель --apparent-size . «Видимый размер» файла — это фактический объем данных в файле

### 2.9 du также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «Do» в вашем домашнем каталоге

### 2.10 Команду du можно комбинировать с другими командами с конвейерами. Например, чтобы напечатать 5 самых больших каталогов внутри каталога /var вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов

## Часть 3 - команда free
### Команда free предоставляет информацию об общем объеме физической памяти и памяти подкачки , а также о свободной и используемой памяти
### 3.1 При использовании без какой-либо опции команда free будет отображать информацию о памяти и подкачке в килобайтах. Вывод будет включать три строки, заголовок, одну строку для памяти и одну для свопа

### 3.2 По умолчанию команда free показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мегабайтах и гигабайтах), используйте параметр -h

### Команда 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
### 3.3 Чтобы отобразить строку, показывающую итоги столбца, используйте параметр -t . Это дает вам сумму памяти и свопа в столбцах total, used и free

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

### 3.5 Чтобы отображать результат определенное количество раз, используйте параметр -c ( --count )

### 3.6 Допустим, вы хотите открыть серию приложений и посмотреть, как влияет ваша память. Для тестового вывода мы будем использовать читаемый человеком формат, используя степени 1000 (Gb) вместо 1024 (GiB). Мы собираемся записать в течение 20 секунд, чтобы проанализировать воздействие. Мы собираем данные каждые 5 секунд, и будем делать это за 4 цикла. Вот этот пример, отформатированный для командной строки и ее вывода:

### 3.7 Если вы хотите постоянно отслеживать использование памяти командой free, но не хотите, чтобы ее вывод загромождал экран, вы можете использовать команду watch вместе с командой free. Это покажет вам только один вывод для команды free, но этот вывод будет изменяться через регулярные промежутки времени

## Часть 4 - команда iostat
### 4.1 Устанавливаем пакет sysstat

### 4.2 Результат выполнения команды iostat

### Опции iostat
- с - отобразить только информацию об использовании процессора;
- d - отобразить только информацию об использовании устройств;
- h - выводить данные в отчёте в удобном для чтения формате;
- k - выводить статистику в килобайтах;
- m - выводить статистику в мегабайтах;
- o JSON - выводить статистику в формате JSON;
- p - вывести статистику по устройству и всех его разделам;
- x - вывести расширенную статистику;
- y - отображать статистику с момента запуска утилиты, а не системы;
- z - спрятать информацию о дисках, у которых нет активности.
### Что означает вывод команды
- tps - означает количество запросов на чтение или запись к устройству в секунду;
- KB_read/s, MB_read/s - количество килобайт или мегабайт, прочитанных с устройства за секунду;
- KB_wrtn/s, MB_wrtn/s - количество килобайт или мегабайт записанных на устройство в секунду;
- KB_dscd/s, MB_dscd/s - скорость освобождения блоков данных на устройстве, килобайт или мегабайт в секунду;
- KB_read, MB_read - общее количество прочитанных данных с диска с момента загрузки системы;
- KB_wrtn, MB_wrtn - количество записанных данных с момента загрузки системы;
- KB_dscd, MB_dscd - количество освобождённых блоков на диске в результате выполнения операции trim в килобайтах или мегабайтах
### 4.3 Для просмотра данных в удобном формате выполните:

### 4.4 Чтобы посмотреть данные по нужному устройству просто укажите это устройство

### 4.5 Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p

### 4.6 Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал

### 4.7 Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал

### 4.8 Профилирование нагрузки на файловую систему с помощью iostat
#### 4.8.1 Для начала разумно сохранить df -hl для того чтобы понимать о каких разделах идет речь

#### 4.8.2 В отличии от других утилит iostat не очень приспособлен для логирования с учетом времени. Для решения проблемы используем awk. Строчка для получения лог файла:

#### 4.8.3 Вывод лога

#### 4.8.4 Анализ
#### В первую очередь обратим внимание на последнюю колонку %util. Хотя бы потому, что большое значение этого параметра (90%-100%) для пользователя выглядит как «сервер висит». У нас sda загружен менее чем на 5%. Круто :)
#### пропускная способность колонки rkB/s, wkB/s. Пишем 677 KБ/с
#### iops колонки r/s, w/s — ~10 запросов в секунду
## Часть 5 - mpstat
### mpstat — отчет о использовании процессоров. Команда mpstat пишет в стандартный вывод на экран о каждом имеющемся процессоре, 0-й процессор будет выведен на первое место. Параметр «interval» определяет количество времени в секундах между каждым отчетом. Значение 0 (или без параметров) показывает статистику о процессорах и отчетность будет представляться с момента запуска системы (загрузки)
### 5.1 Отображение всей информации

### 5.2 Показать статистику CPU индивидуального процессора (или) ядра

### 5.3 Для отображения статистически о конкретном CPU или ядре, используйте опцию «-P»

### 5.4 Можно выполнить «mpstat -V» чтобы показать версию утилиты

## Часть 6 - vmstat
### 6.1 Результат выполнения vmstat

### Результат предоставляет краткую информацию о различных ресурсах системы и связанных с ними неполадках, приводящих к снижению производительности
### Отчет команды vmstat содержит статистическую информацию о нитях ядра, находящихся в очереди выполнения и ожидающих запуска, а также об оперативной памяти, подкачке, дисках, прерываниях, системных вызовах, переключении контекста и работе процессора. В информации о процессоре указывается доля времени, в течение которой процессор работал в пользовательском режиме, системном режиме, простаивал и ожидал завершения операции дискового ввода-вывода
### Для получения информации о работе процессора удобнее использовать команду vmstat, а не iostat, так как ее построчный вывод проще анализировать, а в случае, когда к системе подключено много дисков, ее вывод намного менее объемный. Приведенный ниже пример иллюстрирует применение vmstat для обнаружения программ, которые потребляют слишком много ресурсов CPU.
### 6.2 vmstat -a - активная/неактивная память

### 6.3 vmstat -f (number of forks since boot) - количество fork'ов с момента загрузки

### 6.4 vmstat -d (disk statistics) - статистика диска

### 6.5 vmstat -D (summarize disk statistics) - (общая статистика диска)

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

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

### 7.3 w -u Игнорировать имена пользователей при определении времени текущего процесса и времени CPU

### 7.4 w -s Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU

### 7.5 w -f Включить или выключить вывод поля from, которое соответствует имени удаленного хоста (remote hostname). В зависимости от дистрибутива Linux (версии утилиты w), поле from может выводиться или не выводиться по умолчанию

### 7.6 w -i Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно

### 7.7 w -o Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится

### 7.8 w -V Вывести версию утилиты w

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

### 8.2 Результат выполнения htop

### В самом верху показана нагрузка на каждое ядро центрального процессора (цифры от 1 до 12)
- Mem — это общее количество оперативной памяти и используемая память.
- Task — обобщённая статистика по процессам
- Swp — уровень занятости файла подкачки (если он есть)
- Load average — средняя загрузка центрального процессора
- Uptime — время работы операционной системы с момента последней загрузки
### Значение столбцов 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*
Полная командная строка процесса (то есть имя программы и аргументы)
### 8.3 Для установки времени обновления htop используйте опцию -d после которой укажите время обновления в десятой части секунд.
*Например, чтобы программа обновляла окно каждую 1/10 секунды:*`sudo htop -d 1`
*Чтобы программа выводила новые данные раз в 5 секунд:*`sudo htop -d 50`


### 8.4 **Как вывести процессы в виде дерева**
*Для вывода процессов в виде дерева используйте опцию -t:*`sudo htop -t`

###
# Практика 2.2 - Установка и настройка сервера SSH в Linux
## Часть 1 - Установка пакетов SSH
### 1.1 Устанавливаем все требуемые утилиты

### 1.2 Проверяем запуск в режиме демона

### 1.2 Конфиг sshd

### В первую очередь следует обратить внимание на следующие параметры: Port, AddressFamily, ListenAddress. Первый глобально задаёт номер порта, через который будет работать соединение и если оставить его стандартным, т. е. 22, то велика вероятность, что он будет слишком часто сканироваться роботами
### Поскольку реализация openSSH позволяет работать с протоколами SSH1 и SSH2, то разумно отключить использование SSH1, т. к. эта версия является устаревшей. Работа по SSH1 крайне не рекомендуется: Protocol 2
### Второй параметр задаёт семейство используемых IP-адресов — IPv4 и IPv6. Если, к примеру, используются только адреса IPv4, то очень рекомендуется установить для параметра
- AddressFamily значение inet:
- AddressFamily inet
- Для адресов семейства IPv6 используется значение inet6.
### Параметр ListenAddress позволяет задавать порты для отдельных сетевых интерфейсов:
- ListenAddress 10.24.205.75:2123
- ListenAddress 10.24.205.76:2124
### Поскольку реализация openSSH позволяет работать с протоколами SSH1 и SSH2, то разумно отключить использование SSH1, т. к. эта версия является устаревшей. Работа по SSH1 крайне не рекомендуется: Protocol 2
### Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей:
`PubkeyAuthentication yes`
### Следует заметить, что в таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл `etc/.ssh/authorized_keys`), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности:
`AuthorizedKeysFile etc/ssh/authorized_keys # Для общего файлаAuthorizedKeysFile %h/.ssh/authorized_keys # Файл -> пользователь`
### Во втором варианте благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя.
### Важно также отключать парольный доступ:
`PasswordAuthentication no`
### Или же, в случае, если всё-таки необходимо использовать доступ по паролю, то обязательно нужно отключать авторизацию по пустому паролю:
`PermitEmptyPasswords no`
### Для указания разрешённых или запрещённых пользователей и групп служат директивы DenyUsers, AllowUsers, DenyGroups, и AllowGroups. Значениями для них являются списки имён, разделяемых пробелами, например:
```
DenyUsers fred john
AllowGroups root clients administrators
```
### Следует также отключать root-доступ:
`PermitRootLogin no`
### Иногда, когда следует задавать мультисерверную конфигурацию, очень удобно использовать алиасы (Aliases), что позволяет настроить сразу несколько режимов доступа (с разными хостами, портами и т. д.) и использовать их, указывая при этом конкретный алиас:
`$ ssh alias_name`
Настройки для алиасов хранятся либо глобально в `/etc/ssh/ssh_config`, либо раздельно для пользователей в `~/.ssh/config`. Здесь нужно не спутать с `ssh_config!` Пример:
```
Host your_alias
Port your_ssh_port
HostName 0.0.0.0 # IP или имя хоста
User your_user_name
```
### Для применения сделанных настроек необходим перезапуск SSH-сервера и рекомендации по настройке
## Часть 2 - Настройка и использование клиента SSH
### 2.1 Для подключения по к серверу используется команда
$ ssh user_name@host_name

### В случае авторизации по ключу, должна быть предварительно сгенерирована пара SSH-ключей — открытый, который хранится на стороне сервера, обычно в файле .ssh/authorized_keys в домашнем каталоге пользователя, и закрытый — используется для авторизации клиента и хранится, как правило, в каталоге .ssh/ домашней директории пользователя. Открытый ключ представляет собой «цифровой слепок» закрытого ключа благодаря которому сервер «знает», кто «свой», а кто «чужой»
## Часть 3 - генерация ключа
### 3.1 Для генерации ключей используется утилита ssh-keygen

### 3.2 После чего будут сгенерированы открытый ключ id_rsa.pub и закрытый — id_rsa. Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер. Проще всего этого можно добиться командой
ssh-copy-id -i ~/.ssh/id_rsa.pub user_name@host_name
### Теперь можно выполнить подключение командой ssh и запустить защищённый сеанс удалённого управления.
### Важно заметить, что использование сгенерированных `openSSH`-ключей несовместимо с PPK-форматом, используемым по-умолчанию в таких комплексах как PuTTY. Поэтому необходимо конвертировать имеющиеся `openSSH`-ключи в формат PPK. Удобнее всего это делать с помощью утилиты **PuTTY – puttygen.exe.**
## Часть 4 - задания
### 4.1 Отлючаем доступ по root пользователю

### 4.2 Меняем порт по умолчанию

### 4.3 Подключение к Linux через putty




# Практика 2.3 - Установка и настройка SSH authorized_keys
## Часть 1 - Создание ключей SSH
### 1.1 Создаём ключи на windows


### 1.2 Создаём временную папку для ключа

### 1.3 Отправляем ключ

### 1.4 Перекидываем ключ в authorized_keys

### 1.5 Выбираем приватный ключ

### 1.6 Подключаемся

## Часть 2 - Отключение аутентификации с помощью пароля на сервере
### 2.1 Изменяем конфиг

### 2.2 Не удаётся подключиться по паролю!

# Практика 2.4 - Сбор информации о Linux и WGET
## Часть 1 - Базовый сбор информации
### 1.1 Начнём со сбора информации о дистрибутивах

### 1.2 По ядру linux можно понять следующее

### 1.3 whoami, uptime

### 1.4 Посмотрим права директории /home

### 1.5 Чтобы ограничить права другим пользователям делаем следующее

### 1.6 Посмотрим с какими устройствами идёт обмен данными

### 1.7 Посмотрим какие сервисы и с какими портами запущены

### 1.8 Посмотрим, что пользователь может

### в данном случае мы можем запускать любые команды от любого user
## Часть 2 - Суидные файлы
### 2.1 В системе могут быть различные закладки

### 2.2 Скачиваем утилиту lynis

### 2.3 Разархивируем её

### 2.4 Переходим в директорию

### 2.5 Запускаем и жмём enter

### 2.6 Результат аудита lynis

## Часть 3 - Проверка целостностей пакетов
### 3.1 Для просмотра пакетов в системе dpkg -l

### 3.2 для просмотра установленных утилит dpkg -L coreutils

### 3.3 сделаем backup sudo mv /bin/dir /bin/dir.bak и попытаемся сделать подмену вводим команду sudo cp /bin/false /bin/dir

### 3.4 dir Больше не работает

### 3.5 Устанавливаем debsums

### 3.6 Видим наше изменение

### 3.7 Можно так же воспользоваться dpkg

### 3.8 Если кто-то смог проникнуть в систему и что-то деал в ней нам поможет команда find
- sudo find / -printf "%T@;%Tc;%p\\n"

### 3.9 Далее если надо сделать по одному конкретному пользователю необходиму следующие:
- sudo find /home/igor/ -printf "%T@;%Tc;%p\\n" > timeline.csv

### 3.10 Затем желательно это отсортировать, например:
- sort -rn timeline.csv | less

### 3.11
# Пратика 2.5 - Переменные окружения в Linux .bashrc, .bash_profile и .bash_login
## Часть 1 - Просмотр списка системных переменных окружения
### 1.1 Проверяем наличие coreutils, при отсутствии устанавливаем

### 1.2 Посмотрим переменные окружения

- DE. Полное название — Desktop Environment. Содержит имя текущего окружения рабочего стола. В операционных системах на ядре Linux используются различные графические оболочки, поэтому приложениям важно понимать, какая сейчас активна. В этом и помогает переменная DE. Пример ее значений — gnome, mint, kde и так далее.
- PATH — определяет список директорий, в которых происходит поиск различных исполняемых файлов. Например, при действии одной из команд по поиску и доступу к объектам они обращаются к этим папкам для быстрого поиска и передачи исполняемых файлов с указанными аргументами.
- SHELL — хранит в себе опцию активной командной оболочки. Такие оболочки позволяют пользователю самостоятельно прописывать определенные скрипты и запускать различные процессы с помощью синтаксисов. Самой популярной оболочкой считается bash. Список остальных распространенных команд для ознакомления вы найдете в другой нашей статье по следующей ссылке.
- HOME — здесь все достаточно просто. Данный параметр указывает путь к домашней папке активного юзера. У каждого юзера он разный и имеет вид: /home/user. Объяснение этому значению тоже легкое — эта переменная, например, используется программами для установления стандартного места расположения их файлов. Конечно, примеров существует еще огромное количество, но для ознакомления этого достаточно.
- BROWSER — содержит в себе команду для открытия веб-обозревателя. Именно эта переменная чаще всего и определяет браузер по умолчанию, а все остальные утилиты и ПО обращаются к указанной информации для открытия новых вкладок.
- PWD и OLDPWD. Все действия из консоли или графической оболочки происходят из определенного расположения в системе. Первый параметр отвечает за текущее нахождение, а второй показывает предыдущее. Соответственно, их значения меняются достаточно часто и хранятся как в пользовательских конфигурациях, так и в системных.
- TERM. Программ-терминалов для Linux существует большое количество. Упомянутая переменная хранит в себе информацию о названии активной консоли.
- RANDOM — содержит в себе скрипт, генерирующий каждый раз случайное число от 0 до 32767 при обращении к этой переменной. Такая опция позволяет другому софту обходиться без собственного генератора случайных чисел.
- EDITOR — отвечает за открытие редактора текстовых файлов. Например, по умолчанию вы можете встретить там путь /usr/bin/nano, но ничего вам не мешает изменить его на любой другой. За более сложные действия с тестом отвечает VISUAL и запускает, например, редактор vi.
- HOSTNAME — имя компьютера, а USER — имя текущей учетной записи.
## Часть 2 - Запуск команд с указанием нового значения переменной окружения
### 2.1 Можно самостоятельно на время изменить опцию любого параметра, чтобы запустить с ним определенную программу или выполнить любые другие действия. В таком случае в консоли вам будет достаточно прописать env VAR=VALUE, где VAR — название переменной, а VALUE — ее значение, например, путь к папке /home/igor.

### 2.2 Установка и удаление локальных переменных окружения
### Из проделанного выше вы уже знаете о том, что локальные параметры не сохраняются в файлах и активны только в рамках текущей сессии, а после ее завершения удаляются. Если вас интересует собственное создание и удаление таких опций, сделать нужно следующее:
### Запустите «Терминал» и напишите команду `VAR=VALUE`, после чего нажмите на клавишу `Enter`. Как обычно, VAR — любое удобное название переменной одним словом, а `VALUE` — значение.

### 2.3 Проверяем выполнение

### 2.4 Удаляем с помощью команды unset и проверяем удаление

### 2.5 Изменение пользовательских переменных происходит с помощью изменения файла bashrc

### 2.6 Перезапускаем файл с помощью source .bashrc

### 2.7 Создание и удаление системных переменных окружения
### Редактироваться для этого будет файл /ETC/PROFILE, который остается активным даже при удаленном подключении, например, через известный многим менеджер SSH. Открытие конфигурационного элемента осуществляется примерно так же, как и в предыдущем варианте nano /etc/profile

### 2.8 Перезапускаем и проверяем
