Атомарные дистрибутивы на базе Debian

Атомарные (immutable) дистрибутивы обновляются не пакет за пакетом, а целым образом системы: либо переходишь на новую версию целиком, либо остаёшься на старой — промежуточных битых состояний между ними не бывает. На базе Debian эту схему реализует Vanilla OS через ABRoot: система хранит два корневых раздела, A и B. Обновление собирается в неактивном разделе, переключение между ними происходит атомарно при перезагрузке. abroot status abroot upgrade abroot rollback Если новый образ не загрузился — откат на предыдущий раздел занимает секунды, а не часы восстановления из бэкапа. Корневая ФС смонтирована read-only; установка пакетов мимо системного обновления идёт через apx — обёртку над distrobox, которая разворачивает изолированный контейнер с нужным пакетным менеджером, не трогая базовую систему. ...

20 июня 2026 г. · llexa

nginx: ограничение запросов (rate limiting)

limit_req в nginx режет частоту запросов прямо на уровне веб-сервера — без iptables и без отдельного WAF. http { # зона на 10 МБ, лимит — 10 запросов/сек на каждый IP limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; server { location /api/ { limit_req zone=api burst=20 nodelay; limit_req_status 429; proxy_pass http://backend; } } } burst=20 — разрешает кратковременный всплеск в 20 запросов сверх лимита, nodelay — не ставит их в очередь, а пропускает сразу или режет. Без nodelay лишние запросы притормозятся, а не отклонятся. ...

19 июня 2026 г. · llexa

WireGuard: VPN за 4 команды

WireGuard — VPN в ядре Linux с версии 5.6: меньше конфига, выше скорость, никакого OpenSSL-оверхеда. # ключи на каждой стороне wg genkey | tee privatekey | wg pubkey > publickey # /etc/wireguard/wg0.conf — сервер [Interface] PrivateKey = <privatekey> Address = 10.0.0.1/24 ListenPort = 51820 [Peer] PublicKey = <publickey-клиента> AllowedIPs = 10.0.0.2/32 # поднять / погасить туннель wg-quick up wg0 wg-quick down wg0 # текущее состояние: handshake, трафик по пирам wg show Автозапуск — systemctl enable wg-quick@wg0. Если сервер должен форвардить трафик дальше в интернет, не забыть net.ipv4.ip_forward=1 в sysctl и MASQUERADE в nftables/iptables. ...

19 июня 2026 г. · llexa

bash getopts: парсинг флагов без боли

getopts — встроенная команда bash для разбора флагов вида -v, -f file: while getopts "v:f:h" opt; do case $opt in v) VERBOSE=$OPTARG ;; f) FILE=$OPTARG ;; h) exit 0 ;; esac done shift $((OPTIND - 1)) Двоеточие после буквы (v:, f:) — флаг требует аргумент, без него (h) — просто переключатель. $OPTIND после цикла указывает на первый нефлаговый аргумент, shift сдвигает $1 $2 ... на оставшиеся: ./script.sh -v 3 -f /etc/conf input.txt # $VERBOSE=3 $FILE=/etc/conf $1=input.txt Длинные флаги (--verbose) getopts не понимает — нужен внешний getopt или ручной case. ...

18 июня 2026 г. · llexa

socat: швейцарский нож для сокетов

socat соединяет два потока данных — сокеты, файлы, процессы, устройства: socat TCP-LISTEN:9000,fork,reuseaddr TCP:10.0.0.5:80 # port forward socat - TCP:host:port # интерактивное подключение Передача файла между машинами без scp: socat TCP-LISTEN:9999,fork file:received.tar,create # приёмник socat file:archive.tar TCP:receiver-host:9999 # отправитель TLS-обёртка для нешифрованного сервиса: socat OPENSSL-LISTEN:443,cert=server.pem,fork TCP:localhost:8080 fork обязателен для серверных режимов — без него одно соединение и завершение. Для разовой диагностики хватает nc -zv, socat нужен там, где TLS, UNIX-сокеты или произвольные комбинации источник→приёмник. #linux #network #sysadmin

