Руководство для работы на linux

Время на прочтение
14 мин

Количество просмотров 177K

Привет, Хабр!

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

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

Что такое Linux?

История и определение

В 1969 году в дочернем подразделении компании AT&T – Bell Laboratories – была выпущена операционная система Unix, которая стала основной для большого количества операционных систем того времени. UNIX была проприетарной системой, лицензия на нее стоила порядка 40 000 долларов. Таким образом, позволить себе ее покупку могли только крупные компании. Это послужило толчком для старта в 1983 году проекта GNU – GNU is Not Unix. Его основоположник, Ричард Столлман, объявил целью проекта создание свободно распространяемой операционной системы. Чуть позже Столлманом был написан знаменитый манифест GNU, который стал основой для лицензии GPL (GNU General Public License), актуальной и по сей день. К началу 1990-х годов в рамках проекта GNU было написано большинство компонентов ОС – оболочка bash, компиляторы, отладчик, текстовый редактор и др. Не хватало лишь ядра операционной системы.

В 1991 году Линус Торвальдс, будучи студентом финского университета, увлекся идеей написания ядра операционной системы для своего персонального компьютера с процессором Intel. Вдохновлением и прототипом для будущего Linux стала совместимая с Unix операционная система для персональных компьютеров Minix. Уже в августе 1991 года было написано ядро операционной системы, в нее были портированы оболочка bash и компилятор gсс из проекта GNU. По признанию самого Линуса, изначально это было не более, чем хобби, однако проект оказался весьма востребованным, к нему начали присоединяться разработчики со всего мира. Дополненная массой программ, разработанных в рамках проекта GNU, ОС Linux стала пригодна для практического использования. При этом ядро системы распространялось под лицензией GNU General Public License, что гарантировало свободное распространение кода ядра системы. 

Читать подробнее: История Linux. Вкратце о главном

Итак, сегодня Linux (или GNU/Linux) – семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU. Linux-системы распространяются в виде различных дистрибутивов, имеющих свой набор системных и прикладных компонентов (как свободных, так и проприетарных).

Серверные дистрибутивы

Дистрибутив Linux — это операционная система, созданная на основе ядра Linux, которая включает в себя набор библиотек и утилит (пакетов), разработанных в рамках проекта GNU, а также систему управления пакетами (менеджер пакетов). В настоящее время существует более 500 различных дистрибутивов, разрабатываемых как при коммерческой поддержке (Red Hat / Fedora, SLED / OpenSUSE, Ubuntu и др.), так и исключительно усилиями добровольцев (Debian, Slackware, Gentoo, ArchLinux и др.). 

Дистрибутивы делятся на несколько типов в зависимости от базового дистрибутива и системы управления пакетами. Вот несколько примеров наиболее популярных серверных дистрибутивов двух типов:

  • RPM-based (используют формат пакетов .rpm)
    RedHat Enterprise Linux, CentOS, Fedora

  • DEB-based (используют формат пакетов .deb)
    Debian, Ubuntu, Astra Linux

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

Работа с Linux

Загрузка

Алгоритм включения сервера и загрузки Linux в большинстве случаев выглядит следующим образом:

  • BIOS / UEFI → MBR / GPT
    Выполняется код, заложенный производителем аппаратного обеспечения. Этот код проводит тестирование системы POST (Power On Self Test) и передает управление загрузчику в MBR (Master Boot Record) / GPT (GUID Partition Table)

  • MBR / GPT → GRUB2 (существуют и другие загрузчики)
    Загрузчик из MBR / GPT очень простой – он способен только найти на диске и запустить следующий загрузчик. Как правило это GRUB2, но существуют и другие загрузчики, например LILO (в настоящее время практически не используется)

  • GRUB2 → Kernel
    GRUB2 расположен на разделе жесткого диска в каталоге /boot. GRUB2 загружает ядро Linux (vmlinuz)

  • Kernel → Init
    Ядро запускает процесс инициализации операционной системы. Как правило это SystemD, но существуют и другие системы инициализации, например SystemV (в настоящее время практически не используется). Процесс инициализации запускает все остальные процессы в системе

Читать подробнее: Алгоритм загрузки Linux (BIOS / UEFI)

Подключение

Командная оболочка

Подключиться к Linux для управления можно в интерфейсе командной строки (command-line interface, CLI) или в графическом интерфейсе (graphical user interface, GUI). При работе с серверной инфраструктурой в подавляющем числе случаев GUI отсутствует и взаимодействие с сервером осуществляется в CLI. При входе пользователя на сервер в CLI запускается командная оболочка (в GUI командную оболочку можно запустить через эмулятор, например Terminal). Командная оболочка (shell) – это программа, которая принимает команды с клавиатуры и передает их операционной системе для выполнения. Наиболее распространенной командной оболочкой в Linux является GNU bash (Bourne Again SHell). bash основывается на другой легковесной оболочке-предшественнике – sh (Bourne sh), созданной Стефеном Борном.

Команды можно выполнять с помощью командной строки, указав имя двоичного (бинарного, bin) исполняемого файла или сценария. По умолчанию в Linux много команд, которые позволяют перемещаться по файловой системе, устанавливать ПО, конфигурировать его и выполнять другие действия. Каждая запущенная команда является отдельным процессом. Важно отметить, что в Linux (в отличие от Windows) почти всегда учитывается регистр, включая имена файлов и каталогов, команды, аргументы и опции.

Читать подробнее: Основы работы с терминалом Linux

SSH

Подключаться к Linux и работать с командной оболочкой можно локально (например включив ПК дома или подойдя к серверу в центре обработки данных), однако гораздо чаще работать с системой требуется удаленно. Для этого необходимо настроить SSH и подключаться через него. SSH (Secure SHell) – это протокол, позволяющий производить удаленное управление операционной системой и туннелирование TCP-соединений (например, для копирования файлов). SSH основан на клиент-серверной архитектуре, которая организует защищенное (зашифрованное) соединение поверх небезопасных каналов связи. Серверная часть устанавливается на удаленном сервере, а клиентская на компьютере, с которого осуществляется подключение.

Существует много клиентов для удаленного подключения к серверу по SSH. Вот несколько примеров для различных операционных систем:

  • Windows
    PuTTY – выбор новичка, PowerShell (команда ssh), Xshell – выбор автора, MobaXterm, mRemoteNG

  • Linux
    Terminal (команда ssh) – выбор новичка и автора, Asbru Connection Manager

  • MacOS
    Terminal (команда ssh) – выбор новичка и автора, Core Shell

Читать подробнее: 

  • SSH

  • Как подключиться по SSH

  • Лучшие SSH клиенты для Windows, Linux и MacOS

Установка программ (утилит) пакетным менеджером

Зачем нужны пакетные менеджеры?

На заре развития Linux установить приложение (утилиту) можно было только путем скачивания исходного кода программы и компиляции. Это не практично и не слишком удобно для пользователей, поэтому были разработаны пакетные менеджеры. Установка приложений в них производится из пакетов – архивов с файлами скомпилированной программы. Большинство популярных дистрибутивов Linux содержат пакетные менеджеры, способные устанавливать любое программное обеспечение. Пакетные менеджеры имеют свой список репозиториев – серверов с базой пакетов. Во время установки алгоритм менеджера находит необходимый пакет в базе и производит автоматическое скачивание, установку и настройку.

Существует несколько форматов пакетов, однако наибольшее распространение получили .deb и .rpm. Рассмотрим операционные системы и менеджеры пакетов для данных форматов:

  • DEB (.deb)
    ОС – DEB-based, например Debian, Ubuntu, AstraLinux
    Система управления пакетами – DPKG (работает только с локальными пакетами)
    Пакетный менеджер – apt

  • RPM (.rpm)
    ОС – RPM-based, например RedHat Enterprise Linux, Fedora, CentOS
    Система управления пакетами – RPM (работает только с локальными пакетами) 
    Пакетный менеджер – yum (в последних дистрибутивах заменен на dnf)

