Краткое руководство по linux

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

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

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

В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или поглубже изучить 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. Для среднестатистического пользователя похоже, что в компьютерных технологиях преобладают Windows, macOS или Android и iOS. Тем не менее, можно с уверенностью сказать, что большинство продуктов и услуг, не принадлежащих Microsoft (а также часть их собственной инфраструктуры), в значительной степени полагаются на промышленную мощь Linux.

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

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

Эта серия будет полностью практической, и вы должны будете следить за ней на своей машине. Мы структурировали пост таким образом, чтобы он был подробно описан, но не был слишком утомительным для новичков. Рассматривайте эту серию как эквивалент «Linux для чайников», с той лишь разницей, что вместо того, чтобы вбрасывать все знания сразу. Мы разделим на более мелкие значимые части. В отличие от большинства публикаций, которые мы публикуем, я бы посоветовал вам подготовиться к некоторой работе (в конце концов, лучший способ изучить Linux — это запачкать руки его нюансами). Прежде чем мы даже начнем все это, позвольте мне дать вам небольшое руководство по Linux и прояснить некоторые неправильные представления о том, чем Linux полностью отличается от Unix. Обещаю, это не продлится долго.

Основы Linux: чем он отличается от Unix?

1. начало

  • Юникс: Unix была создана в 1969 году в Bell Labs. Одним из самых известных членов-основателей был Деннис Ричи. Он был написан на C и был разработан как портативная операционная система, способная выполнять несколько задач одновременно.
  • Linux: Linux был построен Linux Torvalds и в значительной степени вдохновлен MINIX (Unix-подобный дистрибутив). Он многое унаследовал от Unix, но это совершенно другая система как внутри, так и снаружи. Исходное ядро ​​было выпущено в 1991 году, и после добавления таких вещей, как драйверы и графический интерфейс, а также некоторой столь необходимой доработки, полноценная ОС была выпущена в 1992 году.

2. развитие

  • Юникс: Unix не обязательно является проектом с полностью открытым исходным кодом. Части этого есть, но по своему духу это проприетарная система. Существует несколько версий Unix, таких как BSD, macOS и т. Д. Первоначальная разработка выполняется AT&T и несколькими другими коммерческими поставщиками.
  • Linux: В отличие от Unix, Linux процветает в экосистеме с открытым исходным кодом. Весь проект активно финансируется и контролируется Linux Foundation. Разработка по-прежнему контролируется Линусом, который решает вопрос о новом дополнении. Но практически любой человек с опытом программирования может бесплатно загрузить исходный код и внести изменения.

3. архитектура

  • Юникс: Unix был разработан для использования на Системы RISC и иранские машины, но позже он был портирован для работы на архитектурах x86 и x64.
  • Linux: Linux изначально создавался для архитектуры Intel x86, но на сегодняшний день он поддерживает почти все основные платформы, включая ARM, ARM64 и т. Д., Благодаря активному сообществу разработчиков.

4. Интерфейс командной строки

  • Юникс: Начал с поддержки Борн Шелл. Теперь также поддерживает Korn и C Shell.
  • Linux: Linux в основном использовал BASH (Bourne Again Shell).

5. Цена

  • Юникс: Некоторые дистрибутивы бесплатны с платной поддержкой (например, Solaris); другие полностью оплачены.
  • Linux: По большей части бесплатные (не считая корпоративных версий с приоритетной поддержкой и т. Д.).

Хорошо, теперь, когда мы выяснили, что такое Linux и чем он отличается от Unix. Давай запачкаем руки, не так ли?

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

Чтобы узнать, как использовать Linux, вы должны сначала запустить Linux в вашей системе. Есть несколько способов сделать это, некоторые из них могут использовать Live USB и загружаться на него, устанавливать его физически на вашем компьютере, создавать мультизагрузочную систему с двумя операционными системами, устанавливать ее на виртуальную машину (Virtual Machine), а также аренду Linux-сервера и подключения к нему SSH. Я уверен, что эксперты расширили бы этот список еще несколькими вариантами, но для краткости давайте остановимся на вышеизложенном. Хотя конечным результатом использования всех вышеперечисленных настроек будет получение доступа к консоли для выполнения команд Linux, шаги для этого зависят от каждого из них по количеству и сложности.

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

