fa
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

رفتن به کانال در Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

نمایش بیشتر

📈 تحلیل کانال تلگرام Bash Days | Linux | DevOps

کانال Bash Days | Linux | DevOps (@bashdays) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 23 810 مشترک است و جایگاه 5 710 را در دسته فناوری و برنامه‌ها و رتبه 28 118 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 23 810 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 15 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -195 و در ۲۴ ساعت گذشته برابر -10 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 23.79% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 11.52% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 5 664 بازدید دریافت می‌کند. در اولین روز معمولاً 2 744 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 25 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند bashdays, linux, bash, docker, скрипт تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 16 ژوئن, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

23 810
مشترکین
-1024 ساعت
-337 روز
-19530 روز
آرشیو پست ها
🔥 OTUS открывает набор на мощный highload-курс «Инфраструктура высоконагруженных систем» Старт: 30 января 2026 Длительность:
🔥 OTUS открывает набор на мощный highload-курс «Инфраструктура высоконагруженных систем» Старт: 30 января 2026 Длительность: 5 месяцев За 5 месяцев вы построите настоящий отказоустойчивый highload-кластер под миллионы пользователей и получите самый востребованный стек 2025–2026: Terraform • Pacemaker + Corosync • Nginx/HAProxy под миллион RPS • Kubernetes (очень глубоко) • OpenStack • Ceph • SaltStack • Puppet • MySQL/PostgreSQL Cluster • Kafka • Elasticsearch Преподаватели — действующие архитекторы сверхбольших инфраструктур. Финальный проект сразу идёт в портфолио и становится вашим главным козырем на собеседованиях. Пройдите бесплатное вступительное тестирование прямо сейчас → подтвердим ваш уровень и забронируем место на курсе 👉Пройти тест и забронировать место: https://vk.cc/cSogME Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Если попал в царство циклопов, прикрой один глаз! Сколько бы мы не плевались в сторону ИИ, всё же некоторые инструменты реально облегчают повседневную рутину.
Много раз говорил и еще раз повторюсь — мир не стоит на месте, инструментарий развивается и расширяется. Вчера мы закручивали саморез отверткой, сегодня есть шуруповерт. Так зачем отказываться если инструмент реально сэкономит твоё время и силы.
Если ты использовал ИИ и получил от него ответ — вникни в ответ, разберись почему так и что значит каждая строчка кода. В таком контексте нет ничего зазорного. Не нужно извиняться если ты прибегнул к помощи бездушной твари, ты сократил время на гуглежку. Ну а если ты просто копипастишь — ты долбаёб, который через месяц деградирует в дерево.
Раньше все плевались от nginx и предпочитали apache, сейчас nginx плотно вошел в каждую инфраструктуру и apache в хуй не упёрся. В любой вакансии будет — навыки конфигурирования nginx.
Каким ИИ пользуюсь я? Всё банально: 1. Perplexity (бесплатный PRO на год) 2. GPT (бесплатный GO для студентов) Этого хватает с головой, чтобы покрыть 99% вопросов. Первая полностью заменяет мне поисковые системы, в любом месте нажал ctrl+alt+p, забил запрос и получил краткую выжимку из 100500 источников. Да, там есть куча другого функционала, но я пользуюсь ей как поисковиком, уж больно нравится мне получать саммари и не бегать по ссылкам. Но опять-же если в ответе не уверен, лучше перепроверь. Вторая, ну тут и рассказывать нечего, в основном домашки ребенку решаю, потому что в программе начальных классов — какой-то пиздец, как будто собеседование в компанию проходишь. Так сколько блядь люков? Помимо домашек оно у меня по API подключено к Obsidian, на основе постов генерю варианты заголовков и описаний для блога. Удобно, выдумывать ничего не нужно, нажал хоткей и получил 50 вариантов, выбрал, отредачил под себя, опубликовал. Сколько плачу за всё? Нисколько! Всё решается первоначальной гуглежкой и оформлением акционных подписок. Допустим зашел на GPT с Индии и получил 1 год на тарифе GO для студентов.
Спиздел. Плачу за API запросы для Obsidian, но год назад забросил 10$ и на балансе сейчас 8$ осталось, капля в море.
Да, порой нужно потратить 15-30 минут, но оно того стоит. Просто поищи на ютубе — Как получить тариф GO для GPT или PRO для perplexity. А если уж совсем упарываться не хочется, то на авито за пару минут тебе всё оформят на твой аккаунт, причем за миску супа. Спрос рождает предложения. Выводы НЕ КОПИПАСТИ с GPT! Вникай в ответы, перепроверяй если не уверен или есть сомнения. А какими ИИ пользуешься ты? Поделись в комментариях, будет интересно. 🛠 #рабочиебудни #services 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Что важно знать про DevSecOps и защиту контейнеров прямо сейчас? Разбор — в подкасте «DevSecOps — от кода до контейнера». Обсудим: 🌟когда команде пора задуматься о внедрении DevSecOps, а когда можно чуть притормозить 🌟какие технологии помогают встроить безопасность в разработку без лишней головной боли 🌟чем хороша контейнеризация и какие встречаются подводные камни при защите контейнерных сред 🌟как донести до руководства, что DevSecOps — это не «пустая трата денег», а инвестиция в снижение рисков 🌟Без воды: реальные кейсы и практические советы. 🌟Спикеры — руководители отделов безопасной разработки Crosstech Solutions Group и «Инфосистемы Джет». Смотрите подкаст на площадках: 🌟 VK Видео 🌟 Rutube 🌟 Я.музыка 🌟 Сайт Crosstech Solutions Group Реклама. ООО «КРОССТЕХ СОЛЮШНС ГРУПП», ИНН: 7722687219, Erid: 2VtzqxKxejC

