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

Автор: @energy_c
Download Telegram
📂 Напоминалка для работы с curl!

Например, curl -I позволяет проверить HTTP-заголовки сервера, curl -H добавить необходимые заголовки или токены авторизации, а curl -X POST отправить запрос к API из терминала.

На картинке — основные команды curl, которые пригодятся при разработке, тестировании API, диагностике сетевых проблем и работе с Linux-серверами.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍11🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
❤️‍🔥"Это разъ*бный сетап, бро!" 😤

Так сказал мой друг из Африки, когда увидел этот стол)
Не знаю уж че за сетап, меня зовут Саша и качественную необычную мебель из натурального дерева я делаю уже больше 12-ти лет, столько же занимаюсь и темой здоровья.

Когда я услышал, что до 10% смертности связано с сидячим образом жизни, меня это поразило и я задался целью делать максимально функциональные и полезные рабочие пространства, ибо геморрой в 30 это конечно довольно нишево, но все же сомнительно 😂

Ну а собрать такой комплект под свои задачи и при этом сразу прикинуть цены вы можете в удобном Mini App конструкторе
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32👎2🔥2
Знали, почему большинство пользователи Linux почти всегда используют find вместе с -print0?

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

Чтобы исключить эту проблему, find умеет разделять имена файлов нулевым байтом:
$ find . -type f -print0


Теперь этот поток можно безопасно передать в xargs:
$ find . -type f -print0 | xargs -0 sha256sum


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

Тот же приём подходит для удаления файлов:
$ find . -type f -print0 | xargs -0 rm


И для передачи файлов любой другой программе:
$ find . -type f -print0 | xargs -0 grep "TODO"


Именно связка -print0 и -0 считается стандартным способом безопасной обработки имён файлов в Unix-подобных системах.

🔥 Если пишете shell-сценарии или автоматизацию, этот приём избавляет от целого класса трудноуловимых ошибок.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥86🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 Большая Linux-шпаргалка для разработчиков!

Здесь собрано огромное количество полезных команд и практических заметок по Linux: работа с терминалом, файловой системой, процессами, сетью, сервисами, Docker, Git, PostgreSQL, Nginx и не только. Особенно ценно, что это не просто сухой список команд, а именно шпаргалка с примерами, пояснениями и полезными сценариями из практики.

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


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥54
Контроль целостности системных утилит Linux через проверку хэш-сумм.

При компрометации сервера злоумышленники часто подменяют базовые системные бинарники (например, ss, ps или login) на модифицированные версии с бэкдорами. Мы напишем лаконичный bash-скрипт, который создаст эталонные слепки контрольных сумм SHA-256 для критически важных утилит и проверит их на предмет несанкционированных изменений. Этот базовый механизм Host IDS (интрузивного детектирования) позволяет оперативно обнаружить факт присутствия атакующего в системе.

Сформируем базу данных эталонных хэш-сумм для выбранных системных утилит и сохраним её в защищенный файл:

# Создание эталонных хэшей для проверки
sha256sum /bin/ps /bin/ss /usr/bin/whoami > /root/sys_integrity.db


Файл базы данных успешно создан и содержит уникальные криптографические отпечатки чистых бинарников.

Напишем автоматический скрипт валидации, который сверяет текущее состояние файлов с ранее сохраненным эталоном:

# Скрипт проверки и вывода измененных файлов
sha256sum -c /root/sys_integrity.db 2>&1 | grep -v 'OK' || echo "Integrity check: SUCCESS"


Команда выполнит сверку всех строк и выведет предупреждение только в случае несовпадения хэшей.


# проверка (контрольная эмуляция подмены для проверки реакции парсера)
echo "test" >> /root/sys_integrity.db && sha256sum -c /root/sys_integrity.db 2>&1 | grep 'FAILED'


Ожидаемый вывод: /root/sys_integrity.db: FAILED


# cleanup (удаление тестовой базы данных из системы)
rm -f /root/sys_integrity.db


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

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍8🤝3
📂 Напоминалка по стилям API-архитектуры!

Например, REST подходит для классических CRUD-операций, WebSocket — для приложений с обменом данными в реальном времени, GraphQL позволяет получать только нужные данные, а gRPC обеспечивает быстрый обмен между сервисами.

На картинке — 6 популярных архитектурных стилей и протоколов API, которые стоит знать каждому разработчику.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝10👍6🔥3
📂 Напоминалка по работе с 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