Админские угодья
1.46K subscribers
462 photos
40 videos
223 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
🔥 Современный процесс загрузки Linux 🔥

Power On — Включение компьютера

1. Инициализация BIOS/UEFI
При включении компьютера загружается прошивка BIOS или UEFI из энергонезависимой памяти (NVRAM). Она отвечает за инициализацию оборудования, выполнение самотестирования (POST) и запуск процесса загрузки.

2. Поиск оборудования
BIOS/UEFI проверяет подключенные компоненты системы, такие как процессор, оперативная память, дисковые накопители и периферийные устройства.

3. Выбор загрузочного устройства (HDD, USB, PXE…)
После обнаружения оборудования BIOS/UEFI позволяет выбрать устройство, с которого будет загружена операционная система. Это может быть локальный диск, сеть или другой носитель.

4. Определение EFI-раздела (ESP)
Если используется UEFI, система определяет EFI System Partition (ESP) на загрузочном устройстве. Этот раздел содержит загрузочные файлы и другие важные данные для загрузки ОС.

5. Загрузка загрузчика (например, GRUB2)
BIOS/UEFI передает управление загрузчику, такому как GRUB (Grand Unified Bootloader). GRUB предоставляет меню выбора ОС или автоматически загружает установленный по умолчанию Linux.

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

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

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

9. Запуск Init/systemd (PID 1)
Ядро запускает инициализационную систему (init) или systemd, которая становится первым процессом в системе (PID 1). В современных дистрибутивах по умолчанию используется systemd, который управляет службами и процессами системы.

10. Выполнение стартовых скриптов
Init/systemd выполняет стартовые скрипты и инициализирует системные службы. Эти скрипты настраивают сеть, подключают файловые системы и выполняют другие важные задачи.

11. Готовая к работе система.
После завершения всех этапов загрузки система полностью загружена и готова к использованию. Вы можете войти в систему и запускать приложения, работать с файлами и выполнять другие задачи.
👍1
Шпаргалка по Tmux: установка, настройка, работа

Tmux (ти-макс) — это менеджер терминалов, который позволяет работать с несколькими сессиями в одном окне. То есть вместо нескольких открытых окон терминала — вы используете одно, которое можно делить на несколько окон.

Установка и настройка Tmux

Устанавливается Tmux из стандартных репозиториев Linux:
apt-get install tmux

После установки рекомендуем сразу отредактировать конфигурационный файл ти-макса (/etc/tmux.conf) и внести следующие изменения:
set -g mouse on

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


Работа с Tmux

Для работы с ти-миксом используется широкий набор горячих клавиш, состоящих из базового сочетания Ctrl + b и отдельных целевых клавиш (n,p,w,b и т.д.).

Работа с сессиями в Tmux
Для создания рабочей сессии без идентификатора — достаточно ввести tmux в терминале. Будет создана сессия 0:

Идентификатор сессии отображается внизу слева в квадратных скобках. Для создания именной сессии достаточно ввести следующую команду:
tmux new -s название сессии

Поскольку ти-макс завершает соединение с сохранением состояния сессии, правильным способом возобновить работу ти-макса будет его запуск командой:
tmux attach || tmux new

Команда запускает проверку уже созданных сессий и если активных подключений нет — создается новое подключение.
Просмотреть список созданных сессий можно командой:
tmux ls

Команда вернёт список следующего вида:
0: 1 windows (created Mon Aug 30 13:02:31 2021) (attached)

Если в списке одна сессия, то командой tmux attach она будет автоматически восстановлена, а если в списке несколько сессий — необходимо ввести следующую команду:
tmux attach -t наименование сессии

В нашем случае сессия называется 0.
Сменить сессию можно также, находясь в другой сессии. Для этого нужно воспользоваться сочетанием клавиш Ctrl + b, s.

Выйти из сессии можно с помощью сочетания клавиш Ctrl + b, d. А завершить сессию командой:
tmux kill-session -t название сессии

Закрыть все сессии можно командой:
tmux kill-server
👍31
📌Какая разница между командами GREP, AWK и SED

Команды grep, awk и sed – это мощные утилиты в Unix/Linux, которые используются для обработки и манипуляции текстом. Они имеют разные цели, хотя в некоторых случаях их можно использовать взаимозаменяемо.

1. grep – Поиск строк
- Используется для поиска строк, соответствующих заданному шаблону (обычно регулярному выражению).
- Выводит найденные строки или их части.
- Основная задача – фильтрация текста.

Примеры:

grep "error" log.txt # Найти строки, содержащие "error"
grep -i "warning" log.txt # Игнорировать регистр
grep -E "fail|error" log.txt # Использовать расширенные регулярные выражения (ERE)
grep -v "INFO" log.txt # Исключить строки, содержащие "INFO"




