[Обучение] Основы командной строки: просмотр дерева директорий и управление файлами

[Обучение] Основы командной строки: просмотр дерева директорий и управление файлами

@Torchik_Ru

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

Как только сеанс запущен, команда pwd (которая расшифровывается как print working directory (отобразить рабочий каталог)) выведет на экран ваше текущее местоположение в файловой системе. Ваше текущее местоположение можно изменить с помощью команды cd название директории (где cd означает (сменить директорию)). В том случае, если вы не указали директорию, куда хотите перейти, вы автоматически вернетесь в вашу домашнюю директорию. Если вы введете cd -, то вы вернетесь в предыдущую рабочую директорию (в ту, в которой вы находились перед вводом последней команды cd). Родительский каталог всегда называется .. (две точки), в то время как текущий каталог обозначается . (одной точкой). Команда ls позволяет вам перечислить содержимое директории. Если вы не указываете дополнительных параметров команда ls, отобразит содержимое текущей директории.

Вы можете создать новую директорию с помощью команды mkdir название директории, а также удалить существующую (пустую) директорию с помощью команды rmdir название директории. Команда mv позволит вам перемещать и переименовывать файлы и директории; удалить файл можно с помощью rm название файла, а копирование файла выполняется с помощью cp исходный-файл целевой-файл.

Оболочка выполняет каждую команду, запуская первую программу с данным именем, которую она находит в каталоге, указанном в переменной среде PATH. Чаще всего эти программы находятся в /bin, /sbin, /usr/bin или /usr/sbin. Например, команда ls находится в /bin/ls; Иногда команда напрямую обрабатывается оболочкой, и в этом случае она называется встроенной командой оболочки (среди них - cd и pwd); команда type позволяет запросить тип каждой команды.

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

Переменные среды
Переменные среды позволяют хранить глобальные настройки для оболочки или других программ. Они являются контекстуальными, но наследуемыми. Например, каждый процесс имеет свой собственный набор переменных среды (они являются контекстуальными). Оболочки, такие как оболочки входа, могут объявлять переменные, которые будут переданы другим исполняемым программам (они наследуются). Эти переменные могут быть определены как для системы в /etc/profile так и для пользователя в ~/ .profile, но переменные, которые не являются характерными для интерпретаторов командной строки,лучше вставлять в /etc/environment, поскольку эти переменные будут введены во все пользовательские сессии благодаря подключаемому модулю аутентификации (Pluggable Authentication Module (PAM)) - даже если никакая оболочка не выполняется.

Файловаясистема

Стандарт иерархии файловойсистемы

Как и другие дистрибутивы Linux, Kali Linux организован в соответствии со стандартом Filesystem Hierarchy Standard(FHS), что позволяет пользователям других дистрибутивов Linux с легкостью ориентироваться в Kali. FHS определяет назначение каждой директории. Директории верхнего уровня описываются следующим образом.

Домашняя директори япользователя

Содержимое пользовательской директории не является стандартизированным, но, тем не менее, существует несколько заслуживающих внимания условностей. Одна из них заключается в том, что пользовательский домашний каталог часто обозначается тильдой (“~”). Это очень полезно знать, потому что интерпретаторы команд автоматически заменяют тильду верной директорией (которая находится в переменной среде HOME и чье обычное значение является /home/user/).

Традиционно файлы конфигурации приложения часто хранятся непосредственно в вашем домашнем каталоге, но их имена файлов обычно начинаются с точки (например, клиент электронной почты mutt хранит конфигурацию в ~/.muttrc). Обратите внимание,что имена файлов, начинающиеся с точки, по умолчанию скрыты; команда ls перечислит их лишь, в том случае если указана опция –a, а графические файловые менеджеры должны быть явно настроены для отображения скрытых файлов.

Некоторые программы также используют несколько файлов конфигурации, организованных в одном каталоге (например, ~/.ssh/). Некоторые приложения (например, веб-браузер Firefox) также используют свой каталог для хранения кеша загруженных данных. Это означает, что эти каталоги могут в конечном итоге потреблять много дискового пространства.

Эти файлы конфигурации, которые хранятся прямо в вашей домашней директории, часто коллективно называющиеся dotfiles, долгое время расширяются до такой степени, что эти директории могут быть загромождены ими. К счастью, совместная работа под эгидой FreeDesktop.org привела к созданию спецификации базового каталога XDG (XDG Base Directory Specification) конвенции, целью которой является очистка этих файлов и каталогов. В этой спецификации указано, что файлы конфигурации должны храниться в~/.config, файлы кэша в - /.cache, а файлы данных приложения в -/.local (или вих суб- директориях). Эта конвенция постепенно набирает обороты.

Графический рабочий стол чаще всего использует ярлыки для отображения содержимого каталога /Desktop/ (или любого другого слова, которое является точным переводом данного, в системах, которые не используют английский язык ). Наконец, система электронной почты иногда хранит входящие письма в каталоге - /Mail/.

Полезные команды

Отображение и изменение текстовых файлов

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

Команды редактирования запускают текстовый редактор (такой как Vi или Nano), который позволяет создавать, редактировать и читать текстовые файлы. Самые простые файлы могут быть иногда созданы прямо из интерпретатора команд благодаря перенаправлениям: команда command > file создаст файл с именем file,который будет содержать вывод данной команды. Команда command >> file cделает практически то же самое кроме того, что она присоединяет вывод команды вместо того, чтобы перезаписывать его.

Поиск файлов и данных внутрифайлов

Команда find критерий директории ищет файлы в иерархии поддиректорий в соответствии с несколькими критериями. Самый часто используемый критерий это -name имя файла, который позволяет искать файл по его имени. Вы также можете использовать общие подстановочные знаки, такие как «*» в поиске имени файла.

Команда grep выражение файлов выполняет поиск содержимого файлов и извлекает строки, соответствующие регулярному выражению. Добавление параметра -r позволяет рекурсивный поиск по всем файлам, находящимся в каталоге. Это позволяет вам искать файл, когда вы знаете только часть его содержимого.

Управлениепроцессами

Команда ps aux перечисляет процессы, которые в данный момент запущены в системе и помогает идентифицировать их, показывая их PID. Как только вы узнаете PID процесса, команда kill-signalpid позволяет вам отправить сигнал (если вы являетесь владельцем процесса). Существует несколько сигналов; самыми часто используемыми являются TERM (запрос на прекращение процесса) и KILL (принудительное завершение).

Интерпретатор команд может также запускать программы в фоновом режиме, если за командой следует «&». Используя амперсанд, вы немедленно возобновляете управление оболочкой, даже если команда все еще работает (находится в скрытом режиме в качестве фонового процесса). Команда jobs перечисляет процессы, запущенные в фоновом режиме; если запустить fg % job-number (fg означает приоритетный (foreground)), то задача будет восприниматься как приоритетная. Когда команда запускается как приоритетная (она могла быть запущена как в нормальном режиме, так и возвращена к приоритетным с помощью команды fg), комбинация клавиш Control+Z приостанавливает процесс и возвращает контроль над командной строкой. Процесс затем может быть перезапущен в фоновом режиме с помощью команда bg % job-number (bg означает фоновый(background)).

Управлениеправами

Linux является многопользовательской системой, так что в ней необходимо предоставить систему разрешений для управления набором разрешенных операций над файлами и каталогами, которые включают в себя все системные ресурсы и устройства (в системе Unix любое устройство представлено файлом или каталогом). Данный принцип является общим для всех Unix подобных систем.

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

  • Его владелец (обозначается буквой u, как в слове user);
  • Группа, владеющая им (обозначается буквой g, как в слове group), представляет всех членов группы;
  • Другие (обозначается буквой o, как в слове other)
  • Три типа прав могут быть объединены:
  • Для чтения (обозначается буквой r, как в слове read);
  • Длязаписывания(или редактирования, обозначается буквой w ,как в слове write);
  • Для выполнения (обозначается буквой x, как в слове eXecute).

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

Исполняемые файлы setuid и setgid
Два конкретных права относятся к исполняемым файлам: setuid и setgid (обозначаются буквой «s»). Обратите внимание, что мы часто говорим о битах, так как каждое из этих логических значений может быть представлено нулем или единицей. Эти два права позволяют любому пользователю выполнять программу с правами владельца или группы, соответственно. Этот механизм предоставляет доступ к функциям, требующим более высоких разрешений, чем те, которые вы обычно имели. Поскольку корневая программа setuid систематически запускается под идентификатором суперпользователя, очень важно обеспечить ее надежность и безопасность.Любому пользователю, который сможет нарушить работу корневой программы setuid для вызова команды по своему выбору, может затем выступать вроле пользователя root и иметь все необходимые права в системе. Пентестеры регулярно ищут файлы такого типа, когда они получают доступ к системе и используют его для того, чтобы расширить свои права доступа.

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

Report Page