Обновить
256K+

Linux *

Пишем под *nix

335,69
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Дежурство недели: еженедельный рейтинг на Flask и SQLite без крона

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели2.2K

В прошлых статьях я рассказывал, как устроен мой тренажёр инцидентов, и разбирал кейс с 502 Bad Gateway. Сегодня утром я релизнул два новых режима: «дежурство недели» и публичный профиль игрока. Покажу, как они устроены: там нет ни крона, ни новых таблиц, и всё равно есть пара мест, где легко ошибиться.

Читать далее

Новости

Системное программирование на C++: процессы, C-API и WinAPI

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели3.2K

Привет, Хабр!

Это вторая статья цикла про C++. В первой я разбирал базу для тех, кто начинает с нуля: переменные, циклы, классы, контейнеры. Здесь идём на уровень ниже — как обычная C+±программа договаривается с операционной системой.

Сразу скажу, зачем я вообще полез в эту тему. В колледже была лаба, где нужно было поднять процесс, дождаться его и снять код возврата. Я неделю не понимал, почему fork() в одном случае возвращает ноль, а в другом — PID, и почему после exec ребёнок «исчезает». Препод объяснил это минут за десять — и я понял, что половину объяснений всё равно не понял. С тех пор я пишу такие вещи с расстановкой: не «fork() создаёт процесс», а что именно он возвращает, что происходит в коде после вызова и что будет, если забыть закрыть дескрипторы. Поэтому статей будет много, а примеров в каждой — ещё больше.

Что дальше в цикле, чтобы было понятно, куда мы движемся:

Читать далее

Попросил Claude починить прокрутку в Linux под UTM — получил демон, окно настроек и находку в libinput

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели2.9K

Работаю в VS Code в Linux-виртуалке UTM на маке, и прокрутка там всегда прыгала по три строки и очень чувствительна к движениям пальца, вместо прокрутки приходилось пользоваться обычными стрелками на клаве. Ранее я уже просил Claude это исправить: поставили замедлитель и imwheel, не помогло, на этом и остановились. В этот раз Claude Opus 5.5 за один чат и пару моих правок разобрался до конца. Выяснилось, что причин три, и одна сидит в самом libinput (уж очень клод акцентирует внимание на этой причине): он придерживает первые пол-щелчка каждого жеста и выдаёт их рывком. Claude написал прогу с интерфейсом и настройками, залил всё на GitHub. До идеала macOS не дотягивает - первое движение нужно делать чуть длиннее, чем на маке. В остальном прокрутка плавная и привычная, результатом доволен. В статье - технический разбор, как это получилось. Картинка, вся работа и статья от клода опус 5.5.

Читать далее

Разведка, Pentest и причем тут контейнеры?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели3.2K

Как использовать мощь BlackArch и Kali Linux, оставаясь на чистой домашней системе и не ломая ее? Рассказываю историю создания Open Source проекта VoidSec — модульного менеджера, который автоматизирует менеджмент пентест‑утилит в изолированных Podman‑контейнерах, избавляя от боли от поломанных зависимостей раз и навсегда.

Читать далее

Armbian x Eltay RM66

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3K

В статье рассказываю о своём проекте по портированию Armbian на российский компьютерный модуль Eltay RM66 на базе Rockchip RK3566. Начну с краткого напоминания о том, зачем железу нужна ОС, почему я выбрал именно Armbian. Если тема заинтересует, в следующей статье разберу техническую сторону портирования, Device Tree, загрузчики и интеграцию в Open Source.

Читать далее

Можно ли навайбкодить операционную систему как Linux, только быструю?

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели7K

Наступила эпоха, когда любая домохозяйка за несколько промптов поднимает себе CRM: фронтенд на JS, бэкенд на Go, данные в Postgres. И при этом не понимает ни слова из того, что я сейчас написал.

А куда заведёт кривая гика, который пятнадцать лет отдал коммерческой разработке ещё в доLLMную эпоху?