18 июня 2026 г. · llexa

inotifywait: события файловой системы в реальном времени

inotifywait из пакета inotify-tools — подписка на события ядра для ФС: apt install inotify-tools # разовое ожидание события inotifywait -e modify /etc/nginx/nginx.conf # непрерывный мониторинг директории с дочерними inotifywait -m -r -e modify,create,delete /var/www/html # авто-перезагрузка при изменении конфига inotifywait -m -e close_write /etc/nginx/ | while read path event file; do echo "$file изменён, перезагружаем nginx..." systemctl reload nginx done Основные события: modify, create, delete, moved_to, close_write, attrib. ...

17 июня 2026 г. · llexa

nmap: сканирование сети с нуля

nmap — стандарт для аудита сети и диагностики портов: nmap 192.168.1.0/24 # пинг всей подсети, живые хосты nmap -sS 192.168.1.1 # SYN-scan (stealth, нужен root) nmap -sV -p 22,80,443 host # версии сервисов на конкретных портах nmap -O host # угадать ОС по TCP fingerprint nmap -p- host # все 65535 портов nmap --open 10.0.0.0/8 # только открытые порты в /8 Полезные скрипты NSE: nmap --script=vuln host # базовая проверка на CVE nmap --script=http-title -p 80 subnet/24 # заголовки всех веб-серверов nmap -sV --script=ssl-cert host # цепочка TLS-сертификата По умолчанию nmap сканирует 1000 самых популярных портов. -p- нужен, если хотите не пропустить нестандартные. ...

17 июня 2026 г. · llexa

Модули ядра: lsmod, modprobe, blacklist

Модули — расширения ядра, загружаемые без перезагрузки: lsmod # список загруженных модулей modinfo drm # параметры, зависимости, описание modprobe br_netfilter # загрузить модуль (+ зависимости) modprobe -r pcspkr # выгрузить rmmod pcspkr # выгрузить без учёта зависимостей Автозагрузка при старте системы: # /etc/modules-load.d/mymodules.conf br_netfilter nf_conntrack # передать параметры при загрузке: # /etc/modprobe.d/iwlwifi.conf options iwlwifi 11n_disable=1 Чёрный список (запрет загрузки): # /etc/modprobe.d/blacklist.conf blacklist pcspkr blacklist nouveau После изменения /etc/modprobe.d/ нужно update-initramfs -u, чтобы initrd подхватил правила. ...

17 июня 2026 г. · llexa

Современные ФС #1: btrfs — основы

btrfs — файловая система с CoW (Copy-on-Write), встроена в ядро с 2.6.29: mkfs.btrfs /dev/sdb # создать ФС mount /dev/sdb /mnt/data # смонтировать btrfs filesystem show /mnt/data # UUID, размер, устройства btrfs filesystem df /mnt/data # занятое/свободное по типу данных Прозрачное сжатие — включается при монтировании: # /etc/fstab UUID=... /mnt/data btrfs compress=zstd:3,noatime 0 0 # или на лету (только новые записи) mount -o remount,compress=zstd /mnt/data Уровни zstd от 1 (быстро) до 15 (максимум). :3 — хороший баланс скорость/степень. ...

17 июня 2026 г. · llexa

at и batch: отложенный запуск команд

at запускает команду один раз в нужное время: echo "/usr/bin/backup.sh > /tmp/bak.log 2>&1" | at now + 1 hour echo "reboot" | at 03:00 tomorrow echo "cleanup.sh" | at 14:30 Jun 20 atq # посмотреть очередь atrm 3 # удалить задание №3 batch — то же, но задача стартует только когда load average опускается ниже 0.8: echo "heavy-job.sh > /tmp/out.log 2>&1" | batch Вывод заданий идёт в почту локального пользователя — либо редиректь вывод прямо в команде. #linux #bash #sysadmin

16 июня 2026 г. · llexa