Обновить
512K+

Linux *

Пишем под *nix

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

Как я перестал переключать VPN и разделил рабочий и личный интернет архитектурно

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

Если вы работаете в большой компании и одновременно живёте там, где есть какие-то региональные ограничения на сервисы, у вас почти наверняка две VPN-конфигурации:

рабочая — для доступа к внутренним ресурсам (GitLab, Jira, Confluence и т.д.)

личная — для личных целей

И постоянное переключение между ними — это, мягко говоря, неудобно.

Читать далее

Новости

Best Practices по Dockerfile: от базового образа и кеша до SBOM, Cosign и CI/CD

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

Статья получилась большой: практик много, и каждая из них важна по-своему. Я собрал её как набор best practices: не все пункты нужны каждому проекту, но почти каждый пункт однажды всплывает на ревью, в CI или после неприятного инцидента.

Я старался писать для разных грейдов: от базовых ошибок вроде COPY . ., latest и root-пользователя до продовых тем вроде BuildKit, секретов, SBOM, подписи образов и защиты цепочки поставки ПО.
Поэтому язык подачи здесь намеренно сухой, прямой и инженерный: без долгих заходов, без воды и без пересказа документации ради пересказа. Я хотел сделать не обзорную статью, а рабочую памятку, к которой можно вернуться при написании, ревью или доработке Dockerfile.

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

Оглавление:

1. Базовый образ, версии и управляемое обновление

2. Контекст сборки, .dockerignore, копирование файлов и безопасное получение внешних данных ...

Читать далее

(Не)безопасный eBPF: что маркетологи забыли упомянуть об уязвимостях

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

eBPF называют «безопасным по умолчанию». Но что, если это не так?

Все хвалят eBPF за «безопасность и изоляцию». Но что если данные из вашей eBPF-мапы может прочитать любой процесс с правами root?

Я не буду учить писать свой eBPF-хелпер. Я покажу практический пример демонстрации этой уязвимости.

Пора разобрать вопрос, о котором часто молчат: почему данные из eBPF-мап могут быть доступны не только вашему агенту.

Читать далее

Linux на смартфоне — PostmarketOS

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

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

В данной статье я расскажу об этой системе, о том, как она ставится, о её возможностях и опыте использования.

Читать далее

Редактор, в котором главный — терминал: как я делал лёгкую IDE под эпоху ИИ-агентов

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

Год назад я почти перестал писать код руками - теперь чаще диктую задачу агенту прямо в терминале. И однажды понял, что мой здоровенный IDE превратился в дорогую рамку вокруг одного окна. Так появился лёгкий редактор, где терминал главный, а код с git - сбоку.

Внутри - про инженерию, а не про “качайте продукт”: как агент-независимо ловить “агент работает / ждёт ответа / закончил” через /proc, как собрать Windows-сборку Electron прямо с Linux без Wine, темы на контракте CSS-токенов и пара граблей, на которых я знатно подгорел (привет, Ctrl+V в русской раскладке).

Читать далее

Nexspence — бесплатная альтернатива Nexus Repository, которую помогал мне писать Claude Code

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

Привет, Хабр! Примерно полтора года назад я решил обновить наш рабочий Nexus Repository OSS — и был «приятно» удивлён: Sonatype отказались от OSS-версии и перешли на Community Edition с лимитами на количество репозиториев и компонентов. Платить за Pro я не хотел, переходить на Artifactory тоже — JFrog ушёл из России ещё в 2022-м. Так что пообещал себе разобраться с этим «на следующих выходных» и написать что-то своё. Выходные закончились, а я всё ещё пишу код 🙂 Но зато получился нормальный инструмент, которым пользуемся сами — и теперь хочу рассказать про него.

Это статья про Nexspence — open-source менеджер артефактов на Go, который поддерживает 14 форматов пакетов и совместим с Nexus REST API.

Читать далее

Бесплатная синхронизация Obsidian на разных устройствах

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

Уже многие написали и рассказали о таком полезном инструменте для организации своих заметок как Obsidian.

Если кто еще не знает, Obsidian - это бесплатное Electron-приложение, доступное на всех основных платформах, созданное Эрикой Сю и Шидом Ли уже в далёком 2020 году. В этой программе итересным UI-решением, позволившим привлечь внимание аудитории, стало визуализация графа заметок, как некой общей карты,мозга, базы знаний, состоящией из md-документов. Для меня на приктике эта фича оказалась самой бесполезной по сравнению с другими возможностями платформы. Встроенные плагины для ежедневных заметок, тэги, мощный поиск, шаблоны, работа с изображениями и многое другое + больше колличество стороннних плагинов на любой вкус и возможность при необходимости написать их самому. Вот, что мне пригодилось на самом деле. Я действительно за короткое время перенес все свои заметки из разрозненных источников в одно место и программа стала моим ежедненвным инструментом. Поэтому я стал ее использовать на нескольких устройствах.