Мое единственное предположение, которое я буду продвигаться вперед, будет следующее.

  • У вас есть приличный компьютер (4-8 ГБ ОЗУ, относительно недавний процессор, такой как Intel Core i3 как минимум, как минимум 30 ГБ свободного места на SSD / HDD).
  • Вы подключены к приличному интернет-соединению (вам понадобится это, чтобы загрузить пару вещей).
  • Вы знаете базовые вещи, такие как установка прикладной программы в Windows или macOS (в зависимости от того, что вы используете).

Если вы можете отметить все вышеперечисленное, вы определенно в лиге. Хорошо, для начала нам понадобится пара вещей (в буквальном смысле).

  • Дистрибутив Linux (здесь мы будем использовать Ubuntu).
  • Гипервизор (приложение, которое позволяет нам установить дополнительную ОС поверх нашей основной ОС), мы будем использовать Virtual Box.

Отлично, теперь, когда все формальности позади, приступим к интересным вещам!

Шаг 1: Зайдем Веб-сайт Ubuntu и загрузите Ubuntu 16.04.x ​​LTS (мы используем это только для стабильности, так что вы не получите ненужных ошибок по пути).

Скачать Ubuntu

Как только вы закончите загрузку, у вас должен быть .iso файл в вашей системе. Вот как бы это выглядело.

Скриншот ISO

Шаг 2: Теперь отправляйтесь в Страница загрузок VirtualBox и скачать Пакет платформы VirtualBox 5.x в зависимости от того, какую ОС вы используете в настоящее время. Например, если вы используете Windows, получите первую, в которой написано Хосты Windows.

Скачать VirtualBox

Шаг 3: Теперь, когда у вас есть оба необходимых файла, просто установите VirtualBox. Просто дважды нажмите на .exe or .dmg файл, который был загружен, и следуйте инструкциям на экране. Убедитесь, что вы не делаете там ничего особенного, просто принять значения по умолчанию и завершите установку.

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

Экран VirtualBox

Шаг 4: Теперь мы продолжим и начнем установку Ubuntu через VirtualBox. Нажмите Новинки в верхнем левом углу окна VirtualBox. Вы получите диалоговое окно с просьбой назвать операционную систему. Введите Ubuntu в Имя, выберите Тип as Linux и Версия as Ubuntu (64-разрядная) и нажмите Продолжить (более новые версии Virtual Box будут автоматически заполнять поля Тип и Версия в зависимости от того, что вы ввели в поле Имя).

Новая ОС

Шаг 5: Теперь вас попросят указать объем оперативной памяти, который будет использовать эта гостевая ОС (Ubuntu); по умолчанию — 1 ГБ, что достаточно, поэтому оставьте его там и нажмите Продолжить.

Параметры памяти

Шаг 6: Здесь вам нужно указать жесткий диск, который будет использоваться операционной системой. Часто люди загружают предварительно сконфигурированные установки своих экземпляров виртуальных ящиков в форме чего-то известного как техника. Бытовая техника работает по принципу «включай и работай».

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

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

Тип жесткого диска

Шаг 7: Здесь укажите тип как ВДИ, который должен быть параметром по умолчанию, и нажмите Продолжить.

Шаг 8: Теперь выберите размер. Рекомендуется иметь динамически распределяется drive, потому что он масштабируется в соответствии с вашими потребностями по сравнению с опцией фиксированного размера, которая назначит всю сумму сразу, независимо от того, нужна она вам или нет.

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

Выбор ISO

Теперь, когда мы закончили настройку, давайте включим нашу машину. Выберите Ubuntu из списка слева и нажмите Start в строке меню окна VirtualBox. Сразу же появится диалоговое окно с просьбой вставить образ для загрузки Ubuntu. Здесь и понадобится образ Ubuntu, который мы скачали ранее. Нажать на кнопка папки (показано на изображении ниже) в диалоговом окне, перейдите и выберите образ Ubuntu и нажмите «Открыть». Как только изображение появится в раскрывающемся списке, нажмите «Пуск».

Выберите ISO с компьютера

Через пару секунд вы увидите варианты установки Ubuntu, как показано ниже. Мы можем идти вперед и «Попробуйте Ubuntu» без установки и установки. Сделаем последнее и нажмем на Установите Ubuntu.

Установщик Ubuntu
Подготовьте Ubuntu

Мы снова примем значения по умолчанию и продолжим. Снимите флажки для загрузки обновлений при установке параметров и параметров «Установить стороннее программное обеспечение» и нажмите «Продолжить». Затем проверьте Стереть диск и установить Ubuntu вариант и нажмите установить сейчас.

Появится диалоговое окно с просьбой подтвердить процесс стирания, нажмите Продолжить.

Стереть диск

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

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

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

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

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

Запустите терминал в Ubuntu следующим образом:

После запуска он должен выглядеть так.

Терминал

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

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

  • Дата и время
  • Навигация по файловой системе
  • Создание каталогов / папок и их удаление
  • Создание и удаление файлов
  • Поиск помощи

Но прежде чем пройти через это, давайте проведем церемониальный тест «Hello World» для нашего терминала, не так ли? Хорошо, а затем введите следующую команду в терминал.

эхо "Hello World"

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

Привет мир

1. Дата и время

Начнем с очень простой команды, которая проверяет дату и время через терминал. Эта команда с метко названной датой отображает дату и текущее время в 24-часовом формате вместе с вашим часовым поясом. Пожалуйста, введите следующее в свой терминал, чтобы убедиться в этом сами.

данные
Время

2. Навигация по файловой системе

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

  • PWD — Прежде чем мы начнем прыгать из одной папки в другую, давайте узнаем, как узнать, в какой папке мы сейчас находимся. Вы можете сделать это с помощью PWD команда. Это означает Pечать Working Dкаталог. Просто введите следующую команду и проверьте результат.
PWD
PWD
  • ls — Команда ls в основном используется для вывода списка всего содержимого, то есть файлов и папок в данном каталоге. Просто введите следующее в свой терминал, и он перечислит все, что есть в вашем текущем каталоге.
ls
ls

По умолчанию ls перечисляет только имена файлов, чтобы получить подробную информацию о каждом файле, который вы можете использовать -l вариант вместе с ls следующим образом.

ls -l
ls -l

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

  • cd — Теперь, когда мы знакомы с тем, как составлять список файлов и проверять текущий каталог, давайте рассмотрим, как переключаться между каталогами. Команда cd означает «Изменить каталог» и используется следующим образом. Если вы находитесь внутри каталога и в нем больше каталогов, вы можете перейти в подкаталог следующим образом.
компакт-диск NAME_OF_DIRECTORY

Замените NAME_OF_DIRECTORY в приведенной выше команде с именем каталога, в который вы хотите перейти. Пример показан ниже.

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

cd

Теперь, когда мы в каталоге, как нам выйти? Что ж, вы снова можете использовать опцию вместе с cd, чтобы выйти из подкаталога в родительский каталог. В моем примере я нахожусь в ~ / iOSProjects / 100DaysOfSwift , чтобы вернуться к ~ / iOSProjects Я буду использовать следующую команду.

CD ..

Это поднимет меня на 1 уровень. Теперь я в ~ / iOSProjects каталог, как показано ниже.

CD ..

Если бы я хотел уйти от ~ / iOSProjects / 100DaysOfSwift вплоть до корня, то есть ~ , команда cd будет иметь следующую структуру.

CD ../ ..

Уровни вложенности каталогов будут определять количество ../ .. в ваших вариантах.

3. Создание и удаление папок / каталогов

CD../..

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

  • mkdir — Команда mkdir расшифровывается как Make Directory и довольно проста в использовании. Просто введите его следующим образом.
mkdir ИМЯ_OF_DIRECTORY
Команда mkdir

Заменить NAME_OF_DIRECTORY с именем, которое вы хотите дать своему новому каталогу. После этого вы можете успешно перейти к нему, как показано ниже.

  • rmdir — Команда rmdir означает «Удалить каталог» и используется для удаления каталогов / удаления каталогов. Чтобы удалить каталог, вам необходимо находиться вне его / на уровне выше него. Как только вы вне каталога и что каталог пуст, просто введите следующую команду.