Дело было вечером, подписка на Claude Code простаивала, мысли вертелись. Перебирая прожитые годы, я вспомнил детскую мечту: написать свою операционную систему. Хорошую, чтобы всех радовала и приносила людям пользу. Как Windows, только лучше.

Windows из списка хороших систем я вычеркнул ещё в школе, вместе с синим экраном. Да и Linux перестал казаться идеалом, когда я начал считать микросекунды.

Читать далее

DIY: Российский одноплатник Eltay RM66 в карманном компьютере

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.1K

Подарок любителю Linux или Как я «поженил» PocketTerm35 с русским одноплатным ПК Eltay RM66.

Есть у меня знакомый врач. Он очень хороший врач, но и второе его увлечение — Linux!

Читать далее

Свой игровой сервер на Linux: от systemd до Docker на примере Minecraft и Valheim

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели4.2K

Когда друг в очередной раз спрашивает: «А давай поднимем свой сервер, чтобы никто не выключал?», — начинаешь гуглить и натыкаешься либо на видео сомнительного качества, либо на форумные треды десятилетней давности. А хочется, чтобы сервер работал, обновлялся, не падал и не открывал дыру в безопасности. Эта статья — практический разбор двух подходов к организации игрового сервера на Linux: «голое железо» с systemd и контейнеризация через Docker. На примере Minecraft (как самой частой истории) и Valheim (как примера из мира Steam). Без магии, с командами и конфигами.

Что нужно решить до первой команды

Прежде чем ставить пакеты, ответьте на три вопроса. От них зависит всё остальное.

Железо. Minecraft — игра, которая любит одно ядро и много памяти. Официальные требования начинаются от 1 ГБ RAM для ванильного сервера, но для 5–10 игроков уже стоит ориентироваться на 2–4 ГБ. Для модовых сборок цифры умножаются: 3 ГБ хватит на 3–8 игроков, 4 ГБ — на 8–15, а дальше — как повезёт с конкретными модами. Valheim требует минимум 4 ядра и 2 ГБ RAM, но на практике стабильнее себя чувствует с запасом.

ОС. Ubuntu 22.04/24.04 LTS или Debian 12+ — самые «обкатанные» варианты для игровых серверов. На старых дистрибутивах Valheim может не запуститься из‑за устаревшей glibc (нужна версия 2.29+). Если железо старое, Docker часто становится обходным путём, потому что тащит свои зависимости.

Подход. systemd на хосте — прозрачность и контроль. Docker — воспроизводимость и лёгкость обновлений. Ниже — оба варианта.

Читать далее

502 Bad Gateway: три причины и куда смотреть

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели4.2K

В прошлой статье я рассказывал, как устроен мой тренажёр инцидентов изнутри. Сегодня покажу один кейс, седьмой, про 502 Bad Gateway. Он небольшой, но на нём хорошо видно, почему рестарт nginx почти никогда не помогает.

Вводная такая: ночью выкатили релиз, утром магазин отдаёт 502. При этом systemctl status nginx показывает active (running).

502 значит, что nginx запрос принял, передал дальше и нормального ответа не получил. То есть nginx тут свидетель, и начинать надо с его лога:

Читать далее

Локальный AI-ассистент в VS Code: Запускаем gpt-oss 20B (MoE) с плагином Kilo Code на 32 ГБ ОЗУ

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели3.2K

Многие разработчики рано или поздно задумываются о том, чтобы перенести AI-ассистента к себе на локальную машину. Причины разные: корпоративные политики безопасности, нежелание "сливать" свой код в облако или просто спортивный интерес.

Если вы еще ни разу не пробовали развернуть оффлайн-референс, сейчас — самое время. Спойлер: вам не нужен суперкомпьютер. Если у вас есть 32 ГБ оперативной памяти и относительно свежее железо, этого более чем достаточно для комфортной работы.