Когда встал вопрос синхронизации я сразу нашел такой функционал внутри самого Obsidian. Но он платный. Данные для синхронизации ходят через сервера разработчика приложения. Меня не очень устроил этот вариант. Вариант с тем, чтобы бегать между компьютерами с флешкой тоже сразу отпал. Во-первых - это бред. Во-вторых - это бред. В-третьих - это неудобно и данные ломаются при ручном слиянии.

В качестве решения я нашел opensource-программу syncthing. Она простая, быстро устанавливается, имеет довольно простой интерфейс. На своих устройствах я использую Ubuntu, поэтому данное ПО также отлично подходит.

Читать далее

Что такое OpSec, если углубится

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

OpSec (Операционная Безопасность) — способ скрыть важную пользователю информацию в сети для избежания утечек или взлома аккаунтов.

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

Читать далее

Делаем ностальгический фильмоскоп на Raspberry Pi Zero 2 W

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

Один из ярких воспоминаний детства — просмотр семьёй диафильмов. Выключался свет, и на самодельном экране из простыни мы смотрели сказки. Детское воображение дорисовывало детали, и картинки оживали.

Сейчас в эпоху интернета, мультимедиа и ИИ вроде бы как такой необходимости нет, но слишком сильное чувство ностальгии. Поэтому решил получить ностальгические воспоминания с использованием современных технологий, а заодно и попрактиковаться в использовании энкодеров, разработке программ на Си и настройке Linux на Raspberry Pi.

Читать далее

Ubuntu Core 26: snap-компоненты, Livepatch на ARM и новый подход к сборке

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

Недавно Canonical представила Ubuntu Core 26 — новую версию своей компактной платформы на базе Ubuntu 26.04 LTS. Разработчики сохранили ставку на безопасность и долгую поддержку, но при этом заметно упростили обновление устройств, сборку образов и повседневную работу с системой. ОС предлагает до пятнадцати лет обновлений безопасности, более компактные системные образы и доработанный механизм OTA-обновлений. В релизе появился новый процесс сборки через Chisel, уменьшился размер обновлений благодаря snap-delta и заработал Livepatch для ARM64. Эти изменения упрощают сопровождение устройств, которые должны работать годами без прямого доступа и регулярного обслуживания. Давайте оценим новинку.

Читать далее

Загрузка PocketHandyBox Linux с помощью TinyPXE Server, iPXE и WinNFSd

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

Подготовлены .ini файл с настройками TinyPXE Server, скрипт запуска WinNFSd, загрузочные файлы iPXE и скрипт autoexec.ipxe. В общем все необходимое для запуска PocketHandyBox Linux через PXE на почти любом ПК в локальной сети, используя в качестве сервера любой ПК/ноутбук с Windows.

Благодаря поддержке в TinyPXE Server режима ProxyDHCP, при наличии в локальной сети основного DHCP сервера (без настроенной опции 67) / роутера - нет необходимости как либо вмешиваться в его работу. А также нет необходимости изменять IP адреса или файловые пути в каких либо конфигах.

Все необходимое для запуска серверной части на Windows находится в одной папке. Не требует установки каких либо служб или правки реестра. То есть просто копированием переносится между разными Windows ПК и разными локальными сетями.

Поддерживается загрузка через PXE как в UEFI так и в Legacy/CSM режимах. К сожалению Secure Boot не поддерживается и его требуется отключать.

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

Читать далее

Как я не нашёл нормальную альтернативу WinSSHTerm на macOS, психанул и написал свою

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

После перехода на macOS я не нашёл SSH-клиент, который закрывает мой ежедневный сценарий так же удобно, как WinSSHTerm.

Устал от постоянных компромиссов, сформулировал требования, собрал свой клиент и выложил код в open source.

Репозиторий

Читать далее

Из жизни провайдеров: история одного факапа

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

Мы небольшой региональный интернет-провайдер. Недавно случился у нас инцидент.

Первый звоночек прозвенел, когда было зафиксировано резкое уменьшение нагрузки на внешнем интернет‑канале, сопровождавшееся записями в логах KERNEL PERF interrupt took too long, lowering на одном из серверов, обеспечивающих доступ в сеть Интернет. Расследование показало, что нагрузка вернулась к норме в течение 15 минут, и никаких последствий не было выявлено.

Что же там случилось?

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

Root в контейнере — это root на хосте? Разбираю важные особенности прав доступов в контейнерах Docker/Podman

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

Если назначить файлу владельца root на хосте — будет ли это тот же самый root внутри контейнера?

Если на хосте существует пользователь gtosss — можно ли переключиться на него внутри контейнера и получить доступ к файлу?

Если создать пользователя gtosss внутри контейнера и выдать ему права на файл — сможет ли хост обратиться к этому файлу под таким же пользователем?

Большинство разработчиков знают, что контейнеры изолируют процессы. Но мало кто задумывается о том, что происходит с правами, когда например директория с хоста монтируется внутрь контейнера через volume (bind mount).

Разобрал три конкретных сценария на Ubuntu с Docker и Fedora с Podman: как UID/GID влияют на доступ к файлам, почему root в контейнере может быть root на хосте и что с этим делает user namespace. Эксперименты, cli и доступные объяснения.

Читать далее

io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll

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

io_uring продавали как убийцу epoll. На деле на HTTP keep-alive разница 0-15%, иногда не в его пользу. Но на NVMe с queue depth 128 - в 3 раза быстрее. Честный разбор с бенчмарками, реальными граблями (SQPOLL, cancel race, partial recv) и почему Google отключил io_uring в ChromeOS.

Читать далее

Слишком много открытых файлов: лимит Linux, который валит прод в 3 часа ночи

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

Когда сервис падает с too many open files, первое желание — проверить ulimit -n и поднять лимит повыше. Но в Linux эта ошибка редко сводится к одной настройке: в игру вступают файловые дескрипторы, сокеты, лимиты процесса, настройки контейнерного рантайма и поведение самого приложения.

В статье разбираем, что на самом деле означает EMFILE, где смотреть реальные ограничения в Kubernetes и как отличить нехватку лимита от утечки, которая рано или поздно снова уронит прод.

Разобраться с лимитами

Байты, нибблы, и подсветка: пишем свой TUI hex-редактор на Python

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

В жизни каждого разработчика иногда приходится рассматривать бинарные файлы через специальные HEX-редакторы.

Мы открываем его, видим три колонки цифр и букв, и кажется что все предельно ясно-понятно. Но почему адреса считаются шестнадцатеричными, что такое ниббл и зачем он вообще нужен? В этой статье мы не просто напишем свой hex-редактор на Python — мы разберем, как он устроен, от битового представления до цветовой подсветки. Выясним, чем подсветка по нибблам отличается от подсветки по категориям байтов, и почему градиенты в hex-дампе — это не просто украшение, а рабочий инструмент.

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

Будет и код, и архитектура, и результат, и практика.

Читать далее

Как превратить домашнюю файлопомойку в умную AI-галерею на основе сборки из x99+Xeon и видеокарты за 2 тыс рублей

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

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

У многих дома крутится сервер или обычный NAS. На жестких дисках годами копится семейный архив: фотки из отпусков, видео с телефонов, старые кадры с мыльниц. Все это лежит гигабайтами в папках вроде “2023_06_12_дача” или просто свалено в кучу в директории DCIM.

В какой-то момент я понял, что хочу навести во всем этом порядок, но не руками. Так родился проект Gailery - локальная веб-галерея для домашнего сервера. Сегодня на моем стенде она безболезненно переваривает огромный личный архив из более чем 100 тысяч фотографий и почти 10 тысяч видеороликов. При этом оригинальные файлы лежат в полной безопасности: папка с медиа монтируется в контейнер в режиме “только чтение” (Read-Only).

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

Читать далее

Самодельный ARM ноутбук, реально ли?

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

Мне всегда хотелось разработать свой ноутбук. Сейчас, благодаря развитию систем на базе ARM-процессоров, эта задача сильно упростилась и стала вполне реальной.

В данной статье я расскажу о том, какие возможны варианты создания своего портативного устройства на базе ARM, приведу примеры подобных устройств, опишу свой путь и проблемы, с которыми я столкнулся.

Читать далее

Домашний сервер без белого IP: безопасная публикация сервисов через VPS, обратный SSH-туннель и Caddy

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

Как безопасно опубликовать домашний сервер без белого IP и проброса портов: домашний сервер сам устанавливает исходящее SSH-соединение к VPS, на VPS создаётся локальный endpoint обратного SSH-туннеля, а внешний доступ к сервисам отдаётся через Caddy по HTTPS. Backend-порты вроде Nextcloud, Home Assistant или Jellyfin не открываются напрямую в интернет, а остаются доступными только через loopback и reverse proxy. Отдельное внимание уделено hardening: ограниченный пользователь tunneluser, SSH-ключи, autossh, systemd, UFW, проверка sshd_config и диагностика типовых ошибок.

Поехали
1
23 ...