Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1

Разбор ряда функций командной строки Linux.

28 открытий209 показов
Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1

Я, Иван Глинкин, руководитель группы аппаратных исследований в Бастионе, автор канала HydrAttack, продолжаю обучающий цикл для начинающих «белых» хакеров. Мы уже выбрали дистрибутив Линукса для хакинга и успешно установили его — пора начать с ним работать. Сегодня мы научимся пользоваться командной строкой, ведь именно так раскрывается вся сила Линя (Linux). Командная строка в Linux позволяет управлять всей операционной системой: выполнять скрипты, запускать команды, управлять папками и файлами, настраивать систему и пр. Если вы не знаете базовые команды — вы не знаете Linux.

man

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

Программа man (от англ. "manual ", руководство) — это утилита, которая предоставляет доступ к справочной документации по различным командам, программам, системным вызовам и конфигурациям системы. Она предназначена для того, чтобы пользователи могли быстро получить информацию о функциональности и параметрах программ прямо из командной строки.

При вызове программы man пользователь указывает имя команды, по которой он хочет получить справочную информацию, например, man ls:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 1

Если вы не уверены в точном названии команды, можно использовать ключ -k или утилиту apropos, чтобы найти все команды, связанные с определенным ключевым словом: man -k network:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 2

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

cat

Программа cat (от "concatenate", конкатенация, т.е. сцепление) — это одна из наиболее часто используемых утилит в Linux. Ее основная задача — считывать содержимое одного или нескольких файлов и выводить его в терминал. Имеет также несколько дополнительных функций, которые делают ее полезной в разных сценариях.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 3

cat может соединять несколько файлов в один, что отражает ее название "concatenate":

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 4

cat может отображать содержимое файла с нумерацией строк при помощи флага:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 5

Дополнительные опции:

-n — выводит нумерацию строк;

-s — подавляет вывод пустых строк;

-b — нумерует только непустые строки;

-T — отображает табуляции в виде символов ^I;

-v — отображает непечатаемые символы.

ls

Команда ls (от "listing", список) — одна из самых часто используемых команд в Linux. Она предназначена для вывода списка содержимого директории, то есть файлов и подкаталогов. Команда ls очень гибкая, она поддерживает множество опций для изменения формата вывода и сортировки данных.

Если не указывать каталог, то по умолчанию ls покажет содержимое текущего рабочего каталога:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 6

Опция -l (long format) выводит информацию о каждом файле или каталоге в более подробном виде, включая права доступа, владельца, группу, размер и время последней модификации:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 7

Файлы и директории, имена которых начинаются с точки (.), считаются скрытыми. Опция -a покажет также и скрытые файлы:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 8

При использовании флага -h с -l размер файлов будет отображаться в более привычном формате (кБ, МБ и т.д.):

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 9

Флаг -R позволяет рекурсивно просматривать содержимое подкаталогов:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 10

pwd

Команда pwd (от "print working directory", вывести рабочий каталог) — это утилита, которая выводит полный путь к текущему рабочему каталогу. Она особенно полезна для определения местоположения в файловой системе, когда выполняется работа в командной строке.

Когда вы используете команду pwd, она возвращает полный абсолютный путь к директории, в которой вы находитесь в данный момент.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 11

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

cd

Команда cd (от "change directory", смена каталога) — одна из базовых команд, которая используется для перемещения между директориями в файловой системе.

Чтобы перейти в определенный каталог, необходимо указать его путь:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 12

Домашний каталог пользователя — это каталог, в котором пользователь находится при первом входе в систему. Чтобы вернуться в него, достаточно просто ввести команду cd без аргументов или cd ~

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 13

Чтобы вернуться на один уровень выше в иерархии каталогов, применяется команда cd ..

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 14

mkdir

Команда mkdir (от "make directory", создание каталога) — это утилита для создания новых директорий в файловой системе.

Основная задача команды — создать новый каталог по указанному пути. Например:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 15

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

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 16

Если нужно создать вложенную структуру директорий, а родительские каталоги еще не существуют, флаг -p создаст их автоматически:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 17

rm

Команда rm (от "remove", удалить) — это утилита, которая используется для удаления файлов и директорий. Команда представляет собой мощный инструмент, при неосторожном использовании которого можно случайно уничтожить важные файлы без возможности восстановления.

Для удаления файла просто укажите его имя:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 18

Вы можете удалить несколько файлов сразу, передав их имена через пробел. Для удаления пустого каталога используют флаг -d или отдельную утилиту rmdir:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 19

Для удаления директории с ее содержимым (файлы и подкаталоги) необходимо использовать флаг -r (рекурсивное удаление).

Флаг -f (force) позволяет удалять файлы и директории без запроса на подтверждение, даже если у них установлены ограничения доступа:

rm -rf directory_name

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

Если вы хотите, чтобы система запрашивала подтверждение перед удалением каждого файла, используйте флаг -i:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 20

which

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

Команда which ищет исполняемый файл команды в каталогах, перечисленных в переменной окружения PATH (о ней — позже). Например:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 21

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

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 22

Команда which показывает только те команды, которые находятся в каталогах, указанных в переменной окружения PATH. Если команда существует в другом каталоге, который не указан в PATH, which ее не найдет.

whoami, id

Команда whoami (от англ. "who am i" — кто я) выводит имя пользователя, под которым в данный момент выполняется сессия. Это полезно, чтобы узнать, под каким пользователем запущена текущая сессия, особенно, если были выполнены команды для смены пользователя.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 23

Команда id используется для отображения информации о пользователе, включая идентификатор пользователя (UID), идентификатор группы (GID), а также список всех групп, к которым принадлежит пользователь.

При выполнении команды id без опций выводится информация о текущем пользователе.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 24

Можно передать имя пользователя как аргумент, чтобы получить информацию о другом пользователе:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 25

locate

Команда locate (локация) используется для быстрого поиска файлов и каталогов в файловой системе. Она работает на основе предварительно созданной базы данных, которая содержит информацию о расположении файлов на диске.

Команда имеет простой синтаксис:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 26

Поиск не зависит от регистра, т.е. команда locate myfile найдет файлы как с именем myfile, так и с именами MyFile, MYFILE и т.д.

Можно использовать опции для фильтрации результатов. Например, -i для игнорирования регистра или -r для регулярных выражений.

Для обновления базы данных используется команда updatedb, которая обычно выполняется по расписанию с помощью cron, однако вы можете запустить ее вручную, если хотите получить свежие данные.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 27

find

Команда find (найти) используется для поиска файлов и каталогов в файловой системе с учетом различных критериев. Она более мощная и гибкая, чем locate, но может работать медленнее, так как выполняет поиск в реальном времени.

find позволяет использовать различные критерии для поиска, такие как имя файла, тип, размер, дата модификации и права доступа.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 28

Также можно искать файлы, каталоги, символьные ссылки и т.д. с помощью опции -type:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 29

Примеры использования:

● поиск файла по имени: find /path/to/search -name "filename";

● поиск всех текстовых файлов: find . -type f -name "*.txt";

● поиск файлов, измененных за последние семь дней: find /path/to/search -mtime -7.

grep

Команда grep (от "Global regular expression print" — вывод глобальных регулярных выражений) в Linux используется для поиска текстовых строк, соответствующих заданному шаблону, в файлах или входных данных. Это один из самых мощных инструментов для обработки текста и анализа данных.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 30

С помощью опции -i можно игнорировать регистр при поиске:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 31

Опция -n выводит номера строк, в которых найден шаблон:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 32

Опция -r позволяет искать в подкаталогах.

grep поддерживает регулярные выражения, что позволяет создавать сложные шаблоны. Например, grep "^abc" ищет строки, начинающиеся с "abc".

sudo

Команда sudo (от англ. "substitute user and do" — подменить пользователя и выполнить) в Linux используется для выполнения команд с привилегиями суперпользователя (root) или других пользователей, заданных в конфигурационном файле /etc/sudoers. Это позволяет пользователям выполнять административные задачи, не входя в систему как root.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 33

При первом использовании sudo в сессии пользователю будет предложено ввести свой пароль для подтверждения прав.

Конфигурация доступа для пользователей и групп определяется в файле /etc/sudoers. Можно задать, какие команды может выполнять конкретный пользователь или группа. sudo записывает все выполненные команды и их результаты в системные журналы, что помогает отслеживать действия пользователей с повышенными правами.

Опции:

-u — позволяет указать, от имени какого пользователя выполнять команду;

-i — запускает командную оболочку с правами root, аналогично входу в качестве root;

-s — запускает командную оболочку с сохранением текущих переменных окружения.

su

Команда su (от англ. "substitute user" — подменить пользователя) предназначена для смены пользователя в командной строке. Обычно она используется для входа в систему в качестве суперпользователя (root) или для перехода на другого пользователя без выхода из текущей сессии. При использовании su для переключения на другого пользователя (особенно на root) потребуется ввести пароль этого пользователя.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 34

Можно использовать su для выполнения одной команды от имени другого пользователя, добавив параметр -c.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 35

sed

Команда sed (от "stream editor", редактор потоков) в Linux используется для обработки и трансформации текстовых данных в потоковом режиме. Она особенно полезна для выполнения автоматических замен, редактирования и фильтрации текстовых файлов.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 36

Можно использовать несколько команд, разделяя их точкой с запятой:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 37

Можно выполнять действия только на определенных строках, используя адресацию. Например, чтобы заменить текст только на строке 2:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 38

Примеры использования

● замена текста в файле: sed 's/apple/orange/g' fruits.txt;

● замена текста только в первых 10 строках: sed '1,10s/old/new/g' filename.txt;

● удаление пустых строк: sed '/^$/d' filename.txt.

cut

Команда cut (вырезать) используется для извлечения определенных частей текста из строк файла или стандартного ввода. Она полезна для работы с табличными данными, где информация структурирована в виде строк и столбцов.

Опции

-d — задает разделитель (по умолчанию — символ табуляции). Например, для запятой: -d,”;

-f — указывает, какие поля извлекать. Можно указать одно поле, несколько полей или диапазон, например: -f 2;

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 39

В данном случае наш разделитель «пробел», и мы извлекаем данные 2 между первым и вторым пробелами.

-c — извлечение символов по позициям. Например, для извлечения первых пяти символов: -c 1-5.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 40

awk

awk (первые буквы фамилий разработчиков языка: Aho, Weinberger, Kerninghan) — это утилита в Linux, используемая для обработки текстовых данных и автоматизации задач, связанных с анализом и формированием текстов. awk часто применяется для работы с табличными данными, где информация представлена в виде строк и столбцов.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 41

awk поддерживает регулярные выражения, что позволяет отфильтровать строки по шаблону. Имеет несколько встроенных переменных, таких как NR (номер текущей строки) и NF (количество полей в текущей строке).

С помощью функции printf можно форматировать вывод так же, как в языке C.

Вывод первого и третьего полей каждой строки: awk '{print $1, $3}' filename.txt

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 42

awk '{printf "Field1: %s, Field2: %s\n", $1, $2}' filename.txt

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 43

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

comm

Команда comm (от англ. "comparison" — сравнение) в Linux используется для сравнения двух отсортированных файлов построчно. Она показывает строки, которые уникальны для каждого из файлов, а также строки, которые присутствуют в обоих файлах. Это полезно для анализа различий и сходств между двумя текстовыми файлами.

comm принимает два отсортированных файла и выводит три колонки:

  1. строки, уникальные для первого файла;
  2. строки, уникальные для второго файла;
  3. строки, общие для обоих файлов.
Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 44

Опции:

-1 — не выводить первую колонку (уникальные строки первого файла);

-2 — не выводить вторую колонку (уникальные строки второго файла);

-3 — не выводить третью колонку (общие строки);

-i — игнорировать регистр при сравнении строк.

Вывод только уникальных строк первого и второго файлов:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 45

diff

Команда diff (от англ. "difference" — разница) используется для сравнения файлов и отображения различий между ними. Она может сравнивать как текстовые файлы, так и каталоги. Предоставляет информацию о том, какие строки были добавлены, удалены или изменены.

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 46

Для сравнения с контекстом используется ключ -c:

Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1 47

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

Следите за новыми постами
Следите за новыми постами по любимым темам
28 открытий209 показов