Читать подробнее: Популярные пакетные менеджеры Linux

Практика

На практике пользователю необходимо уметь взаимодействовать с пакетными менеджерами – устанавливать и удалять пакеты.

Ниже приведены несколько примеров команд:

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# менеджер пакетов apt (.deb)
sudo apt install nano # установка пакета
sudo apt remove nano # удаление пакета
sudo apt autoclean # удаление кэша пакетов

# менеджер пакетов yum (.rpm) - для dnf команды полностью аналогичны
sudo yum install nano # установка пакета
sudo yum remove nano # удаление пакета
sudo yum clean all # удаление кэша пакетов

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Структура файловой системы и работа с файлами

Типы файлов

Все объекты в Linux являются файлами. Существуют следующие типы файлов:

  • Обычные файлы 
    Символьные и двоичные данные (текст, картинки, программы и др.)

  • Каталог (директория) d
    Список ссылок на файлы или другие каталоги

  • Символьные ссылки l
    Ссылки на другие файлы по имени

  • Блочные устройства b, символьные устройства c
    Интерфейсы для взаимодействия с аппаратным обеспечением (диски, терминалы, клавиатуры, принтеры и др.). Когда происходит обращение к файлу устройства, ядро операционной системы передает запрос драйверу этого устройства

  • Сокеты s и каналы p
    Интерфейсы для взаимодействия процессов

Читать подробнее: Типы файлов в Linux

Структура файловой системы

Структура файловой системы представляет собой дерево, корнем которой является каталог /.

Рассмотрим подробно структуру и назначение каталогов:

  • /bin (binaries) – исполняемые файлы самых необходимых утилит. Может быть символьной ссылкой на /usr/bin

  • /boot – файлы, необходимые для самого первого этапа загрузки – загрузки ядра (и обычно само ядро)

  • /dev (devices) – блочные и символьные файлы устройств (диски, терминалы, клавиатуры, принтеры и др.)

  • /etc (etcetera) – конфигурационные файлы системы и различных программ

  • /home – домашние каталоги пользователей для хранения «личных» файлов

  • /lib (libraries) – файлы библиотек (стандартных функций, необходимых многим программам), необходимых для работы утилит. Может быть символьной ссылкой на /usr/bin

  • /mnt (mount) – каталог для подключения файловых систем (съемных носителей и др.)

  • /opt (optional) – каталог для дополнительных программ (проприетарных драйверов, агентов мониторинга и др.)

  • /proc (process) – файлы в оперативной памяти, в которых содержится информация о выполняемых в системе процессах

  • /root – домашний каталог пользователя root

  • /sbin (system binaries) – файлы системных утилит, необходимые для загрузки, резервного копирования и восстановления системы. Может быть символьной ссылкой на /usr/sbin

  • /sys (system) – виртуальная файловая система sysfs, которая содержит информацию об аппаратном обеспечении (ЦПУ, ОЗУ, дисках, сетевых устройствах), драйверах, ядре системы и др.

  • /tmp – каталог для временных файлов, обычно зачищается при каждой загрузке системы

  • /usr – пользовательский каталог, который содержит каталоги исполняемых файлов и конфигурационных файлов

  • /var (variable) – файлы, создаваемые или используемые различными программами (логи, очереди, идентификаторы процессов, БД и др.)

Читать подробнее: Структура файловой системы Linux

Права доступа

В Linux права доступа к файлам (в том числе к каталогам) задаются для трех видов пользователей – владельца, группы владельца и остальных. Также есть три типа доступа к файлу – чтение r (Read), запись w (Write) и исполнение x (eXecution), которые задаются для каждого из видов пользователей. Прочерк  означает отсутствие доступа.

Таким образом, права доступа к файлу выглядят следующим образом:

  • права для владельца (u, user) – read, write, execution

  • права для группы владельца (g, group) – read, write, execution

  • права для остальных пользователей (o, other) – read, write, execution

Пример: rwx r— — означает, что у владельца есть права на все, у группы владельца доступ только на чтение, а у остальных доступа нет. В двоичной системе счисления эти права выглядят как три группы цифр – 111 100 000, что равносильно трем цифрам 7 4 0 в восьмеричной и десятичной системах счисления.

Читать подробнее: 

  • Владельцы файлов и папок в Linux

  • Команда chmod в Linux

Практика

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

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

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# навигация
ls -la <dir> # просмотр содержимого каталога (в том числе прав доступа)
cd <dir> # переход в каталог

# каталоги
mkdir <dir> # создание каталога
rmdir <dir> # удаление пустого каталога
rm -rf <dir> # удаление каталога с файлами

# файлы
cat <file> # вывод файла в консоль
less <file> # постраничный вывод файла
tail <file> # вывод последних строк («хвоста») файла
vi <file> # редактиврование файла текстовым редактором vi
nano <file> # редактирование файла текстовым редактором nano
cp <file> <dir> # копирование файла в каталог
mv <file> <dir> # перемещение файла в каталог (для переименования переместите файл в тот же каталог)
rm <file> # удаление файла
rm -rf <dir>/* # удаление всех файлов в каталоге

# права доступа
chown <user> <dir> # установить пользователя владельцем каталога
chown <user>:<group> <dir> # установить владельца и группу владельца каталога
chmod 644 <file> # установить права доступа rw- r-- r-- (чтение и запись для владельца, чтение для группы владельца, чтение для остальных пользователей)
сhmod 740 <file> # установить права доступа rwx r-- --- (чтение, запись и исполнение для владельца, чтение для группы владельца)
chmod u+w <file> # добавить владельцу право на запись файла

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Процессы и потребление ресурсов сервера

Процессы

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

Процесс может находиться в следующих статусах:

  • Выполнение (R, Running)
    Выполнение или ожидание ЦПУ для выполнения

  • Сон (S, Sleep)
    Прерываемое программно ожидание

  • Непрерываемый сон (D, Direct)
    Ожидание «прямого» сигнала от аппаратной части для прерывания

  • Приостановлен (T, Tracing)
    Отладка

  • Зомби (Z, Zombie)
    Выполнение завершено, однако ресурсы не освобождены

Почти любой процесс (кроме процесса в статусе D) может быть принудительно прерван администратором в случае необходимости («убит»). Это не всегда безопасно, однако возможно.

Запущенные процессы требуют использования аппаратных ресурсов сервера – ЦПУ, ОЗУ, дисков, сетевых интерфейсов.

Читать подробнее: Процессы в Linux

Практика

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

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

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# процессы
top
sudo ps aux
sudo kill -9 <pid> # убийство процесса по PID
sudo killall -s 9 <name> # убийство всех процессов по имени

# утилиты для мониторинга использования ресурсов
htop # использование ресурсов по процессам (может потребоваться установка пакета htop)
nmon # использование процессора по ядрам, памяти, дисков и др. (может потребоваться установка пакета nmon)
iostat # использование процессора в среднем по ядрам и чтение/запись по дискам

# ЦПУ
lscpu # общая информация
cat /proc/cpuinfo # подробная информация

# ОЗУ
cat /proc/meminfo # общая информация и потребление
free -h # удобное представление на основе данных из файла meminfo
ps aux --sort -rss # использование памяти по процессам

# диски
lsblk # общая информация
df -h # просмотр занятного места по разделам
du -сh <dir> # просмотр занятого места в каталоге

# сеть
/sys/class/net/<interface>/speed # просмотр максимальной скорости интерфейса

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Программный комплекс systemd

Зачем нужен systemd?

SystemD – это программный комплекс, состоящий из системных компонентов Linux. Основным компонентом является система инициализации системы SystemD, которая пришла на смену SystemV в большинстве современных дистрибутивов. Ядро Linux запускает процесс systemd, который, в свою очередь, запускает все остальные процессы системы.

SystemD предоставляет следующий функционал:

  • Запуск служб при старте системы (по возможности параллельно) по различным таргетам (target, аналог уровней загрузки в SystemV)
    Обеспечивается обратная совместимость с системами инициализации SystemV и LSB

  • Контроль состояния запущенных служб

  • Управление устройствами, входом в систему, сетевыми подключениями, ведение журнала событий

  • Интерфейсы для реализации функциональных возможностей ядра – cgroups, autofs, kdbus

  • Набор утилит для управления системой – systemctl, journalctl и др.

Что такое systemd unit?

SystemD Unit – это обычный текстовый файл в стиле ini, который декларативно описывает информацию о службах .service, устройствах .device, целях запуска .target и других типах модулей systemd.

Описание юнита состоих из нескольких секций:

  • Unit
    Description (краткое описание), After (ожидание запуска), Requires (обязательная зависимость) и др.

  • Service
    Type (тип) – по умолчанию Simple, ExecStart (команда для запуска), ExecStop (команда для остановки) и др.

  • Install
    WantedBy (таргет или уровень запуска, на котором юнит должен запуститься)

Файлы systemd unit располагаются в следующих каталогах:

  • /etc/systemd/system – юниты, создаваемые администраторами

  • /usr/lib/systemd/system – юниты из установленых пакетов

  • /run/systemd/system – юниты, создаваемые во время работы системы (в runtime)

Редактировать и создавать юниты можно с помощью текстового редактора (например vi или nano).

Читать подробнее:

  • Применение systemd: только самое главное

  • Понимание systemd юнитов

  • Примеры systemd unit – NGINX, Apache

Практика

На практике пользователю необходимо просматривать различные systemd unit, просматривать их содержимое и управлять сервисами, а также читать журналы логов.

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

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# просмотр юнитов
systemctl # список юнитов (это псевдоним команды systemctl list-units)
systemctl --type=service # юниты типа сервисы
systemct | grep <keyword> # юниты, содержащие ключевое слово (полезно для быстрого поиска)
systemctl cat <unit> # описание юнита

# управление юнитами
systemctl status <unit> # статус (состояние) юнита
sudo systemctl daemon-reload # перезагрузка конфигурационных файлов в systemd
sudo systemctl enable <unit> # включение сервиса в автозагрузку
sudo systemctl disable <unit> # отключение сервиса из автозагрузки
sudo systemctl start <unit> # запуск
sudo systemctl stop <unit> # остановка

# журналы логов
journalctl -u <unit> # чтение логов по юниту
journalctl -u <unit> --since today # чтение логов по юниту со смены дня 

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Сеть

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

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

# руководство (справочная информация)
man <utility> # просмотр справочной информации по утилите
<utility> --help # просмотр справочной информации по утилите

# просмотр сетевых настроек сервера
ip a # IP адреса
ip n # ARP таблица
cat /etc/resolv.conf # конфигурация DNS
sudo netstat -tulpn # открытые порты
sudo ss -tulpn # открытые порты (молодежный вариант)

# диагностика сетевых проблем
nslookup <hostname> # проверка разрешения DNS имени
ping <host> # отправка ICMP пакетов до хоста
traceroute <host> # трассировка до хоста UDP пакетами
telnet <host> <port> # проверка доступности TCP порта на хосте
nmap <host> # сетевое сканирование хоста
nmap -p T:<port> <host> # проверка доступности TCP порта на хосте (молодежный вариант)
nmap -p U:<port> <host> # проверка доступности UDP порта на хосте (молодежный вариант)

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.


Все статьи серии:

  1. Основы Linux (обзор с практическим уклоном)

  2. Основы виртуализации (обзор)

  3. Основы контейнеризации (обзор Docker и Podman)

  4. Основы мониторинга (обзор Prometheus и Grafana)

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

Чаще всего операционные системы используются для выполнения определенных задач. Когда дело доходит до тестирования на проникновение, операционные системы на базе Linux станут прекрасным выбором. Эта статья поможет ближе познакомиться с основами работы Linux.

Почему для пентестинга используют именно Linux?

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

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

Техническое обслуживание – сравнительно легкое, так как программное обеспечение может быть установлено из нужного хранилища. ОС также очень стабильна по сравнению с традиционными операционными системами, такими как Windows.

Основные команды в Linux

Пользователи используют ежедневно Windows, создавая папки, перемещая файлы, копируя данные – это все основные функции данной ОС. В этой же статье будут представлены такие же повседневные операции, связанные с работой Linux.

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

Команда «pwd»

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

Итак, в данном случае пользователь обнаружил, что находится в корневом каталоге /root.

Linux | Руководство для начинающих

Команда «whoami»

Используя команду «whoami», пользователь видит, от имени какого пользователя он вошел в систему. В данном случае он вошел в систему как администратор.

Linux | Руководство для начинающих

Изменение каталога | cd

Чтобы изменить каталоги с помощью терминала, пользователь использует команду «cd». Пора изменить текущий каталог на рабочий стол.

cd Desktop/

Linux | Руководство для начинающих

Перечисление содержимого | ls  

Чтобы увидеть содержимое каталога, используется команда «ls» (очень похожая на команду «dir» для Windows).

Linux | Руководство для начинающих

Команда «help»

Почти каждая команда, приложение и утилита в Linux имеет специальный файл справки, в котором есть руководство по ее использованию. Если пользователь хочет узнать больше о конкретной команде или он просто запутался, команда «help» (- h, – help) станет настоящим спасением.

Настала пора узнать больше о фреймворке волатильности.

volatility --help

Linux | Руководство для начинающих

Просмотреть страницы руководства | manв

В дополнение к файлу справки большинство команд и приложений также имеют специальную страницу руководства, доступ к которой можно получить, введя «man» перед нужной командой.

Как видно ниже, он предоставляет описание и все теги, которые могут быть использованы с командой «ls».

man ls

Linux | Руководство для начинающих

Поиск ключевых слов | locate

При необходимости поиска определенного ключевого слова один из самых простых способов сделать это – использовать команду «locate». Следует ввести «locate», а затем ключевое слово в терминале. Он будет искать его по всей файловой системе.

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

К примеру, пользователь ищет ключевое слово «CTF»:

locate CTF | more

Linux | Руководство для начинающих

Поиск двоичных файлов | whereis

Стоит сперва сказать, что такое двоичные файлы.

Файлы, которые могут быть выполнены, подобно .exe в Windows, называются двоичными файлами. Эти файлы обычно находятся в каталогах /usr/bin или /user/sbin.

Утилиты, такие как ls, cd, cat, ps (в данной статье будут рассмотрены некоторые из них), также хранятся в этих каталогах.

При поиске двоичного файла пользователь может использовать команду «whereis». Она показывает путь к двоичному файлу, а также его man-страницу.

Поиск двоичного файла: git.

whereis git

Linux | Руководство для начинающих

Поиск двоичных файлов | which

Команда «which» является более конкретной и возвращает только расположение двоичного файла в переменной PATH в Linux.

Поиск двоичного файла: git.

which git

Linux | Руководство для начинающих

Фильтрация с помощью grep

Очень часто при использовании командной строки хочется выполнить поиск по определенному ключевому слову, именно здесь появляется grep.

К примеру, пользователь ищет слово «echo» в файле simple_bash.sh, введя следующую команду:

grep -I "echo" simple_bash.sh

Linux | Руководство для начинающих

Самый распространенный вариант использования grep – это передать ему вывод данных с ключевыми словами для фильтрации самого вывода.

Здесь пользователь использует grep только для того, чтобы получить IP-адрес его машины, а не какую-то другую информацию, которая была бы получена при выполнении команды «ifconfig».

ifconfig | grep inet

Linux | Руководство для начинающих

Поиск с помощью команды «find»

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

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

find / -type f -name hacking_articles

Linux | Руководство для начинающих

Результат поиска выглядит следующим образом:

Linux | Руководство для начинающих

Это происходит таким образом, потому что команда «find» также выполняет поиск по каталогам, к которым у учетной записи пользователя нет разрешения на доступ. Следовательно, для более чистого результата он использует 2>&1, который отправляет все ошибки с отказом в разрешении в /dev/null, а затем с помощью grep отфильтровывает нужный файл из выходных данных.

find / -type f -name hacking_articles 2>&1 | grep -v "Permission Denied"

Linux | Руководство для начинающих

Команда «cat»

Пользователь использует команду «cat» для вывода содержимого файла в терминал. К примеру, он использует ее относительно «hacking-articles.txt»:

cat hacking-articles.txt

Linux | Руководство для начинающих

Создание файла | touch

Команда «touch» позволяет пользователю создать новый файл. Простое указание имени файла после команды touch приведет к созданию этого файла.

Нужно создать новый текстовый файл и назвать его «hacking-articles-2.txt»:

touch hacking-artciles-2.txt

Linux | Руководство для начинающих

Создание каталога | mkdir

Чтобы создать каталог, просто нужно указать имя каталога после команды «mkdir».

Нужно создать каталог: ignite.

mkdir Documents/ignite

Linux | Руководство для начинающих

Копирование файлов | cp

Для копирования файлов пользователь использует команду «cp», которая создает дубликат файла в указанном месте. Нужно скопировать текстовый файл, который был создан ранее, в каталог, который только что был создан. Затем пользователь перечислит все содержимое каталога, чтобы убедиться, что файл был скопирован.

Чтобы скопировать файл, который нужен, следует ввести следующую команду:

cp hacking-articles-2.txt Documents/ignite

Linux | Руководство для начинающих

Перемещение или изменение имя файла | mv

Пользователь может использовать команду «move: mv» не только для перемещения файлов в указанное место, но и для изменения их имени. Теперь стоит попробовать переместить скопированный файл в папку ignite в другое место.

mv hacking-articles-2.txt /root/Documents/

Linux | Руководство для начинающих

Удаление файлов | rm

Чтобы удалить файл, пользователь может просто использовать команду «rm». К примеру, он хочет удалить файл «hacking-articles-2.txt».

Как можно увидеть на картинке, файл больше не существует.

rm hacking-artcles-2.txt

Linux | Руководство для начинающих

Удаление каталога | rmdir

Чтобы удалить каталог, пользователь будет использовать команду «rmdir», которая расшифровывается как «удалить каталог». Нужно удалить каталог «ignite_screenshot».

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

rmdir ignite_screenshots/

Linux | Руководство для начинающих

Манипуляции с текстом

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

Захват начала файла

При работе с большими файлами пользователь может использовать команду «head», которая по умолчанию отображает первые 10 строк файла. К примеру, в данном случае пользователь просмотрит первые 10 строк файла etter.dns.

*etter.dns – это файловая конфигурация файла инструмента под названием Ettercap, который используется для спуфинга DNS и проведения ARP-атак.

head /etc/Ettercap/etter.dns

Linux | Руководство для начинающих

Захват конца файла

Подобно команде «head», команда «tail» используется для просмотра последних строк файла. К примеру, пользователь просмотрит нижние строки файла etter.dns.

tail /etc/ettercap/etter.dns

Linux | Руководство для начинающих

Нумерация строк | nl

Пользователь может использовать команду «nl» для нумерации строк, пока он выводит их в окне терминала. Снова задействовав файл etter.dns, пользователь пронумерует все строки.

nl /etc/Ettercap/etter.dns

Linux | Руководство для начинающих

Поиск и замена текста | sed

Команда «sed» позволяет искать вхождение слова в тексте, а затем выполнять над ним некоторые действия. Здесь пользователь будет проводить поиск вхождения WW и /g для их глобальной замены на www.

sed s/WWW/www/g hacking-artciles.in

Linux | Руководство для начинающих

Управление отображением файлов | more

Команда «more» отображает страницу файла и позволяет прокручивать ее вниз с помощью клавиши ENTER. Пользователь просматривает файл etter.dns с помощью этой команды.

more /etc/ettercap/etter.dns

Linux | Руководство для начинающих
Linux | Руководство для начинающих

Отображение и фильтрация файлов | less

Команда «less» очень похожа на «more», но она имеет дополнительную функциональность фильтрации ключевых слов. Пользователь откроет файл etter.dns, используя «less». Далее он может нажать обратную косую черту ( / ) на клавиатуре, а затем ввести ключевое слово, которое хочет найти. В данном примере пользователь искал свой собственный IP-адрес.

less /etc/ettercap/etter.dns

Linux | Руководство для начинающих
Linux | Руководство для начинающих

Установка и удаление программного обеспечения

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

В дистрибутивах Linux на базе Debian, таких как Kali Linux (тот, который используется в практических примерах), менеджером программного обеспечения по умолчанию является Advance Packaging Tool или сокращенно apt. Точно так же, как пользователи открывают Appstore, чтобы загрузить приложение на их телефон, у них есть репозитории Linux. В данной части статьи пользователи узнают, как получить доступ к этому хранилищу, искать в нем программы и устанавливать их.

Поиск пакета для установки

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

Он введет «apt-cache search», а затем имя пакета, который хочет найти. В данном примере он ищет Hydra, инструмент взлома логина.

Он видит тот инструмент, который ему нужен.

apt-cache search hydra

Linux | Руководство для начинающих

Установка пакета

Теперь пользователь установит нужные ему пакеты. На этот раз он будет использовать команду apt-get, за которой последуют install и имя пакета.

К примеру, он установит git, который позже позволит ему извлекать репозитории из Github для установки дополнительных инструментов.

apt-get install git

Linux | Руководство для начинающих

Удаление пакета

Чтобы удалить любой пакет с компьютера, нужно ввести «remove» после apt-get с именем пакета.

К примеру, удаление пакета git. (Рекомендуется нажать на «n», чтобы прервать этот шаг).

apt-get remove git

Linux | Руководство для начинающих

Очистка пакета

Иногда пакет, который только что удалили, оставляет после себя остаточные файлы (например, файлы конфигурации) Чтобы полностью стереть его данные, используется опция очистки с помощью apt-get.

К примеру, пользователь попробует убрать остаточные файлы git (снова можно нажать на «n», чтобы прервать это действие).

apt-get purge git

Linux | Руководство для начинающих

Обновление содержимого репозитория

Рекомендуется обновлять репозитории, поскольку они обычно пополняются новым программным обеспечением или более новыми версиями существующего программного обеспечения. Эти обновления должны быть запрошены и могут быть осуществлены путем ввода «update» после apt-get.

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

apt-get update

Linux | Руководство для начинающих

Обновление репозитория

Чтобы принять изменения, которые были скачаны выше, пользователь должен запустить apt-get с тегом «upgrade». Затем он устанавливает все новые обновления, которые уже были загружены в систему.

Примечание: обновление может занять много времени.

apt-get upgrade

Linux | Руководство для начинающих

Добавление репозиториев в файл sources.list

Сервер, на котором хранится информация о программном обеспечении для конкретных дистрибутивов Linux, известен как репозиторий. Пользователь может добавить новые репозитории по следующему пути: /etc/apt/sources.list.

Ниже виден репозиторий, который используется в данном Kali Linux.

nano /etc/apt/sources.list

Linux | Руководство для начинающих
Linux | Руководство для начинающих

Получение разрешений

Прежде чем изучить команды Linux для игр с разрешениями, стоит сначала узнать о разрешении файлов и каталогов в Linux.

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

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

Все файлы и каталоги в Linux имеют три уровня разрешений:

  • R-разрешение: позволяет пользователю получить доступ к открытию и просмотру файлов.
  • W-разрешение: позволяет пользователю просматривать и редактировать файлы.
  • X-разрешение: позволяет пользователю запустить файл.

Предоставление разрешения отдельному пользователю

Администратор может изменить владельца файла, чтобы новый пользователь, которому он принадлежит, мог контролировать права доступа к нему. Здесь он будет использовать команду «chown» для смены владельца.

Администратор сменит владельца файла hacking-artciles.txt с самого админа на Raj.

chown Raj hacking-articles.txt

Linux | Руководство для начинающих

Предоставление разрешения  целой группе

Чтобы передать право собственности на файл группе, нужно использовать команду «chgrp». Чтобы гарантировать, что только член команды ignite получит право собственности, следует изменить группу файла на ignite.

chgrp ignite hacking-articles.txt

Linux | Руководство для начинающих

Проверка того, кто владеет файлом

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

Можно увидеть:

  • Тип файла
  • Права доступа к файлу для владельца, группы и отдельных пользователей соответственно
  • Количество ссылок
  • Владелец файла, пользователь и группа
  • Размер файла в байтах
  • Когда файл был создан или изменен последний раз
  • Имя файла

Выделен раздел, в котором указано, кто владеет файлом.

Linux | Руководство для начинающих

Изменение разрешений

Администратор использует команду «chmod» для изменения прав доступа к файлу. Эта таблица поможет решить, какие разрешения пользователь хочет предоставить:

0
1 –x
2 -w-
3 -wx
4 r–
5 r-x
6 rw-
7 rwx

Пользователь мог бы ввести chmod 777 $filename, чтобы дать файлу все разрешения, или просто chmod 111 $filename, чтобы дать ему разрешение на выполнение файла.

Другой способ сделать это – chmod +x $filename, как показано ниже.

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

chmod +x hacking-articles.txt

Linux | Руководство для начинающих

Предоставление разрешения с помощью SUID

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

Чтобы использовать эту функцию, нужно ввести 4 перед обычными разрешениями, так что новое результирующее разрешение 644 станет: 4644.

К примеру, пользователь добавит SUID bit к файлу «hacking-articles.txt».

chmod 4644 hacking-articles.txt

Linux | Руководство для начинающих

Предоставление разрешения администратору группы с помощью SUID

Аналогично, SGID также предоставляет временное разрешение и для владельца группы.

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

К примеру, пользователь добавит SGID к файлу «hacking-articles.txt».

chmod 2466 hacking-articles.txt

Linux | Руководство для начинающих

Управление сетями

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

Пора начать изучение различных инструментов и утилит для анализа и управления сетями.

Ifconfig: анализ сетей

Команда «ifconfig» является одним из основных инструментов для взаимодействия с активными сетевыми интерфейсами. Пользователь использует «ifconfig» и видит IP-адрес, который сопоставляет с 2 сетевыми интерфейсами: eth0 и lo.

Он также способен увидеть сетевую маску и широковещательный адрес подключенного сетевого интерфейса, а также mac-адрес.

(lo является локальным хостом и всегда сопоставляется с 127.0.0.1)

Linux | Руководство для начинающих

Iwconfig: проверка устройств беспроводной сети

Если у человека есть устройство, подключенное по беспроводной сети, он может использовать команду «iwconfig» для сбора важной информации, такой как его IP-адрес, MAC-адрес, режим работы. Поскольку в данном практическом примере такого беспроводного адаптера нет, результат следующий.

Linux | Руководство для начинающих

Изменение IP-адреса

Чтобы изменить IP-Адрес, нужно ввести «ifconfig», выбрать интерфейс, для которого следует изменить адрес, и ввести новый адрес, который необходимо ему назначить. К примеру, пользователь изменит свой IP-адрес на 192.168.1.13.

При запуске «ifconfig» он видит полученные изменения.

ifconfig eth0 192.168.1.13

Linux | Руководство для начинающих

Спуфинг MAC-адреса

Пользователь также может использовать «ifconfig» для изменения своего MAC-адреса. Поскольку MAC-адрес уникален и часто используется в качестве меры безопасности, чтобы удержать хакеров от атак или даже отслеживать их действия, подделка своего MAC-адреса почти тривиальна – она поможет сохранить анонимность.

Для того, чтобы изменить свой MAC-адрес на 00:11:22:33:44:55, придется спуститься вниз по интерфейсу, изменить MAC-адрес, а затем снова подняться по нему.

ifconfig eth0 down
ifconfig eth0 hw ether 00:11:22:33:44:55
ifconfig eth0 up

Linux | Руководство для начинающих

Использование DHCP-сервера для назначения новых IP-адресов

Linux имеет сервер протокола динамической конфигурации хоста (DHCP), который запускает daemon – процесс, работающий в фоновом режиме, называемый daemon DHCP. Этот DHCP-сервер назначает IP-адреса всем системам в подсети, а также хранит лог-файлы таких систем.

Стоит запросить IP-адрес у DHCP, просто вызвав DHCP-сервер с помощью команды «dhclient» и сетевого интерфейса, который пользователь хочет изменить.

Он видит, что IP-адрес изменился.

dhclient eth0

Linux | Руководство для начинающих

Изучение DNS с помощью «dig»

DNS – это сервис, который переводит доменное имя на соответствующий IP-адрес. Пользователь может использовать команду «dig» с дополнительными опциями, такими как «mx» (почта сервера), «ns» (имя сервера), чтобы собрать больше информации о домене.

Нужно воспользоваться командой «dig» в отношении «www.hackingarticles.in». На картинке видно, как доменное имя преобразуется в IP-адрес.

dig www.hackingarticles.in

Linux | Руководство для начинающих

Далее проводится поиск почты сервера «hackingatricles.in»:

dig hackingarticles.in mx

Linux | Руководство для начинающих

Поиск имени сервера:

dig hackingarticles.in ns

Linux | Руководство для начинающих

Изменение DNS-сервера

Информация о DNS-сервере хранится в файле /etc / resolv.conf, поэтому для изменения DNS-сервера необходимо отредактировать этот файл. Пользователь может просто использовать nano или vim, которые являются одними из распространенных текстовых редакторов Linux.

В данном примере он будет использовать команду «echo» и «>» для перезаписи файла resolv.conf. Можно заметить, как это изменение отражается при чтении с помощью cat.

*публичный DNS-сервер Cloudflare, пользователи также могут использовать Google, DNS-сервер которого 8.8.8.8.

echo "nameserver 1.1.1.1" > /etc/resolv.conf

Linux | Руководство для начинающих

Мэппинг IP-адресов

В системе есть файл «hosts», который также выполняет преобразование доменного имени в IP-адрес. Файл находится по пути: /etc/hosts. Пользователь может сопоставить любой домен с IP-адресом по его выбору, это может быть полезно хакеру для перенаправления трафика из сети на вредоносный веб-сервер.

Стоит заглянуть в сам файл. Здесь пользователь видит localhost и kali, сопоставленные с определенными IP-адресами. Он может составить карту www.hackingarticles и войти на свой IP-адрес. Теперь, если кто-то в сети перейдет по этому URL-адресу, он будет перенаправлен на нужный IP-адрес. Пользователь также может дополнительно запустить сервер Apache и развернуть вредоносный веб-сайт, обманув пользователей в Интернете.

nano /etc/hosts

Linux | Руководство для начинающих
Linux | Руководство для начинающих

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

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

Просмотр процессов

Для того, чтобы управлять процессами, нужно иметь возможность просматривать их. Основным инструментом для этого является «ps».

Простой ввод «ps» в shell bash приведет к перечислению всех активных процессов.

*PID – это идентификатор процесса, он уникален для каждого вызываемого процесса.

Linux | Руководство для начинающих

Просмотр процессов для всех пользователей

Запуск команды «ps» вместе с «aux» будет отображать все запущенные процессы для всех пользователей, так что нужно сделать это:

ps aux

Здесь пользователь видит PID, пользователя, который вызвал процесс, %CPU и %MEM.

Linux | Руководство для начинающих

Фильтрация процесса по его имени

Как читатели узнали ранее, можно передать вывод ps aux в grep и отфильтровать конкретную информацию.

Стоит открыть «msfconsole», популярный интерфейс для использования фреймворка Metasploit.

ps aux | grep msfconsole

Linux | Руководство для начинающих

Поиск самого «жадного» процесса | top

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

Linux | Руководство для начинающих
Linux | Руководство для начинающих

Изменение приоритета с помощью команды «nice»

Когда пользователь запускает процесс, он может установить его уровень приоритета с помощью команды «nice». Стоит увеличить приоритет /usr/bin/ssh-агента на 10 с помощью тега «n».

nice -n -10 /usr/bin/ssh-agent

Linux | Руководство для начинающих

Команда «renice»

Команда «renice» принимает абсолютное значение от -20 до 19 и устанавливает приоритет на этот конкретный уровень. Для этого также требуется PID (идентификатор процесса).

К примеру, пользователь придаст процессу PID 6242 более высокий уровень приоритета.

renice 20 6242

Linux | Руководство для начинающих

Самая смертоносная команда | kill

Иногда, когда процесс проявляет необычное поведение или потребляет слишком много системных ресурсов, он становится «зомби». Чтобы остановить подобные процессы, используется команда «kill».

Команда «kill» имеет 64 различных сигнала, каждый из которых означает что-то свое.

1 означает «повесить трубку» и предназначен для остановки процесса, в то время как 9 является «полным убийством», он заставляет процесс остановиться, отправляя свои ресурсы в /dev/null.

Нужно остановить процесс номер 6242.

kill -1 6242

Linux | Руководство для начинающих

А также принудительно остановить процесс номер 4378.

kill -9 4378

Linux | Руководство для начинающих

Запуск процессов в фоновом режиме

Если необходимо переместить процесс, работающий в фоновом режиме, на передний план, можно использовать команду «fg». Человек введет «fg», а затем добавит идентификатор процесса.

Чтобы увидеть фоновые процессы в системе, используется команда «jobs».

nano hacking-articles.txt &

Linux | Руководство для начинающих

Планирование процесса

Часто требуется запланировать процессы для запуска в определенное время суток. Команда «at» — это daemon-фоновый процесс, который полезен для планирования выполнения задания один раз в какой-то момент в будущем. В то время как для работы, которая выполняется каждый день, больше подходит «crond».

Следует выполнить scanning_script.sh в 9:30 вечера.

at 9:00pm
/root/simple_bash.sh

Linux | Руководство для начинающих

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

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

Просмотр всех переменных

Пользователь может просмотреть все переменные среды из любого каталога по умолчанию, введя «env» в свой терминал, например:

set | more

Linux | Руководство для начинающих

Фильтрация для просмотра конкретных переменных

Опять же, используя передачу выходных данных в grep, пользователь может отфильтровать нужные ему переменные.

К примеру, он отфильтрует HISTSIZE (размер истории).

Как видно, размер истории установлен на 1000.

set | grep HISTSIZE

Linux | Руководство для начинающих

Временное изменение значения переменной

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

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

HISTSIZE = 0

Linux | Руководство для начинающих

Сделать эти изменения постоянными

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

Нужно перенести это значение в текстовый файл valueofHISTSIZE и сохранить его в рабочем каталоге.

Следует добавить «~/».

echo $HISTSIZE ~/valueofHISTSIZE.txt

Linux | Руководство для начинающих

Теперь, как и в прошлый раз, пользователь изменит значение HISTSIZE, но теперь выполнит другую команду «export», что сделает это изменение постоянным.

HISTSIZE=0
export HISTSIZE

Linux | Руководство для начинающих

Создание пользовательских переменных

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

Следует создать новую переменную с именем URL, которая имеет значение www.hackingarticles.in.

url_variable="www.hackingarticles.in"

Linux | Руководство для начинающих

Пользователь также может удалить эту переменную с помощью команды «unset». Просто введя «unset» и имя переменной, удаление пройдет успешно.

Как видно, несмотря на выполнение команды «echo», результат такой, как нужен.

unset url_variable

Linux | Руководство для начинающих

Основы написания скриптов Bash

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

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

Bash shell может запускать любые системные команды, утилиты и приложения. Единственное, что нужно для начала, – это текстовый редактор (например, nano, vim). Пользователь может выбрать любой текстовый редактор, так как это не имеет никакого значения.

Shebang: #!

Нужно создать новый файл: first_script. Чтобы сообщить операционной системе, что пользователь использует bash для написания скрипта, нужно ввести команду shebang ( # !), а затем /bin/bash, как показано ниже. Открывается файл и вводится следующее:

#! /bin/bash

Linux | Руководство для начинающих

Echo

Как следует из названия, пользователь использует его для получения эхо-ответа на сообщение или тест, который он хочет. К примеру, это будет «Hello World».

#! /bin/bash/
echo "Hello World"

Linux | Руководство для начинающих

Запуск скрипта

Прежде чем пользователь сможет запустить его скрипт, он должен получить разрешение на это. Как читатели узнали ранее, использование «chmod» с тегом +x должно дать исполняемому файлу нужное разрешение.

Добавление «. /» перед именем файла сообщает системе, что пользователь хочет выполнить этот скрипт «first_script».

Linux | Руководство для начинающих

Чтобы добавить больше функциональности в скрипт bash, нужно обсудить переменные.

Переменная, похожая на ведро, может содержать некоторое значение в памяти. Это значение может быть любым текстом (строками) или четными числами.

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

echo "What is your name?"
read name
echo "Welcome, $name"

Linux | Руководство для начинающих

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

Linux | Руководство для начинающих

Создание простого сканера

Стоит создать скрипт, который будет еще более полезен. Пользователь заставит его сканировать всю сеть на наличие активных хостов, подключенных к ней, и узнавать их IP-адреса.

Для этого пользователь будет использовать nmap. Это очень простой инструмент, когда речь заходит о тестировании проникновения сети.

Он используется для обнаружения открытых портов системы, служб, которые она запускает, а также способен определить операционную систему.

Синтаксис Nmap: nmap <тип сканирования> <конечный IP>.

Пользователь создает скрипт, который позволит ему сканировать все IP-адреса устройств, подключенных к его сети. Для этого он будет использовать тег-sp nmap. Это позволит ему выполнить простое сканирование ping, которое проверит все соединения в сети.

Он создает новый файл: scanner и начинает работу.

echo "Enter the ip address"
read ip
nma -sp $ip/24 | grep scan | cut -d "" -f 5 | head -n -1

Linux | Руководство для начинающих

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

Вводится свой IP-адрес:

Linux | Руководство для начинающих

Теперь пользователь видит, какие устройства подключены к его сети.

Linux | Руководство для начинающих

Планирование своих задач

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

Crond – это daemon, который работает в фоновом режиме, он проверяет таблицу cron – crontab и есть ли какие-либо конкретные команды для запуска в указанное время. Изменение crontab позволит выполнить задачу в определенное время.

Файл таблицы cron находится в файле /etc / crontab. Он имеет в общей сложности 7 полей, где первые 5 используются для указания времени его запуска, 6-е поле – для указания пользователя, а последнее – для указания пути к команде, которую нужно запустить.

Вот таблица с первыми 5 полями:

Единица измерения Синтаксис
Минута 0-59
Час 0-23
День в месяце 1-31
Месяц 1-12
День недели 0-7

Планирование запуска скрипта bash scanner

Во-первых, нужно проверить, работает ли daemon cron или нет, введя:

service cron status

Linux | Руководство для начинающих

Поскольку он неактивный, нужно запустить службу, введя:

service cron start

Linux | Руководство для начинающих

Теперь пользователь откроет таблицу cron, чтобы отредактировать ее. Он введет crontab в терминале, а затем добавит флаг «-e» (e означает edit).

crontab -e

Linux | Руководство для начинающих

Это дает ему возможность выбрать любой текстовый редактор. Он будет использовать nano (вводит 1).

Linux | Руководство для начинающих

Теперь пользователь прокрутит вниз и просто заполнит все 7 полей, о которых было сказано ранее, чтобы запланировать задачу.

Допустим, он хочет увидеть все устройства, подключенные к нашй сети, перед сном, поэтому будет выполняться скрипт сканирования каждый день в 11:55 вечера автоматически. Вводится следующее:

55 23 * * * /root/scanner

Linux | Руководство для начинающих

Инициирование команды jobs при запуске с помощью rc-скриптов

Всякий раз, когда пользователь включает свою машину Linux, запускается ряд процессов, которые помогают в настройке среды, которую он будет использовать. Запускаемые скрипты называются rc-скриптами.

При загрузке машины ядро включает daemon, известный как init.d, который отвечает за запуск этих сценариев.

Следующее, что нужно знать, – это уровни запуска Linux.

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

Вот соответствующая таблица:

0 Остановка работы системы
1 Однопользовательский режим
2-5 Многопользовательский режим
6 Перезагрузка системы

Теперь нужно добавить службу в rc.d. Это можно сделать с помощью команды update-rc.d. Она позволяет добавлять или удалять службы из rc-скрипта.

Пользователь включит MySQL для его запуска каждый раз, когда он загружается. Нужно написать MySQL после обновления – ру.D и следовать ее значениям по умолчанию.

Теперь, когда пользователь перезапустит систему, он увидит, что MYSQL уже запущен.

update-rc.d mysql defaults

Он может проверить это с помощью команды ps aux в grep.

Linux | Руководство для начинающих

Использование служб Linux

Службы в Linux — это распространенный способ обозначения приложения, которое работает в фоновом режиме. На компьютере Linux предустановлено несколько служб, одна из наиболее распространенных – Apache Web Server, которая помогает создавать и развертывать веб-серверы, или OpenSSH, который позволяет подключаться к другой машине.

Игры со службами (пуск, остановка, их состояние, перезагрузка)

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

Основной синтаксис для этого таков: service <service_name> <start|stop|restart|status>

Нужно запустить сервер apache2.

service apache2 start

Linux | Руководство для начинающих

Теперь пользователь использует тег состояния, чтобы проверить, работает ли служба.

service apache2 status

Linux | Руководство для начинающих

Чтобы остановить эту службу, нужно ввести:

service apache2 stop

Linux | Руководство для начинающих

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

Linux | Руководство для начинающих

Создание веб-сервера HTTP с помощью Apache

Более 60% мировых веб-серверов используют Apache, это один из наиболее популярных сервисов. Пентестеру важно понять, как работает Apache. Итак, настала пора развернуть собственный веб-сервер и познакомиться с Apache.

Следует запустить службу apache2, и теперь пользователь перейдет к HTML-файлу, который будет отображаться в браузере, веб-страница apache по умолчанию находится по адресу: /var/www/html/index.html

Следует открыть его с помощью nano и написать немного своего HTML-кода.

nano /var/www/html/index.html

Linux | Руководство для начинающих

Видно, что html-код присутствует по умолчанию.

Linux | Руководство для начинающих

Пользователь сохранит файл. Чтобы увидеть, что отображает сервер apache, можно перейти в браузер и ввести:

http://localhost

Linux | Руководство для начинающих

Знакомство с OpenSSH

Secure Shell или ssh – это в основном то, что позволяет безопасно подключаться к терминалу удаленной системы. В отличие от своего предка telnet, который использовался довольно давно, канал ssh, используемый для связи, зашифрован и, следовательно, более безопасен.

Опять же, прежде чем начинать использовать ssh-сервис, нужно сначала запустить его.

Linux | Руководство для начинающих

Теперь, чтобы подключиться к удаленной системе и получить доступ к ее терминалу, вводится «ssh» с последующим <username>@<ip address>. Так пользователь подключится к главной машине.

ssh ignite@192.168.0.11

Пользователь успешно подключился к другой машине под названием «ubuntu» с пользователем ignite.

Linux | Руководство для начинающих

Работа с FTP

Следует сказать о протоколе передачи файлов или FTP. Этот протокол обычно используется, как следует из названия, для передачи файлов через командную строку. Здесь пользователь попробует подключиться к ftp-серверу и скачать с него файлы с помощью команды ftp.

Чтобы получить доступ к ftp-серверу, он вводит ftp, а затем доменное имя или IP-адрес. Вот хороший пример:

ftp ftp.cesca.es

Linux | Руководство для начинающих

Теперь он попросит пользователя ввести имя, он может ввести «anonymous», так как этот сервер позволяет сделать.

Linux | Руководство для начинающих

Теперь он запросит пароль, также вводится «anonymous».

Linux | Руководство для начинающих

Как видно, пользователь успешно вошел в систему. Теперь с помощью основных навигационных команд, которые он изучил, можно перечислить содержимое.

Linux | Руководство для начинающих

Он найдет файл, который хочет загрузить. Попробует также скачать файл по адресу: ubuntu/release/favicon.ico.

get favicon.ico

Linux | Руководство для начинающих

Чтобы выйти из сеанса ftp, пользователь введет «bye». Теперь он может просмотреть файл, который только что загрузил.

Linux | Руководство для начинающих

Автор переведенной статьи: Karan Bhandari.

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

Обложка для подборки книг по Linux

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


Обложка книги Just for Fun: The Story of an Accidental Revolutionary

Just for Fun: The Story of an Accidental Revolutionary

Книга, написанная самим создателем Linux Линусом Торвальдсом. В ней он рассказывает о своей жизни и о том, с чего началась разработка Linux. Также в ней Линус поделился своим видением по разработке открытого программного обеспечения и Linux в частности. Если хочется посмотреть на Linux со стороны «отца» системы, а также больше узнать о его личности, то эта книга обязательна к прочтению.


Обложка книги Командная строка Linux. Полное руководство

Командная строка Linux. Полное руководство

Командная строка в Linux — основной инструмент для работы с этой ОС. Поэтому, чтобы полноценно настроить систему под свои нужды и ускорить рабочий процесс, нужно обучиться работе с этим инструментом и основным командам. Данная книга познакомит читателя с возможностями командной строки в Linux. В частности, здесь рассказывается о том, как:

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

Обложка книги Linux глазами хакера

Linux глазами хакера

Несмотря на название книги, она подойдёт не только специалистам в информационной безопасности, но и системным администраторам. В данной книге по полочкам разложены многие аспекты настройки ОС Linux с целью повышения безопасности и производительности системы. Автор Михаил Флёнов рассмотрел потенциальные уязвимости и атаки злоумышленников, а также методы борьбы с ними. Книга хороша также тем, что с её помощью можно изучить «внутреннюю кухню» Linux.


Обложка книги Ten Steps to Linux Survival

Ten Steps to Linux Survival

Книга подойдёт системным администраторам, которые обеспечивают стабильную работу серверов на Windows, но сталкиваются с настройкой Linux-окружения. Она поможет быстро освоиться с работой на Linux. В ней вы найдёте информацию по настройке сетей, работе с файловой системой, диагностике работы серверов, а также управлению процессами.


Обложка книги Linux. Карманный справочник

Linux. Карманный справочник

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


Обложка книги Linux Bible

Linux Bible

Девятое издание этой книги является достаточно полным руководством по работе с Linux, в том числе с Red Hat Enterprise Linux 7 (RHEL 7), Fedora 21 и Ubuntu 14.04 LTS. Отличительной особенностью книги стало разделение материала по уровням. Сначала даётся базовая информация о Linux, затем необходимые знания для рядового пользователя, системного администратора, потом рассматриваются серверное администрирование и безопасность. За счёт такой многоуровневости книга подойдёт всем желающим уверенно работать с этой ОС.


Обложка книги Официальная документация Ubuntu

Официальная документация Ubuntu

Официальная документация популярного Linux-дистрибутива Ubuntu постоянно поддерживается, поэтому в ней можно найти подробную информацию о наиболее последних версиях системы. Оно содержит информацию о том, как устанавливать и настраивать различные приложения в пользовательской и серверной версиях Ubuntu в соответствии с заданными требованиями. Документация по Ubuntu Desktop доступна для чтения только онлайн, по Ubuntu Server — онлайн и в PDF-формате.


Обложка книги Red Hat Enterprise Linux 6 Essentials

Red Hat Enterprise Linux 6 Essentials

В корпоративной среде популярностью пользуется дистрибутив Red Hat Enterprise Linux, считающийся одним из самых стабильных. Данная книга призвана рассказать об особенностях системы как новичкам, так и опытным пользователям. Новичку будет интересно почитать о настройке рабочей среды, электронной почты и веб-сервера. Более опытные пользователи RHEL найдут в книге такие темы, как удалённый доступ, управление логическими томами (LVM), разделение дисков, виртуализация KVM, SSH и совместное использование файлов с использованием Samba и NFS. В книге рассматривается немного устаревший RHEL 6, но в ней описаны концептуальные вещи, не теряющие актуальность со временем.


Обложка книги Современные операционные системы

Современные операционные системы

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


Обложка книги Внутреннее устройство Linux

Внутреннее устройство Linux

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


Обложка книги How Linux Works: What Every Superuser Should Know

How Linux Works: What Every Superuser Should Know

Книга будет интересна всем, кто интересуется внутренней составляющей Linux. Здесь рассказывается о загрузке ОС, управлении устройствами, драйверами устройств и процессами, работе сетей и интерфейсов, инструментах для разработки, написании эффективных shell-скриптов, а также ключевых функциях ядра в пользовательском пространстве: системные вызовы, ввод/вывод и файловая система. Все эти знания помогут тщательно настроить систему под себя.


Обложка книги UNIX and Linux System Administration Handbook

UNIX and Linux System Administration Handbook

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


Обложка книги Встраиваемые системы на основе Linux

Встраиваемые системы на основе Linux

В книге описано поэтапное конструирование собственной системы на базе Linux только с необходимыми open source программами. В частности, автор Крис Симмондс рассматривает:

  • необходимый для этого набор инструментов;
  • ядро Linux и его загрузчики;
  • конфигурирование файловой системы;
  • работу с системами сборки Buildroot и Yocto Project;
  • управление памятью, а также процессы и потоки;
  • отладку и оптимизацию полученной системы;
  • исполнение приложений реального времени.

Обложка книги Linux From Scratch

Linux From Scratch

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

Сама онлайн-книга является дополнением к одноимённому проекту. Его цель — создание гибкой и производительной системы, заточенной под нужды конкретного пользователя. Однако созданием собственной ОС можно заняться ещё и для того, чтобы лучше изучить структуру Linux изнутри.


Обложка книги Настольная книга администратора Debian

Настольная книга администратора Debian

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


Какие книги помогли вам освоиться в Linux? Пишите своё мнение в комментариях. Лучшие книги из комментариев также войдут в эту подборку.

Select Page:

Select Category:

C чего начать?

.   Исчерпывающее руководство для освоения команд и командных интерпретаторов Linux! В этой книге вы найдете все, что необходимо для освоения строковых команд и сценариев командных интерпретаторов Linux новичками и даже опытными…

C чего начать?

Лукас Майкл — FreeBSD. Подробное руководство. Скачать бесплатно без регистрации.

Книга великолепная, читается легко, на одном дыхании.
У автора всё отлично с чувством юмора:
«Можно также встретить старые ископаемые,
такие как A/UX компании Apple и Xenix компании Microsoft. (Да, Mi
crosoft была лицензированным поставщиком…

C чего начать?

От Windows к Linux Марсель Гане. Скачать бесплатно без регистрации.

Действительно добротное руководство. Книга написана для простых пользователей, которые решили попробовать свои силы в Linux. He нужно быть компьютерным спецом, чтобы под руководством автора всего за несколько часов научиться работать с…

C чего начать?

Настройка после установки Linux Ubuntu(Unity). Простое пошаговое руководство.

Описаны шаги по первоначальной настройке Ubuntu с графической оболочкой Unity после свежей установки на десктоп.  Использовалась бета-версия операционной системы под номером  Yakkety Yak(Болтливый Як). Цифры в нумерации версий Убунту означают год…

C чего начать?

Linux/FreeBSD. Уровень «На старт». Эффективная работа в командной строке. Видеокурс+литература.

Видеокурс и учебная литература от Центра «Специалист» при МГТУ им. Н.Э.Баумана  — ведущего компьютерного учебного центра России с высочайшим уровнем качества обучения, сервиса, организации учебного процесса.  Достойное руководство для начинающих. Стоимость курса —…

C чего начать?

Linux Format, все номера 2016 одним архивом. Скачать бесплатно без регистрации.

Год издания: 2016
Издательство: Future Publishing
Язык: Русский
ISSN: отсутствует.
Формат: PDF
Качество: Отсканированные страницы
Количество страниц: 108-116
Описание: Первый в России ежемесячный журнал на русском языке, целиком посвященный операционной системе…

Hardware

Работа с оборудованием в Linux — схематично и просто.

Когда компьютеры назывались «электронно-вычислительными машинами», они были размерами в среднем с кухонный гарнитур и занимались почти исключительно вычислениями. Ввод и вывод данных воспринимался пользователями ЭВМ — учёными-математиками — как нечто необходимое, но к работе…

Администрирование

Сетевые средства Linux. 2-е изд, 2016. Бражук А.И. Скачать бесплатно без регистрации.

Рассматриваются вопросы настройки сетевых интерфейсов, маршрутизации, фильтрации трафика базовыми средствами Linux, технологии трансляции сетевых адресов (NAT), а также диагностики сетевых подключении приложениями протокола ICMP и средствами анализа сетевого трафика. В рамках курса…

Debian

Настольная книга по Debian, 2016. Скачать бесплатно и без регистрации.

Лучшее руководство по LINUX из мне известных. Подойдет как новичкам, так и администраторам UbuntuDebianMint, новое, переработанное издание 2016того года. Абсолютно бесплатно скачать и использовать может каждый. Форматы — .epub, .mobi и .pdf. Книга-справочник…

О чем руководство?

Данное руководство представляет собой учебник по операционной системе Ubuntu Linux. В нем последовательно рассказывается, где и как скачать Ubuntu, как установить Ubuntu, а также вопросы настройки и дальнейшей работы с системой.

  • Почему стоит использовать Linux и Ubuntu в частности. Достоинства и недостатки
  • Скачиваем Ubuntu (как скачать Ubuntu)
  • Запись iso образа на CD/DVD диск
  • Запись iso образа на USB-носитель (создание загрузочной флешки)
  • Настройка BIOS для загрузки с диска или с USB-носителя
  • Запуск Ubuntu без установки на компьютер (LiveCD)
  • Подготовка диска в Windows перед установкой Ubuntu — данный пункт нужно выполнять только, если у вас уже установлен Windows и вы хотите установить Ubuntu рядом с ним.
  • Установка Ubuntu — подробная инструкция по установке Ubuntu.
  • Обзор интерфейса Unity
  • Добавление раскладки клавиатуры в Ubuntu
  • Изменение сочетания клавиш для смены раскладки в Ubuntu
  • (устарело) Установка сочетания клавиш для смены раскладки в Ubuntu
  • (устарело) Обновление Ubuntu
  • Обновление Ubuntu (обновление пакетов)
  • Обновление Ubuntu до новой версии
  • Установка программ в Ubuntu
  • Изменение пароля пользователя в Ubuntu

Понравилась статья? Поделить с друзьями:

А вот и еще наши интересные статьи:

  • Тораксол таблетки от кашля цена инструкция по применению взрослым отзывы
  • Пирацетам инструкция по применению цена таблетки 800 мг взрослым
  • Что такое мануал на коробке автомат
  • Руководство новой почты
  • Сокращение штата работников в 2021 году пошаговая инструкция

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии