July 4, 2023

Лекция 1

Узнаем:

1) Как открыть и настроить менеджер питания.
2) Как открыть терминал.
3) Как поменять цвет терминала.
4) Что такое табуляция.
5) Что такое терминал и откуда он взялся.
6) Как обновить систему.
7) Что такое root.
8) Как получить root права.
9) Команду cd.
10) Команду ls.
11) Из чего состоит файловая система Linux.
12) Что такое шелл.
13) Команду cat.
14) Команду mkdir.
15) Команду touch.
16) Команду cp.
17) Команду mv.
18) Команду rmdir.
19) Как работают опции команд.
20) Команду less.
21) Команду head.
22) Что такое apt.
23) Откуда Linux скачивает программы.
24) Что такое dpkg.

Итог:

Сегодня мы научимся работать в терминале, а также узнаем из чего состоит Kali Linux.

Читать лекцию.

#Kali_Linux

Введите "менеджер питания" в поиск и откройте его. Это можно сделать также с помощью клавиш Alt + F1 (советую делать так).

Сделайте такие настройки:

Это нужно для того, чтобы экран не блокировался каждый раз когда вы отходите куда-то на пару минут от экрана. Я очень часто отхожу от компьютера и меня бесит когда он каждый раз блокируется. Ну как я уже говорила, настройка несущественная. В Kali Linux не нужно жать ОК после настроек, просто закрываем окно и они применяются автоматически.

Теперь обновим наше только что установленную систему. Откроем терминал, можете нажать на него тут, в левом верхнем углу:

Но советую всё же открывать его клавишами CTRL+ALT+T, быстрее привыкните работать без графического интерфейса, а это очень важно.

Можете также поставить цветовую схему как у меня если хотите: Файл > Настройки > Цветовая схема "GreenOnBlack".

тут сразу хочу рассказать об одной очень важной фишке при работе с терминалом - табулировании. Возьмём как пример команду clear. Команда clear предназначено для очистки окна терминала. Прописываем cle и жмём клавишу TAB, терминал автоматически найдёт и поставит команду полностью, это помогает сохранять кучу времени при работе с терминалом. Команда начинающая на cle всего лишь одна, поэтому она подставляется автоматически.

Со временем все команды которые подставляются таким образом войдут у вас в привычку. Если же прописать cl и нажать TAB, то терминал не подставит команду автоматически, а покажет нам какие команды подходят под ваш запрос:

Давайте теперь разберёмся, что вообще такое терминал и откуда он взялся.

Многие не понимают что такое терминал в Kali Linux и откуда он вообще взялся. Давным давно в 90x для настройки и администрирования системы кто-то должен был подойти к терминалу, авторизироваться и внести необходимые изменения.

Выглядел он примерно так:

Попробуйте представить, вы заходите в комнату в которой находится экран телевизора или что-то похожее на экран телевизора закреплённого на огромном компьютере, этот экран телевизора назывался терминалом. По сути терминалом был дисплей который выводил действия любой выполненной команды.

Сам дисплей не понимал что вы вводите, он не понимал ваших действий, он нужен был только для того, чтобы принять команды и показать результат. Ваши действия понимала программа, которая работала в фоне. Она понимала что вы вводите, какие клавиши вы нажали, отрабатывала полученную информация и выдала результат который выводился в терминале.

В то время нам нужно было 2 компонента, сам физический терминал + программа которая работала в фоне. В Linux эта программа находится в директории /bin/bash давайте зайдём в файловую систему на рабочем столе:

Далее перейдём в /bin:

Найдём эту программу и посмотрим на неё: вот эта программа, она понимает что мы вводим в терминале:

Зачем я всё это рассказываю? Потому что в линуксе работа происходит исключительно с терминалом, вы должны это понимать. Терминал символизирует экран компьютера из 90x годов. Если открыть терминал, то в нём будет работать эта программа. Это называется shell, в нём уже работает bash.

Нажмите CTRL+ALT+F1 и вы увидите чистую linux систему без графического интерфейса (он был придуман намного позже), работать можно оттуда, так раньше и работали. Чтобы вернуться назад нажмите CTRL+ALT+F7.

Bash работает в терминале по умолчанию. В противном случае терминал не смог бы принимать информацию на ввод и отображать результат. Этот shell обрабатывает команды в фоновом режиме и отправляет результат обратно терминалу, чтобы тот его отобразил.

