Linux Skill - Освой Linux c нуля до DevOps
11.3K subscribers
56 photos
100 videos
481 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
Media is too big
VIEW IN TELEGRAM
🔧 Забудь про Helper Scripts — настраиваем Proxmox вручную и понимаем каждый шаг

Привет, цифровой архитектор!
Устал от готовых скриптов, которые делают всё за тебя, но ты не понимаешь, что происходит? Этот свежий гайд Proxmox 8.3 — для тех, кто хочет разобраться в каждом шаге.

#Linux_youtube #proxmox #virtualization #homelab #linux #devops
👍9
🔧 20+ переменных Bash, которые ты точно не использовал

Привет, повелитель скриптов!

Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.

📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя

👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь

🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС

⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды

📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик

🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов

🔖 Сохрани шпаргалку — пригодится в каждом скрипте!

#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
👍8🔥3
Что делает эта команда?

$ apropos postfix


Не гугли — напиши в комментах 👇

#linux_вопрос #adduser
Media is too big
VIEW IN TELEGRAM
🔥 Ускоряем MikroTik: Как Bridge + NAT дает 20% прироста скорости

Привет, техноэнтузиаст!
Хочешь выжать максимум из своего "железа" и получить быструю сеть для дома или малого офиса? Этот гайд покажет, как настроить ключевые службы MikroTik с нуля, чтобы получить скорость и безопасность без лишней головной боли
🌐 Источник: Территория электроники

#Linux_youtube #MikroTik #Настройка #Сети #Bridge #NAT #Оптимизация
👍6👎2
🧠 Квиз: Проверь себя
Что является родоначальником всех процессов (PID 1) в современных дистрибутивах Linux (Debian, Fedora, Ubuntu)?

Не гугли — напиши в комментах 👇 #linux_вопрос
🧠 Квиз: Проверь себя
Какая команда позволяет быстро определить, какой именно юнит (служба) дольше всего замедляет запуск системы?

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

Не гугли — напиши в комментах 👇 #linux_вопрос
👀9👍2
🔑 Уязвимость: Почему добавление в группу Docker равносильно sudo su -

Привет, цифровой архитектор!

Ты, вероятно, сталкивался с советом, как избавиться от постоянного ввода sudo при работе с Docker. Решение простое: добавить своего пользователя в группу docker. Удобно? Да. Но это одна из самых критических ошибок безопасности в Linux!

В этом посте разберем, почему добавлять пользователя в группу docker равносильно вручению ему полных прав root на хост-машине.

📌 Ошибка: Запуск Docker без sudo

Для удобства многие инженеры выполняют всего одну команду:

# Не делай так, если не понимаешь рисков!
sudo usermod -aG docker $(whoami)


С этого момента любой член группы docker может выполнять команды Docker. Но проблема в том, что Docker-демон по умолчанию работает от имени root.

🚨 Почему это критическая уязвимость?

Если пользователь может управлять Docker-демоном без ограничений, он может запустить контейнер, который способен:

1. Смонтировать корневую файловую систему хост-машины (например, /) в контейнер.
2. Получить полный доступ к /etc/shadow (теневой файл паролей) и другим критическим системным файлам.
3. Выполнить любую команду от имени root на хосте.

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

💡 Вывод: Практика, которая ломает всё

Использование группы docker ломает фундаментальный принцип изоляции привилегий в Linux. Удобство не стоит безопасности.

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

#Docker #Security #Linux #SysAdmin #DevOps
👍22
Коллеги, вчера проводили учения по кибербезопасности. Сценарий провалился с треском. 95% сотрудников не открыли письмо «Вам повышают зарплату!», потому что сочли его нереалистичным. Горжусь вашим скептицизмом. Единственный, кто повёлся, — это гендир. Теперь он требует объяснить, почему это была учебная тревога, а не реальное предложение.
#linux_юмор #кибербезопасность
🔥21👍7
Media is too big
VIEW IN TELEGRAM
⚙️ Установка Ubuntu Server и CasaOS Пошаговое руководство

Привет, системный инженер!
Устал от сложной настройки базового Linux-сервера, когда тебе нужна простая и красивая панель управления? В этом гайде мы покажем, как быстро развернуть CasaOS на надежной базе Ubuntu Server для создания домашнего облака или мини-сервера с веб-интерфейсом.

🌐 Источник: https://www.youtube.com/watch?v=eTjIXKtSV94
#Linux #Ubuntu #Server #CasaOS #CLI #Sysadmin #Минигайд #DevOps
👍12🔥1👀1
🧠 Запусти аудит зарубежных IP за 1 секунду на своем VPS

Привет, техноэнтузиаст!

Купил свежий VPS, но не уверен, куда с нее можно дотянуться? Это частая боль: если сервер уже под гео-ограничениями, он бесполезен для работы с зарубежным софтом, GitLab CI или просто для проверки YouTube/TikTok.

Показывать, куда есть доступ, а куда нет, нужно быстро, без установки лишних пакетов. Китайские умельцы давно создали скрипт, который делает это одной командой. Он проверяет доступность YouTube, TikTok, ChatGPT, Gmail и другие сервисы, а также выдает информацию о гео IP адресе виртуалки.

📌 Bash-ванлайнер для аудита VPS
Этот скрипт скачивает и запускает проверку, выводя результат прямо в консоль. Важно: Запускать его нужно на свежеарендованной VPS.

# Скачать и запустить проверку доступности зарубежных сервисов (YouTube, TikTok, ChatGPT и др.)
curl -sL https://check.foreign.services.sh | bash


Как это работает:
1. curl -sL скачивает скрипт (содержит набор пингов и DNS-запросов к актуальным зарубежным IP).
2. | bash передает его сразу на выполнение в Bash. Результат выводится мгновенно.

💡 Вывод
Теперь ты за секунду знаешь, можно ли использовать эту VPS для работы с гео-зависимыми сервисами. Если проверка пройдена, можешь смело приступать к настройке.

#Linux #Bash #DevOps #VPS #CLI #Security
👍9
💡 Systemd обещает быструю загрузку, но твоя система тормозит?

Привет, цифровой архитектор! 👋

Классика: сам демон работает быстро, но вынужден ждать ленивые юниты, которые создают "критическую цепочку" задержек. Покажу, как быстро найти виновника и устранить проблему с помощью двух команд.

1. 🔍 Кто виноват: Анализ времени запуска

Команда systemd-analyze blame покажет точное время, которое каждый юнит потратил на запуск, сортируя их по убыванию.


# Выводит список юнитов, отсортированный по времени запуска
systemd-analyze blame

Назначение: Быстрый поиск юнитов, которые стартуют медленнее всего.

2. ⛓️ Поиск узкого места: Критическая цепочка

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


# Анализ цепочки зависимостей, которая замедляет запуск системы
systemd-analyze critical-chain

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

Частый пример: docker.service ждет поднятия сети (systemd-networkd-wait-online.service). Это бессмысленно, если у Docker нет жесткой зависимости от сети на старте.

3. 🛠️ Устраняем задержку через override

Чтобы «отвязать» Docker от медленной сети, используем правильный подход systemd — не трогаем оригинальный файл юнита, а создаем прокладку override.conf:


# Открыть редактор для создания override.conf
sudo systemctl edit docker.service

# В открывшийся файл вставьте:
[Unit]
After=network.target
Wants=network.target

Назначение: Переопределяем параметры After и Wants, чтобы Docker не ждал некритичные сетевые службы.

После этого не забудьте применить изменения:


# Применить изменения
sudo systemctl daemon-reload
sudo systemctl restart docker


Важно: Использование systemctl edit создает отдельный файл, который не будет перезаписан при обновлении пакета Docker.

💡 Вывод: Регулярное использование systemd-analyze позволяет держать под контролем стартовую производительность сервера и избегать фантомный задержек, которые съедают рабочее время.

#Linux #systemd #CLI #DevOps #Optimization
👍12🔥1
🚀 Systemd + Bash: Мониторинг зависшего PHP-FPM за 5 строк кода

Привет, повелитель терминала!

Твой php-fpm начал зависать в любой момент и перестал отвечать на запросы? Это происходит из-за исчерпания ресурсов или процессов, ушедших в непрерываемое ожидание.

Вместо ручного поиска и убийства PID, давай настроим автоматический скрипт, который решит эту проблему за тебя.

📌 Авто-чистка зависших FPM

Этот скрипт ищет дочерние процессы php-fpm в состоянии D и принудительно завершает их, чтобы твой пул восстановился, используя базовые принципы Bash-сценариев.

# Ищем процессы FPM, застрявшие в D-состоянии
STUCK_PIDS=$(ps -o pid=,state= -C php-fpm | grep D | awk '{print $1}')

if [ -n "$STUCK_PIDS" ]; then
# Найдено: принудительно убиваем зависшие процессы (SIGKILL)
# Используй kill -9 только в крайних случаях!
echo "$STUCK_PIDS" | xargs kill -9

# Перезапускаем сервис для гарантированного восстановления
systemctl restart php-fpm
fi


💡 Фишка: Ты можешь запускать этот скрипт через cron или systemd.timer, чтобы автоматизировать траблшутинг. Это гарантирует стабильность твоего сервиса.

#Linux #Bash #DevOps #автоматизация #мониторинг
👍3
Media is too big
VIEW IN TELEGRAM
🤖 Синхронизация каталогов: Ультимативный Bash-гайд для сисадмина

Эй, технарь! Готов автоматизировать рутину?

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

📃 Текстовая инструкция

#Linux #Bash #Автоматизация #rsync #Cron #CLI
👍8🔥2
🔥 Облегчи виртуализацию с Incus: простой старт

💻 Привет, мастер консолей и виртуализации!

🔍 Если тебе Proxmox кажется слишком громоздким и хочется легкого решения для одиночного хоста — Incus именно то, что нужно: простая установка и управление через CLI с мощным функционалом.

📌 Основные возможности Incus:

- Легкий запуск LXC и Docker контейнеров, VM на QEMU+KVM
- Использование официальных образов linuxcontainers.org
- Поддержка разного хранения: ZFS, LVM, Btrfs, Ceph и др.
- Управление через CLI и веб-интерфейс
- Настройка сети и NAT с DNSMASQ IPAM

# Установка пакетов на Debian 13
apt install incus incus-base qemu-system

# Инициализация административного пользователя
incus admin init

# Список доступных образов Debian
incus image list images:debian

# Запуск контейнера Debian 13
incus launch images:debian/13 debian-ct --storage default

# Подключение к контейнеру
incus exec debian-ct -- bash

# Запуск виртуалки Ubuntu
incus launch images:ubuntu/noble ubuntu-vm --vm --storage default

# Вход в Ubuntu VM
incus exec ubuntu-vm -- bash

# Основные команды для обзора
incus ls
incus info ubuntu-vm
incus storage list
incus network list


💡 Теперь ты знаешь, что Incus — это легкое и гибкое решение для виртуализации без ограничений Proxmox. Попробуй и сам убедись!

🔗 Официальный сайт и документация: linuxcontainers.org

🔗 GitHub репозиторий Incus: https://github.com/lxc/incus

#Linux #DevOps #Виртуализация #Incus #LXC #KVM #Linux_err24
This media is not supported in your browser
VIEW IN TELEGRAM
🌐 Как настроить сеть в Ubuntu вручную за 6 минут

👋 Привет, мастер консоли!

Нужно настроить статический IP в Ubuntu через терминал? Показываю весь процесс от определения сетевого адаптера до настройки DNS. Всё просто и быстро.
🔗 Источник https://www.youtube.com/

#ubuntu #linux #сеть #статическийip #sysadmin #терминал #networking
👍14
Media is too big
VIEW IN TELEGRAM
🔐 SSH для сисадминов: безопасность и удобство за 17 минут

👋 Привет, защитник серверов!

Админ попросил SSH-ключ? Не знаешь, какой отправить? Разбираемся с созданием ключей, настройкой SSH-сервера, клиента и пробросом портов. Всё пошагово и с примерами.

Полезные ссылки из видео:

- Источник видео
- Пример sshd_config
- Пример ssh config
- Команды для прав на .ssh

#ssh #linux #безопасность #sysadmin #devops #туннелирование #ubuntu
👍10
🛡️ Укрепляем SSHD: Почему тебе стоит включить ключи Ed25519

Привет, цифровой архитектор!

Настройка демона SSHD (sshd), который обеспечивает безопасное удаленное подключение к твоему серверу по протоколу SSH, — это то, с чего начинается любая административная работа. Конфигурация OpenSSH-сервера обычно хранится в файле /etc/ssh/sshd\_config.

Доступ к TCP-порту 22 (порт SSH по умолчанию) желательно ограничивать от публичного доступа. Вот замечания по ключевым директивам, которые помогут тебе повысить безопасность:

1️⃣ Аутентификация по паролю

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


PasswordAuthentication yes


- Закрываем ботов: Если ты решишь полностью отключить аутентификацию по паролю (PasswordAuthentication no), это немедленно отсечет большинство ботов, которые пытаются подобрать пароли, и твой журнал будет менее замусорен.
- Защита от перебора: По умолчанию разрешено 6 попыток аутентификации (MaxAuthTries 6). Ты можешь ограничить это число, например, до четырех (MaxAuthTries 4).
- Пустые пароли: Директива PermitEmptyPasswords no должна быть включена всегда, чтобы запрещать вход с пустым паролем.

2️⃣ Аутентификация с использованием публичных ключей

Это более надежный метод, чем аутентификация по паролю. По умолчанию он включен (PubkeyAuthentication yes). OpenSSH поддерживает несколько типов ключей, включая RSA, ECDSA и Ed25519.

- Преимущества Ed25519: Ключи Ed25519 основаны на эллиптических кривых и многими считаются обеспечивающими превосходную безопасность по сравнению с RSA. На практике они также намного короче.
- Файл ключей: Твой открытый ключ, который ты используешь для аутентификации, должен быть скопирован в файл ~/.ssh/authorized_keys на удаленном хосте.


💡 Вывод:
Помни, что SSH предназначен для обеспечения безопасного входа в оболочку и шифрует все данные сеанса. Если ты используешь OpenSSH, то настройки сервера хранятся в файле /etc/ssh/sshd\_config.


#Linux #DevOps #Security #SSHD #Ed25519
👍10
📚 Где учить Zabbix бесплатно и эффективно?

👋 Эй, повелитель мониторинга!

Вот проверенные источники на русском языке:

1. Текстовый курс по Zabbix от практикующего специалиста
Подробные разборы от преподавателя с реальным опытом.
🔗 https://koobik.net/cources/zabbix

2. Демо курс Zabbix 6 на Stepik
Бесплатный урок из большого платного курса: установка, настройка сервера, подключение агентов.
🔗 https://stepik.org/course/226879/promo

3. Видеокурс "Zabbix с нуля до короля" на YouTube
Полный разбор: автообнаружение, мониторинг Mikrotik, интеграции и многое другое.
🔗 https://www.youtube.com/playlist?list=PLdQohrQ3OmqS2wo9MwFKJtnXcVH5SCOh8

4. Книга "Zabbix 7: мониторинг ИТ-инфраструктуры"
Издательство Packt при поддержке КРОК. Доступна в открытом доступе.

#zabbix #обучение #мониторинг #sysadmin #Linux_err24
🔥16👍5
🛠️ 5 ключевых метасимволов, которые покрывают 80% задач

Привет, инженер!

Давай будем честны: освоить синтаксис регулярных выражений (РВ) — непростая задача. Не потому, что это очень сложно, а потому что ты работаешь с ними лишь время от времени, для разовых задач. В итоге ты быстро всё забываешь.

Но чтобы полностью реализовать потенциал командной оболочки, тебе придется овладеть Регулярными Выражениями. РВ — это набор символов и/или метасимволов, которые задают шаблон для поиска текста.

К счастью, тебе не нужно знать их все. Достаточно запомнить базовые метасимволы, которые критически важны для работы с grep, sed и awk.

Вот твоя шпаргалка: 5 ключевых метасимволов, которые покрывают 80% задач:
Регулярные выражения используются для поиска текста по шаблону и работы со строками.

1. Начало и конец строки (^ и $):
- Символ ^ означает начало строки. (Иногда, в зависимости от контекста, он может означать отрицание, например, в квадратных скобках [^...]).
- Знак $ соответствует концу строки.
- Выражение ^$ соответствует пустой строке.

2. Любой символ (.)
Точка (.) соответствует любому одиночному символу. Обычно это любой символ, кроме символа перевода строки.

3. Ноль или больше повторений (*)
Звездочка (*) означает любое количество символов (включая нулевое). Это относится к символу или выражению, предшествующему звездочке. Например, .* означает "любое количество любого символа".

4. Набор символов ([])
Квадратные скобки ([...]) предназначены для задания подмножества (диапазона) символов. Например, [a-z0-9] соответствует одной букве нижнего регистра или одной цифре.

5. Экранирование (\)
Обратный слэш (\) используется для экранирования специальных символов. Это значит, что экранированные символы интерпретируются буквально, как простые символы. Например, комбинация \$ ищет знак доллара как обычный символ, а не как признак конца строки.

💡 Вывод
Основное назначение РВ — это поиск текста по шаблону и работа со строками. Если ты знаешь, как использовать эти 5 метасимволов, ты сможешь эффективно применять grep, sed и awk для большинства повседневных задач.

#Linux #Bash #CLI #Regex #Шпаргалка
👍7🔥2
🔥 Настройка проброса портов в Incus: проще, чем в Proxmox

👋 Эй, укротитель виртуалок!

Покажу, как добавить веб-интерфейс к Incus и настроить проброс портов. Всё просто и быстро — без танцев с бубном.

Установка веб-интерфейса Incus

Проблема: Нужен удобный GUI для управления виртуалками и контейнерами.

Решение: Установи официальный пакет из репозитория Zabbly.

Вариант 1: Скачать пакет напрямую

# Качаем готовый .deb пакет
wget https://pkgs.zabbly.com/incus/stable/pool/main/i/incus/incus-ui-canonical_6.17-debian11-202510101456_amd64.deb

# Устанавливаем
dpkg -i incus-ui-canonical_6.17-debian11-202510101456_amd64.deb


Вариант 2: Подключить репозиторий

# Добавляем ключ репозитория
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc

# Создаём источник пакетов
sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-lts-6.0.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/lts-6.0
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF'

# Обновляем и ставим UI
apt update
apt install incus-ui-canonical


Настраиваем systemd:

# Редактируем юнит
systemctl edit incus.service

# Добавляем переменную окружения
[Service]
Environment = INCUS_UI=/opt/incus/ui/

# Применяем изменения
systemctl daemon-reload
systemctl restart incus


Открываем доступ извне:

incus config set core.https_address :8443


Готово! Открывай браузер, заходи на порт 8443 и следуй простой инструкции по добавлению сертификата.


🌐 Проброс портов: в 10 раз проще Proxmox

Проблема: Нужно пробросить порт 80 с хоста в виртуалку, чтобы получить доступ к веб-сервису.

Решение: В Incus это делается за 3 клика или одной командой.

Пример: Пробросим порт 80 с хоста 192.168.137.14 в VM ubuntu24 с IP 10.253.116.184.

Через веб-интерфейс:
1. Иди в Networks → incusbr0 → Forwards
2. Жми "Add Forward"
3. Заполняй:
- Listen address: 192.168.137.14
- Listen port: 80, Protocol: TCP
- Target address: 10.253.116.184
- Target port: 80

Через CLI (одна команда):

incus network forward port add incusbr0 192.168.137.14 TCP 80 10.253.116.184 80


Вот и всё! В Proxmox тебе пришлось бы писать правила для iptables и разбираться с NAT вручную.

💡 Почему Incus удобнее для одиночного хоста?
IPAM из коробки — разбираешься за 2 минуты
NAT и DHCP работают сразу, ничего настраивать не нужно
Проброс портов через GUI за 3 клика или одну команду
Никаких iptables — всё просто и наглядно

Если у тебя есть виртуалка с nested virtualization (у многих хостеров она включена) — разворачивай Incus и запускай VM внутри. Получишь полноценный хост виртуализации.

🔗 Официальный репозиторий Incus:
https://github.com/lxc/incus

🔗 Репозиторий Zabbly с пакетами:
https://pkgs.zabbly.com/incus/stable/

#incus #виртуализация #linux #devops #proxmox #sysadmin #Linux_err24
👍5