Как расшифровать бекапы TrueNAS У меня в домашней лаборатории self-hosted торчит TrueNas и по шедуллеру заливает бекапы критичных файлов по протоколу webdav в облако. В облаке каждый файл имеет расширение .bin, если скачать к себе на машину такой файл, то внутри будет мусор. И тут возник логичный вопрос, если мой TrueNas пойдет по пизде, как мне забрать из бекапа файлы и расшифровать их без участия TrueNas? Оказалось все довольно просто. Под капотом TrueNas установлен rclone, который и выполняет задачу резервирования данных. Получается имея на своей локальной машине rclone теоретически можно забрать шифрованные бекапы и легко их расшифровать. Давай попробуем реализовать задуманное. Бекапы шифруются с помощью Encryption Password и Encryption Salt, эти параметры задаются в TrueNas, соответственно нам понадобятся эти данные. Для начала расшифруем один файл, посмотрим как всё проёдет. Зашифрованный бекап файла я скачал к себе на машину и положил в папку /tmp/encrypted/file.jpg.bin Если файл открыть на просмотр, увидим такое:
RCLONE......hx^..]]NN..
..=._.S...4:..b...P...3`.^u0yO  Ҭ..)..fkMP...K..
Пишем конфиг ~/.config/rclone.conf:
[cryptbackup]
type = crypt
remote = /tmp/encrypted
filename_encryption = off
directory_name_encryption = false
password = ZK6U8CZRqP-vT5fK0HwjO_Q
password2 = -GGulJpRclHETHVhp1MMs
Этот конфиг сгенерился автоматически, после запуска rclone config и заполнения данных. Чтобы получить зашифрованный пароль из командной строки, воспользуйся командой:
rclone obscure "<password>"
rclone obscure "<salt>"
Потом эти данные можешь подставить в конфиг.
Если в TrueNas включено шифрование имен, то в параметре filename_encryption нужно прописать standard. Не проебись, на конце буква «d».
Проверяем:
rclone ls cryptbackup:

1974875 file.jpg
Отлично! Что-то сработало. Давай наконец-то расшифруем этот файл:
rclone copy cryptbackup: /tmp/decrypted
Всё, задача решена, в папке /tmp/decrypted лежит расшифрованная картинка и прекрасно открывается. Аналогично поступаешь и с другими файлами. Тут суть закинуть весь зашифрованный бекап в папку /tmp/encrypted и одной командой copy все прекрасно расшифруется в /tmp/decrypted сохраняя структуру папок. По итогу имеем удобный и практичный способ восстанавливать такие штуки без участия TrueNas. А так-же можно проверять такие бекапы после заливки их в облако, чтобы точно быть уверенным, что бекап точно рабочий. Концепт проверки: автоматически забрать несколько контрольных файлов из бекапа, расшифровать, сверить внутренности с шаблоном и при проблемах — плюнуть в графану или в телегу алертом. На этом всё. Хороших тебе выходных!
🔥 Да, забыл, до 01.01.26 действует промокод FACTORY_26 (1000р) на первый месяц в Linux Factory.
🛠 #selfhosting #backup #crypt 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Привет, сегодня будем учить zsh автоматически перечитывать конфиг после изменения. Каждый раз заёбисто делать source ~/.zhsrc после очередных изменений, да и плагинов я актуальных найти так и не смог.
По-хорошему можно было бы и плагин для сообщества накидать, но я ленивая скотина и обошелся Bash скриптом.
Поэтому открываем ~/.zshrc и пихаем в него такое:
ZSH_LAST_MOD=$(stat -c %Y ~/.zshrc 2>/dev/null || stat -f %m ~/.zshrc)
precmd() {
  local new_mod=$(stat -c %Y ~/.zshrc 2>/dev/null || stat -f %m ~/.zshrc)
  if [[ $new_mod != $ZSH_LAST_MOD ]]; then
    if zsh -n ~/.zshrc; then
      source ~/.zshrc
      ZSH_LAST_MOD=$new_mod
      echo "🔄 .zshrc auto-reloaded (OK)"
    else
      echo "⚠️ .zshrc has syntax errors — reload skipped"
    fi
  fi
}
Теперь после каждого изменения файла ~/.zshrc конфиг будет автоматически перечитан. НО перечитан он будет только после проверки, если ты своими кривыми руками где-то накосорезил — идешь нахуй. Логично? Логично! Как это работает:
1. Сохраняет timestamp последней модификации .zshrc 2. precmd() — специальная функция zsh, которая автоматически вызывается перед каждым выводом prompt (после любой команды или Enter). Вызывается незаметно, идеально для фоновых проверок без вмешательства в работу. 3. Дальше логика, сравнивает timestamps — если .zshrc отредактирован и сохранен, переходит к проверке. 4. zsh -n файл — проверяет синтаксис без выполнения (no-execute mode). Возвращает 0 при успехе, > 0 при ошибках (дубликаты, незакрытые скобки и т.п.). 5. Ну а дальше сообщает тебе, все ок или идешь нахуй.​
Нюанс:
echo 'syntax error' >> ~/.zshrc

/home/user/.zshrc:226: command not found: syntax
🔄 .zshrc auto-reloaded (OK)
Проблема в том, что zsh -n проверяет только синтаксис (скобки, конструкции), но не выполнение команд. Имей это ввиду. Если сделать так:
echo '# syntax error' >> ~/.zshrc
🔄 .zshrc auto-reloaded (OK)
То всё пройдёт замечательно. Ну ты понял к чему я клоню. Тема прикольная, экспериментируй. 🛠 #bash #linux #shell 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Древнее зло пробудилось! ㅤ Отвлекись от айтишной рутины и приручи змею, довольно залипательная штука, ничего не нужно устанав
Древнее зло пробудилось! Отвлекись от айтишной рутины и приручи змею, довольно залипательная штука, ничего не нужно устанавливать, открыл в браузере и полетел жрать квадраты. Юзабилити:
1. wasd + qe 2. space
🛠 #games 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Сегодня затронем довольно сложную тему bash: Использование групп в регулярных выражениях. Обычно для регулярок используют grep. Он очень функциональный и быстрый, но иногда использование встроенных в bash регулярок может здорово упростить скрипты. 🔤🔤🔤🔤🔤🔤🔤 Приведу простой пример:
#!/bin/bash

declare PREF="FILE"
#создаем 10 файлов с "плавающим" префиксом
for FILE in  "202512"{01..10};do
  touch ${PREF:$RANDOM%4}${FILE}".txt"
done

# Выбираем только файлы с префиксом из двух или трех символов и "даты"
for FILE in *;do
  if [[ $FILE =~ (.{2,3})([0-9]{4})([0-9]{2})([0-9]{2}) ]];then
#   echo $FILE
    declare -p BASH_REMATCH
  fi
done
Первый for создает 10 тестовых файлов c «случайным» префиксом (1-4 последние буквы слова FILE). Второй for — основной выбирает нужные нам файлы. А что именно нам нужно — задает регулярное выражение. Разберем подробнее:
(.{2,3})([0-9]{4})([0-9]{2})([0-9]{2})
Обратите внимание — регулярку нельзя заключать в кавычки, иначе она превратиться в тыкву строку. Напомню:
. - заменяет любой символ, кроме перевода строки {2,3} - определяет количество захватываемых символов [0-9] - любой символ в диапазоне 0-9 () - захватываемая группа
Первая группа (.{2,3}) — Захватывает от 2 до 3 любых символов {2,3} указывает минимальное и максимальное количество.​ Вторая группа ([0-9]{4}) — Захватывает ровно 4 цифры (0–9)​. Третья и четвёртая группы ([0-9]{2})([0-9]{2}): Каждая захватывает ровно 2 цифры.​ ➡️ И теперь самое главное: Если строка (в данном случае имя файла) соответствует regexp - захваченный результат помещается в массив BASH_REMATCH с индексом 0 Все остальные группы помещаются в следующие элементы массива. Получаем что-то типа:
declare -a BASH_REMATCH=([0]="LE20251204" [1]="LE" [2]="2025" [3]="12" [4]="04")
...
По итогу — с помощью одного if мы получили: Префикс файла (1), год (2), месяц (3) и день (4). Ну, на всякий случай напомню, если вдруг решите дни или месяцы использовать в математических операциях — придется избавиться от ведущих нулей, поскольку числа, начинающиеся на «0» bash считает восьмеричными. Для перфекционистов скажу, что данная регулярка не является строгой по отношению к датам, но в большинстве практических скриптов ее можно использовать. Всем кода без багов. 🛠 #bash 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

О бедном ТЗ замолвите слово 🔤🔤🔤🔤🔤🔤🔤
Без внятного ТЗ — Результат ХЗ.
При любой задаче всегда необходимо составить ТЗ. Если ТЗ составлено хорошо, то сразу определяются инструменты, которые будут необходимы для работы и сразу ограничивается область с которой будет проведена работа. Это значительно сокращает время на поиск решения. Допустим вам нужно купить новый ноутбук. Изначально у вас есть ограничение — бюджет. Далее вы выделяете те характеристики которые вам необходимы. При этом часть характеристик будут друг другу противопостовляться.
Ноутбук с 17 дюймовым экраном практически не может быть легче чем ноутбук с 12 дюймовым экраном.
Если ТЗ было составлено правильно и выделены нужные параметры, то круг покупки сужается и выбрать ноутбук становится значительно легче. При создании какого-то проекта, опять же чем детальнее и лучше ты опишешь что ты хочешь — тем легче тебе будет работать с проектом. При проекте: 🔤 Все рисуем и документируем (чтобы было потом понятно куда и что ставить) 🔤 Схема сети (чем лучше проработана схема — тем проще потом будет создавать защиту на сетевом уровне) 🔤Какие требования ты предъявляешь к проекту (ОТП, сертификаты, хранилище образов и конфигураций, dns, ntp, proxy для управления трафиком, где будет точки управления (mgmt segment) и как ты все это будешь защищать.) 🔤 Далее подбираются решения по каждому вопросу, описанному выше. 🔤 Проверяется во сколько обойдется данный проект (бюджетирование) 🔤 Описывается общая политика кому и что позволено в данном проекте. 🔤 На основе этих планов выискиваются узкие места, которые могут не справится с нагрузкой и продумывается возможность их масштабирования. После подробного описания (в документации) можно начинать вообще что-то делать 😲 Поэтому прежде чем задавать вопросы на форуме/чате сначала напишите:
🤩 Что хотите получить. 🤩 Приложите логи где ошибка. 🤩 При сетевых вопросах — хотя бы схему от руки как минимум как вы хотите чтобы это работало.
🛠 #рабочиебудни #workflow 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

👩‍💻 Открытый урок «Инструменты и механизмы Kubernetes для обеспечения высокой нагрузки». 🗓 17 декабря в 20:00 МСК 🆓 Беспл
👩‍💻 Открытый урок «Инструменты и механизмы Kubernetes для обеспечения высокой нагрузки». 🗓 17 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Инфраструктурная платформа на основе Kubernetes». Программа вебинара: ✔️ Основные инструменты Kubernetes для обеспечения стабильности под нагрузкой: autoscaling, probes, requests & limits, node affinity. ✔️ Механизмы балансировки и маршрутизации трафика: Service, Ingress, LoadBalancer. ✔️ Как настроить автоматическое масштабирование подов и кластеров под пиковые запросы. ✔️ Лучшие практики распределения ресурсов и оптимизации производительности. ✔️ Разбор типичных ошибок при работе с высоконагруженными приложениями в Kubernetes. В результате вебинара: - Поймёте, как Kubernetes управляет ресурсами и нагрузкой. - Научитесь использовать встроенные механизмы для обеспечения высокой доступности и производительности. - Получите практические советы по настройке масштабирования и балансировки. - Сможете применять полученные знания для оптимизации своих систем в реальных условиях. 🔗 Ссылка на регистрацию: https://vk.cc/cRYuh1 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Bash, Devops и Linux это конечно замечательно… Хотел тебе сегодня про «Симулятор айтишника» рассказать, но по РФ законам такой контент оказывается запрещен. Облом. Приведу лишь цитату из описания:
Добро пожаловать в третью часть лучшего симулятора. Наслаждайтесь незабываемыми ощущениями, воплощая в жизнь свои фантазии и получая при этом деньги на обустройство дома и своей жизни.
Если гуглить умеешь, сам найдешь всё необходимое. Дерзай. SIMS на максималках. 🛠 #linux #games #debug 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Как создать эффективное REST API или оптимизировать его? Что сделать для ускорения Redis? Какие секреты скрываются под капото
Как создать эффективное REST API или оптимизировать его? Что сделать для ускорения Redis? Какие секреты скрываются под капотом Android? Что делать при конфликте стилей в микрофронтендах? Что поможет провести продуктивное кросс-ревью в команде? Своим опытом в самых разных сферах делятся frontend-разработчики, системные аналитики, разработчики под Android и iOS из команды ПСБ. Читайте в блоге ПСБ на Хабре, делитесь в комментариях своим мнением и опытом!

Чтоб тебе такого интересного рассказать… а давайка я научу тебя весьма полезной теме. Сегодня будем резать аппетиты.
Тема крайне полезная, бери на вооружение, однажды в хозяйстве однозначно сгодится.
Создаем синтетику
#!/bin/bash

while :; do :; done
Чмодим и запускаем. По итогу твой проц начинает хуярить как не в себя, выжирая на 100500% все свободные ресурсы. Хуита! Давай это исправим и разрешим скрипту хуячить лишь на 50%. Для начала проверяем, сможем ли мы это сделать
mount | grep cgroup2
cat /sys/fs/cgroup/cgroup.controllers
Если получил выхлоп, то в большинстве случаев у тебя всё получится. Создадим клетку «bashdays.slice»:
sudo su
cd /sys/fs/cgroup
mkdir bashdays.slice
echo "+cpu +memory +io" > cgroup.subtree_control
cd bashdays.slice
echo $$ > cgroup.procs

echo "50000 100000" > cpu.max
Здесь мы включаем нужные контроллеры для дочерних директорий, запихиваем туда текущий shell и в последней строчке выставляем 50% для CPU. Снова запускаем первый скрипт-пожиратель и наблюдаем как проц перестал хуярить как не в себя и ограничен теперь половинкой (50%). Отличная работа!
Что такое cgroups — это такая комната наказаний в ядре Linux. Ты создаёшь группу процессов, ядро начинает следить за их CPU, памятью, диском, IO и карать, если они жрут больше положенного.
Аналогично можно сделать и с RAM и с IO.
echo $((512*1024*1024)) > memory.max
Создаем еще одну синтетику:
#!/bin/bash
blocks=()
while true; do
    blocks+=("$(head -c 104857600 </dev/zero | tr '\0' 'A')")
    echo "Allocated ${#blocks[@]}00 MB"
    sleep 1
done
Жрём память пачками по 100 МБ. Сначала увидишь замедление (reclaim), потом — пиздец! Нас выкинет локальный OOM, но только внутри cgroup, а не всей системы. Посмотреть статистику в реальном времени:
cat memory.current
cat memory.events
Ну и давай посмотрим IO (тормозим винт и превращаем его в флешку USB1.1). Цель — мы хотим, чтобы процесс читал с диска не быстрее 10 МБ/с: Узнаем major:minor:
lsblk --output NAME,MAJ:MIN
Допустим, диск — 8:0 (типичное для /dev/sda).
echo "8:0 rbps=10485760" > io.max
И запускаем:
#!/bin/bash

dd if=/dev/sda of=/dev/null bs=1M
Теперь твой винт начинает работать как древняя флешка, хотя железо у тебя современное.
Кстати это отличные способы заподлостроения либо как вариант подойдут для технических собеседований. Например, говоришь кандидату — найди почему тормозит винт, либо — объясни почему скрипт жрет 50% процессора, а не 100%. Сразу вычислишь бродяг вайтишных, им даже ГПТ не поможет.
Короче такие вот приколы! Изучай! 🛠 #linux #cgroup #debug 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Бывает ли кибербезопасность удобной? Как ускорить выдачу доступов, упростить расследование сбоев и забыть о постоянной смене
Бывает ли кибербезопасность удобной? Как ускорить выдачу доступов, упростить расследование сбоев и забыть о постоянной смене паролей от уймы серверов? А заодно — защитить критичные ресурсы от взлома и случайных изменений? Это возможно с PAM-системой, если она следит за балансом безопасности и удобства. BI.ZONE PAM — решение, созданное с уважением к вашему пользовательскому опыту и основанное на концепции zero trust. Смотрите короткие видео, чтобы самим оценить удобство ВI.ZONЕ PAM: 🔵Подключение к защищаемым системам без паролей. 🔵Кеширование MFA для ускорения массовых операций. 🔵Подключение через терминальную ферму Linux. 🔵Лицензии для старта и масштаба.

DLL hijacking остаётся одной из самых недооценённых техник атаки в Windows. Для злоумышленника это возможность исполнить свой
DLL hijacking остаётся одной из самых недооценённых техник атаки в Windows. Для злоумышленника это возможность исполнить свой код под видом легитимного приложения, получить доступ к данным и эскалировать привилегии. Для специалистов по ИБ это риск, который многие замечают слишком поздно. Именно поэтому мы проводим открытый урок в преддверие старта курса «Пентест. Инструменты и методы проникновения в действии». 3 декабря в 20:00 МСК мы разберём, как Windows ищет DLL, почему этот механизм становится вектором атаки и какие ошибки разработчиков и администраторов открывают путь для подмены библиотек. Покажем реальные кейсы, работу техники вживую и способы защиты: от явных путей загрузки до цифровых подписей и Safe DLL Search Mode. После урока вы сможете оценивать собственные системы и приложения на уязвимость к DLL hijacking и понимать, где именно возникают риски. Формат подойдёт специалистам по ИБ, SOC-аналитикам и администраторам, которым важно укрепить контроль над средой Windows. Зарегистрируйтесь и получите чёткую, практическую инструкцию по защите: https://vk.cc/cRR3Gw Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

В Proxmox 9.1 завезли OCI. В предыдущем посте про обновление с 8ки на 9ку я это уже упоминал, поэтому повторяться не буду.
➡️ Как я обновлял Proxmox и остался жив
Сегодня посмотрим как OCI работает на практике. OCI это не какая-то отдельная сущность, это тот же самый LXC контейнер в котором будет запущен нужный тебе контейнер. Тут важное замечание — тебе не нужно устанавливать руками docker демона в LXC и только затем запускать контейнер. OCI все сделает само. Это не какой-то встроенный docker или k8s. Всё так или иначе работает под управлением LXC. К примеру возьмем заезженный образ nginx, который валяется в dockerhub:
nginx:latest
Заходим в Proxmox и идем в раздел с шаблонами, там будет кнопка Pull from OCI Registry. ➡️ ЧИТАТЬ ПРОДОЛЖЕНИЕ 🛠 #proxmox #devops #selfhosting 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

🔥OS DevConf 25 powered by GigaChat — конференция про разработку системного ПО, ядра Linux и open source Один день, 500 участ
🔥OS DevConf 25 powered by GigaChat — конференция про разработку системного ПО, ядра Linux и open source
Один день, 500 участников, 30+ докладов, 3 трека — концентрат практического опыта, знаний и инструментов, готовых к внедрению сразу по возвращению в офис. И, конечно, мега-возможности для нетворкинга с коллегами и экспертами сообщества!
Что будем обсуждать? 🔘Инструменты и примеры отладки, виртуализации, оптимизации производительности 🔘Практический опыт оптимизации сетевых решений с DPDK 🔘Эффективные методы безопасной разработки ядра Linux 🔘Реальные кейсы создания драйверов на Rust 🔘Все про GPU, NPU, ASIC и как запускать AI на железе под Linux и не только. Как AI встраивается в современную разработку 🔘Современные подходы к разработке системного и embedded ПО Участие бесплатное, но количество мест ограничено — зарегистрируйтесь прямо сейчас💻 Ждем вас на крупнейшей конференции по разработке системного ПО и Linux в России! Реклама. ООО «Конференции Олега Бунина», ИНН: 7733863233, Erid: 2Vtzquk6F9T

А у нас сегодня на повестке интересная «темка» — Автоматическая очистка tmp-файлов даже после SIGTERM.
Как говорится — Волков бояться, в лесу не ебаться!
Пишем подопытный скрипт:
#!/usr/bin/env bash
set -e

temp=$(mktemp)
echo "Создал файл: $temp"

false

echo "Удаляю файл"
rm -f "$temp"
Чмодим, запускаем, ага скрипт упал на false, но успел создать временный файл в папке /tmp == /tmp/tmp.oWQ0HiYxSV. И он не удалился. Скрипт вернул статус == 1; Код выходы проверить так:
echo "код: $?"
Здесь я взял синтетику, показать наглядно этот случай. Суть «темки» — подчищать за собой, при любых обстоятельствах, даже если скрипт вернул ошибку, либо завершился успешно. Снова изобретать велосипед? Неа! Всё это работает из коробки.
#!/usr/bin/env bash
set -e

temp=$(mktemp)
echo "Создал файл: $temp"

trap 'echo "Удаляю $temp"; rm -f "$temp"' EXIT
echo "Эта строка уже не выполнится"

false
В этом случае скрипт также вернет код 1, но временный файл будет удалён при любом раскладе. Нихуя непонятно, но очень интересно. Смотри — trap вызывает rm ПРИ ВЫХОДЕ ИЗ СКРИПТА. И похуй с каким статусом был завершен скрипт. Временный файл будет гарантированно удалён. Давай подключим strace:
strace -e trace=process,signal bash -c '
  tmp=$(mktemp)
  trap "rm -f $tmp" EXIT
  echo "tmp=$tmp"
'
В выхлопе видим:
openat(AT_FDCWD, "/tmp/tmp.Dn2qG3uK9V", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
rt_sigaction(SIGINT, {sa_handler=0x...}, NULL, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=0x...}, NULL, 8) = 0
unlink("/tmp/tmp.Dn2qG3uK9V") = 0
exit_group(0) = ?
openat(... O_EXCL) — это mktemp, создающий файл атомарно rt_sigaction() — Bash ставит ловушки для сигналов unlink() — это и есть выполнение trap exit_group(0) = ? — завершает процесс То есть Bash вызывает rm/unlink() ДО выхода из процесса. Почему trap срабатывает? Если скрипт упал или получил сигнал kill -TERM <pid>, то на уровне Bash: — в обработчике сигнала вызывается registered trap — затем Bash падает/выходит — trap УЖЕ успел выполнить команду очистки trap выполняется ДО того, как процесс отдаст SIGTERM ядру, если только ловушка для этого сигнала была установлена. Да банально при выполнении скрипта ты нажал CTRL+C, скрипт остановился, НО временные файлы сразу подчистились.
➡️ Про exit codes (коды выхода) писал тут. ➡️ Про сигналы писал ранее тут и тут и тут и тут.
Вот такие пироги! С пятницей и хороших тебе предстоящих выходных! 🛠 #bash #debug #strace 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

👩‍💻 Открытый урок «Custom Resource Definitions (CRD) в Kubernetes. Операторы: автоматизация на новом уровне». 🗓 3 декабря
👩‍💻 Открытый урок «Custom Resource Definitions (CRD) в Kubernetes. Операторы: автоматизация на новом уровне». 🗓 3 декабря в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Инфраструктурная платформа на основе Kubernetes». Программа вебинара: ✔️ Что такое Custom Resource Definitions (CRD) и зачем они нужны. ✔️ Как создать и зарегистрировать собственный CRD. ✔️ Примеры использования CRD в продакшн-кластерах. ✔️ Что такое операторы, их роль и принципы работы. ✔️ Как CRD и операторы помогают автоматизировать управление ресурсами и снижать нагрузку на инженеров. В результате вебинара: - Поймёте, как с помощью CRD и операторов расширять возможности Kubernetes. - Научитесь автоматизировать управление пользовательскими ресурсами и упрощать поддержку инфраструктуры. - Получите базу для создания собственных операторов и интеграции их в CI/CD. 🔗 Ссылка на регистрацию: https://vk.cc/cRJKCS Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Docker Privileged VS Non-privileged
Как говорится — «Нам нужно досье на этого мисье»
Давай сразу к примерам: ➡️ Non-privileged Ты ребёнок, тебя посадили в песочницу, дали совок и формочки, сказали — слышь еблан, играть можно только здесь! Ты можешь: — лепить куличики и кренделя — копать ямки и могилки для жуков — сыпать песочек в глаза другим детям — строить свой маленький мир Ты не можешь: — вылазить из песочницы — пойти на стройку и доебывать сторожа — насрать в ладошку и кидаться этим в людей — послать всех нахуй и сделать по своему Ты работаешь строго в пределах песочницы. Безопасно, предсказуемо, контролируемо, изолировано. Ты бездушный non-privileged контейнер. ➡️ Privileged Ты ребёнок, но всем на тебя поебать, ты сам выбираешь сидеть тебе в песочнице или кидаться с балкона кирпичами в пустые головы прохожих. У тебя развязаны руки, любые безумные поступки позволительны. У тебя есть ключи от всех дверей и тебе за это ничего не будет. Всё это происходит, когда ты запускаешь:
docker run --privileged
Твой контейнер может: — управлять сетевыми интерфейсами хоста — лезть в /dev — монтировать что угодно куда угодно — работать как полноценная виртуалка — запускать systemd, модифицировать ядро, iptables, модули и т.п То есть, это уже не ребёнок в песочнице, а ребёнок со швейцарским армейским ножом, запертый в серверной. ➡️ Non-privileged (обычный контейнер) - Ограниченный доступ к Linux capabilities - Нет доступа к аппаратным устройствам - Нет прав на управление сетью хоста - Запуск отдельных процессов, а не мини-ОС - Работает в namespace'ах и cgroup'ах изоляции Используется для: - веб-сервисов - приложений - баз данных - CI/CD runner’ов (если привилегия не нужна) - всего, что «из коробки» работает в Docker ➡️ Privileged (контейнер-всевластия) - Доступ ко всем Linux capabilities - Может лезть в /dev, работать с устройствами - Может менять сетевые интерфейсы хоста - Может работать как виртуалка - Может запускать systemd - Может cломать или убить сеть, firewall и модули ядра Используется для: - контейнеров, которым нужны реальные устройства - low-level инструментов: tcpdump, wireshark, iptables - Docker-in-Docker в особых сценариях - Kubernetes kubelet / CNI плагины - экспериментов, когда нужно «полный root над всем» Что выбрать? Мой алгоритм:
Задача не требует низкоуровневых операций? ⚪ всегда non-privileged. Нужно одно конкретное действие (например NET_ADMIN)? ⚪ --cap-add вместо privileged. Нужен доступ к устройству? ⚪--device вместо полного доступа. Ничего из этого не помогает? ⚪ тогда уже --privileged.
В большинстве случаев лучше выдать минимум необходимых прав, чем сразу открывать ящик пандоры. Ну и для отладки privileged прям мастхев, чтобы исключить какие-то внешние факторы, от которых могут лезть баги. На днях продолжим… 🛠 #linuxfactory #linux #docker 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Скидка 50% на менеджер паролей Пассворк Чёрная пятница в Пассворке стартует 24 ноября и продлится до 5 декабря. В эти дни буд
Скидка 50% на менеджер паролей Пассворк Чёрная пятница в Пассворке стартует 24 ноября и продлится до 5 декабря. В эти дни будет действовать скидка 50% на покупку коробочного решения. Что даёт Пассворк вашей компании Централизованное управление конфиденциальными данными. Всё остаётся в вашей инфраструктуре. Сотрудники быстро находят нужную информацию, администраторы управляют правами доступа, отслеживают все действия и изменения — полный контроль и безопасность. Почему Пассворк • Включён в единый реестр Минцифры • Имеет все необходимые лицензии ФСТЭК и ФСБ • Качественная и оперативная поддержка • Все пароли и секреты хранятся на ваших серверах • Регулярные обновления и сопровождение на каждом этапе • Опыт внедрения в системообразующие предприятия страны • Сертифицирован с Astra Linux, РЕД Софт, МСВСфера, Pangolin DB, ОС Атлант и многими другими российскими решениями Пассворк создан для компаний и государственных учреждений, которым нужна проверенная безопасность. Всё упорядочено, защищено и всегда под рукой. Приобрести Пассворк со скидкой 50%