Это намного эффективнее чем графический интерфейс пользователя, в отличии от него он всегда есть на серверах. Когда вы будете совершать взломы, то вы часто будете встречать сервера без графического интерфейса, так как он требует много ресурсов, ему нужно много места и памяти, а такие расходы непозволительны для серверов, нельзя чтобы это влияло на производительность и графический интерфейс поэтому не является необходимым.

По сути терминал всегда есть на серверах, а графического интерфейса нет, поэтому очень важно, чтобы вы умели ориентироваться в любой Linux системе с помощью терминала или шела. Как правило, когда вы что-то взламываете, то ваша цель это получить доступ к шелу на удалённой машине, на машине вашей жертвы, это получить доступ к шелу на удалённой машине, на машине вашей жертвы, это делает например ратник, ботнет, стиллер или руткит.

Давайте теперь обновим нашу систему. Это нужно обязательно делать после каждого запуска: sude apt update.

После почти каждого ввода в терминал нам нужно будет прописать пароль (пароль прописывается, просто он не показывается на экране, не паникуйте):

Команда apt update обновляет списки пакетов из репозиториев, чтобы получить информацию о новейших версиях пакетов и их зависимостях. Это будет сделано для всех репозиториев. Репозиторий это сервер на котором хранится программы, командой apt мы обращаемся к этому серверу. Команда sudo предоставляет возможность выполнять команды от имени суперпользователя root.

Чтобы вы понимали, что такое root, то вспомните главного администратора в компьютерном клубе (он root) и обычные компьютеры ща которые вы платите, чтобы поиграть (они с ограниченными правами). Вот это будет примерно тоже самое.

Далее прописываем: sudo apt dist-upgrade

Данная команда полностью обновит нашу систему.

При обновлении нас спросит хотим ли мы продолжить. Жмём английскую "y" (что означает yes), либо русскую букву "д", что означает (да).

Система начнёт обновляться.

Если вы не хотите вводить команду sudo каждый раз и пароль при новой команде, то после обновления можете прописать: sudo su.

И далее вы сможете работать их под рута.

Вы можете каждый раз вводить данную команду и работать из под root в уже созданном пользователе, либо можете далее указать пароль для root: passwd root

Теперь можете перелогиниться, нажав в правом верхнем углу на экране на данную иконку:

Пока что не надо это жать, так как у вас обновляется система.

Появится вот такое окошко (также это можно сделать с помощью ALT + F4):

Жмём смена пользователя. Вводим логин root и свой пароль от него и заходим:

Но не советую работать в постоянном режиме от пользователя root, ваша безопасность снизится из-за этого + если вы новичок, то можете что-то поламать неосторожными действиями в терминале и придётся переустанавливать систему по новой.

Я буду показывать всё от лица простого пользователя (не root).

Теперь познакомимся с основными папками (в Linux это называется каталоги).

Заходим сюда на рабочем столе:

Увидим вот такую картинку:

Можно посмотреть также на это из терминала без графического интерфейса. Откройте второй дополнительный терминал.

cd /
ls

Первой командой мы переходим из домашнего каталога в файловую систему. Второй командой мы смотрим содержимое.

В Kali Linux древовидная структура. Иерархия файловой системы начинается с директории, которая обозначается как /. В ней находятся все директории, которые вообще есть в системе. Представьте все эти каталоги в виде дерева:

Нашла пример в гугл картинках для наглядности.

Расскажу поверхностно про иерархию файловой системы в Kali Linux.

После этого вы будете иметь общее представление о том, что вообще находится в этих директориях. Подробно рассказывать про все директории и конфигурационные файлы сейчас не имеет смысла, потому что если вы начинающий пользователь Kali Linux, то многие термины вам будут непонятны, да и самых файлов очень много.

Начну с директории /bin:

Маленький список из огромного количества программ в /bin

В этой директории находятся основные программы операционной системы Kali Linux. Если быть точнее здесь находятся исполняемые файлы программ (файлы запуска). То есть когда в терминале вы вводите какую-то команду, например:

Если в этой директории есть соответствующий исполняемый файл, то команда выполнится. А если нет исполняемого файла, то шелл покажет сообщение о том что команда не найдена:

В общем - в директории bin находятся элементарные команды, если быть точнее программы с помощью который можно копировать, перемещать, удалять, создавать файлы и как вы видите ещё много других программ и команд которые могут выполняться как с правами администратора (root), так и с правами обычного пользователя.

Здесь также находится командный интерпретатор bash:

То есть шелл обрабатывающий все те команды, которые вводит пользователь в терминале.

Далее рассмотрим директорию /sbin:

Эта директория похожа на директорию /bin, здесь тоже хранятся исполняемые файлы:

То есть программы которые используются для системного администрирования и настройки системы. Здесь находятся например такие популярные утилиты как blkid, она показывает информацию о разделах:

Здесь хранится программа cfdisk. Утилита использующаяся для работы с дисковым пространством в Kali Linux:

fdisk

Здесь есть утилита ifconfig, которая используется для настройки сети:

Есть программа iptables с помощью которой настраивается фаервол:

И очень много других важных программ которые могут выполнятся в основном только с правами root (правами администратора). Также в директории /sbin находятся исполняемые файлы необходимые для загрузки системы.

Следующая директория - это /lib:

В ней в основном находятся библиотеки используемые программами находящимися в директориях /bin и /sbin которые мы только что рассматривали:

Также в директории /lib есть поддиректория /lib/modules:

В ней находятся загружаемые модули ядра и много всего другого нужного для работы с системой. С директорией /lib разобрались.

Теперь рассмотрим директорию /usr:

В этой директории находятся приложения и файлы используемые пользователями, а также консольные утилиты которые не так важны для самой системы, то есть без которых система и так будет нормально работать:

Как вы видите в директории /usr есть свои поддиректории /usr/bin, /usr/sbin и /usr/lib. Не очень важные программы находятся в поддиректории /usr/bin, здесь есть например исполняемый файл для запуска программки find с помощью которой можно искать файлы по всему Kali Linux, если вы вдруг что-то потеряли:

Здесь много ещё всяких разных исполняемых файлов:

С их помощью можно запускать программы как с графических интерфейсов, так и консольные программы с текстовым интерфейсом.

Также есть поддиректории /usr/sbin, в ней находятся не очень важные программы предназначенные для системного администрирования. В поддиректории /usr/lib думаю сами уже догадались, что там находятся библиотеки для поддиректорий /usr/bin и /usr/sbin. Поддиректории /usr/games для игр:

В поддиректории /usr/include находятся все системные подключаемые файлы общего пользования для языка программирования С, в том числе подключаемые файлы библиотек, в общем все те, кто хоть раз писал программу на языке с, думаю поняли:

В поддиректории /usr/local хранятся приложения и файлы не относящиеся напрямую к дистрибутиву Kali Linux, либо установленные позже чем основная часть системы:

В поддиректории /usr/share расположены файлы используемые для работы с графикой:

В ней также есть поддиректории /usr/share/doc в которой хранится справочная документация по установленным программам:

В /usr/share/icons хранятся иконки для программ:

В поддиректории /usr/share/application иконки для приложений:

В поддиректории /usr/src находятся исходные коды для ядра Kali Linux и программ:

В общем, когда пользователь устанавливает какое-то приложении, то почти все файлы этого приложения распределяются по поддиректориям находящимся в директории /usr, но бывают исключения, то есть не всегда приложения устанавливается в поддиректориях директории /usr.

Вернёмся в файловую систему, в самое начало:

Рассмотри директорию /boot:

В этой директории находятся загрузчик grub (Grand Unified Bootloader) - программа загрузчик операционной системы:

Ядро Linux:

Образ initrd (InitialRamDisk):

Если изъясняться просто, то это виртуальный диск в оперативной памяти для начальной инициализации. Проще говоря это образ корневой файловой системы. Ядро не имеет возможности получить доступ к файловой системе, поэтому модуль который непосредственно требуется для запуска системы помещается в initrd.

Initrd связан с ядром и загружается как часть ядро в процессе загрузки системы. То есть при начальной загрузке ядро монтирует образ initrd и использует его в качество временной файловой системы.

Идём далее. В Linux есть файловые системы специального вида, так называемые виртуальные файловые системы. Так вот, директории /dev, /proc и /sys:

Начну я с директории /dev:

В этой директории находятся специальные файлы с помощью которых предоставлены все физические устройства и псевдоустройства которые являются виртуальными устройствами. Из физических устройств например тут находится жёсткий диск (файл sda):

А также разделы sd1, sd2, sd3 и так далее:

Всё это физические устройства. Вот мы видим ещё файл mem. Это тоже физическое устройство. Этот файл является образом физической памяти компьютера:

Что же касается виртуальных устройств, то это например виртуальные консоли:

В поддиректории /dev/pts находятся файлы псевдотерминалов и эти псевдотерминалы тоже являются виртуальными устройствами:

Если например в компьютер вставить флешку, то в директории /dev сразу создастся файл этого устройства, а если вытащить флешку, то файл сразу удалится.

В общем - директории /dev содержит все файлы устройств с помощью которых можно получить доступ к какому-то конкретному устройству.

С директорией /dev разобрались.

Теперь рассмотрим директорию /proc:

В этой директории хранятся поддиректории для всех процессов которые запущены в данный момент и много других важных файлов и поддиректорий в которых хранится например информация о сетевых протоколах, о модулях ядра загруженных в данный момент, о файловых системах встроенных в ядро и так далее. Например можно узнать версию ядра, для этого нужно открыть терминал и прописать:

cat /proc/version

Команда cat позволяет выводить содержимое файлов в терминале.

Также можно посмотреть информацию о процессоре:

cat /proc/cpuinfo

Видим модель процессора, частоту, его кэш и так далее.

Что касается вот этих поддиректорий:

Каждый номер соответствует идентификатору какого-то процесса.

ps -e

Видим, например, что у нас запущен браузер firefox, идентификатор процесса 1464:

Теперь ищем в подкаталоге 1464:

И видим что в директории /proc создалась поддиректория 1464, которая соответствует идентификатору процесса.

Далее рассмотрим директорию /sys:

В этой директории находятся поддиректории в которых содержатся сведения обо всех шинах системы: data, usb, pci и так далее. Как раз вот поддиректория /sys/bus содержит список шин определённых в ядре Kali Linux:

Поддиректория /sys/block содержит поддиректории всех блочных устройств присутствующих в данный момент в системе:

Поддиректория /sys/class содержит список сгруппированных устройств по классам. То есть это принтер, сканер, а если например это ноутбук, то там может так же быть блютуз ну и так далее:

В поддиректории /sys/kernel находится информация о ядре:

В поддиректории /sys/module содержится информация о загружаемых модулях:

В поддиректории /sys/power содержится информация об управлении питанием:

В поддиректории /sys/devices содержится информация о подключённых устройствах:

Далее у нас идёт директории /etc:

В этой директории находятся конфигурационные файлы для всей системы. Здесь имеется множество поддиректорий в которых конфигурационные файлы распределяются по группам. В общем в директории etc находятся файлы с помощью которых настраивается вся система.

Теперь рассмотрим директорию /home:

В этой директории находятся поддиректории которые являются домашними директориями пользователей. Вот мы видим в моём случаи здесь есть еще директория:

Если мы туда зайдём, то увидим:

Думаю с этой директорией всё понятно.

Идём далее. Директории /root:

Это домашняя директория пользователя root, то есть администратора. Так как я в системе сейчас нахожусь под обычным пользователем, то и доступа у меня к этой директории нет. Поэтому чтобы стать пользователем root я открою терминал и введу команду sudo su (я это уже показывала выше), а далее посмотрю, что есть в этой директории root:

sudo su
ls -a /root

Далее директория /media. В эту директорию по умолчанию подключаются съёмные носители информации вставляемые в компьютер:

То есть это либо флешка, либо внешний жёсткий диск, и так далее. Когда вы например вставляете в компьютер какую-то флешку, то в Kali Linux автоматически создаётся точка монтирования, поддиректория с таким же именем что и метка флешки.

Например когда вы в Windows форматируете флешку, там обычно есть поле где нужно указать метку тома, про вот эту метку я сейчас и пишу. Метка по английски будет Label, имеется это ввиду потому что если вы будете использовать какие -то консольные утилиты, то там везде будет написано Label. Если у флешки нет метки, то созданной поддиректории назначается другое имя, обычно оно выглядит в виде идентификатора, состоит из случайных цифр букв.

Далее у нас идёт директория /tmp:

В этой директории хранятся временные файлы системы и эти файлы удаляются когда пользователь перезагружает систему. В общем директория /tmp это временное хранилище каких-то данных, так как все пользователи имеют права на чтение и запись в этой директории.

Далее директория /run:

Если особо не углубляться и говорить простым языком, то директория /run это централизованное хранилище временных файлов необходимых для запуска служб на ранних стадиях загрузки системы. Такие файлы проблематично размещать в директории /tmp в силу того, что они могут быть удалены.

Теперь рассмотрим директорию /var:

Эта директория содержит различные часто изменяемые данные. Например в поддиректории /var/cache находится кэш различных программ:

В поддиректории /var/spool задачи ожидающие обработки, например очередь печати, задачи программы Cron. Крон это планировщик задач. Если его настроить, то в определённое время суток будут выполняться какие-то задания:

Также здесь находятся поддиректория /var/log, а в ней log файлы, то есть системные журналы:

И много чего ещё другого нужного.

Кстати если будете ставить web сервер, например Apache, то для этого есть поддиректория /var/www:

Она по умолчанию предназначена для размещения файлов на веб сервере, для размещения сайтов, проектов и так далее, всё это настраивается. Можно сделать так, чтобы всё это размещалось в другой директории.

Мы с вами рассмотрели большинство важных директорий находящихся в корне системы. Теперь надеюсь у вас появилось общее представлении о том где и что вообще находится.

Сейчас мы перейдём непосредственно к работе с терминалом. Откроем его (как это сделать с помощью клавиш я писала выше, для тех кто забыл CTRL + ALT + T).

Давайте рассмотрим как работает первая команда которую мы изучим, команду cd. Обратите внимание за заголовок окна:

Символ ~ означает, что я нахожусь в домашнем каталоге (home):

Я это могу проверить с помощью команды pwd. Которая выводит результат:

Например я хочу переместится в файловую систему, в каталог /tmp:

Для этого я припишу:
cd /tmp

Я переместилась куда мне нужно и в заголовке вместо ~ появилось /tmp.

Я могу ещё раз это проверить с помощью команды:
pwd

Я переместилась куда мне нужно и в заголовке вместо ~ появилось /tmp.

Я могу ещё раз это проверить с помощью команды:
pwd

Это означает, что моя текущая рабочая директория это /tmp.

Допустим я хочу перейти на уровень выше. Как вы помните из того, что я писала ранее - директория / это основная директория от которой идут все остальные. Получается что она находится на уровень выше чем /tmp, так как я сейчас нахожусь в /tmp, то я могу туда перейти выполнив:

Как вы могли заметить /tmp поменялась на / и сейчас я нахожусь в директории /.

Вернёмся в домашний каталог:
cd ~

Есть ещё команда cd -:
cd -

Она возвращается вас обратно на 1 команду по перемещению.

Надеюсь с командой cd всё понятно.

Теперь поговорим о командах mkdir и touch.

Допустим мне нужно создать текстовые файлы и каталоги. Я хочу создать директорию Теневые в директории Загрузки. Для этого я использую команду mkdir:
mkdir Загрузки/Теневые

Теперь я хочу создать в директории Загрузки две директории и чтобы одна находилась в другой. Я хочу создать директорию ТеневыеTwo, а внутри неё директорию Souls. Вместо создания двух директорий по отдельности я могу использовать опцию -p:
mkdir -p Загрузки/ТеневыеTwo/Souls

Таким образом я создала каталог ТеневыеTwo, а внутри него каталог Souls.

Теперь я хочу создать текстовый файл в том же каталоге Загрузки, для этого выполняю команду touch:
touch Загрузки/Пароли

Таким образом я создала каталог ТеневыеTwo, а внутри него каталог Souls.

Теперь я хочу создать текстовый файл в том же каталоге Загрузки, для этого выполняю команду touch:
touch Загрузки/Пароли

Давайте проверим, что директории и текстовый файл были успешны созданы. Для этого я зайду в директорию Загрузки с помощью команды cd, а далее с помощью команды ls (эта команда показывает содержимое текущей директории) узнаю содержимое данной директории:

Как видите мы создали директорию Теневые, директорию ТеневыеTwo внутри которой поддиректория Souls и также мы создали текстовый файл Пароли.

Можем зайти в Загрузки и посмотреть всё в графическом интерфейсе:

Это было очень просто.

А что если мне нужно переместить файлы?

Рассмотрим 2 команды для этого, cp (копировать) и mv (переместить).

Разница между командами копирования и перемещения заключается в том, что команда cp оставляет файл в его изначально директории. То есть, если я скопирую файл из Загрузки в Документы, то у меня будет 2 копии этого файла. Одна в Загрузки, а другая в Документы.

Команда же mv полностью переместит файл из Загрузки в Документы, то есть у меня будет только одна копия этого файла.

Давайте рассмотрим как всё работает. Создадим новый текстовый файл под названием Логина в директории Загрузки с помощью команды touch:

Давайте теперь проверим создался ли он:
ls Загрузки

Как вы видите, текстовый файл Логины был создан.

Переместим его из Загрузки в директорию Документы. Это можно сделать с помощью команды mv:
mv Загрузки/Логины Документы

Проверяем:
ls Загрузки
ls Документы

Как вы видите всё сработало и текстовый файл был перемещён из Загрузки в Документы. Файла Логины в Загрузки больше нет.

Небольшой лайфхак, если вы хотите вернуться к предыдущей команде в терминале, то можете перемещаться стрелочками вверх-вниз в истории команд, они расположены справа и чуть ниже от клавиши Enter.

Создадим текстовый файл с именем Логины в Загрузки по новой и проверим создался ли он:
touch Загрузки/Логины
ls Загрузки

Если снова переместить файл в Документы, то он будет перезаписан, а оригинальный файл исчезнет:
mv Загрузки/Логины Документы

Давайте в третий раз создадим файл:
touch Загрузки/Логины

Но теперь при перемещении используем опцию -i:
mv -i Загрузки/Логины Документы

Теперь нас спрашивают хотим ли мы перезаписать файл.

Я пишу n, то есть "нет" и жму Enter:

Теперь давайте перейдём к команде cp и посмотрим как работает она. Всё аналогично команде mv, но при этом файл при перемещении не удаляется из исходного места, а остаётся там же.

Скопирую Логины в каталог Видео:
cp Загрузки/Логины Видео

Мы с вами разобрались как создавать текстовые файлы и каталоги, а что если нам нужно удалить эти файлы и директории?

Для того, чтобы удалить текстовые файлы используется rm и rmdir для удаления директорий.

Но прошу заметить, что rmdir работает только с пустыми директориями. Ещё прошу заметить, что команды в терминале это не просто набор символов. Если брать ту же команду rmdir, то это означает с английского remove (удалить) - сокращённо rm, dir (директория). Это применимо ко всем командам в Linux.

Вы общаетесь с компьютером по английски.

Рассмотрим несколько примеров.

Для начала перейдём в каталог Загрузки:
cd Загрузки
cd - сокращённо от change directory (изменить каталог)

Далее удалим текстовый файл Пароли:
rm Пароли

Как видим текстовый файл Пароли был успешно удалён.

Удалим каталог Теневые:
rmdir Теневые

Как видим каталог Теневые был успешно удалён.

Каталог был удалён, но если бы он был не пустой, то мы не смогли бы удалить его с помощью этой команды.

Чтобы удалить директорию с содержимым нужно использовать опцию -r (рекурсивное удаление).

Для этого используется rm -r Загрузки/ТеневыеTwo, так мы удалим каталог ТеневыеTwo если он не пустой, мы же помним, что там есть подкаталог Souls.

Также мы помним, что мы использовали выше опцию -i с командой cp, опция -i означает interactive (интерактивный), мы использовали эту опцию чтобы случайно не перезаписать файлы во время копирования, тоже самое относится и к удалению файлов и если мы не хотим случайно удалить файл, а хотим чтобы Kali Linux нас спрашивал точно ли мы хотим удалить файлы, то мы можем использовать опцию -i.

Например команда:
rm -r -i ТеневыеTwo удалит директорию ТеневыеTwo и всё внутри неё, но только после того как мы подтвердим эту команду с помощью "y" (yes):

С удалением текстовых файлов и директорий разобрались.

Давайте теперь разберёмся как посматривать содержимое каталогов более подробно.

Мы уже с вами познакомились с командой ls, посмотрим какие опции можно использовать с этой командой. Команда ls отображает содержимое директории если кто забыл. ls (list) - список.

ls -l отображает подробный список
ls -a отображает скрытые файлы
ls -r это отображение по имени в обратном порядке
ls -t отображает новые файлы первыми в списке

Посмотрим как это работает. Сейчас я нахожусь в домашнем каталоге. Выполним ls:

Как видите появилось содержимое домашнего каталога (директории home). Всё это директории.

Допустим я хочу отобразить содержимое директории Загрузки, я пишу:
ls Загрузки

Я вижу файлы которые находятся там.

Посмотрим как работают опции:
ls -l Загрузки

Я использовала опцию -l. Обратите внимание как выглядит результат, это называется подробный список команды ls.

Обратите внимание на самые первые буквы и символы слева:

d означает директория.

По умолчанию директории в Kali Linux выделены синим цветом, то есть Telegram, Telegram Desktop, Теневые, Файлы - это директории, вначале строки это также выделяется буквой d.

Символ минут (-) вначале означает что это текстовый файл. Как видите этот символ (-) есть перед Логины и Пароли, также текстовые файлы обозначаются по умолчанию зелёным цветом.

Посмотрим как работает опция -a на примере каталога /tmp:
ls -a -l /tmp

Как видите теперь здесь намного больше информации. Все записи перед которыми идёт точка (.) это скрытые файлы, поэтому вы их не сможете увидеть в графическом интерфейсе:

И мы их также не видели когда просто использовали одну только опцию -l. Опцию же -a отображает скрытые директории и файлы. Перед ними всегда идёт точка (.).

Давайте рассмотрим ещё одну опцию -r, эта опция показывает временное отображение в обратном порядке:

Обратите внимание как изменился порядок отображения содержимого. Это как сортировка по имени в Windows.

Теперь давайте попробуем сначала отобразить новые файлы, это делается с помощью опции -t:

Небольшое дополнение. Если в команде несколько опций, то можно писать их слитно например вместо -t -l, написать -tl, вместо -a, -l, написать -al, результат от этого не изменится:

Теперь поговорим о том, как посмотреть содержимое текстовых файлов.

Дам вам совет который поможет после взлома, в каждой Linux системе есть скрытый файл который называется .zsh_history, либо .bash_history, зависит от конкретной linux системы, разные системы используют разные оболочки, kali linux - это zsh.

Этот файл содержит последние 500 команд выполненные пользователем, как правило он находит в директории /home этого пользователя и после взлома серверов на Linux вам нужно будет посмотреть содержимое этого файла, потому что тогда вы сможете понять что делал пользователь, что создавал и с чем взаимодействовал.

В других Linux системах, не Kali, это может быть .bash_history, зависит от оболочки по умолчанию (bash или zsh, есть ещё другие оболочки, но они используются реже). Kali Linux в 2020 году перешла с bash на zsh, в это мы сейчас углубляться не будем, но так, на заметку.

Я буду использовать этот файл (.zsh_history) в качестве примера.

Рассмотрим команда cat.

Команда cat отображает сразу всё содержимое текстового файла, так же мы рассмотрим команду less которая более эффективна чем, и команды head и tail. cat это не кошка, а сокращённо от concatenate.

Посмотрим как всё выглядит.

Выполняем ls -al

Как я писала выше, -a отображает все файлы, в том числе скрытые, -l это подробный список. И вот наш скрытый файл .zsh_history:

Вот почему нам понадобилась опция -a.

Посмотрим содержимое этого файла с помощью команды cat:
cat .zsh_history

И как видим, вот все мои последние команды которые я вводила. Терминал иногда криво отображает криллицу.

Я могу пролистать вверх и посмотреть остальные команды которые я использовала, скрины тут вставлять не буду, а то много места займёт.

Иногда файл который вам нужно посмотреть может быть слишком большим и команда cat не будет так эффективна, пролистывая терминал вверх и вниз можно запутаться в коде содержимого и это не очень удобно.

Более эффективно использовать команду less:
less .zsh_history

Эта команда отображает верхушку, если я захочу посмотреть содержимое, то я могу перемещаться стрелочками вверх или вниз, или опустится на страницу вниз нажав пробел, кнопка page down переместит в самый низ, page up в самый вверх.

Когда я закончила работу, то нажимаю кнопку q чтобы выйти (раскладка должна быть на английском).

Это были отличия команд cat и less.

Но есть ещё пара команд которые можно использовать, чтобы быстро посмотреть текстовый файл. Допустим вам нужно убедится, что это нужный файл перед тем как начать с ним работать, но вы не хотите открывать весь файл. Что же делать?

Можно воспользоваться командой head, она отображает первые 10 строк файла:
head .zsh_history

И командой tail, она отображает последние 10 строк:
tail .zsh_history

Теперь поговорим об управлении пакетами, научимся устанавливать и удалять программы в Kali Linux.

Во многих программах нужно устанавливать сначала само ПО, а затем отдельно зависимости, чтобы оно работало.

К счастью в Linux присутствует система управления пакетами, которая сама позаботится об установке зависимостей.

В различных дистрибутивах Linux система управления пакетами называется по разному. Например в Red Hat, такая система называется yum, а в Debian, на котором основана Kali Linux она называется apt (advanced packaging tool).

Например если я хочу найти какой-то пакет, то использую команду apt-cache search, если я хочу увидеть информацию о пакете, то я использую apt-cache show, для установки используется apt install, а для удаления apt remove.

Чтобы удалить пакет со всеми файлами конфигураций используется команда apt purge.

При установке пакета, например ssh или ftp, мы можем изменить его конфигурацию. Например при умолчании ssh использует 22 порт, но я хочу его изменить и выбрать порт 23, и я могу это сделать изменив файл конфигурации ssh.

Если я выполню apt remove, то пакет ssh будет удалён, но файлы конфигурации останутся, это удобно если я захочу снова установить этот пакет.

У меня уже будут файлы конфигурации и мне не придётся настраивать всё заново, но если мне совсем не нужен этот паке и я также хочу удалить файлы конфигурации, то нужно использовать команду apt purge.

Давайте покажу на примере как всё это работает.

Допустим мне нужно подключится к ftp серверу и я хочу найти такую программу с графическим интерфейсом, ввожу команду apt-cache search graphical ftp чтобы найти какие программы могут это делать.

К примеру я оставила своё решения на первой программе из списка - filezilla, тут сказано, что это полноценный графический клиент FTP/FTPS/SFTP, меня это устраивает, но я хочу подробнее узнать об этом пакете.

Для этого выполняем apt-cache show, а затем название пакета filezilla:

Теперь мы можем прочитать информацию об этом пакете: имя пакета, версию, зависимости о которых мы говорили:

Если бы я хотела установить FileZilla, то без системы управления пакетами мне бы пришлось устанавливать все эти зависимости вручную. К счастью, мне не нужно этого делать.

Давайте почитаем описание:

Похоже этот инструмент подходит мне идеально. Он поддерживает ftp и у него есть графический интерфейс. Это то, что мне нужно. Давайте его установим:
apt install filezilla

sudo, так как мы не root пользователь

Нас спрашивает хотим ли мы продолжить:

Отвечаем английской "y" (yes) или "д" (да)

Если же вы не хотите, чтобы вас это спрашивало при установке программы, то добавляйте опцию -y при установке заранее:
apt install filezilla -y

После установки я могу открыть эту программу из терминала:
filezilla

Программа открылась и мы может с ней работать.

Теперь у нас в Kali Linux есть новое ПО (программное обеспечение) или по другому новый пакет.

Это графический ftp клиент.

В поле "Хост" я могу указать имя сервера к которому я хочу подключиться, указать имя пользователя и пароль, порт и я могу использовать этот инструмент для подключения к любому ftp серверу.

Закрываем это окно. Допустим мне это больше не нужно или не понравилось и я решила удалить пакет filezilla:
apt remove filezilla

И пакет удалится.

Вы можете подумать, что всё было так легко? Это всё что нужно чтобы устанавливать и удалять программы в Kali Linux? Их даже не надо искать самостоятельно в интернете? Они сами находятся?

Да, всё так просто.

Вы также можете спросить, но откуда берутся эти пакеты? Откуда Kali Linux знает где их искать?

Она ищет программы в репозиториях. Репозитории это место где хранятся пакеты и откуда их можно скачать. У Kali Linux есть удалённое хранилище, и когда вы используете команду apt, то Kali Linux обращается к этому хранилищу, чтобы найти пакет. Если она его находит, то скачивает и устанавливает.

Однако иногда при попытке установить пакет Kali Linux не может найти его в репозиториях по умолчанию. Что делать в этом случае?

Для начала давайте посмотрим как выглядят репозитории. Они находятся в /etc/apt/sources.list, это текстовый файл:

Как видите тут 2 url адреса. 2 места где Kali Linux будет искать пакеты.

На эти 2 адреса, при желании, можно зайти с помощью обычного браузера.

Допустим мне нужно обновить списки репозиториев, для этого я выполняю apt update.

Если же я полностью хочу обновить списки репозиториев, для этого я выполняю apt update.

Если же я полностью хочу обновить систему, то выполняю apt dist-upgrade.

А что делать если например данной программы нет в репозиториях? Как же тогда установить её?

Для этого просто качаем как обычно программу с официального сайта. Рассмотрим это на примере браузера google.

https://www.google.com/intl/ru_ru/chrome/

Заходим на сайт и жмём скачать браузер.

Качаем всё как обычно. У нас появится вот такой вот архив в каталоге Загрузки:

Для его установки открываем терминал (CTRL + ALT + T) и переходим в загрузки:
cd Загрузки

Прописываем:
dpkg -i google-stable_current_amd64.deb

dpkg - это пакетный менеджер для Debian систем.

Браузер успешно установлен. Таким же способом устанавливаются и остальные пакеты deb (которых нет в репозиториях) после скачивания.