rmdir NAME_OF_DIRECTORY

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

Команда rmdir

4. Создание и удаление файлов.

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

  • трогать — Хотя официальная цель использования сенсорного экрана — изменить время доступа к файлу и его модификации, его также можно использовать для создания нового файла. Он используется следующим образом.
нажмите FILENAME.EXTENSION

Заменить ИМЯ ФАЙЛА и РАСПРОСТРАНЕНИЕ с теми, кого вы хотите. Пример использования показан ниже. Если ваш терминал выполняет команду без сообщения, скорее всего, команда была успешной, и вы можете проверить, что файл был создан с помощью ls команда.

Сенсорная команда

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

  • rm — Команда rm означает «Удалить», и она выполняет то, что следует из названия, она используется для удаления файлов и каталогов. Он используется следующим образом.
rm ИМЯ ФАЙЛА.РАСШИРЕНИЕ

Заменить ИМЯ ФАЙЛА и РАСПРОСТРАНЕНИЕ с теми, кого вы хотите.

ЗАМЕТКА: Команда rm необратима, поэтому всегда проверяйте, удаляете ли вы нужные файлы. Более безопасный способ сделать это — использовать команду rm вместе с -i вариант; при этом терминал попросит вас подтвердить, хотите ли вы удалить файл или нет. Он используется следующим образом.

rm -i ИМЯ ФАЙЛА.РАСШИРЕНИЕ
rm Команда

Мы создали файл и тоже удалили его, но как насчет редактирования файлов? Как добавлять и удалять данные? Что ж, как бы вы ни были взволнованы этими аспектами, поверьте мне, когда я это говорю, это слишком сложно и гладко, чтобы вас ошеломить, если вы начинаете. Здесь мы делаем минимальные, и по мере того, как мы продвигаемся каждую неделю, такие вещи, как редактирование файлов из терминала в сообщения. А пока идем дальше.

5. Обращение за помощью

Хорошо! Итак, мы проделали кучу вещей на терминале. Что делать, если вы забыли, какие параметры следует использовать с командой или что делает команда? Конечно, вы можете погуглить, но есть способ получше, когда вам даже не придется выходить из терминала.

В Linux есть команда man, что означает «Страницы руководства». Он используется для получения документации по конкретной команде, если вы не уверены в команде, выполните следующие действия.

человек COMMAND_NAME

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

справочная страница

Заключение

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

Раскрытие информации: Контент, опубликованный на TechLila, поддерживается читателями. Мы можем получать комиссию за покупки, совершенные по нашим партнерским ссылкам, без каких-либо дополнительных затрат для вас. Читайте наши Страница отказа от ответственности чтобы узнать больше о нашем финансировании, редакционной политике и способах поддержки.

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

Эта техническая статья познакомит вас с последними деталями Linux. Так зачем ждать? Давайте окунемся в мир Linux.

Содержание

  1. Что такое Linux?
  2. Ядро Linux
  3. Системные библиотеки Linux
  4. Системные инструменты
  5. Инструменты разработки для Linux
  6. Инструменты для конечного пользователя
  7. Как работает Linux
  8. Как использовать Linux
  9. Преимущества Linux
  10. Linux для вас?
  11. Вывод

Что такое Linux?

Linux — это ядро ​​или операционная система с открытым исходным кодом, распространяемая вместе с дистрибутивами Linux.

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

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

Набор программного обеспечения создает операционную систему

Ядро Linux

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

Управление устройствами

Компьютер состоит из различных устройств, таких как ЦП, звуковые карты, модуль памяти, графические карты и т.д. Ядро Linux хранит информацию обо всех этих устройствах. Итак, если вы хотите узнать, какое устройство предназначено для какой функции и как вы можете манипулировать этим устройством, чтобы получить наилучшие результаты, вы можете проверить все это внутри ядра.

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

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

Когда дело доходит до управления процессами, ядро ​​отдает приоритет процессам до того, как ЦП обработает другие процессы. И ядро ​​отводит им достаточно времени. Ядро Linux также обрабатывает данные о владении и безопасности.

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

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

Управление системными вызовами

Ядро Linux управляет системными вызовами. Программист Linux либо пишет запросы, либо просит ядро ​​Linux выполнить определенную задачу.

Системные библиотеки Linux

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

Каждое ядро ​​имеет уникальный набор системных вызовов. Существует стандартная библиотека процедур, которая устанавливает связь с ядром Linux. Любая операционная система должна поддерживать эти стандарты. Затем эти стандарты переносятся в системные вызовы соответствующей ОС.

Библиотека Glibc или GNU C — самая распространенная системная библиотека для Linux. Другие системные библиотеки Linux включают libcurl, libc, libcrypt и т. Д.

Системные инструменты

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

Инструменты разработки для Linux

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

Инструменты для конечного пользователя

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

Как работает Linux

Работа Linux очень похожа на UNIX. Linux поддерживает широкий спектр аппаратных устройств, таких как телефоны, ноутбуки, суперкомпьютеры, планшеты.

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

Как использовать Linux

Вы можете использовать Linux либо с интерактивным пользовательским интерфейсом, либо с самого терминала. Итак, что насчет терминала Linux? Терминал — это интерфейс командной строки. Чтобы использовать терминал, нажмите CTRL + ALT + T. Чтобы изучить его функциональность, используйте кнопку приложения на рабочем столе, расположенную в нижнем левом углу.

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

Преимущества Linux

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

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

Свободный и открытый исходный код

Linux — это бесплатная операционная система. И он принадлежит к категории open-source. В open-source исходный код поставляется с скомпилированной версией. Вы можете изменить его как хотите. Linux как операционная система дает вам свободу изменения кода, свободу запуска программы и свободу распространения ее копий.

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

Поддерживает параметры безопасности

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

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

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

Идеально для разработчиков

Linux идеален для разработчиков. Он поддерживает большинство полезных языков программирования, таких как Java, Python, C / C ++, Ruby и другие. Кроме того, Linux поддерживает широкий спектр приложений для разработчиков. Терминал Linux идеально подходит для программирования.

Менеджер пакетов Linux помогает программистам понять, как что делать. Bash Scripting — еще одна жизненно важная функциональная возможность, используемая программистами, пользователями, энтузиастами программирования и разработчиками. Поддержка SSH также эффективно управляет серверами.

Подходит для серверных сред

Linux — хороший выбор для системных администраторов. У Linux есть стабильность и надежность. Следовательно, серверные среды обычно основаны на бесплатном программном обеспечении Linux. Технологические гиганты, такие как Amazon, Google и Facebook, используют Linux на своих серверах. Сервер Linux мог работать без перезагрузки в течение многих лет.

Linux гибок

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

Он находит широкое применение в ПК, ноутбуках, телефонах и планшетах. Кроме того, он предоставляет простые варианты настройки.

Идеально для новичков

Если вы новичок, вы должны попробовать Linux. Обладая некоторыми знаниями в области программирования, любой может изменить его. Linux предоставляет на выбор миллионы приложений, программного обеспечения и программ. Для новичков рекомендуются следующие дистрибутивы Linux: Ubuntu, Elementary OS, Pop! _OS, Peppermint OS, Linux Mint, Linux Lite и т.д.

Linux для вас?

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

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

Вывод

Эта статья представляет собой руководство по Linux для новичков. Из этой статьи вы узнали, что такое Linux, его компоненты, преимущества использования Linux, инструменты в Linux и, наконец, подходит ли Linux для вас. Я попытался подробно объяснить каждый из них, чтобы помочь вам лучше понять Linux.

Я надеюсь, что эта статья представляет собой информативное руководство по Linux.

В этой статье представлено руководство для начинающих специалистов, которые хотят глубже разобраться во всех нюансах работы на 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.

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

Понравилась статья? Поделить с друзьями:
  • От чего мазь индометацин софарма применение инструкция по применению
  • Camelion bnd 50 sg50 инструкция по эксплуатации
  • Руководство октябрьской дирекции управления движением
  • Мануалы для рено бесплатно
  • Как получить загранпаспорт в казани через госуслуги пошаговая инструкция