2. sed – Потоковый редактор
- Позволяет заменять, удалять, изменять текст на основе шаблонов.
- Работает построчно, но может также обрабатывать многострочные паттерны.
- Может использоваться для быстрого редактирования файлов.

Примеры:

sed 's/apple/orange/' file.txt # Заменить первое вхождение "apple" на "orange" в каждой строке
sed 's/error/ERROR/g' file.txt # Заменить все вхождения "error" на "ERROR"
sed '/DEBUG/d' file.txt # Удалить строки, содержащие "DEBUG"
sed -i 's/foo/bar/g' file.txt # Редактировать файл на месте (без создания копии)




3. awk – Анализ и обработка текста
- Используется для извлечения данных, обработки полей, манипуляции с текстом.
- Работает как мини-программа: может выполнять арифметические операции, фильтрацию и форматирование.
- Использует колонки (разделенные пробелами или другими разделителями) для обработки данных.

Примеры:

awk '{print $1, $3}' file.txt # Вывести 1-й и 3-й столбцы
awk -F ":" '{print $1}' /etc/passwd # Вывести имена пользователей (разделитель - двоеточие)
awk '$3 > 50 {print $1, $3}' file.txt # Вывести строки, где 3-й столбец > 50
awk '{sum+=$3} END {print "Sum:", sum}' file.txt # Подсчитать сумму 3-го столбца




Основные отличия между grep, sed и awk

grep: основное назначение - поиск строк по шаблону
grep: что делает лучше всего? - фильтрация строк по регулярным выражениям

sed: основное назначение - поиск и замена текста
sed: что делает лучше всего? - удаление, вставка строк в файле

awk: основное назначение - работа с колонками и данными
awk: что делает лучше всего? - анализ данных, извлечение полей, обработка значений

Когда использовать?
- Нужно просто найти строку в файле? → grep
- Нужно заменить или удалить текст? → sed
- Нужно обработать данные, работать с колонками? → awk

Каждая из этих утилит может быть использована совместно для более сложных задач, например:

grep "error" log.txt | awk '{print $2, $5}' | sed 's/:/-/'

(Ищем ошибки, берем 2-й и 5-й столбцы, заменяем : на `-`)
👍3
Static-get или портативные утилиты в Linux

Static-get — инструмент, с помощью которого можно скачать статически слинкованный бинарный файл нужной нам утилиты. Такой файл будет работать практически на любом дистрибутиве. В данный момент, в базе static-get доступно 930 пакетов и количество постепенно растёт.

Установка и использование.
Каких-то специфических шагов для установки делать не потребуется, но наличие wget (почему-то без него первый запуск скрипта не выполнялся корректно) и tar будет обязательным.


# dnf install git wget tar


Исполняемый файл static-get — это по сути скрипт, так что достаточно будет просто клонировать репозиторий с ним, и он уже будет готов к использованию.


# git clone https://github.com/minos-org/minos-static
# cd minos-static/
# ./static-get


Итак, с помощью скрипта мы можем: выполнить поиск нужной программы, скачать архив с ней, обновить её при необходимости, установить программу в систему и удалить её.

Скрипту так же можно передать некоторые параметры для работы — в каком репозитории искать пакеты, для какой архитектуры, какого формата они должны быть. Имеется возможность выполнить dry-run запуск или выполнить установку в verbose режиме. Несколько примеров работы ниже:

— Скачиваем и запускаем nano:


# ./static-get --extract nano
# ./nano/bin/nano --version
GNU nano, version 2.4.2
(C) 1999..2015 Free Software Foundation, Inc.
Email: [email protected] Web: https://www.nano-editor.org/
Compiled options: --disable-libmagic --disable-nls --disable-utf8



— Устанавливаем qemu в систему:


# ./static-get --install qemu
qemu-1.4.0-1.tar.xz
# /bin/qemu-io --version
qemu-io version 0.0.1


— Удаляем qemu:


# ./static-get --remove qemu
# /bin/qemu-io --version
-bash: /bin/qemu-io: No such file or directory


— Ищем gcc в репозитории:


# ./static-get --search gcc
gcc-4.6.1-2.tar.xz:672ba63bc0dd505104f22e4c3295c0e6


В своей работе static-get базируется на нескольких проектах — bifrost-autobuild, morpheus-autobuild, rlsd2-autobuild, misc-autosync. Бинарные файлы описываются в специальных рецетах (предпочтительны рецепты для bifrost), а после сборки архивы с пакетами публикуются в репозитории s.minos.io, откуда скриптом и выполняется установка.
2
📌 Шпаргалка по командам Docker
3
Проверка портов

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

nc: Netcat – простая утилита Unix, которая считывает и записывает данные через сетевые соединения, используя протокол TCP или UDP.
nmap: Nmap («Network Mapper») – это инструмент с открытым исходным кодом для исследования сети и аудита безопасности. Он был разработан для быстрого сканирования больших сетей.

telnet: Утилита telnet используется для интерактивного взаимодействия с другим хостом по протоколу TELNET.
netstat: Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения.

ss: Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux

lost: Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые.

https://telegra.ph/Proverka-portov-09-17
3
Подборка Linux утилит для системного администратора

Nezha - Легкий и элегантный аналог Zabbix
Plow - Этот инструмент был разработан для проведения нагрузочного тестирования HTTP
Hunt - Утилита для поиска файлов на локальном компьютере
AutoRegex - Регулярные выражения — это мощный инструмент для преобразования текстовых данных.
ContainerSSH - Утилита, которая позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры
Krunvm - Это инструмент, который позволяет создавать простые виртуальные машины на основе образов OCI.
Zellij - Это интересный мультиплексор, который может быть использован в качестве альтернативы tmux

https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
2
https://quickref.me - шпаргалка по разным утилитам для Linux и языкам программирования.
3
WebTTY: Доступ по SSH через браузер, даже там, где порт закрыт

Как мы с вами знаем, SSH — надежный и безопасный протокол для удаленного управления системами, который у многих является неотъемлемой частью работы. Однако, что делать, когда стандартные порты SSH заблокированы или закрыты, например, в строго защищенных корпоративных сетях или в облачных средах с жесткой политикой безопасности? Или что делать, если под рукой есть только браузер и нет возможности использовать обычный терминал? Или вам вживую нужно смотреть/управлять сессией?

Одним из таких решений является WebTTY — инструмент, который обеспечивает доступ к терминалу удаленного сервера через веб-браузер, используя технологию WebRTC и веб-технологии для создания безопасного и зашифрованного соединения. Это решение позволяет обойти ограничения, такие как заблокированные стандартные SSH-порты, и предоставляет простой и удобный способ взаимодействия с командной строкой сервера без необходимости открытия дополнительных портов, что особенно полезно в средах с жесткими сетевыми ограничениями или за фаерволами.

В этой статье мы рассмотрим, как WebTTY может быть использован для доступа к SSH-портам через браузер, даже если они закрыты, как его можно настроить и когда его можно использовать. Основана цель данного материала – познакомить вас с таким вариантом подключения и показать, как использовать данный инструмент. Надеюсь, что представленные примеры и объяснения помогут вам оценить его возможности и найти полезные применения в вашей практике.

https://habr.com/ru/articles/840352/
1👍1
Как изменить дату установки пароля пользователя в Active Directory

У учетной записи пользователя в ActiveDirectory есть два атрибута, в которых хранится последнее время смены пароля учетной записи. Это атрибуты pwdLastSet и PasswordLastSet.

Различаются они форматом записи. PasswordLastSet хранит данные в нормальном читабельном виде, а вот в pwdLastSet дата хранится в виде большого целого числа, которое представляет собой количество 100-наносекундных интервалов, прошедших с 12:00 полуночи, 1 января 1601 года нашей эры в формате UTC (Coordinated Universal Time).

https://telegra.ph/Kak-izmenit-datu-ustanovki-parolya-polzovatelya-v-Active-Directory-08-08
2
Совет по Linux 💡

Найдите все нерабочие символьные ссылки в вашей системе с помощью:


find . -xtype l
👍32
Краткое руководство по Load Balancing
1
Linux: делаем скриншот и отправляем его на электронную почту

Для успешной работы скрипта необходимо сначала установить: ssmtp(обязательно настроить), mpack и scrot


#!/usr/bin/env bash
# Важно! Для работы скрипта необходимо установить и настроить ssmtp, mpack и scrot
# путь к директории со скриншотами
dirpath=/home/$USER/screenshots
# проверяем наличие директории (если нет, то создаем). Делаем скриншот с названием по маске: ДД-ММ-ГГ_ЧЧ-ММ-СС.jpg
if [[ -d $dirpath ]]; then
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
else
mkdir -p "$dirpath"
scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
screenshot=$(find "$dirpath" -name "*.jpg")
fi
# отправляем письмо на почту
echo "Скриншот с сервера: $HOSTNAME" > $dirpath/message_body.txt
mpack -s "Скриншот" -d $dirpath/message_body.txt $screenshot [email protected]
# удаляем скриншот
rm -f $screenshot
2
Контроль оплаты домена через Zabbix

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

На сервере с Zabbix’ом установим Zabbix-агент. Он и будет у нас заниматься проверкой наших доменов.

https://telegra.ph/Kontrol-oplaty-domena-cherez-Zabbix-09-26
1