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

Автор: @energy_c
Download Telegram
Знали, почему большинство пользователи 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
🔥11👍65
This media is not supported in your browser
VIEW IN TELEGRAM
👍 Devhints — шпаргалки по Linux, Bash и терминальным утилитам!

На сайте собрана большая база компактных шпаргалок, среди которых есть полезные справочники по Linux, Bash, SSH, systemd, Vim, Tmux, Docker, Git, Regex и другим инструментам. Основные команды, параметры и примеры использования собраны максимально компактно, поэтому нужную информацию можно найти буквально за несколько секунд.

📌 Оставляю ссылочку: devhints.io

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5🤝5
Сборка мультизагрузочного Live-USB накопителя для аварийного аудита и восстановления.

В арсенале любого специалиста по безопасности должен быть портативный инструмент для оперативного восстановления систем, сброса паролей и анализа цифровых следов. Мы соберем собственный тревожный Live-USB накопитель с помощью утилиты Ventoy, которая позволяет загружать любые ISO-образы простым копированием без форматирования флешки. Это превратит обычный USB-диск в универсальный швейцарский нож, готовый к запуску Kali Linux, Tails или системных реаниматоров на любом железе.

Для начала установим консольную утилиту Ventoy в операционную систему Linux для разметки флешки.

wget https://github.com/ventoy/Ventoy/releases/download/v1.0.99/ventoy-1.0.99-linux.tar.gz && tar -xvf ventoy-1.0.99-linux.tar.gz


Архив успешно скачан и распакован в текущую рабочую директорию.

Выполним разметку и установку загрузчика Ventoy на ваш USB-накопитель (например, /dev/sdX).

cd ventoy-1.0.99 && sudo ./Ventoy2Disk.sh -i /dev/sdX


Накопитель будет разбит на два раздела: скрытый с загрузчиком и основной под ISO-образы.

Смонтируем флешку и скопируем необходимые дистрибутивы для аудита и пентеста напрямую в корень накопителя.

sudo mount /dev/sdX1 /mnt && cp kali-linux-live.iso tails-amd64.iso /mnt/


Файлы образов скопированы, и загрузчик Ventoy автоматически добавит их в системное стартовое меню.

Контрольный просмотр содержимого готового накопителя:

ls -la /mnt/*.iso


Ожидаемый вывод: /mnt/kali-linux-live.iso /mnt/tails-amd64.iso

Безопасное размонтирование флешки перед извлечением:

sudo umount /mnt


Созданный таким образом Live-USB накопитель позволяет на лету докидывать новые инструменты, скрипты и образы без перезаписи всей флешки. Держите на ней Kali для сетевого пентеста, Tails для анонимной работы и чистый дистрибутив Linux для сброса забытых локальных паролей через chroot.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥96👍4
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
2👍2🔥1
🖼️ Разбираем iptables: 7 команд для отладки доступа и правил!

Даже если ты часто правишь firewall — эти ключи ускорят диагностику и правки: посмотреть текущие цепочки, быстро вставить правило в начало, удалить шум или настроить NAT и фильтрацию по TCP. Полезно при дебаге доступа, перенаправлении портов и быстрой ревизии правил перед деплоем.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤝6👍4
📂 Напоминалка по миграции сервисов в Kubernetes без большого взрыва!

Перенос инфраструктуры в Kubernetes не обязательно должен происходить за один релиз. Гораздо безопаснее мигрировать сервисы поэтапно: начиная с наименее критичных компонентов, постепенно переносить зависимости, проверять стабильность каждого этапа и только потом переходить к ключевым сервисам.

На картинке — пошаговый план миграции в Kubernetes: от инвентаризации сервисов и подготовки платформы до пилотного проекта, постепенного переноса приложений, стратегий Blue/Green и Canary, а также финальной оптимизации и вывода старой инфраструктуры из эксплуатации.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105🔥5
DevOps Exercises более 2600 задач и вопросов по DevOps!

В репозитории собраны практические задания, вопросы и готовые разборы по Linux, Docker, Kubernetes, Terraform, Ansible, CI/CD, сетям, облачным платформам и мониторингу. Материалы можно проходить по отдельным темам, использовать для проверки своих знаний или подготовки к собеседованию.

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

➡️ DevOps Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83👍3
Шпаргалка по безопасной настройке прав в Linux!

Например, chmod 600 ~/.ssh/id_ed25519 закрывает приватный ключ от других пользователей, а режим 2755 включает setgid для каталога и помогает сохранять его группу у новых файлов.

На картинке специальные биты setuid, setgid и sticky bit, рекомендуемые права для SSH, скриптов и web-root, а также причины ошибок Permission denied, особенности символических ссылок, ACL и рекурсивного chmod.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥2
1000+ свежих IT-вакансий каждый месяц в одном месте 🤘

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

IT Россия
IT СНГ
Стажировки
Digital
Международка
Удалёнка
Python
Бигтех
Дизайн
QA
Джунам
Frontend
Аналитика
Стартапы за рубежом
DevOps
Не с HH
Автоотклики
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему sudo echo всё равно может вернуть Permission denied?

Часто системный файл пытаются изменить так:
sudo echo "PORT=8080" \
> /etc/myapp/app.conf


Но команда может завершиться ошибкой доступа, хотя перед echo указан sudo.

Причина в порядке выполнения. sudo запускает с повышенными правами только echo, а перенаправление > обрабатывает текущий shell ещё до запуска команды.

Именно обычный пользователь пытается открыть системный файл для записи.

Для таких случаев удобно использовать tee:

echo "PORT=8080" |
sudo tee /etc/myapp/app.conf \
> /dev/null


Здесь файл открывает уже tee, запущенный через sudo.

Чтобы не перезаписывать файл, а добавить строку в конец, используйте -a:
echo "LOG_LEVEL=info" |
sudo tee -a /etc/myapp/app.conf \
> /dev/null


Многострочный конфиг можно записать через heredoc:
sudo tee /etc/myapp/app.conf \
> /dev/null <<'EOF'
PORT=8080
LOG_LEVEL=info
CACHE_ENABLED=true
EOF


Кавычки вокруг 'EOF' запрещают shell подставлять переменные и выполнять команды внутри блока. Содержимое будет записано буквально.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2
Шпаргалка по командам Docker CLI!

Например, docker run -p 8080:80 nginx запускает контейнер и публикует его порт, а docker logs -f <container> показывает новые строки логов в реальном времени.

На картинке команды для сборки и удаления образов, запуска и остановки контейнеров, просмотра логов и статистики, открытия shell внутри контейнера, а также загрузки и публикации образов через Docker Hub.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥97👍6
Bash-конвейер может скрыть ошибку одной из команд!

По умолчанию код завершения конвейера определяется последней командой:
curl -sS "$URL" | jq -r '.version'


Если curl завершится с ошибкой, но jq успешно обработает пустой ввод, весь конвейер может вернуть код 0. Скрипт решит, что команда выполнилась успешно.

Опция pipefail меняет это поведение:
set -o pipefail


Теперь конвейер завершится с ошибкой, если неуспешной была любая его часть:
curl -fsS "$URL" |
jq -r '.version' > version.txt


Коды отдельных команд последнего конвейера можно посмотреть через PIPESTATUS:
curl -fsS "$URL" | jq -r '.version'
printf '%s\n' "${PIPESTATUS[@]}"


В автоматизированных Bash-скриптах часто включают сразу несколько строгих настроек:
set -euo pipefail


-e завершает скрипт при необработанной ошибке, -u запрещает использование необъявленных переменных, а pipefail обнаруживает сбой внутри конвейера.

Ожидаемые ошибки при этом лучше обрабатывать явно:
if ! grep -q "READY" health.log; then
echo "Service is not ready"
fi


Добавляйте pipefail в Bash-скрипты, где ошибка загрузки, сборки или обработки данных не должна остаться незамеченной.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍5
Контроль целостности системных утилит 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
👍7🔥76
📂 Напоминалка по локальной отладке CI/CD-скриптов!

Ошибки в пайплайне лучше находить до запуска в CI. Локальная отладка позволяет быстрее проверить логику скриптов, переменные окружения, Docker-окружение и конфигурацию, не тратя время на повторные запуски пайплайна.

На картинке — 7 полезных команд для локальной проверки CI/CD: от shellcheck и docker run до set -x, jq, git diff и других инструментов, которые помогают быстрее находить ошибки и делать пайплайны более надёжными.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥3
🔐 Защищённое подключение для DevOps, разработчиков и удалённых команд

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

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

Что получает пользователь:

• защищённое соединение в общественных и домашних сетях
• единый аккаунт для нескольких устройств
• собственная серверная инфраструктура в разных странах
• автоматический импорт конфигурации после авторизации
• приложения для компьютеров, смартфонов и Android TV
• техническая поддержка и регулярные обновления
• собственная технология подключения TT Connect

Сервис развивается независимой командой. Мы самостоятельно разрабатываем клиентские приложения, серверную часть и систему управления подключениями.

🌐 Подробнее: https://www.trusttunnel.info
📢 Новости проекта: @trusttunnelconnect
1👍1
Как в Bash гарантированно удалить временные файлы через trap?

В shell-скриптах часто создают временную папку:
tmp_dir=$(mktemp -d)


А потом в конце вручную удаляют её:
rm -rf "$tmp_dir"


Проблема в том, что скрипт может завершиться раньше: ошибка команды, Ctrl+C, ранний exit. Тогда временные файлы останутся лежать на диске.

Для таких случаев в Bash используют trap:
tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT


Теперь cleanup выполнится при выходе из скрипта почти в любом сценарии:
cp app.log "$tmp_dir/"
grep "ERROR" "$tmp_dir/app.log"


Даже если grep завершится ошибкой, trap всё равно сработает при выходе.

Это удобно сочетать со строгим режимом:
set -euo pipefail


Полный минимальный шаблон:
set -euo pipefail

tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT


Если нужно выполнить несколько действий при завершении, лучше вынести cleanup в функцию:
cleanup() {
rm -rf "$tmp_dir"
}

trap cleanup EXIT


Такой подход полезен для архивов, временных конфигов, скачанных файлов, тестовых директорий и промежуточных данных в CI/CD.


➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥3
Шпаргалка по kubectl-командам!

Например, kubectl get pods показывает поды, kubectl describe pod помогает посмотреть детали ресурса, а kubectl logs быстро достаёт логи контейнера.

На картинке команды kubectl для просмотра ресурсов, создания и применения YAML, удаления объектов, запуска команд внутри контейнера, работы с логами, kubeconfig и короткими именами Kubernetes-ресурсов.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥3