3.4 Полезные команды Linux
3.4.1 Отображение и изменение текстовых файлов
Команда cat название файла (предназначена для соединения файлов для стандартного устройства вывода) читает файл и отображает его содержимое в терминале. Если файл является слишком большим, чтобы быть выведенным на экран, вы можете использовать пейджер для того, чтобы отображать его по страницам.
Перейти к содержанию книги Kali Linux Revealed
Команды редактирования запускают текстовый редактор (такой как Vi или Nano), который позволяет создавать, редактировать и читать текстовые файлы. Самые простые файлы могут быть иногда созданы прямо из интерпретатора команд благодаря перенаправлениям: команда command >file создаст файл с именем file, который будет содержать вывод данной команды. Команда command >>file cделает практически то же самое кроме того, что она присоединяет вывод команды вместо того, чтобы перезаписывать его.
3.4.2 Поиск файлов и данных внутри файлов
Команда find критерий директории ищет файлы в иерархии под директорией в соответствии с несколькими критериями. Самый часто используемый критерий это -name имя файла, который позволяет искать файл по его имени. Вы также можете использовать общие подстановочные знаки, такие как «*» в поиске имени файла.
Команда grep выражение файлов выполняет поиск содержимого файлов и извлекает строки, соответствующие регулярному выражению. Добавление параметра -r позволяет рекурсивный поиск по всем файлам, находящимся в каталоге. Это позволяет вам искать файл, когда вы знаете только часть его содержимого.
3.4.3 Управление процессами
Команда ps aux перечисляет процессы, которые в данный момент запущены в системе и помогает идентифицировать их, показывая их PID. Как только вы узнаете PID процесса, команда kill -signal pid позволяет вам отправить сигнал (если вы являетесь владельцем процесса). Существует несколько сигналов; самыми часто используемыми являются TERM (запрос на прекращение процесса) и KILL (принудительное завершение).
Интерпретатор команд может также запускать программы в фоновом режиме, если за командой следует «&». Используя амперсанд, вы немедленно возобновляете управление оболочкой, даже если команда все еще работает (находится в срытом режиме в качестве фонового процесса). Команда jobs перечисляет процессы, запущенные в фоновом режиме; если запустить fg %job-number (fg означает приоритетный (foreground)), то задача будет восприниматься как приоритетная. Когда команда запускается как приоритетная (она могла быть запущена как в нормальном режиме, так и возвращена к приоритетным с помощью команды fg), комбинация клавиш Control+Z приостанавливает процесс и возвращает контроль над командной строкой. Процесс затем может быть перезапущен в фоновом режиме с помощью команда bg % job-number (bg означает фоновый (background)).
3.4.4 Управление правами
Linux является многопользовательской системой, так что в ней необходимо предоставить систему разрешений для управления набором разрешенных операций над файлами и каталогами, которые включают в себя все системные ресурсы и устройства (в системе Unix любое устройство представлено файлом или каталогом). Данный принцип является общим для всех Unix подобных систем.
Каждый файл или директория обладает особыми правами доступа для трех категорий пользователей:
- Его владелец (обозначается буквой u, как в слове user);
- Группа, владеющая им (обозначается буквой g, как в слове group), представляет всех членов группы;
- Другие (обозначается буквой o, как в слове other)
Три типа прав могут быть объединены:
- Для чтения (обозначается буквой r, как в слове read);
- Для записывания (или редактирования, обозначается буквой w, как в слове write);
- Для выполнения (обозначается буквой x, как в слове eXecute).
В случае с файлом действие этих прав очень понято: доступ для чтения позволяет читать содержимое файла (включая копирование), доступ для записи позволяет его изменить, а доступ для выполнения позволяет запустить его (что будет работать только в том случае, если файл является программой).
Исполняемые файлы setuid и setgid
Два конкретных права относятся к исполняемым файлам: setuid и setgid (обозначаются буквой «s»). Обратите внимание, что мы часто говорим о битах, так как каждое из этих логических значений может быть представлено нулем или единицей. Эти два права позволяют любому пользователю выполнять программу с правами владельца или группы, соответственно. Этот механизм предоставляет доступ к функциям, требующим более высоких разрешений, чем те, которые вы обычно имели.
Поскольку корневая программа setuid систематически запускается под идентификатором суперпользователя, очень важно обеспечить ее надежность и безопасность. Любому пользователю, который сможет нарушить работу корневой программы setuid для вызова команды по своему выбору, может затем выступать в роле пользователя root и иметь все необходимые права в системе. Пентестеры регулярно ищут файлы такого типа, когда они получают доступ к системе и используют его для того, чтобы расширить свои права доступа.
Директории обрабатываются иначе, чем файлы. Доступ к чтению дает право ознакомиться со списком её содержимого (файлов и каталогов); доступ для записи позволяет создавать или удалять файлы; и доступ для выполнения позволяет переходить через директорию для получения доступа к его содержимому (например, с помощью команды cd). Возможность переходить через директорию, не имея возможности читать её, дает пользователю право доступа к записям в директориях, которые известны по имени, но не для их поиска, не зная их точного имени.
Безопасность
Директория setgid и stickybit
setgid bit также применяется к директориям. Любой заново созданный объект в подобных директориях
автоматически назначает группу владельца родительского каталога, а не наследует основную группу создателя, как обычно. Из-за этого вам не нужно менять основную группу (с помощью команды newgrp) при работе в дереве файлов, совместно используемом несколькими пользователями одной и той же выделенной группы.
The sticky bit (обозначается буквой «t») является разрешением, которое довольно полезно в директориях. Оно особенно полезно для использования во временных директориях,
где у всех есть доступ на запись (например, /tmp/): оно ограничивает удаление файлов таким образом, что только их владелец или владелец родительского каталога может их удалить. В противном случае все пользователи могли бы удалять файлы других пользователей в /tm /.
Три команды управляют разрешениями, связанными с файлом:
- chown пользовательский файл меняет владельца файла
СОВЕТ Изменение пользователя и группы
Довольно часто вы хотите изменить группу файла одновременно с изменением его владельца. Команда chown обладает особым синтаксисом для подобных задач: chown user: group file
- chgrp файл группы изменяет владельца группы
- chmod файл прав изменяет права доступа к файлу
Существует два способа обозначения прав. Среди них, символическое обозначение, пожалуй, является самым простым для понимания и запоминания. Оно включает в себя буквы уже упомянутые выше. Вы можете определять права для каждой из категорий пользователей (u/g/o), с помощью использования (знака =) прибавления (+) или вычитания (-). Таким образом, формула u=rwx,g+rw,o-r дает владельцу права на чтение, запись и выполнение, предоставляет владельцам групп права на чтение и запись, а также лишает прав на чтение других пользователей.
Права, в которых не были внесены изменения добавлением или вычитанием с помощью подобной команды такой команде, остаются неизмененными. Буква a для всех охватывает все три категории пользователей, так что a = rx предоставляет всем трем категориям одинаковые права (чтение и выполнение, но не запись).
Восьмеричное или числовое обозначение связывает каждое право с определенной величиной: 4 для чтения, 2 для записи и 1 для выполнения. Мы связываем каждую комбинацию прав с суммой трех цифр, следовательно, определенное значение присваивается каждой категории пользователей в обычном порядке (владелец, группа, другие).
Например, команда chmod 754 название файла установит следующие права: чтение, запись и выполнение для владельца (т.к. 7 = 4 + 2 + 1); чтение и выполнения для группы (т.к. 5 = 4 + 1); права только на чтение для других. Цифра 0 означает, что категория не обладает никакими правами; таким образом, chmod 754 название файла дает права на чтение и запись владельцу и никому больше. Самой распространенной комбинацией прав является 755 для исполняемых файлов и директорий и 644 для файлов данных.
Чтобы обозначить специальные права, вы можете приписать четвертую цифру этому номеру в соответствии с тем же принципом, где биты setuid, setgid и sticky равны 4, 2 и 1 соответственно. Команда chmod 4754 свяжет бит setuid с ранее описанными правами.
Обратите внимание, что использование восьмеричной записи позволяет вам сразу устанавливать все права на файл; вы не можете использовать его для добавления нового права, такого как доступ для чтения для владельца группы, поскольку вы должны учитывать существующие права и вычислять новое соответствующее числовое значение.
Восьмеричное обозначение также используется с командой umask, которая используется для ограничения прав на недавно созданные файлы. Когда приложение создает файл, оно назначает индикативные права доступа, зная, что система автоматически удаляет права, определенные с помощью umask. Введите umask в оболочке; вы увидите следующую маску 0022. Это просто восьмеричное обозначение прав на систематическое удаление (в этом случае права на запись для группы и других пользователей).
Если вы дадите ему новое восьмеричное значение, команда umask изменит маску. Используемый в файле начальной инициализации оболочки (например, ~/.bash_profile), он эффективно изменяет маску по умолчанию для ваших рабочих сессий.
СОВЕТ Рекурсивная операция
Иногда нам приходится менять права для всего дерева файлов. Все вышеприведенные команды имеют опцию -R для рекурсивной работы в суб-директориях.
Различие между каталогами и файлами иногда вызывает проблемы с повторными операциями. Вот почему буква «X» была введена в символическом обозначении прав. Она представляет собой право на выполнение, которое применяется только к каталогам (а не к файлам, не имеющим этого права). Таким образом, команда chmod -R a+X название директории будет добавлять только права на выполнение для всех категорий пользователей (a) для всех суб-директорий и файлов, в которых хотя бы одна категория пользователей (даже если они являются единоличными владельцами) уже обладает правами на выполнение.
3.4.5 Получение системной информации и журналов
Команда free отображает информацию о памяти; disk free (df) сообщает вам о свободном пространстве на каждом диске, который смонтирован в файловой системе. Опция данной команды -h (читаемая для человека) преобразует размеры в более разборчивую единицу (обычно mebibytes или gibibytes). Подобным образом команда free поддерживает -m и -g опции и отображает их данные как в mebibytes, так и в gibibytes соответственно.
Команда id отображает личность пользователя выполняющего сеанс, а также список групп, к которым он принадлежит. Т.к. доступ к некоторым файлам или устройствам может быть ограничен для членов группы, так что
проверка доступности членства в группах может быть полезна.
Команда uname -a возвращает одиночную строку, в которой записаны имя ядра (Linux), имя хоста, выпуск ядра, версия ядра, тип машины (строка архитектуры, такая как x86_64), и имя операционной системы (GN U / Linux). Вывод этой команды обычно должен включаться в отчеты об ошибках, так как он четко определяет используемое ядро и аппаратную платформу, на которой вы работаете.
Все эти команды предоставляют информацию о времени исполнения, но довольно часто вам нужно обратиться к журналам, чтобы понять, что происходило на вашем компьютере. В частности, ядро отправляет сообщения, которые оно хранит в кольцевом буфере всякий раз, когда происходит что-то интересное (например, вставляемое новое USB-устройство, неудачная работа на жестком диске или первоначальное обнаружение аппаратного обеспечения при загрузке). Вы можете получить журналы ядра с помощью команды dmesg.
Журнал Systemd также хранит несколько журналов (stdout/stderr выводы демона, syslog сообщения, журналы ядра) и упрощает их запрос с помощью journalctl. Без каких-либо аргументов он просто выстраивает все доступные журналы в хронологическом порядке. С параметром -r он изменит порядок, чтобы сначала отображались новые сообщения. С параметром -f он будет непрерывно печатать новые записи журнала, поскольку они добавляются в его базу данных. Параметр -u может ограничивать сообщения теми, которые испускаются определенным модулем systemd (например: journalctl -u ssh.service).
3.4.6 Обнаружение оборудования
Ядро экспортирует множество деталей об обнаруженном оборудовании через виртуальные файловые системы /proc/ and /sys/. Несколько инструментов суммируют эти детали. Среди них Ispci (в пакете pciutils) перечисляет PCI устройства, Isusb (в пакете usbutils) перечисляет USB устройства, и Ispcmcia (в пакете pcmciautils) перечисляет PCMCIA карты. Эти инструменты являются очень полезными для определения конкретной модели устройства. Эта идентификация также позволяет проводить более конкретные поиски в Интернете, что в свою очередь, приводит к нахождению более подходящих документов. Обратите внимание, что пакеты pciutils и usbutils являются уже установленными на базовой системе Kali, в то время как pcmciautils должен быть установлен с помощью apt install pcmciautils. Мы выделим больше времени на рассмотрение установки пакетов и их управлению в последующей главе.
Пример 3.1 Пример информации, предоставленной Ispci и Isusb
Эти программы имеют опцию -v, которая содержит гораздо более подробную (но обычно ненужную) информацию. Наконец, команда lsdev (в пакете procinfo) перечисляет ресурсы связи, используемые устройствами.
Программа lshw представляет собой комбинацию указанных выше программ и отображает подробное описание аппаратного обеспечения, обнаруженного в иерархическом порядке. Вы необходимо прикладывать полный вывод данной команды к любому отчету о проблемах с поддержкой аппаратного обеспечения.
3.5 Подведем итоги
В этом разделе мы провели беглый обзор масштабного ландшафта Linux. Мы обсудили пространство ядра и пользователя, рассмотрели многие распространенные команды оболочки Linux, обсудили процессы и способы их управления, рассмотрели концепции безопасности пользователей и групп, обсудили FHS и обсудили некоторые из наиболее распространенных директорий и файлов, найденных в Kali Linux.
Суммируем все упомянутое:
- Linux часто используется для обозначения всей операционной системы, но на самом деле Linux является ядром операционной системы, которое запускается загрузчиком, который, в свою очередь, сам запускается BIOS / UEFI.
- Пользовательское пространство относится ко всему, что происходит за пределами ядра. Среди программ, работающих в пользовательском пространстве, есть много основных утилит из проекта GNU, большинство из которых предназначено для запуска из командной строки (текстовый интерфейс, который позволяет вводить команды, выполнять их и просматривать результаты). Оболочка выполняет ваши команды в этом интерфейсе.
-
Список самых часто используемых команд включает в себя: pwd (отобразить рабочую директорию (print working directory)), cd (сменить директорию (change directory)), ls (перечислить содержимое директории (list file or directory contents)), mkdir (создать директорию (make directory)), rmdir (удалить директорию (remove directory)), mv, rm, and cp (переместить (move), удалить (remove), или скопировать (copy) файл или директорию соответственно), cat (связать или показать файл), less/more (показывать файлы по одной странице за раз), editor (запустить текстовый редактор), find (показать местоположение файла или директории), free (отобразить информацию о памяти), df (показать свободное пространство на диске), id (отобразить личность пользователя вместе со списком групп, к которым он принадлежит), dmesg (просмотреть журнал ядра), и journalctl (показать все доступные журналы).
- Вы можете проверить аппаратное обеспечение в системе Kali несколькими командами: lspci (список PCI устройств), lsusb (список USB накопителей) и lspcmcia перечисляет карты PCMCIA.
- Процесс является рабочим экземпляром программы, который требует определенный объем памяти, как для хранения самой программы, так и для её оперативных данных. Вы можете управлять процессами с помощью таких команд как: ps (показать процессы), kill (завершить процессы), bg (отправить процесс в фоновый режим), fg (вывести процесс из фонового режима на передний план), и jobs (показать все фоновые процессы).
- Системы, основанные на Unix, являются многопользовательскими. Они поддерживают множество пользователей и групп, а также позволяют получить контроль над действиями на основе прав доступа. Вы можете управлять правами файла и директории с помощью нескольких команд, включая: chmod (изменить права доступа), chown (изменить владельца), chgrp (сменить группу).
- Как и все другие профессиональные дистрибутивы Linux, Kali Linux организован таким образом, чтобы соответствовать стандарту иерархии файловой системы (FHS) (Filesystem Hierarchy Standard (FHS)), что в свою очередь позволяет пользователям, пришедшим из других дистрибутивов Linux, с лёгкостью начать работать с Kali.
- Традиционно, конфигурации приложений хранятся в вашей домашней директории в скрытых файлах или директориях, названия которых начинаются точки.
Теперь, когда вы ознакомились с основами Linux, давайте перейдем к установке и запуску Kali Linux.
Перейти к содержанию книги Kali Linux Revealed
Это интересно: