Процесс загрузки Linux
Диаграмма ниже показывает этапы:
Шаг 1 - Когда мы включаем питание, загружается прошивка BIOS (Basic Input/Output System) или UEFI (Unified Extensible Firmware Interface) из энергонезависимой памяти и выполняет POST (Power On Self Test).
Шаг 2 - BIOS/UEFI обнаруживает устройства, подключенные к системе, включая процессор, оперативную память и устройства хранения данных.
Шаг 3 - Выбирается устройство для загрузки операционной системы. Это может быть жесткий диск, сетевой сервер или CD-ROM.
Шаг 4 - BIOS/UEFI запускает загрузчик (GRUB), который предоставляет меню для выбора операционной системы или функций ядра.
Шаг 5 - После подготовки ядра происходит переход в пользовательское пространство. Ядро запускает systemd как первый процесс в пользовательском пространстве, который управляет процессами и службами, проверяет оставшееся оборудование, монтирует файловые системы и запускает рабочую среду.
Шаг 6 - systemd по умолчанию активирует target unit при загрузке системы. Также выполняются другие анализирующие модули.
Шаг 7 - Система выполняет набор скриптов для настройки среды.
Шаг 8 - Пользователям отображается окно входа в систему. Система готова к работе.
Диаграмма ниже показывает этапы:
Шаг 1 - Когда мы включаем питание, загружается прошивка BIOS (Basic Input/Output System) или UEFI (Unified Extensible Firmware Interface) из энергонезависимой памяти и выполняет POST (Power On Self Test).
Шаг 2 - BIOS/UEFI обнаруживает устройства, подключенные к системе, включая процессор, оперативную память и устройства хранения данных.
Шаг 3 - Выбирается устройство для загрузки операционной системы. Это может быть жесткий диск, сетевой сервер или CD-ROM.
Шаг 4 - BIOS/UEFI запускает загрузчик (GRUB), который предоставляет меню для выбора операционной системы или функций ядра.
Шаг 5 - После подготовки ядра происходит переход в пользовательское пространство. Ядро запускает systemd как первый процесс в пользовательском пространстве, который управляет процессами и службами, проверяет оставшееся оборудование, монтирует файловые системы и запускает рабочую среду.
Шаг 6 - systemd по умолчанию активирует target unit при загрузке системы. Также выполняются другие анализирующие модули.
Шаг 7 - Система выполняет набор скриптов для настройки среды.
Шаг 8 - Пользователям отображается окно входа в систему. Система готова к работе.
❤3
Шпаргалка по nftables
nftables - это инструменту для фильтрации пакетов в Linux, пришедшему на смену iptables.
1. Запуск
2. Добавление правил
- Принять пакеты от локального хоста:
- Блокировать входящий трафик на порт 80:
- Разрешить весь исходящий трафик:
3. Удаление
4. Сохранение и загрузка конфигурации
5. Создание логирования
🔵 Типы объектов
1. Таблицы (tables) – В nftables таблицы служат для организации правил. Каждая таблица привязывается к семейству (например, ip, ip6).
2. Цепочки (chains) – Цепочки представляют собой наборы правил. Основные встроенные цепочки:
3. Правила (rules) – Условия и действия, выполняемые на пакетах, такие как
🔵 Основные операторы
- accept – Разрешить пакет.
- drop – Заблокировать пакет.
- reject – Отклонить с ответом.
- log – Вести лог пакетов.
🔵 Примеры сложных правил
1. Ограничение скорости (rate limiting):
2. Использование сетов для IP-адресов:
3. Redirect на другой порт:
- Используйте
- Включайте логирование при тестировании правил для отладки (
- nftables имеет более гибкий синтаксис, чем iptables, и поддерживает более сложные условия и комбинации.
nftables - это инструменту для фильтрации пакетов в Linux, пришедшему на смену iptables.
1. Запуск
nft list ruleset # Показать все правила
nft add table ip filter # Создать таблицу filter для IPv4
nft add chain ip filter input # Создать цепочку input в таблице filter
2. Добавление правил
- Принять пакеты от локального хоста:
nft add rule ip filter input ip saddr 127.0.0.1 accept
- Блокировать входящий трафик на порт 80:
nft add rule ip filter input tcp dport 80 drop
- Разрешить весь исходящий трафик:
nft add rule ip filter output accept
3. Удаление
nft delete rule ip filter input handle <номер> # Удалить правило по handle
nft delete chain ip filter input # Удалить цепочку input
nft delete table ip filter # Удалить таблицу filter
4. Сохранение и загрузка конфигурации
nft list ruleset > /etc/nftables.conf # Сохранить правила
nft -f /etc/nftables.conf # Загрузить правила из файла
5. Создание логирования
nft add rule ip filter input log prefix "IN: " level debug
1. Таблицы (tables) – В nftables таблицы служат для организации правил. Каждая таблица привязывается к семейству (например, ip, ip6).
2. Цепочки (chains) – Цепочки представляют собой наборы правил. Основные встроенные цепочки:
input
, output
, forward
.3. Правила (rules) – Условия и действия, выполняемые на пакетах, такие как
accept
, drop
, reject
, log
.- accept – Разрешить пакет.
- drop – Заблокировать пакет.
- reject – Отклонить с ответом.
- log – Вести лог пакетов.
1. Ограничение скорости (rate limiting):
nft add rule ip filter input limit rate 5/second accept
2. Использование сетов для IP-адресов:
nft add set ip filter blacklist { type ipv4_addr; }
nft add rule ip filter input ip saddr @blacklist drop
nft add element ip filter blacklist { 192.168.1.1, 10.0.0.0/8 }
3. Redirect на другой порт:
nft add rule ip nat prerouting tcp dport 80 redirect to 8080
- Используйте
nft monitor
для слежения за изменениями правил в реальном времени.- Включайте логирование при тестировании правил для отладки (
log prefix "TEST: "
).- nftables имеет более гибкий синтаксис, чем iptables, и поддерживает более сложные условия и комбинации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
Shell скрипт для управления Linux- пользователями
Функциональные возможности
Создание пользователей
Просмотр списка существующих пользователей
Сброс пароля для существующих пользователей
Блокировка / Разблокировка пользовтеля
Просмотр всех заблокированных пользователей
Создание резервной копии домашнего каталога пользователя
Генерирование SSH ключей для пользователя
Повышение пользователя до админа и обратно
Удаление пользователя
Запись всех действий в журнал actions.log
Резервные копии
Скрипт создает каталог резервных копий в папке скрипта и создает архив tar.gz с именем, содержащим - имя пользователя и текущую дату
Генерация SSH ключа
Для генерации используется ssh-keygen, в результате будут отображены сведения о том, куда был сохранен ключ и отображено содержимое публичного ключа:
https://github.com/m0zgen/user-manager
Функциональные возможности
Создание пользователей
Просмотр списка существующих пользователей
Сброс пароля для существующих пользователей
Блокировка / Разблокировка пользовтеля
Просмотр всех заблокированных пользователей
Создание резервной копии домашнего каталога пользователя
Генерирование SSH ключей для пользователя
Повышение пользователя до админа и обратно
Удаление пользователя
Запись всех действий в журнал actions.log
Резервные копии
Скрипт создает каталог резервных копий в папке скрипта и создает архив tar.gz с именем, содержащим - имя пользователя и текущую дату
Генерация SSH ключа
Для генерации используется ssh-keygen, в результате будут отображены сведения о том, куда был сохранен ключ и отображено содержимое публичного ключа:
https://github.com/m0zgen/user-manager
GitHub
GitHub - m0zgen/user-manager: ⚙ Linux script for user management
⚙ Linux script for user management. Contribute to m0zgen/user-manager development by creating an account on GitHub.
👍3❤2
📁 Работа с файлами и каталогами в Linux
В этом руководстве для начинающих пользователей мы ознакомимся с основными командами для работы с файлами и каталогами (иногда их еще называют директориями) в Linux-системах.
https://telegra.ph/Rabota-s-fajlami-i-katalogami-v-Linux-09-19
В этом руководстве для начинающих пользователей мы ознакомимся с основными командами для работы с файлами и каталогами (иногда их еще называют директориями) в Linux-системах.
https://telegra.ph/Rabota-s-fajlami-i-katalogami-v-Linux-09-19
❤2👍2
Объединение команд - последовательное и параллельное выполнение в bash
Символы групповых операций
Мы уже изучили достаточно команд и наверняка возникал вопрос как применить данные команды сразу к группе файлов. Например, за раз скопировать несколько файлов в каталог или наоборот удалить ненужные файлы. Делать одну и ту же операцию один за другим довольно утомительное и ненужное занятие.
Поэтому в Linux имеются специальные символы, которые позволяют проводить данные операции над несколькими файлами.
https://telegra.ph/Obedinenie-komand---posledovatelnoe-i-parallelnoe-vypolnenie-v-bash-10-12
Символы групповых операций
Мы уже изучили достаточно команд и наверняка возникал вопрос как применить данные команды сразу к группе файлов. Например, за раз скопировать несколько файлов в каталог или наоборот удалить ненужные файлы. Делать одну и ту же операцию один за другим довольно утомительное и ненужное занятие.
Поэтому в Linux имеются специальные символы, которые позволяют проводить данные операции над несколькими файлами.
https://telegra.ph/Obedinenie-komand---posledovatelnoe-i-parallelnoe-vypolnenie-v-bash-10-12
❤3👍2
API-аналитик трафика для Kubernetes, обеспечивающий видимость на уровне протоколов K8s в реальном времени, захватывающий и отслеживающий весь трафик и полезную нагрузку, проходящие в, из и между контейнерами, подами, узлами и кластерами. Вдохновленный Wireshark, специально разработан для Kubernetes.
👍2❤1
Выводим список установленных пакетов в Linux по дате
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
🔥3👍1
Продвинутая работа с логами в Linux
journalctl - Работа со структурированными логами
Журнал событий, это компонент systemd, который захватывает сообщения Syslog, логи ядра, все события при инициализации системы (RAM, диск, boot, STDOUT/STDERR для всех сервисов), индексирует их и затем предоставляет удобной пользовательский интерфейс для поиска и фильтрации логов. Журнал (systemd journal) можно использовать вместе или вместо syslog или syslog-ng.
Утилита командной строки journalctl, если сравнивать ее с традиционным инструментами для работы с логами в UNIX (tail, grep, sed, awk) более широкие возможности.
Давайте рассмотрим основные возможности которые предоставляет журнал systemd и способы их применения.
https://habr.com/ru/articles/749714/
journalctl - Работа со структурированными логами
Журнал событий, это компонент systemd, который захватывает сообщения Syslog, логи ядра, все события при инициализации системы (RAM, диск, boot, STDOUT/STDERR для всех сервисов), индексирует их и затем предоставляет удобной пользовательский интерфейс для поиска и фильтрации логов. Журнал (systemd journal) можно использовать вместе или вместо syslog или syslog-ng.
Утилита командной строки journalctl, если сравнивать ее с традиционным инструментами для работы с логами в UNIX (tail, grep, sed, awk) более широкие возможности.
Давайте рассмотрим основные возможности которые предоставляет журнал systemd и способы их применения.
https://habr.com/ru/articles/749714/
❤2
Запуск Windows-контейнеров под Linux и MacOS
Если на компьютере под Linux нужно быстренько запустить Windows или MacOS, самый простой и быстрый способ сделать это — ввести команду для скачивания и загрузки докер-контейнера с этой ОС.
В маркетплейсе RuVDS много готовых образов с установленными операционными системами. Там разные дистрибутивы Linux, Windows Server и CentOS. Но нет контейнеров с операционными системами.
Операционная система в докер-контейнере (в QEMU) не требует ручной инсталляции ОС. Всего одна команда в консоли — и контейнер Windows скачивается и запускается.
https://habr.com/ru/companies/ruvds/articles/901004/
Если на компьютере под Linux нужно быстренько запустить Windows или MacOS, самый простой и быстрый способ сделать это — ввести команду для скачивания и загрузки докер-контейнера с этой ОС.
В маркетплейсе RuVDS много готовых образов с установленными операционными системами. Там разные дистрибутивы Linux, Windows Server и CentOS. Но нет контейнеров с операционными системами.
Операционная система в докер-контейнере (в QEMU) не требует ручной инсталляции ОС. Всего одна команда в консоли — и контейнер Windows скачивается и запускается.
https://habr.com/ru/companies/ruvds/articles/901004/
👍2
Шпаргалка по RAID
Информация о RAID
Сборка RAID
при получении ответа mdadm: Unrecognised md component device -
* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Создание файловой системы и монтирование массива
nano /etc/fstab, прописать
Восстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
Статус должен стать Rebuild Status : 40% complete и так до полного восстановления
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
Запасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
Добавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
Удаление массива
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
* где
Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm
— утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.Информация о RAID
cat /proc/mdstat
- состояние всех RAIDmdadm -D /dev/md0
- подробная инфа о конкретном RAIDlsblk
- список дисков с разделами, местом, типомdf -hT
- свободное место, тип файловой системы, точки монтированияСборка RAID
mdadm —zero-superblock —force /dev/sd{b,c}
- обнуление суперблоков на дисках sdb sdc (для удаления инфы о других RAID)при получении ответа mdadm: Unrecognised md component device -
/dev/sdb
значит, что диск не использовался для RAID, продолжаемmdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}
* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Создание файловой системы и монтирование массива
mkfs.ext4 /dev/md0
- создание файловой системы ext4 на md0mount /dev/md0 /mnt
- разово примонтировать md0 к /mnt
nano /etc/fstab, прописать
/dev/md0 /mnt ext4 defaults 1 2
- постоянное монтирование, работает после перезагрузкиВосстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
mdadm /dev/md0 —remove /dev/sdc
- удалить сбойный дискmdadm /dev/md0 —add /dev/sde
- добавить новый диск в массивСтатус должен стать Rebuild Status : 40% complete и так до полного восстановления
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
mdadm —assemble —scan
- команда сама найдет необходимую конфигурацию и восстановит RAID.mdadm —assemble /dev/md0 /dev/sdb /dev/sdc
- с указанием из каких дисков пересобратьЗапасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
mdadm /dev/md0 —add /dev/sdd
- Диском Hot Spare станет тот, который просто будет добавлен к массивуДобавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
mdadm /dev/md0 —add /dev/sde
mdadm -G /dev/md0 —raid-devices=3
- расширяем RAID* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
apt-get install mdadm
Удаление массива
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
umount /mnt
* где
/mnt
— каталог монтирования нашего RAID.mdadm -S /dev/md0
Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm —zero-superblock /dev/sdb
mdadm —zero-superblock /dev/sdc
mdadm —zero-superblock /dev/sdd
👍4❤1