Linux Ready | DevOps
9.58K subscribers
926 photos
66 videos
451 links
Авторский канал по разработке на Linux.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Автор: @energy_c
Download Telegram
📂 Напоминалка по работе с Load Balancer!

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

На картинке — 7 основных задач Load Balancer: распределение нагрузки, SSL termination, сохранение сессий, отказоустойчивость, масштабирование, защита от DDoS и мониторинг серверов.

Сохрани, чтобы не потерять!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5🤝3
1000+ свежих IT-вакансий каждый месяц в одном месте 🤘

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

IT Россия
IT СНГ
Стажировки
Digital
Международка
Удалёнка
Python
Бигтех
Дизайн
QA
Джунам
Frontend
Аналитика
Стартапы за рубежом
DevOps
Не с HH
Автоотклики
Please open Telegram to view this post
VIEW IN TELEGRAM
Слышали, что в Linux можно изменить конфигурацию systemd-сервиса без изменения оригинального unit-файла?

Многие редактируют файлы внутри /usr/lib/systemd/system или /lib/systemd/system, но после обновления пакета такие изменения могут быть потеряны.

Systemd поддерживает drop-in конфигурации:
$ sudo systemctl edit nginx


Откроется отдельный файл переопределения конфигурации, который имеет приоритет над оригинальной конфигурацией.

Например, можно изменить параметры запуска:
[Service]
Restart=always
RestartSec=5


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

Проверить итоговую конфигурацию, которую реально использует systemd:
$ systemctl cat nginx


Можно увидеть оригинальный unit и все применённые изменения.

Если нужно полностью удалить свои изменения:
$ sudo systemctl revert nginx


Systemd удалит файл переопределения конфигурации и вернёт сервис к исходному состоянию.

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

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥94
❤️ Отличная статья на Habr для тех, кто хочет глубже понять реальные уязвимости в ядре Linux и влияние kernel-багов на безопасность системы!

В этой статье:
• Разбирается, как одна ошибка в коде может привести к повышению привилегий до root;
• Показано, почему даже маленький символ в ядре способен создать критичную уязвимость;
• Разобран практический кейс, который полезно знать всем, кто интересуется hacking и infosec.


🔊 Продолжай читать на Habr!


➡️ Hacking Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54👍4
Linux-сервисы можно запускать только в момент первого обращения к ним!

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

Вместо постоянного запуска процесса создаётся socket:
[Socket]
ListenStream=8080

[Install]
WantedBy=sockets.target


Теперь systemd слушает порт самостоятельно и запускает сервис только когда приходит первый запрос.

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

Проверить такие сокеты можно командой:
$ systemctl list-sockets


Так работает множество системных компонентов Linux, включая некоторые службы systemd и Docker:
$ systemctl status docker.socket


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

🔥 Socket activation позволяет экономить память, ускорять запуск сервисов и строить более эффективные фоновые службы без собственного демона, который постоянно ждёт подключения.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍76🤝3
📂 Шпаргалка по Linux-администрированию!

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

На картинке собраны основные направления работы Linux-администратора: командная строка, безопасность, SSH-доступ, firewall, резервное копирование и др.

Сохрани, чтобы не потерять!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍63🤝2
Пачку офферов заказывали?

О всех трудоустройствах через ИИ-ассистента Софи ребята узнают от пользователей.

И какой же кайф, когда они делятся своими историями.

Вот так в чате узнали сразу о трех новых офферах:

• Кейс Сергея - 2 недели в Софи и 2 оффера.
• Кейс Елены - 1 неделя в Софи и оффер спустя 10 лет перерыва в работе. Елене 52 года.
• Кейс Юлии - 1 месяц в Софи, свитчер из финансового аналитика в разработчика SQL. И еще один оффер🎉

Искренние поздравления ребятам и удачи им на новой работе!

В следующий раз доступ в Софи откроется уже 21 июля.

Если хочешь получить 3 дня бесплатного доступа - подписывайся на этот канал, все анонсы будут там.
👎1
Перехватываем сетевые проблемы в Linux через tcpdump!

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

В такой ситуации важно посмотреть, что реально происходит с пакетами. Например:
curl https://api.example.com


Получаем:
Connection timed out


Проверяем, что firewall не является причиной:
systemctl status firewalld


Всё выглядит нормально, но соединения всё равно нет. Здесь помогает tcpdump. Это один из главных инструментов Linux для сетевой диагностики. Он показывает реальные пакеты: что ушло с сервера, что вернулось обратно и на каком этапе возникла проблема.

В такие моменты tcpdump часто экономит часы поиска. Смотрим TCP-трафик к HTTPS-порту:
sudo tcpdump -nn -i any port 443


Параметры:
-nn — не выполнять DNS-resolve и не заменять номера портов именами;
-i — выбрать интерфейс; any — слушать все интерфейсы.

Например:
IP 10.0.0.15.42310 > 142.250.184.14.443: Flags [S]


Видим SYN-пакеты, но не видим SYN-ACK в ответ. Это означает, что клиент пытается установить TCP-соединение, но ответ обратно не приходит.

Дальше стоит искать проблему в: фильтрации трафика; security group; ACL; маршрутизации; удалённом сервисе. Если видим:
IP 142.250.184.14.443 > 10.0.0.15.42310: Flags [S.]


значит TCP handshake проходит.

Сеть, скорее всего, работает, и проблему уже стоит искать выше сетевого уровня: TLS ;сертификаты; настройки приложения; протокол взаимодействия. Для конкретного хоста лучше ограничивать фильтр:
sudo tcpdump -nn -i any host 10.0.0.5


Например, проверяем соединение приложения с PostgreSQL:
sudo tcpdump -nn -i eth0 host 10.0.0.5 and port 5432


На production это намного удобнее, когда через сервер проходят тысячи соединений. Иногда нужно посмотреть содержимое HTTP-запросов:
sudo tcpdump -A -s0 -i eth0 host 10.0.0.5 and port 80


Можно увидеть:
GET /health HTTP/1.1
Host: backend.local


Для обычного HTTP это работает. Для HTTPS посмотреть содержимое запросов не получится — данные будут зашифрованы TLS. Можно увидеть сам факт соединения и TLS handshake, но не содержимое HTTP-запроса. Если нужно сохранить трафик:
sudo tcpdump -nn -i any port 443 -w capture.pcap


Открыть файл можно в Wireshark или повторно через:
tcpdump -r capture.pcap


На нагруженных серверах удобно ограничивать количество пакетов:
sudo tcpdump -nn -i any port 443 -c 100


Ещё полезный фильтр — только новые TCP-соединения:
sudo tcpdump -nn -i any 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0'


Важно помнить: tcpdump показывает только сетевой трафик, но не знает, какой процесс его создал. Для связи соединения с процессом используйте:
ss -tnp


🔥 Главная сила tcpdump в том, что он помогает быстро определить, где именно проблема: пакет не вышел с сервера; пакет ушёл, но ответ не пришёл; TCP установился, а ошибка уже внутри приложения.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍8🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
👍 Bash One-Liner — крутая шпаргалка по Bash-командам!

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

Оставляю ссылочку: GitHub 📱


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥4
В экосистеме CURATOR появился новый сервис — CURATOR.SCANNER.

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

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

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

👉 Подробности — по ссылке.
👍1
Запускаем команды от имени другого пользователя через sudo -u — без входа в его интерактивную сессию через su!

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

Обычный запуск команды от имени другого пользователя:
sudo -u www-data id


Команда выполнится с UID и GID пользователя www-data, но текущий терминал останется вашим.

Например, можно проверить, имеет ли веб-приложение доступ к нужной директории:
sudo -u www-data ls -la /var/www/app


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

Также можно открыть shell от имени сервисного пользователя:
sudo -u postgres bash


Все команды внутри этого shell будут выполняться от имени postgres. Однако это не полноценный login shell: текущая директория и часть окружения могут сохраниться от исходного пользователя.

Если нужен shell с окружением, близким к обычному входу пользователя, используйте:
sudo -iu postgres


При отладке важно учитывать, что sudo -u не всегда воспроизводит реальное окружение работающего сервиса.

Например:
sudo -u node env


Эта команда покажет окружение, сформированное sudo, но оно может отличаться от окружения процесса, запущенного через systemd, Docker, Kubernetes, PM2 или другой менеджер процессов.

Также можно передать временную переменную окружения только для одного запуска:
sudo -u www-data env APP_ENV=testing ./deploy.sh


Переменная APP_ENV будет доступна только этому процессу и его дочерним процессам. Глобальные настройки системы при этом не изменятся. Также важно: возможности sudo -u зависят от правил в sudoers. Разрешение на запуск shell, интерпретатора или произвольного скрипта может дать пользователю широкий доступ от имени целевой учётной записи.

🔥 sudo -u — удобный инструмент для проверки прав, отладки сервисов и запуска отдельных команд от имени системных пользователей без полноценного переключения сессии.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥5👍4
Опа, тут бывший сеньор одного из IT-отделов Яндекса Игорь Никитин выкатил целый канал про Python — и это лучшее, что есть в рунете по теме.

Качественные гайды. Советы от известных прогеров. Тематические мемасы. Короче, ничего лишнего.

Хватит душить питона, учись его кодить: https://t.me/+IzIPzvoa7p40ZTUy 🐍
👎4😁3
В Linux многие устройства и процессы можно использовать как обычные файлы!

В Linux почти всё взаимодействие построено вокруг файловых дескрипторов. Поэтому стандартный ввод, вывод и ошибки тоже доступны через специальные файлы в /dev.

Например, программа может читать данные из стандартного ввода:
$ cat /dev/stdin


cat читает текущий stdin процесса. Это может быть терминал, pipe или перенаправленный поток.

Например, можно сравнить файл с данными, которые приходят напрямую:
$ generate_config | diff config.old /dev/stdin


Без создания временных файлов:
$ echo "new_value=true" | diff config.old /dev/stdin


Также доступны стандартный вывод и ошибки:
$ echo "hello" > /dev/stdout
$ echo "error" > /dev/stderr


Это удобно в shell-автоматизации, когда программа умеет работать с потоками, но ожидает путь к файлу.

🔥 /dev/stdin, /dev/stdout и /dev/stderr — это удобные ссылки на файловые дескрипторы текущего процесса, которые помогают соединять программы без лишних временных файлов.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥52