# Макаров Дмитрий Владиславович - Linux Basic. Практическая работа №2. Администрирование Linux [toc] ## Практическая работа №2.1 Основы мониторинга OS Linux с помощью утилит df, du, free, iostat, mpstat, vmstat, w, htop. ### 1. Команда df в linux Утилита df поставляется по умолчанию во всех дистрибутивах Linux и имеет очень простой синтаксис. Фактически вы можете просто набрать df и уже получить результат, но чтобы сделать вывод более читаемым используются дополнительные опции. Вот основной синтаксис: `$ df опции устройство` Устройство указывать необязательно, но можно указать раздел диска, о котором мы хотим посмотреть информацию. А теперь рассмотрим основные опции утилиты: - 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 – выводить информацию обо всех, кроме указанных файловых систем; Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать: `df` ![](https://i.imgur.com/Wtg0L8P.png) Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать: `df -h` ![](https://i.imgur.com/C3Cn4sZ.png) Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы: `df -a` ![](https://i.imgur.com/rtG9jqu.png) Здесь отображается огромное количество виртуальных файловых систем ядра. Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs: `df -x tmpfs` ![](https://i.imgur.com/4D0pbkn.png) Также можно отфильтровать две файловые системы: `df -x devtmpfs -x tmpfs` ![](https://i.imgur.com/jUP0tLN.png) Или же указать файловую систему, которую нужно отображать: `df -t ext4` ![](https://i.imgur.com/m2Zr1mp.png) Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды: `df -h /dev/sda1` ![](https://i.imgur.com/Dd5tMdp.png) С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе: `df -hi /dev/sda1` ![](https://i.imgur.com/e9PztHO.png) Вывести объем доступного пространства в каталоге: `df -h /home` ![](https://i.imgur.com/jqTwPAw.png) ### 2. Команда du в Linux **Команда du** , сокращение от «использование диска», сообщает приблизительный объем дискового пространства, используемого данными файлами или каталогами. Это практически полезно для поиска файлов и каталогов, занимающих большие объемы дискового пространства. `du [OPTIONS]... FILE...` Если данный FILE является каталогом, du будет суммировать использование диска для каждого файла и подкаталога в этом каталоге. Если *FILE* не указан, *du* сообщит об использовании диска в текущем рабочем каталоге . При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах. `du ~/Documents` ![](https://i.imgur.com/bF41x2J.png) Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов: `du ~/Documents ~/Pictures ~/.zshrc` ![](https://i.imgur.com/E8LlMoB.png) Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге. `du -a ~/Documents` ![](https://i.imgur.com/SCgowPg.png) Чтобы получить общий размер */var/lib* и всех его подкаталогов, вы должны выполнить следующую команду: `sudo du -h /var` ![](https://i.imgur.com/dYirJ9y.png) Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр *-s* : `sudo du -sh` ![](https://i.imgur.com/gVwbPbc.png) Параметр *-c* указывает *du* сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов. `sudo du -csh /var/log /var/lib` ![](https://i.imgur.com/G2b1Rnh.png) Если вы хотите отобразить использование диска подкаталогами *n-уровня*, используйте параметр *--max-depth* и укажите уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать: `sudo du -h --max-depth=1 /var/lib` ![](https://i.imgur.com/naOSGKu.png) По умолчанию утилита *du* повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель *--apparent-size* . «Видимый размер» файла — это фактический объем данных в файле. `sudo du -sh --apparent-size /var/lib` ![](https://i.imgur.com/KR0p6U1.png) du также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «Do» в вашем домашнем каталоге, вы должны запустить: `sudo du -csh ~/Do*` ![](https://i.imgur.com/1SFZfbt.png) Команду *du* можно комбинировать с другими командами с конвейерами. Например, чтобы напечатать 5 самых больших каталогов внутри каталога */var* вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов: `sudo du -h /var/ | sort -rh | head -5` ![](https://i.imgur.com/99VdjGb.png) ### 3. Команда free в Linux Синтаксис free команды следующий: `free [OPTIONS]` При использовании без какой-либо опции команда free будет отображать информацию о памяти и подкачке в килобайтах. 1 килобайт (КиБ) равен 1024 байтам. `free` Если вы хотите, чтобы буферы и кеш отображались в двух отдельных столбцах, используйте параметр `-w`. Доступно — оценка объема памяти, доступного для запуска новых приложений без подкачки. По умолчанию команда free показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мегабайтах и гигабайтах), используйте параметр `-h`. `-g` — Показать вывод в гигабайтах. ![](https://i.imgur.com/y2CFJYg.png) `free --mega` ![](https://i.imgur.com/9dBAaK0.png) `free -h -t` `free -s 5` ![](https://i.imgur.com/m1cuv8o.png) `free -s 5 -c 10` ![](https://i.imgur.com/cQ6e6yd.png) `free -h --si -s 5 -c 4` ![](https://i.imgur.com/4EjctqT.png) `watch free -h` ![](https://i.imgur.com/jVRlU9U.png) ### 4. iostat Процесс установки iostat очень прост. iostat является частью пакета sysstat, который можно установить на вашей соответствующей системе одной из команд ниже: `sudo apt-get install sysstat` ![](https://i.imgur.com/XjHxJsh.png) IOSTAT инструмент, который доступен через команду iostat. Введите эту команду, чтобы увидеть, как она работает: `iostat` ![](https://i.imgur.com/7ouztA5.png) **Синтаксис iostat очень простой. Вам достаточно выполнить:** `$ iostat опции устройство интервал` Параметры устройство и интервал необязательные. Первый указывает по какому устройству показывать статистику, а второй, с каким интервалом обновлять данные. Давайте сначала рассмотрим опции программы, которые могут вам пригодится: - с - отобразить только информацию об использовании процессора; - d - отобразить только информацию об использовании устройств; - h - выводить данные в отчёте в удобном для чтения формате; - k - выводить статистику в килобайтах; - m - выводить статистику в мегабайтах; - o JSON - выводить статистику в формате JSON; - p - вывести статистику по устройству и всех его разделам; - x - вывести расширенную статистику; - y - отображать статистику с момента запуска утилиты, а не системы; - z - спрятать информацию о дисках, у которых нет активности. `sudo iostat -h` ![](https://i.imgur.com/kalCmBJ.png) Чтобы посмотреть данные по нужному устройству просто укажите это устройство: `sudo iostat /dev/sda1` ![](https://i.imgur.com/72DiZ0e.png) Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p: `sudo iostat -p /dev/sda1` ![](https://i.imgur.com/enG72T7.png) Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например: `sudo iostat -p /dev/sda1 1` ![](https://i.imgur.com/dfZbiqc.png) Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал: `sudo iostat -y -p /dev/sda1 1` ![](https://i.imgur.com/omwYDfg.png) Для начала разумно сохранить df -hl для того чтобы понимать о каких разделах идет речь. `df -h` Хорошо будет, если физическое устройство разбито на разные логические разделы для каждого компонента. Этим мы сможем оценить профиль использования системы ввода-вывода для каждого разнесенного компонента. **Наблюдение** В отличии от других утилит iostat не очень приспособлен для логирования с учетом времени. Ну ничего, awk в помощь. **Строчка для получения лог файла:** `iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}' >> iostat.log &` ![](https://i.imgur.com/l0IdF6j.png) ### 5. mpstat `mpstat` Опция «-А», показывает всю информацию, которая может быть отображена с помощью команды mpstat, как показано ниже. Это действительно эквивалентно команде «-I ALL -u -P mpstat ALL» команды: `mpstat -A` ![](https://i.imgur.com/xISkMbH.png) Параметр «-P ALL», покажет все индивидуальные процессоры или ядра вместе со статистикой: `mpstat -P ALL` ![](https://i.imgur.com/N5Q38uQ.png) Для отображения статистически о конкретном CPU или ядре, используйте опцию «-P», как показано ниже: `mpstat -P 0` ![](https://i.imgur.com/U1eH8Lq.png) Можно выполнить `mpstat -V` чтобы показать версию утилиты: ![](https://i.imgur.com/SaPbauu.png) Дополнительные опции `mpstat --help` ![](https://i.imgur.com/U7Px8Me.png) ### 6. vmstat В первую очередь нужно вызвать команду vmstat, которая предоставляет краткую информацию о различных ресурсах системы и связанных с ними неполадках, приводящих к снижению производительности. Отчет команды vmstat содержит статистическую информацию о нитях ядра, находящихся в очереди выполнения и ожидающих запуска, а также об оперативной памяти, подкачке, дисках, прерываниях, системных вызовах, переключении контекста и работе процессора. В информации о процессоре указывается доля времени, в течение которой процессор работал в пользовательском режиме, системном режиме, простаивал и ожидал завершения операции дискового ввода-вывода. Для получения информации о работе процессора удобнее использовать команду vmstat, а не iostat, так как ее построчный вывод проще анализировать, а в случае, когда к системе подключено много дисков, ее вывод намного менее объемный. Приведенный ниже пример иллюстрирует применение vmstat для обнаружения программ, которые потребляют слишком много ресурсов CPU. `vmstat` `vmstat -a` (active/inactive memory) - активная/неактивная память `vmstat -f` (number of forks since boot) - количество вилок с момента загрузки `vmstat -d` (disk statistics) - статистика диска ![](https://i.imgur.com/P01DWsI.png) `vmstat -D` (summarize disk statistics) - (общая статистика диска) ![](https://i.imgur.com/9cUzDaa.png) `vmstat --help` ![](https://i.imgur.com/rzDwLj2.png) `vmstat 1` - 60 - через какое количество секунд выводить информацию ![](https://i.imgur.com/Bm70vXx.png) ### 7. Утилита/команда w Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены ![](https://i.imgur.com/1D92Y1I.png) `- h` - Не выводить заголовок у таблицы. `- u` - Игнорировать имена пользователей при определении времени текущего процесса и времени CPU. `- s` - Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU. `- f` - Включить или выключить вывод поля from, которое соответствует имени удаленного хоста (remote hostname). В зависимости от дистрибутива Linux (версии утилиты w), поле from может выводиться или не выводиться по умолчанию. `- i` - Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно. `- o` - Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится. USER — имя пользователя. TTY — название терминала. FROM — название удаленного компьютера или IP-адрес. LOGIN — время входа в систему. IDLE — время бездействия. JCPU — время, использованное всеми процессами, подключенными к tty. Оно не включает завершенные фоновые задания, но включает фоновые задания, работающие в данный момент. PCPU — время, использованное текущим процессом, который указан в поле WHAT. WHAT — текущий процесс (командная строка текущего процесса). `- V` - Вывести версию утилиты w. ![](https://i.imgur.com/IAc1ciX.png) ### 8. Утилита htop **Как установить htop** Установите пакет с именем htop используя менеджер пакетов для вашего дистрибутива. В Debian, Linux Mint, Ubuntu, Kali Linux и их производных выполните: `sudo apt install htop` ![](https://i.imgur.com/ZZbnWWq.png) Команду htop можно запускать как с правами обычного пользователя: `htop` Так и с привилегиями суперпользователя, для этого используйте sudo: `sudo htop` ![](https://i.imgur.com/SeW62I9.png) **Как ускорить или замедлить частоту обновления htop** Для установки времени обновления htop используйте опцию -d после которой укажите время обновления в десятой части секунд. *Например, чтобы программа обновляла окно каждую 1/10 секунды: `sudo htop -d 1` ![](https://i.imgur.com/Y8hAu8d.png) ## Практическая работа №2.2 Установка и настройка сервера SSH в Linux Узнаем ip хоста - Kali Linux ![](https://i.imgur.com/3f9hX9u.png) ### 1. Установка пакетов SSH `$ sudo apt-get install ssh` ![](https://i.imgur.com/de2URJT.png) `$ systemctl status sshd` ![](https://i.imgur.com/is8q7A0.png) ### 2. Настройка SSH Режим работы SSH-сервера с настройками по-умолчанию хоть и является вполне работоспособным для небольших частных сетей, всё же нуждается в задании некоторых важных параметров для использования на высоконадёжных публичных серверах. Настройки демона хранятся в файле `/etc/ssh/sshd_config`. Посмотреть его можно командой `cat /etc/ssh/sshd_config` ![](https://i.imgur.com/IfFkHGm.png) Изменим файл конфига в соответствии с задачей ![](https://i.imgur.com/Q6zqIcm.png) ![](https://i.imgur.com/jmQJ7Dp.png) Настройки для алиасов хранятся либо глобально в `/etc/ssh/ssh_config`, либо раздельно для пользователей в `~/.ssh/config`. Здесь нужно не спутать с `ssh_config!` ![](https://i.imgur.com/Uyz4uPs.png) **Для применения сделанных настроек необходим перезапуск SSH-сервера:** `$ systemctl restart sshd` ![](https://i.imgur.com/rabYyBt.png) ### 3. Настройка и использование клиента SSH Введём нового пользователя ![](https://i.imgur.com/T0JL7rK.png) С помощью PuTTY подключимся к серверу ![](https://i.imgur.com/D7ktM2D.png) ## Практическая работа №2.3 Установка и настройка SSH-authorized_keys ### 1. Как работают ключи SSH? Сервер SSH может использовать много разных методов аутентификации клиентов. Наиболее простой метод — аутентификация с помощью пароля. Этот метод просто использовать, но он не является самым безопасным. Хотя пароли отправляются на сервер в безопасном режиме, обычно они недостаточно сложные и длинные, чтобы обеспечить надежную защиту против упорных злоумышленников, совершающих многократные атаки. Вычислительная мощность современных систем и автоматизированные скрипты позволяют достаточно легко взломать учетную запись методом прямого подбора пароля. Хотя существуют и другие методы усиления мер безопасности (fail2ban и т. д.), ключи SSH показали себя надежной и безопасной альтернативой. ### 2. Создание ключей SSH Первый шаг для настройки аутентификации ключей SSH на сервере заключается в том, чтобы сгенерировать пару ключей SSH на локальном компьютере. Для этого мы можем использовать специальную утилиту ssh-keygen, которая входит в стандартный набор инструментов OpenSSH. По умолчанию она создает пару 2048-битных ключей RSA, что подходит для большинства сценариев использования. Сгенерируйте на локальном компьютере пару ключей SSH, введя следующую команду: `ssh-keygen` ![](https://i.imgur.com/94MEY5y.png) ### 3. Как скопировать открытый ключ на ваш сервер Самый удобный способ скопировать открытый ключ на существующий сервер — использовать утилиту под названием ssh-copy-id. Поскольку этот метод очень простой, если он доступен, его рекомендуется использовать. Синтаксис выглядит следующим образом: `ssh-copy-id username@remote_host` ![](https://i.imgur.com/EoT4kg9.png) Аутентификация по паролю ![](https://i.imgur.com/SDlpUUn.png) ### 4. Аутентификация на сервере с использованием ключей SSH Если вы успешно выполнили одну из вышеописанных процедур, вы сможете войти на удаленный хост без пароля учетной записи для удаленного хоста. Воёдм на удалённый хост с помощью **passphrase** Базовый процесс выглядит аналогично: `ssh username@remote_host` ![](https://i.imgur.com/EMKLH2q.png) ![](https://i.imgur.com/6ajeKRR.png) ### 5. Отключение аутентификации с помощью пароля на сервере Откройте файл конфигурации демона SSH: `sudo nano /etc/ssh/sshd_config` Найдите в файле директиву PasswordAuthentication. Она может быть помечена как комментарий. Удалите символ комментария в начале строки и установите значение «no». После этого вы потеряете возможность входа в систему через SSH с использованием паролей учетной записи: `PasswordAuthentication no` ![](https://i.imgur.com/NVuEGtU.png) Подключаемя без аутентификации ![](https://i.imgur.com/BeBSWXF.png) Проверяем, что на PuTTY такая процедура не сработает ![](https://i.imgur.com/PRnZInm.png) ## Практическая работа №2.4 Сбор информации о Linux и WGET ### 1. Базовый сбор информации Начнём со сбора информации о дистрибутивах *`cat /etc/release`- информация о дистрибутиве и какая версия его* ![](https://i.imgur.com/3emWi7N.png) **По ядру linux можно понять следующее:** `uname -a` ![](https://i.imgur.com/840493C.png) **whoami** Как следует из названия, команда `whoami` выводит имя пользователя для эффективного идентификатора пользователя. Другими словами, он отображает имя текущего вошедшего в систему пользователя. ![](https://i.imgur.com/g89Scrg.png) **Команда `uptime` покажет, когда и сколько система работала и соответственно, если она работала без перерыва 3 года, то злоумышлинник может воспользоваться старыми уязвимостями для получения доступа или внедрения кода.** ![](https://i.imgur.com/RLQDPzZ.png) **Давайте посмотри права директории `/home`** ![](https://i.imgur.com/YoGqDRR.png) **Чтобы ограничить права другим пользователям делаем следующее `sudo chmod o-rx /home/kali`** ![](https://i.imgur.com/xktqhI9.png) **`ip neigh` - показывает с какими компьютерами происходит обмен данными** ![](https://i.imgur.com/UY5ViP5.png) **`sudo ss -tlnp` - показывает какие сервисы и с какими портами запущены** ![](https://i.imgur.com/gSTLzEv.png) **`sudo -l` - позволяет нам понять, что есть в этом машинки и что пользователь может** ![](https://i.imgur.com/43V0pa6.png) ### 2. Суидные файлы В системе могут быть различные закладки `sudo find / -user root -perm -4000 -exec ls -ldb {} \\; 2> /dev/null` ![](https://i.imgur.com/B5Wh7hF.png) Нам надо скопировать ссылку данной утилиты и скачать её с помощью wget `wget <https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz>` ![](https://i.imgur.com/UR4yMap.png) tar xfv lynis-3.0.3.tar.gz ![](https://i.imgur.com/TzaVCdz.png) Затем давайте проверим контрольную сумму с сайта и то, что мы скачали делается это следующей командой `sha256sum lynis-3.0.6.tar.gz` ![](https://i.imgur.com/HhvaqJr.png) `3005346e90339c18a4c626169c6f1d9fb8643bb0d0a049bcaf64b7ccb4fd272c` ![](https://i.imgur.com/FEUheTs.png) `cd lynis` `ls` ![](https://i.imgur.com/t8iYf5k.png) **далее запускаем утилиту lynis** `sudo ./lynis audit system` ![](https://i.imgur.com/B57YPNi.png) *нажимаем Enter* ![](https://i.imgur.com/03QYhTi.png) *Это вывод report-отчёт* ![](https://i.imgur.com/u1FuBA9.png) **ещё можно набрать команду** `./lynis show options` ![](https://i.imgur.com/ESRF67b.png) **Перенаправлять файлы лучше через стандартный report утилиты:** `/var/log/lynis-report.dat` ![](https://i.imgur.com/PEeNB0p.png) ### 3. Проверка целостностей пакетов **dpkg** является довольно низкоуровневой утилитой. Существуют более высокоуровневые утилиты, например APT, которые могут загружать пакеты из сетевого репозитория и отслеживать зависимости между пакетами. Конечным пользователям следует использовать утилиты с более дружественным интерфейсом, такие как Aptitude или Synaptic, предоставляющие лёгкий способ просмотра списка пакетов, их описания и зависимостей. для просмотра пакетов в системе `dpkg -l` ![](https://i.imgur.com/H4TehXl.png) для просмотра установленных утилит необходимо набрать следующую команду `dpkg -L coreutils` - она покажет все штатные утилиты ![](https://i.imgur.com/JZ5oGeB.png) например рассмотрим утилиту `/bin/dir /bin/dir --help` которая позволяет нам работать по сути как `ls` ![](https://i.imgur.com/H7tdLgM.png) сделаем backup `sudo mv /bin/dir /bin/dir.bak` вводим команду `sudo cp /bin/false /bin/dir` ![](https://i.imgur.com/uSnupY4.png) теперь при запуске `dir` мы можем уыидеть, что ничего не будет происходить, кроме как если посмотреть логическую ложь, то будет ошибка `echo $?` ![](https://i.imgur.com/ewQzyg0.png) `sudo apt install debsums` ![](https://i.imgur.com/RYvsmeV.png) `debsums -ac coreutils` - запуск проверки `debsums -cs coreutils` - запуск проверки можно также проверить утилитой `dpkg --verify coreutils` ![](https://i.imgur.com/qhq1uYA.png) Если кто-то смог проникнуть в систему и что-то деал в ней нам поможет команда find Например, если нам надо рассмотреть какой либо инцидент: `sudo find / -printf "%T@;%Tc;%p\\n"` ![](https://i.imgur.com/23AYVLn.png) Далее если надо сделать по одному конкретному пользователю необходиму следующие: `sudo find /home/kali/ -printf "%T@;%Tc;%p\\n" > timeline.csv` Затем желательно это отсортировать, например: `head timeline.csv` сейчас никак не отсортированно ![](https://i.imgur.com/G5HE99A.png) Но давайте отсортируем данный файл с помощью команды: `sort -rn timeline.csv | less` где флаг `-r` как раз будет указывать, что последнее изменение будет первым ![](https://i.imgur.com/ZQq6q5O.png) ## Практическая работа №2.5 Переменные окружения в Linux .bashrc, .bash_profile и .bash_login ### 1. Просмотр списка системных переменных окружения Вы можете без проблем самостоятельно просмотреть все присутствующие в Linux системные и пользовательские переменные и их понятия с помощью всего лишь одной команды, которая отобразит список. Для этого потребуется выполнить всего несколько простых действий через стандартную консоль. Пропишем команду sudo `apt-get install coreutils`, чтобы проверить наличие данной утилиты у вас в системе и сразу же установить ее при надобности. *Процесс укажет какие добавлены новые файлы или их наличии в библиотеках.* ![](https://i.imgur.com/LxG6ndv.png) Теперь воспользуемся командой, чтобы раскрыть список всех переменных окружения. `printenv` ![](https://i.imgur.com/ByKjUSl.png) ### 2. Запуск команд с указанием нового значения переменной окружения Можно самостоятельно на время изменить опцию любого параметра, чтобы запустить с ним определенную программу или выполнить любые другие действия. В таком случае в консоли вам будет достаточно прописать `env VAR=VALUE`, где `VAR` — название переменной, а `VALUE` — ее значение, например, путь к папке `/home/kali`. ![](https://i.imgur.com/En3qHQY.png) #### 2.1 Установка и удаление локальных переменных окружения Запустите «Терминал» и напишите команду `VAR=VALUE`, после чего нажмите на клавишу `Enter`. Как обычно, VAR — любое удобное название переменной одним словом, а `VALUE` — значение. Проверьте действенность произведенных действий, введя `echo $TESTKALI`. Строчкой ниже вы должны получить опцию переменной. ![](https://i.imgur.com/FzFZsDv.png) Удаляется любой параметр командой `unset TESTKALI`. Проверить удаление можно также через `echo $TESTKALI` ![](https://i.imgur.com/wfDb93k.png) #### 2.2 Добавление и удаление пользовательских переменных Рассмотрим классы переменных, которые хранятся в конфигурационных файлах, а из этого выплывает то, что придется редактировать сами файлы. Делается это с помощью любого стандартного текстового редактора. ![](https://i.imgur.com/wG1Qli0.png) *Пользовательскую конфигурацию можно редактировать через* `sudo nano .bashrc.` ![](https://i.imgur.com/F3kgKeC.png) *Обновление конфигурации произойдет после повторного старта файла, а делается это через* `source .bashrc.` ![](https://i.imgur.com/2lW7mvw.png) *Проверить активность переменной можно через ту же опцию* `echo $TESTKALI`. ![](https://i.imgur.com/znOV278.png) #### 2.3 Создание и удаление системных переменных окружения **Осталось только затронуть третий класс переменных — системные.** Редактироваться для этого будет файл /ETC/PROFILE, который остается активным даже при удаленном подключении, например, через известный многим менеджер SSH. Открытие конфигурационного элемента осуществляется примерно так же, как и в предыдущем варианте: введите `nano /etc/profile` ![](https://i.imgur.com/TaY4vjF.png) Внесём `TESTKALI2=/home/kali12345` Сохраняем и выходим. Пишем команду `source /etc/profile` - чтобы изменения вступили в силу. Проверяем: `echo $TESTKALI2=/home/kali12345` ![](https://i.imgur.com/j1EYmvp.png)