В этой статье мы возьмем модель класса 20B (например, gpt-oss:20b). Звучит тяжело, но благодаря архитектуре MoE (Mixture of Experts) модель активирует только часть своих параметров для каждого токена, поэтому скорость генерации вас приятно удивит даже без топовой видеокарты.

А в качестве интерфейса мы будем использовать один из самых популярных и продвинутых плагинов для VS Code — Kilo Code App. Это мощный форк известного OpenCode (Continue), который включает в себя значительно больше изменений, новшеств и заточен под серьезную работу с агентами и тулами (tools).

Читать далее

Перезапустил — и стало хуже: 5 инцидентов, которые не лечатся рестартом

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.9K

Три часа ночи, API отвечает 500, и рука сама набирает systemctl restart. Иногда это помогает, но есть инциденты, где рестарт добивает то, что ещё работало, и стирает улики. Пять таких: битый конфиг, OOM killer, retry storm, CrashLoopBackOff и диск, забитый логом, — с командами, которые находят настоящую причину, и шпаргалкой на одну таблицу.

Читать далее

Пишем свой масс-сканер и OSINT-комбайн на Python: от скрипта «в лоб» до асинхронности и SQLite

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели7K

В процессе изучения сетевой безопасности и автоматизации OSINT на базе Linux передо мной встала задача — создать быстрый и отказоустойчивый инструмент для первоначального сбора данных и фиксации сетевых инцидентов. В данной статье я поделюсь каждым этапом разработки первых версий моего инструмента Web-Recon. Мы пройдем путь от простейшего скрипта, спотыкающегося о первые блокировки и ошибки 403, до создания асинхронного пула потоков на ThreadPoolExecutor и проектирования базы данных на SQLite3 с решением проблемы параллельной записи (database is locked).

Читать далее

Как я писал свой TCP на чистом Си: надежный протокол доставки данных поверх UDP

Уровень сложностиСложный
Время на прочтение33 мин
Охват и читатели12K

История о том, как реализовать надежный протокол поверх ненадежного UDP: скользящее окно, SACK, чексумма и почему при потерях сеть внезапно заработала быстрее

Зачем вообще писать свой RDT-протокол? Каждый джун знает, что TCP у нас «надежный, но медленный», а UDP — «быстрый, но ненадежный». Но это очень поверхностные знания, которые не раскрывают всего масштаба происходящего под капотом. И как раз недавно я задался вопросом: а почему бы не попытаться повторить TCP? Амбициозная цель: приблизить своё детище к работе TCP, поработить мир и захватить умы человечества, объединив всех в единый организм… Кхм, ну что-то типа того.

Получилось ли у меня? Захватить мир — пока нет, а вот добиться надежной доставки данных через ненадежную сеть с потерями, порчей данных, дублированием, задержками и так далее — более чем. Так что хочу рассказать свою историю о том, как я писал это чудо, с чего начинал, с какими проблемами столкнулся и как пришел к рабочему варианту протокола: с поддержкой скользящего окна, SACK, таймаутов, флагов и прочих прелестей, которые я подглядел в архитектуре TCP. Протокол прошел краш-тест с 30% потерь в сети и смог передать данные байт-в-байт, правда, с нюансами, о которых расскажу дальше :)

Читать далее

Ближайшие события

Мой сервер врал «готово» каждому новичку

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.5K

Новичок открывает первый кейс, о котором я рассказывал в первой статье., читает брифинг, и через пять секунд сайт пишет: «Готово, жми „Начать“». Он жмёт и смотрит на пустое окно терминала. Секунд через десять там ошибка, страница сама перезагружает терминал, и только потом появляется консоль.

Сервер при этом не падал, CPU и память в норме, алерты молчат. Были только строчки в журнале, которые я чуть не записал в «обычный шум».

Читать далее

Kylin Desktop V11 изнутри: неизменяемая система, встроенные нейросети и обзор программ

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели5.7K

Автоматизированное тестирование наших продуктов для Avalonia UI работает на виртуальных машинах с разными Linux: Ubuntu, Astra Linux, ALT, РЕД ОС. Мы планируем расширить этот набор. Изучили Kylin Desktop V11 (银河麒麟, «Галактический Цилинь») — основную ОС для госсектора Китая — и решили поделиться результатами. В этой ОС встречается несколько интересных вещей, о которых мы хотим рассказать сегодня. Корень системы неизменяемый и обновляется атомарно через ostree, apt работает в отдельном контейнере, у программ свой формат пакетов, а вместе с рабочим столом запускается сервер инференса NVIDIA Triton с двумя десятками нейросетей.

Читать далее

Root без права на запись: как четыре уязвимости Linux обходят защиту файлов

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.6K

У пользователя нет прав на изменение системного файла: открыть его можно только для чтения. Но что произойдет, если само ядро Linux запишет новые данные в его страницу в оперативной памяти? Для обычной проверки прав доступа такая запись может остаться незаметной.

В 2026 году исследователи описали несколько уязвимостей с таким механизмом. Они затрагивают криптографию и обработку сетевых пакетов, но причина у них похожая: подсистемы ядра неправильно обращаются с общими страницами памяти. Разберем Copy Fail, Dirty Frag и pedit COW, а затем посмотрим, как эти ошибки приводят к повышению привилегий.

В АБП2Б мы проводим пентесты и аудиты информационной безопасности. В этой работе сталкиваемся всё чаще с уязвимостями Linux, которые позволяют повысить привилегии в системе. В статье рассмотрим несколько таких уязвимостей и разберём, за счёт чего они работают.

Читать далее

Я раздаю root на своём сервере всем подряд — и он до сих пор жив

Время на прочтение10 мин
Охват и читатели4.8K

Рассказываю, что может натворить человек с root в контейнере и как я это закрыл: gVisor вместо runc, отдельная сеть на каждый запуск, лимиты, сторож диска и проверка, которую не обмануть через sudo. Плюс три дыры в «идеальной» сетевой изоляции и замеры: почему load average врёт и как 3 места на сервере превратились в 9.

Читать далее

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

Время на прочтение4 мин
Охват и читатели5.6K

В сентябре Canonical объявила, что будет выпускать апдейты для ядра Linux в Ubuntu каждую неделю. Одна из причин — инструменты на основе ИИ помогают находить все больше уязвимостей, и разработчикам приходится быстрее доставлять исправления пользователям. Впрочем, на статистику повлияли и новые правила учета ошибок в Linux. Чтобы справиться с нагрузкой, компания перестраивает график подготовки пакетов, сохраняя время на их проверку. Давайте посмотрим, как это будет работать и насколько полезными оказались нейросети в поиске проблем с безопасностью. 

Читать далее

Таймаут вернул 124, а следующий запуск пропущен: какие фоновые утилиты держат flock

Время на прочтение5 мин
Охват и читатели4.7K

Задача в cron упёрлась в timeout, в логе код 124, а следующий запуск молча пропускается: lock занят. Я проверил в контейнере семь обычных способов оставить что-то работать в фоне — setsid -f, nohup, start-stop-daemon, двойной fork, ssh-agent, gpg-agent — под timeout и subprocess.run(timeout=). Демона не убила ни одна обёртка. Пропустит ли cron следующий запуск, решает сама утилита: gpg-agent держит lock, ssh-agent отпускает, но за пять запусков копится пять агентов. Код 124 у оборванного запуска при этом одинаковый.

Читать далее

Прод лежит, а CPU, память и диск в порядке: 5 причин, о которых не думаешь

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели7.9K

Алерт: сайт лежит, а CPU, память и диск в норме. Разбираю пять причин, которых не видно на стандартном дашборде: inode, лимит файловых дескрипторов, ушедшие часы, DNS и протухший сертификат. Для каждой — как выглядит, чем найти, как починить и что добавить в мониторинг.

Читать далее
1
23 ...