Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1
Разбор ряда функций командной строки Linux.
28 открытий209 показов
Обучение кибербезопасности и этичному хакерству: изучаем командную строку и базовые команды. Часть 1
Я, Иван Глинкин, руководитель группы аппаратных исследований в Бастионе, автор канала HydrAttack, продолжаю обучающий цикл для начинающих «белых» хакеров. Мы уже выбрали дистрибутив Линукса для хакинга и успешно установили его — пора начать с ним работать. Сегодня мы научимся пользоваться командной строкой, ведь именно так раскрывается вся сила Линя (Linux). Командная строка в Linux позволяет управлять всей операционной системой: выполнять скрипты, запускать команды, управлять папками и файлами, настраивать систему и пр. Если вы не знаете базовые команды — вы не знаете Linux.
man
Вы наверняка слышали выражение из компьютерной и геймерской культуры «курить маны». Оно используется в шутливом контексте среди сисадминов и программистов в тех случаях, когда кто-то пытается разобраться с трудными техническими аспектами с помощью мануалов. Это своего рода «хакерский» сленг, который обозначает процесс самообучения через официальные документы и инструкции. В Unix-подобных ОС такая документация называется man-страницами.
Программа man (от англ. "manual ", руководство) — это утилита, которая предоставляет доступ к справочной документации по различным командам, программам, системным вызовам и конфигурациям системы. Она предназначена для того, чтобы пользователи могли быстро получить информацию о функциональности и параметрах программ прямо из командной строки.
При вызове программы man пользователь указывает имя команды, по которой он хочет получить справочную информацию, например, man ls:
Если вы не уверены в точном названии команды, можно использовать ключ -k или утилиту apropos, чтобы найти все команды, связанные с определенным ключевым словом: man -k network:
Программа man — мощный инструмент для быстрого поиска справочной информации, он помогает пользователям и администраторам эффективно задействовать системы на базе Linux или других Unix-подобных ОС.
cat
Программа cat (от "concatenate", конкатенация, т.е. сцепление) — это одна из наиболее часто используемых утилит в Linux. Ее основная задача — считывать содержимое одного или нескольких файлов и выводить его в терминал. Имеет также несколько дополнительных функций, которые делают ее полезной в разных сценариях.
cat может соединять несколько файлов в один, что отражает ее название "concatenate":
cat может отображать содержимое файла с нумерацией строк при помощи флага:
Дополнительные опции:
● -n — выводит нумерацию строк;
● -s — подавляет вывод пустых строк;
● -b — нумерует только непустые строки;
● -T — отображает табуляции в виде символов ^I;
● -v — отображает непечатаемые символы.
ls
Команда ls (от "listing", список) — одна из самых часто используемых команд в Linux. Она предназначена для вывода списка содержимого директории, то есть файлов и подкаталогов. Команда ls очень гибкая, она поддерживает множество опций для изменения формата вывода и сортировки данных.
Если не указывать каталог, то по умолчанию ls покажет содержимое текущего рабочего каталога:
Опция -l (long format) выводит информацию о каждом файле или каталоге в более подробном виде, включая права доступа, владельца, группу, размер и время последней модификации:
Файлы и директории, имена которых начинаются с точки (.), считаются скрытыми. Опция -a покажет также и скрытые файлы:
При использовании флага -h с -l размер файлов будет отображаться в более привычном формате (кБ, МБ и т.д.):
Флаг -R позволяет рекурсивно просматривать содержимое подкаталогов:
pwd
Команда pwd (от "print working directory", вывести рабочий каталог) — это утилита, которая выводит полный путь к текущему рабочему каталогу. Она особенно полезна для определения местоположения в файловой системе, когда выполняется работа в командной строке.
Когда вы используете команду pwd, она возвращает полный абсолютный путь к директории, в которой вы находитесь в данный момент.
Команда всегда выводит полный путь, начиная с корневого каталога. Это помогает точно определить текущее местоположение в файловой системе.
cd
Команда cd (от "change directory", смена каталога) — одна из базовых команд, которая используется для перемещения между директориями в файловой системе.
Чтобы перейти в определенный каталог, необходимо указать его путь:
Домашний каталог пользователя — это каталог, в котором пользователь находится при первом входе в систему. Чтобы вернуться в него, достаточно просто ввести команду cd без аргументов или cd ~
Чтобы вернуться на один уровень выше в иерархии каталогов, применяется команда cd ..
mkdir
Команда mkdir (от "make directory", создание каталога) — это утилита для создания новых директорий в файловой системе.
Основная задача команды — создать новый каталог по указанному пути. Например:
Можно создать сразу несколько каталогов, передав их имена через пробел:
Если нужно создать вложенную структуру директорий, а родительские каталоги еще не существуют, флаг -p создаст их автоматически:
rm
Команда rm (от "remove", удалить) — это утилита, которая используется для удаления файлов и директорий. Команда представляет собой мощный инструмент, при неосторожном использовании которого можно случайно уничтожить важные файлы без возможности восстановления.
Для удаления файла просто укажите его имя:
Вы можете удалить несколько файлов сразу, передав их имена через пробел. Для удаления пустого каталога используют флаг -d или отдельную утилиту rmdir:
Для удаления директории с ее содержимым (файлы и подкаталоги) необходимо использовать флаг -r (рекурсивное удаление).
Флаг -f (force) позволяет удалять файлы и директории без запроса на подтверждение, даже если у них установлены ограничения доступа:
rm -rf directory_name
Использовать эту команду надо крайне осторожно, так как она удаляет все файлы и каталоги без предупреждений.
Если вы хотите, чтобы система запрашивала подтверждение перед удалением каждого файла, используйте флаг -i:
which
Команда which (от англ. который, чей) используется для поиска местоположения исполняемых файлов команд. Она выводит путь к файлу, который будет выполнен. Это полезно для выяснения того, где находятся программы или скрипты и какой из нескольких возможных вариантов будет запущен.
Команда which ищет исполняемый файл команды в каталогах, перечисленных в переменной окружения PATH (о ней — позже). Например:
Если одна и та же команда существует в нескольких местах, можно использовать опцию -a, чтобы отобразить все ее возможные местоположения:
Команда which показывает только те команды, которые находятся в каталогах, указанных в переменной окружения PATH. Если команда существует в другом каталоге, который не указан в PATH, which ее не найдет.
whoami, id
Команда whoami (от англ. "who am i" — кто я) выводит имя пользователя, под которым в данный момент выполняется сессия. Это полезно, чтобы узнать, под каким пользователем запущена текущая сессия, особенно, если были выполнены команды для смены пользователя.
Команда id используется для отображения информации о пользователе, включая идентификатор пользователя (UID), идентификатор группы (GID), а также список всех групп, к которым принадлежит пользователь.
При выполнении команды id без опций выводится информация о текущем пользователе.
Можно передать имя пользователя как аргумент, чтобы получить информацию о другом пользователе:
locate
Команда locate (локация) используется для быстрого поиска файлов и каталогов в файловой системе. Она работает на основе предварительно созданной базы данных, которая содержит информацию о расположении файлов на диске.
Команда имеет простой синтаксис:
Поиск не зависит от регистра, т.е. команда locate myfile найдет файлы как с именем myfile, так и с именами MyFile, MYFILE и т.д.
Можно использовать опции для фильтрации результатов. Например, -i для игнорирования регистра или -r для регулярных выражений.
Для обновления базы данных используется команда updatedb, которая обычно выполняется по расписанию с помощью cron, однако вы можете запустить ее вручную, если хотите получить свежие данные.
find
Команда find (найти) используется для поиска файлов и каталогов в файловой системе с учетом различных критериев. Она более мощная и гибкая, чем locate, но может работать медленнее, так как выполняет поиск в реальном времени.
find позволяет использовать различные критерии для поиска, такие как имя файла, тип, размер, дата модификации и права доступа.
Также можно искать файлы, каталоги, символьные ссылки и т.д. с помощью опции -type:
Примеры использования:
● поиск файла по имени: find /path/to/search -name "filename";
● поиск всех текстовых файлов: find . -type f -name "*.txt";
● поиск файлов, измененных за последние семь дней: find /path/to/search -mtime -7.
grep
Команда grep (от "Global regular expression print" — вывод глобальных регулярных выражений) в Linux используется для поиска текстовых строк, соответствующих заданному шаблону, в файлах или входных данных. Это один из самых мощных инструментов для обработки текста и анализа данных.
С помощью опции -i можно игнорировать регистр при поиске:
Опция -n выводит номера строк, в которых найден шаблон:
Опция -r позволяет искать в подкаталогах.
grep поддерживает регулярные выражения, что позволяет создавать сложные шаблоны. Например, grep "^abc" ищет строки, начинающиеся с "abc".
sudo
Команда sudo (от англ. "substitute user and do" — подменить пользователя и выполнить) в Linux используется для выполнения команд с привилегиями суперпользователя (root) или других пользователей, заданных в конфигурационном файле /etc/sudoers. Это позволяет пользователям выполнять административные задачи, не входя в систему как root.
При первом использовании sudo в сессии пользователю будет предложено ввести свой пароль для подтверждения прав.
Конфигурация доступа для пользователей и групп определяется в файле /etc/sudoers. Можно задать, какие команды может выполнять конкретный пользователь или группа. sudo записывает все выполненные команды и их результаты в системные журналы, что помогает отслеживать действия пользователей с повышенными правами.
Опции:
● -u — позволяет указать, от имени какого пользователя выполнять команду;
● -i — запускает командную оболочку с правами root, аналогично входу в качестве root;
● -s — запускает командную оболочку с сохранением текущих переменных окружения.
su
Команда su (от англ. "substitute user" — подменить пользователя) предназначена для смены пользователя в командной строке. Обычно она используется для входа в систему в качестве суперпользователя (root) или для перехода на другого пользователя без выхода из текущей сессии. При использовании su для переключения на другого пользователя (особенно на root) потребуется ввести пароль этого пользователя.
Можно использовать su для выполнения одной команды от имени другого пользователя, добавив параметр -c.
sed
Команда sed (от "stream editor", редактор потоков) в Linux используется для обработки и трансформации текстовых данных в потоковом режиме. Она особенно полезна для выполнения автоматических замен, редактирования и фильтрации текстовых файлов.
Можно использовать несколько команд, разделяя их точкой с запятой:
Можно выполнять действия только на определенных строках, используя адресацию. Например, чтобы заменить текст только на строке 2:
Примеры использования
● замена текста в файле: 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;
В данном случае наш разделитель «пробел», и мы извлекаем данные 2 между первым и вторым пробелами.
● -c — извлечение символов по позициям. Например, для извлечения первых пяти символов: -c 1-5.
awk
awk (первые буквы фамилий разработчиков языка: Aho, Weinberger, Kerninghan) — это утилита в Linux, используемая для обработки текстовых данных и автоматизации задач, связанных с анализом и формированием текстов. awk часто применяется для работы с табличными данными, где информация представлена в виде строк и столбцов.
awk поддерживает регулярные выражения, что позволяет отфильтровать строки по шаблону. Имеет несколько встроенных переменных, таких как NR (номер текущей строки) и NF (количество полей в текущей строке).
С помощью функции printf можно форматировать вывод так же, как в языке C.
Вывод первого и третьего полей каждой строки: awk '{print $1, $3}' filename.txt
awk '{printf "Field1: %s, Field2: %s\n", $1, $2}' filename.txt
awk — мощный инструмент для текстовой обработки в Linux, позволяющий выполнять сложные операции с данными, анализировать текстовые файлы и генерировать отчеты.
comm
Команда comm (от англ. "comparison" — сравнение) в Linux используется для сравнения двух отсортированных файлов построчно. Она показывает строки, которые уникальны для каждого из файлов, а также строки, которые присутствуют в обоих файлах. Это полезно для анализа различий и сходств между двумя текстовыми файлами.
comm принимает два отсортированных файла и выводит три колонки:
- строки, уникальные для первого файла;
- строки, уникальные для второго файла;
- строки, общие для обоих файлов.
Опции:
● -1 — не выводить первую колонку (уникальные строки первого файла);
● -2 — не выводить вторую колонку (уникальные строки второго файла);
● -3 — не выводить третью колонку (общие строки);
● -i — игнорировать регистр при сравнении строк.
Вывод только уникальных строк первого и второго файлов:
diff
Команда diff (от англ. "difference" — разница) используется для сравнения файлов и отображения различий между ними. Она может сравнивать как текстовые файлы, так и каталоги. Предоставляет информацию о том, какие строки были добавлены, удалены или изменены.
Для сравнения с контекстом используется ключ -c:
Мы изучили только половину команд, широко применяемых в Linux. Остальные мы рассмотрим следующей части раздела про командную строку, там же будет и домашнее задание по теме. Следите за следующими публикациями и задавайте вопросы в комментариях.
28 открытий209 показов


















































