Генератор реверс-шеллов для пентеста
Где найти генератор реверс-шеллов с разными вариантами подключения и командами для слушателя. Короткая заметка о revshells.com и ссылка на подробный разбор реверс-шеллов в Bashdays.
Фото: Brett Sayles / Pexels
Фото: Andrey Matveev / PexelsСистемное администрирование Linux, диагностика, утилиты, права, systemd, файловые системы и сеть.
Подборка для повседневной Linux-практики: команды, настройки, сервисы, диагностика и системные мелочи, которые экономят часы.
Где найти генератор реверс-шеллов с разными вариантами подключения и командами для слушателя. Короткая заметка о revshells.com и ссылка на подробный разбор реверс-шеллов в Bashdays.
Фото: Brett Sayles / PexelsНастройка sshd для входа по ключам вместо пароля: PubkeyAuthentication, PasswordAuthentication и PermitRootLogin. Как проверить дополнительные конфиги, выполнить sshd -t и не потерять доступ к серверу при перезагрузке службы.
Фото: Infinity Shutter / PexelsКак вернуть systemd-юнит к версии из пакета после локальных изменений и нескольких drop-in-файлов. На примере nginx разберём, что удаляет systemctl revert и где лежит конфигурация, к которой вернётся служба.
Фото: Ellie Burgin / PexelsКоманды systemctl edit и systemctl edit --full для изменения службы без правки пакета вручную. Где лежит override.conf, как проверить юнит через systemd-analyze verify и когда выполнять daemon-reload.
Фото: Mikhail Nilov / PexelsЧто происходит с файлом после unlink, пока процесс удерживает открытый файловый дескриптор. Bash-пример с exec 3, rm и read демонстрирует, почему имя исчезает из каталога раньше, чем содержимое перестаёт быть доступным.
Фото: Kindel Media / PexelsМинимальный глобальный PATH снижает риск запуска программ из неожиданных каталогов и делает автоматизацию предсказуемее. Разбираем настройку через Ansible, применение в CI/CD и проверку доступности curl в чистом окружении.
Фото: Dirk Schuneman / PexelsУдаление активного лога через rm разрывает привычный путь к файлу, пока процесс продолжает писать в открытый дескриптор. Разбираем безопасное обнуление через редирект, truncate и сигнал USR1 для Nginx или Apache.
Фото: Thirdman / PexelsФайл /etc/default/useradd задаёт домашний каталог, оболочку, срок действия пароля, umask и другие параметры новых пользователей. Отдельно разбираем GROUP и зависимость его поведения от USERGROUPS_ENAB в login.defs.
Фото: cottonbro studio / PexelsКоманды mcedit, less, nano и vim умеют сразу переходить к нужной строке файла. Собираем тестовый файл и сравниваем синтаксис запуска четырёх консольных редакторов и просмотрщиков.
Фото: Daniil Komov / PexelsПростой Bash-скрипт объединяет обычные и сжатые логи в правильном порядке и выводит их в stdout. Разбираем выбор между cat и zcat, сортировку файлов и дальнейшую обработку через grep, awk или sed.
Фото: Rafael Minguet Delgado / PexelsОболочка /usr/sbin/nologin запрещает интерактивный вход, но при internal-sftp пользователь всё ещё может работать с файлами. Проверяем настройку Subsystem в sshd_config и вариант с внешним sftp-server.
Фото: https://kaboompics.com/ / PexelsЗапускаем Docker Compose на удалённом сервере прямо из GitLab CI через SSH-контекст. Обходимся без rsync и scp, выполняя down, pull и up из пайплайна.
Фото: Fives TM / PexelsЭкспериментально запускаем Bash-скрипт по URL через Nginx и fcgiwrap. Настраиваем FastCGI-сокет, location и SCRIPT_FILENAME, а также рассматриваем вариант с Lua.
Фото: RDNE Stock project / PexelsКороткая команда sed добавляет ANSI-коды цвета к найденной подстроке и сохраняет весь контекст файла. Достаточно заменить string на нужное слово.
Фото: https://kaboompics.com/ / PexelsИспользуем специальное устройство /dev/full, чтобы воспроизвести ошибку No space left on device без заполнения диска. Готовый Bash-скрипт проверяет обработку ошибки записи.
Фото: Nina zeynep güler 🦕 zz / PexelsРазбираем ассоциативный массив awk в конструкции !a[$0]++ и удаляем повторяющиеся строки за один проход. Дополнительно считаем вхождения и выполняем дробные вычисления.
Фото: cottonbro studio / PexelsРазбираемся, почему help printf, printf --help и env printf --help показывают разные справки. Сравниваем встроенную команду Bash и внешнюю утилиту /usr/bin/printf.
Фото: Tima Miroshnichenko / PexelsПроверяем существование процесса и права на отправку сигналов с помощью kill -0. Примеры Bash показывают коды возврата, фоновые процессы и ограничения обычного пользователя.
Фото: Susanne Plank / PexelsКороткий авторский техномем о Bash, Linux и спокойствии разработчика за терминалом.
Фото: Jakub Zerdzicki / PexelsИщем фрагменты удалённого crontab на диске через grep, восстанавливаем задания и добавляем защиту crontab -i и ежедневную резервную копию.
Фото: Mikhail Nilov / PexelsИспользуем filefrag, sync и dd, чтобы найти physical_offset файла, прочитать его напрямую с блочного устройства и проверить удалённые данные.
Фото: FOX ^.ᆽ.^= ∫ / PexelsШпаргалка по консольным инструментам Linux для наблюдаемости и отладки: от strace и perf до iostat, ss, tcpdump и анализа дисков.
Фото: 04iraq / PexelsРазбираем цепочку DOCKER-USER, именованный bridge-интерфейс и правила iptables, которые ограничивают доступ к опубликованным портам контейнера.
Фото: Brett Sayles / PexelsНесколько curl-команд для запуска ASCII-анимаций прямо в терминале и ссылки на исходники parrot.live и ascii-live.
Фото: Abdul Kayum / PexelsРазбираемся, зачем создавать файл командой touch перед открытием в Vim, если редактор и так умеет сохранить новый файл. Обсуждаем раннюю проверку прав на запись, обновление времени модификации и применение touch для lock-файлов и …
Фото: TStudio / PexelsПоказываем, как убрать у переменной Bash атрибут экспорта, не удаляя её из текущей оболочки. Сравниваем громоздкий вариант с unset и короткие решения через typeset, declare и export -n.
Фото: Markus Spiske / PexelsНастраиваем личный SOCKS5-прокси через SSH без доступа пользователя к shell и SFTP. Ограничиваем аккаунт в sshd_config, запускаем динамический проброс порта и подключаем Firefox с передачей DNS-запросов через прокси.
Фото: Holger Schué / PexelsПроверяем через strace, как Nautilus определяет тип файла по расширению или содержимому. Создаём файл с сигнатурой BZ2, наблюдаем системные вызовы openat и read, а затем сравниваем поведение после добавления расширения txt.
Фото: Eva Bronzini / PexelsЛичный опыт переноса shell-скрипта с Linux на OPNsense и BSD. Разбираем различия csh и sh, перенос строк, особенности date и awk, отсутствие /dev/shm и набор консольных редакторов.
Фото: Brian Jesus / PexelsЗнакомимся с doas из OpenBSD как более простой альтернативой sudo. Разбираем установку, правила permit и nopass, доступ для пользователей и групп, а также запуск root shell.
Фото: Nic Wood / PexelsТри практических механизма systemd для задач по расписанию, наблюдения за файлами и запуска сервисов по подключению. Примеры юнитов timer, path и socket помогают заменить cron, inotify-tools и постоянно работающие службы.
Фото: Annushka Ahuja / PexelsОбъясняем, почему исполняемый файл из текущего каталога запускают через ./ и как оболочка использует PATH. Разбираем безопасность такого поведения, опасность добавления точки в PATH и полные пути для cron.
Фото: Tom Fisk / PexelsПрактическая схема размещения GitLab Runner на отдельных серверах без лишней нагрузки на продакшен. Разбираем общие теги, балансировку заданий, регистрацию нескольких раннеров и деплой по SSH.
Фото: Cristian Camilo Estrada / PexelsЭксперимент с передачей текстовых сообщений между Bash-процессами через сигналы SIGRTMIN. Сервер и клиент кодируют символы по битам, обрабатывают границы сообщений и показывают, почему важны задержки.
Фото: Juan Martin Gomez / PexelsПрактический разбор отладки неизвестного бинарника через strace и инъекцию ошибки EACCES. Показываем, как остановить unlink, сохранить временный файл и найти гонку, из-за которой выгрузка становилась пустой.
Фото: Pavel Danilyuk / PexelsСобираем минимальный конфиг-агент на Bash, который синхронизирует эталонные настройки Nginx из Git. Скрипт с cron, rsync и systemctl автоматически восстанавливает конфиги и перезагружает сервис только при изменениях.
Фото: Omar Ashraf / PexelsРазбираем странные права 01411 после вызова chmod в PHP и доказываем источник ошибки через strace. На примерах показываем разницу между десятичным 777, строкой и корректным восьмеричным значением 0777.
Фото: Chengxin Zhao / PexelsРазбираем Bash-скрипт, который при массовом переименовании незаметно теряет половину файлов. На тестовом наборе показываем поведение mv при совпадении имён и используем опцию -b для резервных копий.
Фото: Marlon Castor / PexelsОбъясняем разницу между жёстким путём к интерпретатору и конструкцией /usr/bin/env в shebang. На примерах с Bash, Python, PATH и виртуальным окружением показываем преимущества и ограничения переносимого запуска скриптов.
Фото: Jordi Gamundi Domenech / PexelsРазбираем несколько способов отделить имя файла от расширения в Bash без громоздких регулярных выражений. Используем подстановку параметров, basename, dirname и переменную IFS на понятных примерах.
Фото: cottonbro studio / PexelsЭкспериментируем с отключением системных журналов Linux, journald, rsyslog и истории Bash. Материал показывает, где остаются логи, какие побочные эффекты возникают и почему эти приёмы допустимы только в учебной среде.
Фото: Amorie Sam / PexelsПоказываем три способа установить свежую Ubuntu в WSL: импортировать rootfs из Docker, выполнить dist-upgrade или поставить Ubuntu Preview. Внутри — команды экспорта контейнера, импорта tar-архива и проверки дистрибутивов.
Фото: Bhavishya :) / PexelsИстория о том, как готовая хостинг-панель сломала отлаженный процесс деплоя и заставила разобраться в Linux глубже. Объясняем, почему консольная настройка серверов даёт DevOps-инженеру понимание инфраструктуры, которого не дают …
Фото: Bulat843 / PexelsСравниваем locate и find, разбираемся с базой updatedb и ускоряем простой поиск файлов в Linux. На примере strace показываем, как globbing в Bash меняет аргументы команды и почему шаблоны нужно заключать в кавычки.
Фото: RDNE Stock project / PexelsНастраиваем SSH-вызов от системного пользователя без домашнего каталога и убираем бесконечный запрос подтверждения fingerprint. Выносим known_hosts в общий каталог, заполняем его через ssh-keyscan и подключаем с параметром …
Фото: Mehmet Turgut Kirkgoz / PexelsНастраиваем собственный центр сертификации SSH, чтобы управлять доступом к сотням серверов без ручного обновления authorized_keys. Разбираем доверие к CA, подпись пользовательских ключей, сроки действия сертификатов и их отзыв.
Фото: Markus Spiske / PexelsСемь практических сценариев восстановления доступа к серверу после потери приватного SSH-ключа. Рассматриваем парольный вход, KVM и IPMI, резервную рабочую машину, Rescue Mode и автоматизацию через Ansible или AWX.
Фото: Esra Erdem / PexelsПошагово настраиваем вход на Linux-сервер по SSH-ключу: генерируем пару RSA, восстанавливаем публичную часть, копируем её через ssh-copy-id и выставляем права на authorized_keys. Также разбираем подключение под разными …
Фото: Obi Onyeador / PexelsКомбинация ls -t и head выводит полный путь к последнему изменённому файлу или каталогу. Короткий способ подходит для резервных копий и автоматизации без сложной команды find.
Фото: Zulfugar Karimov / PexelsСимволическая ссылка не может заменить уже существующий файл, а bind mount справляется с такой подменой. Проверяем поведение ln -s и mount --bind на двух текстовых файлах.
Фото: Mac Solatorio / PexelsРазбираем порядок аргументов su и ошибку, при которой опция -c воспринимается как имя пользователя. Показываем правильную команду для выполнения ls от root.
Фото: Flickr / PexelsТри способа посчитать сумму чисел из стандартного ввода или файла в Linux: GNU datamash, awk и dc. Сравниваем команды и помним о проверке входных данных.
Фото: Kindel Media / PexelsNextcloud перестал открываться после включения модуля удалённого хранилища и подключения локальной папки. Отключение модулей не помогло.
Фото: Guillaume Boulanger / Pexelsssh_commander выполняет команды по SSH сразу на нескольких серверах и умеет читать инструкции из файла. Подходит для быстрых манипуляций без циклов и Ansible.
Фото: Jonas Baumann / PexelsКомбинация Ctrl+X, Y и имени файла zzy запускает пасхалку в GNU nano. Вероятно, это отсылка к чит-коду xyzzy из Colossal Cave Adventure.
Фото: Tima Miroshnichenko / Pexelsaria2 — консольный менеджер загрузок с поддержкой HTTP, FTP, SFTP, BitTorrent и Metalink. Он умеет скачивать данные несколькими потоками, работать с чанками и заменять wget через простой alias.
Фото: panumas nikhomkhai / PexelsCLI Exercises — интерактивный тренажёр с 77 заданиями по командной строке Linux, подсказками и несколькими вариантами решений. Показываю установку в отдельное Python-окружение через venv и запуск одной командой.
Фото: Mikhail Nilov / PexelsMechvibes воспроизводит звуки механических переключателей на обычной клавиатуре в Linux, Windows и macOS. Можно выбрать готовый набор кейкапов, настроить громкость или загрузить собственные звуки для отдельных клавиш.
Фото: Tima Miroshnichenko / PexelsBash-скрипт QEMU-QuickBoot упрощает создание и загрузку виртуальных машин QEMU через графический интерфейс Zenity. Можно выбрать физическое устройство, ISO, VHD или другой образ и запустить установку с BIOS либо UEFI.
Фото: Panumas Nikhomkhai / PexelsRick & Morty BASH Quest превращает базовые команды Linux в браузерный текстовый квест. Чтобы найти Саммер и Рика, придётся перемещаться между порталами, читать подсказки и пользоваться ls, cd, cat, pwd и man.
Фото: Anastasia Shuraeva / PexelsКороткая проверка номера дня недели через date +%u позволяет Bash-скрипту отказаться от работы в субботу и воскресенье. Это шуточный вредный совет для cron-задач, который заодно показывает простое условие с числовым сравнением.
Фото: Bingqian Li / PexelsВ Bash нет отдельной переменной OFS, но первый символ IFS становится разделителем для параметров внутри "$*". Пример показывает, как собрать CSV-строку и почему команда set меняет позиционные параметры текущей оболочки.
Фото: Alex Andrews / PexelsАвтоматический отступ mcedit может превращать вставленный конфиг в лесенку из пробелов и табов. Показываем, какую настройку Midnight Commander отключить, чтобы текст вставлялся без искажения отступов.
Фото: Mak_ jp / PexelsКоманда runuser запускает процесс от имени другого пользователя без запроса пароля, когда вызывающий процесс уже обладает правами root. Это делает её удобной для системных скриптов, cron-задач и служб.
Фото: Jonathan Borba / PexelsУтилита tac из GNU coreutils читает файл или стандартный ввод снизу вверх. На коротких примерах показываем обратный вывод строк и работу с пользовательским разделителем.
Фото: Jens Johnsson / PexelsОдин символ @ в конфигурации rsyslog отправляет сообщения по UDP, а два символа переключают передачу на TCP. Разбираемся, чем отличаются эти варианты и когда надёжность доставки логов важнее скорости.
Фото: Brett Sayles / PexelsVim расшифровывается как Vi Improved и расширяет классический vi подсветкой синтаксиса, визуальным режимом и другими возможностями. Перед сравнением важно проверить, не запускает ли команда vi тот же Vim.
Фото: Engin Akyurt / PexelsДве встроенные опции Bash упрощают навигацию по каталогам: cdspell исправляет небольшие ошибки в путях, а autocd позволяет переходить в директорию без команды cd. Показываем работу обеих функций на коротких примерах.
Фото: fauxels / PexelsОднострочник для автоматического обновления Debian или Ubuntu и перезагрузки только при появлении /var/run/reboot-required. Подход пригодится в самописных установочных скриптах без Ansible и Puppet.
Фото: energepic.com / PexelsДва инструмента показывают текущую раскладку рядом с текстовым или мышиным курсором. Cursor Layout Indicator работает в Obsidian, а niri-layout-cursor переносит индикатор на всю сессию Niri.
Фото: Christina Morillo / Pexelsinotify-tools позволяет в реальном времени увидеть, где приложение создаёт неизвестный файл. На практическом примере отслеживаем события каталога рекурсивно, находим выгрузку и разбираемся, когда пригодится incrond.
Фото: fall maple / PexelsОдна команда strace показывает файлы, которые программа открывает в домашнем каталоге. Практический приём помогает отлаживать приложения, находить используемые конфиги и при необходимости отслеживать операции записи.
Фото: Kader D. Kahraman / PexelsПосле клонирования Linux-машин DHCP может выдавать копиям тот же IP-адрес, что и донору. Показываем, как заменить MAC-адрес, пересоздать machine-id и устранить конфликт в сети.
Фото: Brett Sayles / Pexelsncdu помогает быстро найти каталоги и файлы, занявшие дисковое пространство на Linux-сервере. Разбираем запуск утилиты, навигацию по дереву размеров, удаление ненужных данных и установку в популярных системах.
Фото: Marta Branco / PexelsSuicide Linux запускается в Docker с корнем хоста и удаляет систему после первой ошибочной команды. Опасный эксперимент допустим только в одноразовой изолированной лаборатории.
Фото: Ann H / PexelsGit не хранит полную Unix-маску прав файлов. Показываем два Bash-скрипта: первый сохраняет режимы в permissions.txt, второй восстанавливает их после клонирования.
Фото: RDNE Stock project / PexelsGameShell превращает знакомство с Linux и командной строкой в текстовый квест с заданиями, подсказками и историей. Подойдёт начинающим и преподавателям.
Фото: Tom Fisk / PexelsФайл .wslconfig позволяет переопределить процессоры, память, swap и другие параметры виртуальной машины WSL2. Показываем минимальный пример и ссылку на полный список настроек.
Фото: Ibrahim Boran / PexelsКоманды stty и tput позволяют отключить эхо клавиатуры и скрыть курсор во время работы Bash-скрипта. Добавляем trap, чтобы терминал корректно восстановился после выхода или прерывания.
Фото: Jeremy Waterhouse / PexelsКоманда ssh-keygen помогает понять, тот ли приватный SSH-ключ использует GitLab Runner. Получаем MD5-отпечаток, сравниваем его с GitLab или GitHub и исправляем ошибку доступа к приватному репозиторию.
Фото: Towfiqu barbhuiya / PexelsPDFLinux запускает Linux прямо внутри PDF в Chromium и Firefox благодаря JavaScript, PDFium и эмулятору RISC-V. Смотрим на необычный эксперимент, его ограничения, исходный код и версию Doom в PDF.
Фото: Rotimi / PexelsПодключение к чужому SSH-серверу может оставить в его логах не только IP, но и имя локального пользователя. Разбираем простой способ не раскрывать рабочий логин при проверке незнакомых SSH-ссылок.
Фото: COPPERTIST WU / PexelsПошаговая установка однонодового Kubernetes-кластера K3s на одной виртуальной машине с 2 vCPU и 2–4 ГБ RAM. Настраиваем kubectl, запускаем Deployment и Service, разбираем ограничения K3s по сравнению с kubeadm и экономим ресурсы …
Фото: Craig Dennis / PexelsРезультаты технического конкурса Баланс-батл после подсчёта реакций читателей. Победили материалы про File Descriptors и GDB, освобождение места через inode и отправку логов с systemd-cat.
Фото: Laura Rincón / PexelsПростой способ хранить задания crontab в Git и автоматически раскатывать их на серверы без Ansible или Puppet. Скрипт забирает файл supercron из репозитория и целиком импортирует его в пользовательский crontab.
Фото: Alicia Christin Gerald / PexelsИдея двухлогинной схемы для SSH помогает отделить опасный перебор реальных учётных записей от фонового шума. Дополнительная часть логина также может показать, из какой группы произошла утечка.
Фото: CODE SAFE / PexelsVim и Vi могут запустить интерактивную оболочку через команды -c и --cmd. Показываем, почему редактор в белом списке команд способен обойти ограниченную оболочку и открыть путь к повышению привилегий.
Фото: Diana Indriany / PexelsПошагово разбираем связь терминала, оболочки и псевдотерминала через /dev/pts. Находим PID Konsole и Bash, подключаем strace и записываем системные вызовы для изучения ввода.
Фото: Markus Spiske / PexelsЕсли systemctl не находит ожидаемое имя сервиса, его можно восстановить по истории команд или списку юнитов. На примере PHP-FPM показываем быстрый поиск реального systemd unit без дополнительных утилит.
Фото: Budget Bizar / PexelsПрактический разбор неизвестного IP-адреса в небольшой локальной сети с 1С. Используем ss, ping, nmap, arp, arping и временное правило iptables, чтобы определить реальное устройство и его пользователя.
Фото: Brett Sayles / PexelsПоказываем, как устанавливать пакеты APT без необязательных Recommended packages через --no-install-recommends. Настраиваем глобальное отключение рекомендаций в apt.conf.d и при необходимости включаем их для отдельного пакета.
Фото: Dalila Dalprat / PexelsРазбираем syslog facility local0–local7 и отделяем логи приложений от системных сообщений auth, daemon, mail и kern. Показываем пример на Python, настройку rsyslog и практическую схему категорий.
Фото: Maria Orlova / PexelsНастраиваем подключение к MySQL без передачи логина и пароля в командной строке или Bash-скрипте. Используем файл ~/.my.cnf, секцию client, параметр --defaults-file и безопасные права доступа.
Фото: Dan Nelson / PexelsПроверяем потребление RSS текущего процесса Bash до и после заполнения большой переменной. Эксперимент показывает, как память увеличивается и снова уменьшается без отдельного Garbage Collector.
Фото: Polina Tankilevitch / PexelsРазбираемся, почему false | true возвращает статус последней команды, и получаем код каждого этапа Bash-конвейера через массив PIPESTATUS. Показываем примеры для двух и трёх команд.
Фото: Pixabay / PexelsУскоряем установку пакетов APT с помощью eatmydata и сравниваем время переустановки Midnight Commander. Объясняем отключение fsync, fdatasync, flock и msync, а также риски для целостности данных.
Фото: Binoy Y S / PexelsСобрали самые просматриваемые, пересылаемые и обсуждаемые публикации Bashdays за октябрь 2023 года. В подборке Bash, Linux, chroot, strace, VIM, архиваторы и полезные shell-инструменты.
Фото: Tiger Lily / PexelsПродолжение диагностики мини-ПК с Proxmox, который внезапно оживает и снова перестаёт отвечать. Проверяем родной и новый блоки питания, температуру, защиту и возможное влияние операционной системы.
Фото: Andrey Matveev / PexelsPOSIX ограничивает имена переменных в shell буквами, цифрами и подчёркиванием, но функции Bash допускают более необычные символы. Показываем рабочую функцию с эмоджи в имени и объясняем разницу правил.
Фото: Tim Witzdam / PexelsУтилита jc преобразует вывод iptables, ls, fstab, ping и других Linux-команд в структурированный JSON. Показываем простой конвейер с jq, доступные парсеры и вариант использования jc как Python-модуля.
Фото: Bibek ghosh / PexelsПробуем установить Proxmox на Raspberry Pi 5 с помощью Pimox7 и сталкиваемся с несовместимыми зависимостями Perl, Ceph и PVE. Разбираем результат эксперимента и оставляем ссылку на рабочую инструкцию.
Фото: Tima Miroshnichenko / PexelsМини-ПК с Proxmox и LXC перестал загружаться после примерно сорока дней непрерывной работы. Описываем симптомы, проверку BIOS и блока питания, температуру 45–50 градусов и временный возврат на Raspberry Pi 5.
Фото: Alexey Demidov / PexelsВключаем встроенный режим insults в sudo и настраиваем собственное сообщение badpass_message для неверного пароля. Показываем варианты конфигурации sudoers и Bash-скрипт со случайными ответами.
Фото: Miguel Á. Padriñán / PexelsНа сервере Minecraft спрятаны сто денежных кодов и десять призов на обучение в Linux Factory. Рассказываем правила поиска, регистрацию, координаты и режим работы игрового сервера mc.bashdays.ru.
Фото: Lara Jameson / PexelsСравниваем встроенную команду false в Bash и отдельный бинарник /usr/bin/false. Объясняем, почему даже параметры --help и --version завершаются с кодом 1 и как проверить тип команды.
Фото: Mwabonje Ringa / PexelsDevToys объединяет более тридцати офлайн-инструментов для JSON, YAML, JWT, Base64, cron, SQL, XML, хешей и изображений. Есть графическая, портативная и CLI-версии для разных операционных систем.
Фото: Eduardo Rosas / PexelsМодуль Acme::EyeDrops превращает Perl-программу в ASCII-арт, который остаётся исполняемым кодом. Показываем запуск такого файла и обратное преобразование через B::Deparse.
Фото: Daniil Komov / PexelsПереводим десятичную маску 255.255.255.192 в CIDR-префикс /26 без ipcalc и интернета. Простая мнемоника помогает посчитать единицы или нули в двоичной записи последнего октета.
Фото: RDNE Stock project / PexelsОбычный gzip использует одно ядро, а pigz распараллеливает сжатие и заметно ускоряет архивирование. Сравниваем время на файле 10 ГБ и подключаем pigz к tar через pipe и --use-compress-program.
Фото: Anna Tarazevich / PexelsPOSIX задаёт общий интерфейс операционных систем и помогает создавать переносимые программы и shell-скрипты. Объясняем происхождение стандарта, сертификацию Linux-дистрибутивов и практический смысл POSIX Shell.
Фото: Joachim Schnürle / PexelsЭксперимент с XOR-преобразованием слова Linux в PURID и обратно. Разбираем Bash brace expansion, систему счисления по основанию 64, printf, echo и альтернативный вариант на Perl.
Фото: Daniil Komov / PexelsКак разрешить пользователю без пароля перезапускать только PostgreSQL, службы 1С и сервер через sudoers. Практический пример NOPASSWD и разбор аварийного восстановления после ошибки в конфигурации sudo.
Фото: Daniil Komov / PexelsРазбираем изоляцию CPU-ядер параметрами isolcpus, nohz_full, rcu_nocbs и irqaffinity. Практический случай с taskset, irqbalance, NUMA и разделением нагрузки между сетевыми прерываниями и Nginx.
Фото: Atahan Demir / PexelsКоманда ps с полем lstart показывает точную временную метку запуска процесса. На примере Firefox объединяем ps, pgrep и find -newermt, чтобы находить файлы, изменённые после старта программы.
Фото: Monstera Production / PexelsПростой самописный мониторинг через journalctl, logger и cron без связки Prometheus, Grafana и Alertmanager. Bash-скрипты считают события за заданный интервал и запускают полезную нагрузку при превышении порога.
Фото: Mikhail Nilov / PexelsПосле обновления конфигурации операции в 1С на PostgreSQL замедлились в несколько раз, тогда как MS SQL работает нормально. Разбираем исходные наблюдения, ограничения связки 1С с Linux и вопросы для диагностики.
Фото: Thirdman / PexelsКонцепт второго фактора для SSH без стороннего сервиса аутентификации. Shell-скрипт после входа выдаёт код, уведомляет администратора, проверяет ответ через почту или Telegram и передаёт управление Bash.
Фото: Jakub Zerdzicki / PexelsУтилита tee одновременно показывает вывод команды на экране и записывает его в файл, а script сохраняет всю терминальную сессию. Разбираем простые команды для логирования вывода в реальном времени.
Фото: 도연 김 / PexelsBinsider — TUI-инструмент на Rust для статического и динамического анализа ELF-бинарников. Он показывает секции, сегменты, символы, релокации и hex-дамп, извлекает строки и отслеживает системные вызовы.
Фото: Julio Lopez / PexelsДобавляем анимированный фон в Windows Terminal и раскрашиваем вывод команд с помощью lolcat. В материале есть параметры backgroundImage для WSL, набор пиксельных GIF и пример случайной смены фона в Terminology через Fish.
Фото: Rafael Minguet Delgado / PexelsОбъединяем несколько команд деплоя в одну SSH-сессию внутри GitLab CI pipeline. Многострочный YAML-блок с heredoc снижает риск упереться в MaxSessions или Fail2ban и делает сценарий развёртывания читаемее.
Фото: cottonbro studio / PexelsСравниваем три способа получить уникальные строки файла: sort с uniq, ассоциативный массив в awk и чистый Bash. Готовый скрипт показывает одинаковый результат и напоминает о расходе памяти на больших файлах.
Фото: Anete Lusina / PexelsРазбираем, как условно добавлять параметр --platform linux/arm64 в Docker-команду внутри pipeline. Сравниваем Bash-конструкцию [[ ]] и POSIX-совместимый вариант с [ ], чтобы один сценарий работал на разных архитектурах.
Фото: Jonathan Borba / PexelsCRIMS0NH4T автоматизирует рутинную настройку Fedora после чистой установки: DNF, RPM Fusion, кодеки, GPU-драйверы и оптимизацию GNOME. Разбираем раннюю версию Bash-скрипта и точечные улучшения для строгого режима, логов и …
Фото: Oluwaseun Duncan / PexelsЧем отличаются source script.sh, . script.sh и ./script.sh в Bash. На примерах разбираем текущую оболочку, локальные и экспортированные переменные, shebang и право на выполнение.
Фото: cottonbro studio / PexelsBash-скрипт для автоматического создания дампов PostgreSQL через pg_dump, логирования результата и отправки уведомлений в Telegram. Дополнительно настраиваем очистку старых файлов через find и cron.
Фото: Jakub Zerdzicki / PexelsВ Debian 13 привычные команды last и lastb могут отсутствовать, но историю успешных и неудачных SSH-входов можно собрать через journalctl и gawk. Готовые команды формируют таблицу timestamp, IP и логина, поддерживают фильтр по …
Фото: Tima Miroshnichenko / PexelsПростой способ перестать путать команды chmod и chown через понятные смысловые якоря. Разбираем, как связать owner с владельцем, mode с режимом доступа и запомнить ключи tar без зубрёжки.
Фото: Kindel Media / PexelsПочему usermod -L блокирует пароль, но не закрывает вход по SSH-ключу, а nologin иногда оставляет доступ через SFTP. Сравниваем /usr/sbin/nologin и /usr/bin/false для полной блокировки пользователя Linux.
Фото: Eneida Nieves / PexelsPerl-скрипт автоматически нумерует системные вызовы в выводе strace и упрощает подготовку инъекций. Разбираем запуск через -o, цветовую подсветку, подсчёт openat и newfstatat и отделение трассировки stderr от вывода программы.
Фото: Daniil Komov / PexelsЗнакомимся с Shell Script Compiler и превращаем Bash-скрипт в C-код и готовый ELF-бинарник. Разбираем установку shc, команду shc -f, созданные файлы и ограничения переносимости между Linux-системами.
Фото: Alexey Demidov / PexelsТестируем платформу Terminator с бесплатными сессиями Debian 12 и Windows Server 2016 прямо в браузере. Рассматриваем ограничения 15-минутной сессии и сценарии для проверки программ, скриптов, команд и доступности сайтов.
Фото: Mikhail Nilov / PexelsСоздаём генератор псевдослучайных строк в Bash с помощью /dev/urandom, tr и head. Разбираем набор допустимых символов, длину результата и ключи -c и -d команды tr.
Фото: lil artsy / PexelsРазбираем формат обучения в Linux Factory для будущих DevOps-инженеров: более 40 уроков и домашних заданий, Docker, Git, пайплайны, мониторинг и Infrastructure as Code. Внутри — личное наставничество, код-ревью, свободный темп и …
Фото: Yan Krukau / PexelsРазбираемся, зачем в awk появилась недокументированная опция --nostalgia и почему она аварийно завершает программу. Заодно смотрим на GNU-синтаксис -W long_option и эквивалентные команды для nostalgia и copyright.
Фото: Sidde / PexelsРазбираемся, чем в Linux отличаются Clipboard, Primary Selection и внутренний буфер приложения. На практическом примере проверяем копирование и вставку через Ctrl+Shift+C, среднюю кнопку мыши, Ctrl+W и Ctrl+Y.
Фото: Markus Winkler / PexelsЗнакомимся с HexSpeak — способом составлять слова из допустимых шестнадцатеричных цифр. Разбираем популярные комбинации, культуру магических чисел и происхождение сигнатуры CAFEBABE в class-файлах Java.
Фото: Rafael Minguet Delgado / PexelsИзучаем дерево процессов Linux с помощью pstree и разбираем ключи -c, -p и -a. Показываем объединение одинаковых ветвей, вывод PID и аргументов запуска, а также установку пакета psmisc в разных системах.
Фото: Luca Dross / PexelsИспользуем встроенную команду compgen для просмотра команд, алиасов, функций, ключевых слов, файлов и пользователей в Bash. Показываем генерацию динамических массивов и практический способ изучать возможности Linux небольшими …
Фото: Tibe De Kort / PexelsРазбираем файловые дескрипторы stdout и stderr и синтаксис перенаправления 2>&1 в Bash. Объясняем роль амперсанда, отличие от записи 2>1 и сокращённый оператор |& на примере отправки общего потока в tee.
Фото: Wayan Daton / PexelsНастраиваем каталог /etc/skel как шаблон домашней директории нового пользователя Linux. Создаём структуру папок и конфигурационные файлы, используем альтернативный шаблон через useradd -k и меняем расположение домашнего каталога …
Фото: Pilan Filmes / PexelsУстанавливаем двухпанельный файловый менеджер FAR в современных дистрибутивах Linux через пакет far2l. Сравниваем его с Midnight Commander, проверяем запуск в WSL и по SSH и вспоминаем эволюцию консольных файловых менеджеров.
Фото: Element5 Digital / PexelsОбсуждаем компромисс между удобством и защитой приватного SSH-ключа паролем. Разбираем модель угроз, гигиену рабочей станции и ситуации, в которых passphrase действительно снижает риск кражи ключа.
Фото: Kindel Media / PexelsКраткий FAQ о формате наставничества Linux Factory: разбор резюме, помощь с поиском работы, текстовое общение вместо созвонов и возраст при смене профессии. Объясняем, когда начинается работа над резюме и как устроена рекомендация …
Фото: Leeloo The First / PexelsРазбираемся, откуда команды Linux берут допустимые варианты подтверждения y, n, Д, Н, 0, 1, плюс и минус. Изучаем выражения yesexpr и noexpr в локалях, проверяем их через locale и собираем собственную локаль с localedef.
Фото: Ann H / PexelsПоказываем аварийный способ найти фрагменты удалённого текстового файла непосредственно на разделе диска с помощью grep. Разбираем ключи -a, -C и -F, выбор контекстных строк и ограничения такого восстановления в Linux.
Фото: Vikram Aditya / PexelsЗнакомимся с Bash-утилитой Kill Port, которая находит и завершает процесс, занявший указанный TCP-порт. Разбираем сценарий локальной разработки, простую ручную установку, запуск через killport и ограничения для процессов уровня …
Фото: Steve A Johnson / PexelsНастраиваем построчный вывод программы в файл с помощью stdbuf -oL, чтобы наблюдать за логом в реальном времени. Дополнительно разбираем сочетание с nohup и альтернативный запуск через утилиту script с принудительным flush.
Фото: Joshua Woroniecki / PexelsИщем причину многоминутной задержки при подключении к старому SSH-серверу. Проверяем UseDNS, UsePAM и модули в /etc/pam.d/sshd, чтобы локализовать тормозящий этап аутентификации и вернуть PAM после вдумчивой настройки.
Фото: panumas nikhomkhai / PexelsВосстанавливаем доступ по SSH, когда ошибка в .bashrc ломает интерактивную оболочку удалённого сервера. Показываем два способа входа через принудительный запуск /bin/sh и SFTP, а также объясняем риск простых ограничивающих …
Фото: Mikhail Nilov / PexelsНастраиваем mirrored networking в WSL 2 через файл .wslconfig, чтобы Linux использовал сетевой стек Windows и адрес хоста. Разбираемся, как зеркальный режим упрощает доступ к портам, локальной сети, корпоративным прокси и сервисам …
Фото: Nuray / PexelsНастраиваем отдельный SFTP-сервер MySecureShell поверх OpenSSH и ограничиваем пользователей файловой подсистемой. Разбираем установку в Debian, смену оболочки, конфигурацию, управление скоростью и совместимость с SSHFS и rsync.
Фото: cottonbro studio / PexelsИспользуем strace и системный вызов execve, чтобы увидеть, какие внешние программы запускает команда и с какими аргументами. На примере man разбираем ключи трассировки, сохранение лога и практическую отладку скриптов и приложений.
Фото: cottonbro studio / PexelsПишем исполняемый sed-скрипт, который проверяет повторяющуюся последовательность строк в файле и выводит номер первого нарушения. Разбираем адресацию, переходы по меткам, команду q и набор тестовых случаев для проверки результата.
Фото: Tara Winstead / PexelsИспользуем atool как единый консольный интерфейс для распаковки и создания архивов ZIP, tar.gz, 7z и RAR. Разбираем простые команды извлечения и упаковки, которые избавляют от необходимости помнить синтаксис каждого архиватора.
Фото: Mizuno K / PexelsСравниваем условия [ ] и [[ ]] в shell-скриптах: переносимость между POSIX sh, Bash и ksh, доступные операторы, экранирование и регулярные выражения. Практические примеры показывают, когда выбрать совместимость, а когда — более …
Фото: Tasso Mitsarakis / PexelsТестируем изменения systemd-юнитов через временное переопределение `systemctl edit --runtime`. Показываем выбор редактора, расположение override в `/run/systemd/` и замену ExecStart для nginx только до перезагрузки.
Фото: Field Engineer / PexelsЗнакомимся с vlock для блокировки виртуальной консоли Linux без графического окружения. Разбираем блокировку одной или всех консолей, защиту от SysRq, скринсейверы и риск потерять доступ, если пароль пользователя забыт.
Фото: Alfredo Marco Pradil / PexelsПроверяем Linux-сервер с помощью LinPEAS и ищем ошибки конфигурации, SUID-файлы и другие пути повышения привилегий. Показываем запуск без установки через curl или Python и объясняем, почему скрипту не нужен root.
Фото: Bulat843 / PexelsПоказываем, почему алиасы из `.bashrc` не работают в обычном Bash-скрипте и как включить интерактивный режим ключом `-i`. Сравниваем этот подход с `source`, `expand_aliases` и экспортируемой функцией.
Фото: Tara Winstead / PexelsРазбираемся, чем заменить try/catch в Bash с помощью логического оператора `||`, группировки команд и проверки кода возврата. Показываем практический шаблон обработки ошибок и объясняем, когда проще использовать `set -e`.
Фото: So Phors / PexelsИщем одинаковые файлы в Linux с помощью fdupes и удаляем дубликаты в интерактивном или автоматическом режиме. Разбираем ключи `-r`, `-d`, `-N` и сравниваем скорость fdupes с findup и jdupes.
Фото: Aleksander Dumała / PexelsДобавляем и удаляем задания cron прямо из Bash-скрипта. Используем уникальные комментарии для идентификации строк crontab, функции ADD_CRON_TASK и REMOVE_CRON_TASK, а также учитываем переменную PATH.
Фото: Karolina Grabowska / PexelsСравниваем пакетные менеджеры Snap и APT в Linux. Разбираем переносимость пакетов между дистрибутивами, песочницу, автоматические обновления, зависимости и ситуации, где важнее системная интеграция и производительность.
Фото: Maor Attias / PexelsСравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и перечисляем альтернативы для OpenRC, runit, s6 и Supervisor.
Фото: Marek Piwnicki / PexelsРазбираем Magic SysRq — низкоуровневые команды ядра Linux для зависшей системы. Показываем сочетания для синхронизации, перемонтирования файловых систем, завершения процессов и аварийной перезагрузки.
Фото: Willfried Wende / PexelsПроверяем поведение команды `cd //` в Linux и выясняем, почему оболочка сохраняет двойной слеш. Разбираем требования POSIX, историческую совместимость Unix и отличие поведения Cygwin.
Фото: Najaf Ozturk / PexelsРазбираем двоичное представление букв ASCII и отличие верхнего регистра от нижнего в шестом бите. Меняем регистр через XOR и сравниваем подход со встроенными конструкциями Bash.
Фото: Markus Spiske / PexelsПрактическое руководство по nethogs для мониторинга сетевого трафика Linux в реальном времени. Разбираем установку, поиск процессов, перегружающих канал, контроль интерфейсов и режим трассировки.
Фото: Brett Sayles / PexelsОтключаем getty на локальных TTY Linux, сохраняя удалённый SSH-доступ по ключам. Показываем команды systemctl, последствия для физической консоли и восстановление служб через Recovery mode.
Фото: panumas nikhomkhai / PexelsИщем причины отказа SSH-аутентификации по ключам через журнал сервера и `tail`. Разбираем права на authorized_keys, неверные ключи, типовые сообщения auth.log и безопасное восстановление конфигурации.
Фото: Mikhail Nilov / PexelsИспользуем whois и ipcalc для определения сетей владельца IP-адреса и преобразования диапазонов NetRange или inetnum в CIDR. Готовим подсети для правил iptables и проверяем результат на практических примерах.
Фото: Lara Jameson / PexelsПоказываем, как утилита basenc из GNU coreutils кодирует UTF-8-текст в двоичное представление и возвращает его обратно. Разбираем параметры base2msbf, ширину вывода и байт перевода строки.
Фото: Pixabay / PexelsРазбираемся, можно ли применить обновление ядра Linux без обычной перезагрузки сервера. Сравниваем kexec, Live Patching и KernelCare, а также объясняем ограничения каждого подхода для продакшена.
Фото: Field Engineer / PexelsРазбираемся, зачем Linux хранит файловые данные в памяти и что делает команда sync перед записью на диск. Показываем варианты очистки page cache, inode и dentry через drop_caches и перечисляем практические сценарии применения.
Фото: Markus Spiske / PexelsВыясняем, почему команда kill -l не показывает сигналы 32 и 33 в Linux. Разбираем резервирование сигналов библиотекой glibc, потоки NPTL и диапазон сигналов реального времени SIGRTMIN–SIGRTMAX.
Фото: Huu Huynh / PexelsЗнакомимся с Bandit от OverTheWire — консольной игрой, где уровни проходятся через SSH и команды Linux. Разбираем принцип игры, пользу для отладки и другие хакерские симуляторы вроде Uplink.
Фото: Tima Miroshnichenko / PexelsИсследуем заголовок tar-архива через hexdump и смотрим, где сохраняются UID, GID, имя владельца и группа. Проверяем `--owner`, `--group` и поведение распаковки для существующих и выдуманных пользователей.
Фото: Polina Tankilevitch / PexelsАвтоматизируем запись терминала с помощью VHS и сценария `.tape`. Настраиваем размер кадра и команды, запускаем генерацию GIF в Docker и публикуем готовую анимацию.
Фото: Spemone / PexelsОграничиваем число параллельных фоновых заданий в Bash без GNU Parallel. Скрипт использует `nproc`, `jobs`, цикл ожидания и `wait`, чтобы равномерно загрузить ядра и дождаться всех задач.
Фото: Maor Attias / PexelsРешаем задачу нумерации строк одним процессом sed вместо связки из двух вызовов. Используем команду `=` и управляющие ANSI-последовательности для перемещения курсора в терминале.
Фото: Pixabay / PexelsРазбираемся, зачем Debian и Ubuntu требуют установить `build-essential` перед сборкой программ. Показываем, какие компиляторы, библиотеки и инструменты входят в метапакет и почему он не заменяет полноценное окружение разработки.
Фото: Anthony Shkraba / PexelsОбъясняем, почему `date --iso=seconds` работает, хотя такой аргумент не указан в справке. Разбираем сокращение длинных опций через `getopt_long`, glibc и Gnulib на примерах `date`, `ls` и `sort`.
Фото: Nataliya Vaitkevich / PexelsРазбираем ошибку `bad ownership or modes` при входе по SSH-ключу и роль параметра `StrictModes`. Показываем безопасную диагностику прав `authorized_keys` и объясняем риски временного отключения проверки.
Фото: Pixabay / PexelsПоказываем, как ограничить время работы systemd-сервиса через `RuntimeMaxSec` и управлять завершением с помощью `TimeoutStopSec`. Разбираем сигналы SIGTERM и SIGKILL, перезапуск через `Restart` и практические шаблоны юнитов.
Фото: Alla on the loose / PexelsУтилита `namei` показывает каждый компонент пути, владельца и права доступа, помогая находить ошибки в родительских каталогах. Сравниваем её с `ls -la` на примере недоступной PHP-админки.
Фото: Adika Budiman / PexelsЗнакомимся с chezmoi для управления `.bashrc`, `.vimrc`, `.gitconfig` и другими dotfiles на нескольких устройствах. Добавляем и редактируем конфиги, смотрим diff, восстанавливаем файлы и синхронизируем репозиторий через Git.
Фото: Mikhail Nilov / PexelsПрактический опыт файловых серверов на FreeNAS, TrueNAS, OMV и чистой Samba. Разбираем различия прав Windows и Linux, сложности ACL и ограничения Samba в небольших и средних организациях.
Фото: Brett Sayles / PexelsРазбираем, почему перенос SSH с порта 22 редко повышает безопасность и лишь усложняет подключения. Вместо security through obscurity используем SSH-ключи, запрет root-входа, отключение паролей и fail2ban.
Фото: Jessica Lewis 🦋 thepaintedsquare / PexelsРазбираемся, чем отличаются vt100, xterm и xterm-256color и зачем приложениям переменная TERM. Проверяем управляющие последовательности, цвета, UTF-8 и Midnight Commander, чтобы выбрать современный тип эмуляции терминала.
Фото: Viktorya Sergeeva / PexelsПроверяем существование обычного файла в Bash с помощью test -f и квадратных скобок. Разбираем коды возврата, отрицание, однострочные условия и другие ключи для проверки директорий, сокетов и прав доступа.
Фото: cottonbro studio / PexelsНеобычные способы получить текущую дату, время и Unix time в Bash без привычной команды date. Используем stat, ps, printf, преобразование `${parameter@P}`, а также переменные EPOCHREALTIME и EPOCHSECONDS.
Фото: Engin Akyurt / PexelsИспользуем цикл until в Bash, чтобы дождаться появления непустого файла и затем выполнить полезную нагрузку. Добавляем таймаут через SECONDS и разбираем ограничения такого опроса по времени.
Фото: marco / PexelsУтилита cruft находит файлы, которые появились в Linux в обход пакетного менеджера. Настраиваем исключения для Docker и пользовательских каталогов, сохраняем отчёт и ищем забытые скрипты или подозрительные артефакты.
Фото: cottonbro studio / PexelsПоказываем, как strace может раскрыть пароль пользователя при входе по SSH на скомпрометированном сервере. Разбираем параметры трассировки sshd, формат полученного вывода и риск для систем после захвата root-доступа.
Фото: FBO Media / PexelsУтилита pv добавляет прогресс-бар, скорость и оценку времени к операциям в конвейере Linux. Показываем сжатие логов, импорт SQL-дампа с ограничением скорости и наблюдение за потоком данных.
Фото: Barnabas Davoti / PexelsРазбираем необычные права 330 для каталога Linux и их применение на SFTP-сервере. Показываем, как разрешить запись и удаление файлов, но скрыть список содержимого от пользователей одной учётной записи.
Фото: Benedek Kaufmann / PexelsСравниваем вероятность неисправимых ошибок чтения у WD Blue, WD Gold, SAS Toshiba и SSD Micron. Объясняем, почему RAID не всегда защищает от повреждённых данных и как контрольные суммы ZFS помогают обнаруживать ошибки.
Фото: Josh Moodley / PexelsКогда нет интернета и подсказок ИИ, готовые примеры Bash уже лежат в системных скриптах Linux. Одной командой находим реальные случаи использования getopts и других конструкций в /usr/bin, /usr/sbin, /bin и /sbin.
Фото: Ruben Boekeloo / PexelsПереносим каталог /tmp с корневого раздела или tmpfs на отдельный диск через systemd mount unit. Правильно именуем tmp.mount, указываем UUID файловой системы, сохраняем sticky bit 1777 и проверяем новое монтирование.
Фото: Anete Lusina / PexelsРазбираем readonly-переменные в Bash: как защитить значение от перезаписи, почему unset не помогает и как увидеть ошибку readonly variable. Отдельно показываем рискованный трюк с GDB и его ограничения.
Фото: Towfiqu barbhuiya / PexelsПошагово подключаем зашифрованный BitLocker-раздел в Linux с помощью dislocker. Разбираем пароль и ключ восстановления, режим только для чтения, NTFS и exFAT, а также автоматическое монтирование через fstab.
Фото: cottonbro studio / PexelsСравниваем три способа узнать число доступных процессорных ядер в Linux: /proc/cpuinfo, getconf и nproc. Используем результат в Bash-скрипте для обновления worker_processes и безопасной перезагрузки Nginx.
Фото: ed br / PexelsПрактический разбор домашнего сервера на Raspberry Pi с Ubuntu, Dockge и внешними дисками. В материале — контейнеры Seafile, Jellyfin, Uptime Kuma, Syncthing, мониторинг и резервное копирование через rclone в S3 Selectel.
Фото: Jakub Zerdzicki / PexelsЗащищаем долгий Bash-скрипт от параллельных запусков из cron с помощью flock и lock-файла. Готовый обработчик блокирует повторную копию процесса и освобождает блокировку после завершения работы.
Фото: Engin Akyurt / PexelsПошагово подключаем физический USB-диск с ext4 к Windows 11 через WSL без сторонних драйверов. Находим устройство через WMIC, монтируем его с ключом --bare и открываем раздел внутри Ubuntu.
Фото: Arina Krasnikova / PexelsПроверяем целостность архивов tar.gz без распаковки командами tar и gzip, намеренно повреждаем файл через truncate и разбираем коды возврата. В конце — готовый Bash-скрипт для автоматической проверки резервных копий.
Фото: brokenadmiral_ / PexelsBash-скрипт фотографирует человека при попытке аутентификации Linux через PAM и отправляет снимок в Telegram. В примере используются ffmpeg, curl, pam_exec и настройка optional или required.
Фото: Matheus Bertelli / PexelsРазбираемся, чем физический терминал и его современный эмулятор отличаются от консоли Linux. Сравниваем устройства /dev/pts и /dev/tty и отправляем текст из консоли в открытую терминальную сессию.
Фото: cottonbro studio / PexelsРазбираем Linux-команду yes для автоматической передачи подтверждений в интерактивные программы. Показываем работу через пайп, произвольные ответы и отправку пустой строки для имитации Enter в скриптах и пайплайнах.
Фото: Tara Winstead / PexelsСобрали консольные сервисы для определения внешнего IP-адреса и геолокации через curl, dig и whois. Показываем короткие команды и объясняем, как сделать проверку отказоустойчивой в Bash-скриптах.
Фото: Luke Greenwood / PexelsРазбираем тест -newerXY утилиты find и временные метки файлов. Ищем изменения относительно заданной даты или файла-образца, создаём контрольную метку через touch и выводим время найденных объектов.
Фото: Thirdman / PexelsЭкспериментируем с GNU-утилитами и функцией set_program_name, которая особым образом обрабатывает запуск из каталога .libs. Сравниваем сообщения об ошибках и справку, чтобы увидеть влияние libtool на имя программы.
Фото: Ezgi Kaya / PexelsСоздаём собственную метрику Prometheus обычным Bash-скриптом через textfile collector в node_exporter. Разбираем формат .prom, периодический запуск из cron и пример передачи квоты внешнего сервиса.
Фото: Monocromática Artes B.cruz / PexelsИспользуем printf для получения кодов символов в шестнадцатеричной, восьмеричной и десятичной системах. Проверяем влияние LC_ALL на UTF-8 и сохраняем форматированный результат в переменную.
Фото: Markus Spiske / PexelsСоздаём массив двоичных чисел средствами brace expansion и переводим значения между системами счисления в Bash. Заодно разбираем границы intmax_t и целочисленное переполнение.
Фото: Aaron Lefler / PexelsРазбираемся, зачем скрипту нужен Shebang и что происходит при ошибке ENOEXEC. На примерах показываем, когда Bash способен самостоятельно выполнить файл без привычной строки интерпретатора.
Фото: Ron Lach / PexelsНесколько способов завершить интерактивную оболочку Linux: CTRL+D, TMOUT, set -t, set -e, exec и exit. Отдельно разбираем настройку символа EOF через stty.
Фото: Onur Burak Akın / PexelsРазбираем Reverse Shell через netcat для подключения к серверу без внешнего IP-адреса. Показываем команды для принимающей стороны и закрытого узла, перенаправление потоков и обязательные ограничения безопасности.
Фото: Brett Sayles / PexelsПошагово собираем собственный метапакет Debian, который устанавливает заранее выбранный набор утилит. Создаём структуру dh_make, редактируем debian/control, запускаем debuild и проверяем зависимости.
Фото: RDNE Stock project / PexelsНастраиваем разные правила sshd для пользователей и адресов через блок Match. Рассматриваем парольную аутентификацию последнего шанса, шаблоны условий и проверку итоговой конфигурации командой sshd -T -C.
Фото: Alena Darmel / PexelsНастраиваем log_format Nginx для структурированных JSON-логов и отправляем access_log и error_log в systemd journal через syslog. Также разбираем параллельную запись в разные форматы для отладки.
Фото: Adventure Studio / PexelsРазбираем назначение разделителя -- в командах Linux и показываем его работу на примерах ssh, cat и rm. Учимся безопасно передавать имена файлов и аргументы, начинающиеся с дефиса.
Фото: Arlind D / PexelsПрактическое сравнение setsid и nohup для запуска Bash-скриптов независимо от текущего терминала. Смотрим дерево процессов через pstree и разбираемся, когда создаётся новый сеанс.
Фото: Onur Can Elma / PexelsРазбираемся, почему обычный whois не показывает Expires on для доменной зоны .to. Находим WHOIS-сервер зоны, обращаемся к сервису Tonic через curl и получаем дату окончания регистрации.
Фото: Towfiqu barbhuiya / PexelsРабочая схема сбора метрик Prometheus с внутренних серверов без белых IP-адресов. Настраиваем DNAT и MASQUERADE на балансировщике и направляем порты к node_exporter.
Фото: RDNE Stock project / PexelsСоздаём вложенную структуру каталогов одной командой mkdir с ключом -p и brace expansion. Сравниваем последовательность команд с компактным вариантом и проверяем запуск через strace.
Фото: MART PRODUCTION / PexelsСравниваем команды rm и unlink в Linux: системные вызовы, обработку отсутствующих файлов, шаблоны и каталоги. Показываем, когда unlink удобнее для контроля ошибок в Bash-скриптах.
Фото: Yan Krukau / PexelsЗнакомимся с утилитой bat — улучшенным просмотрщиком файлов с подсветкой синтаксиса, нумерацией строк и интеграцией Git. В статье собраны установка, alias для batcat и основные примеры команд.
Фото: Jakub Zerdzicki / PexelsИспользуем lckdo из пакета moreutils, чтобы второй экземпляр скрипта не запускался одновременно с первым. Рассматриваем lock-файл, ожидание через -w и безопасный запуск периодической задачи cron.
Фото: Heru Dharma / PexelsОграничиваем видимость чужих процессов на многопользовательском Linux-сервере через параметры hidepid для /proc. Разбираем временное монтирование, запись в fstab и исключения доступа по группе gid.
Фото: Lisa from Pexels / PexelsПрактический Bash-скрипт для параллельной обработки строк файла с ограничением числа потоков через FIFO. Разбираем именованный канал, файловый дескриптор и простой семафор без GNU parallel.
Фото: Satoshi Hirayama / PexelsИщем службы, которые замедляют загрузку Linux, командами systemd-analyze blame и critical-chain. На примере Docker разбираем зависимости network-online.target и настройку systemd-юнита.
Фото: Omar Ashraf / PexelsПроверяем, определена ли переменная Bash, с помощью условного выражения -z и расширения параметра ${VAR+x}. Пошагово разбираем результаты, режим set -x, export и unset.
Фото: Ann H / PexelsТри игровых тренажёра для изучения командной строки Linux: BashCrawl, Terminus и CL Mystery. Они помогают практиковать навигацию, команды и логику в формате текстовых приключений и детективных квестов.
Фото: Erik Mclean / PexelsПоказываем, как отфильтровать строки одного текстового файла по списку из другого с помощью конструкции NR == FNR и массива awk. Разбираем работу NR, FNR и next, выбор столбцов и ограничение по памяти без обязательной …
Фото: Sevgi Gümüş / PexelsСпасаем долгий процесс, случайно запущенный без nohup или screen. Комбинация Ctrl+Z и команды bg, disown и fg позволяют остановить задачу, продолжить её в фоне и отвязать от текущей оболочки.
Фото: Nemuel Sereti / PexelsГотовим публичный Linux-сервер к техническим работам: блокируем новые входы через /etc/nologin, рассылаем предупреждение командой wall и завершаем пользовательские сессии. Дополнительно рассматриваем write и прямую запись в …
Фото: Pressmaster / PexelsПоказываем, как сохранить стандартный вывод cron-задачи в отдельный файл и настроить его ротацию через logrotate. Такой журнал помогает увидеть внутренние ошибки приложения, которые не попадают в системный лог cron.
Фото: Mikhail Nilov / PexelsПрактический опыт запуска XRDP на Debian с окружениями XFCE и LXDE и клиентом xfreerdp. Разбираем установку, удобный alias подключения и проблемы с раскладкой, логами, пользовательскими сессиями и 1С.
Фото: ThisIsEngineering / PexelsУтилита debsums сверяет файлы установленных Debian-пакетов с эталонными контрольными суммами. Разбираем полную проверку, поиск изменённых файлов и конфигураций после взлома или миграции сервера.
Фото: Maor Attias / PexelsНастраиваем iVentoy как простой PXE-сервер для установки Linux и Windows по сети без флешек. В материале есть команды установки, запуск веб-интерфейса, каталог ISO и unit-файл systemd.
Фото: Brett Sayles / PexelsСтроим связку из SSH-бастиона и изолированной машины без выхода в интернет для удалённых пользователей. Настраиваем ключи, принудительную оболочку и автоматический переход на внутренний сервер.
Фото: Sakina Mammadli / PexelsРазбираем запуск долгих задач в именованных screen-сессиях, подключение через -r и -x и корректное отсоединение сочетанием Ctrl+A, d. Показываем фоновый запуск, передачу команд в сессию и организацию логирования.
Фото: Tom Fisk / PexelsРазбираемся, почему многократные вызовы tput замедляют Bash-скрипт, и один раз сохраняем управляющие последовательности терминала в переменные. Показываем печать, экранирование и практические однострочники.
Фото: Rafael Minguet Delgado / PexelsСмотрим текущие настройки терминала через stty -a и меняем символ прерывания процесса с Ctrl+C на другое сочетание клавиш. Разбираем возврат настройки, запись в shell-конфиг и альтернативу через xbindkeys.
Фото: Erkan Utu / PexelsРазбираемся, почему короткий ключ ED25519 не слабее длинного RSA, какие типы SSH-ключей поддерживает OpenSSH и как конвертировать PPK из PuTTYgen. Практические команды для генерации и преобразования ключей.
Фото: Артем Зелюткин / PexelsСценарий отката сетевой конфигурации удалённого Linux-сервера без IPMI и локального администратора. Резервная копия /etc, задание cron после перезагрузки и проверка успешного входа по SSH.
Фото: Field Engineer / PexelsПять способов запустить исходную команду в Bash, не удаляя alias из конфигурации оболочки. Показываем экранирование, кавычки, полный путь, command и unalias с восстановлением настроек.
Фото: Ekaterina / PexelsНастраиваем второй IP-адрес на VPS и распределяем исходящие соединения между двумя адресами через iptables SNAT. Проверяем выбор интерфейса в curl и случайную маршрутизацию с вероятностью 50%.
Фото: Efrem Efre / PexelsИщем культурный след числа 42 в справке Vim, документации Emacs и сообществе GNU. Разбираемся, как ответ из «Автостопом по галактике» стал устойчивой шуткой в мире программирования.
Фото: Enrico Bellodi / PexelsСравниваем X11 Forwarding и RDP в Docker для удалённой работы с графическими приложениями на Linux-сервере. Разбираем подключение GPU NVIDIA и AMD, необходимые устройства контейнера и безопасный SSH-туннель.
Фото: Andrey Matveev / PexelsПишем Bash-скрипт, который проверяет цепочку DOCKER-USER и восстанавливает правила iptables после изменений Docker. Добавляем список разрешённых IP и безопасный запуск проверки через cron.
Фото: Brett Sayles / PexelsНастраиваем обязательную смену пароля, требования libpam-pwquality и защиту fail2ban для SSH. Разбираем минимальный набор мер, если клиент отказывается переходить на ключи.
Фото: Jakub Zerdzicki / PexelsРазбираем mktemp через strace и подменяем результат системного вызова openat. Эксперимент показывает, сколько имён перебирает coreutils при ошибке EEXIST и откуда берётся число попыток.
Фото: KoolShooters / PexelsЭкспериментируем с coproc, массивом COPROC и тайм-аутом команды read. На примерах разбираем обмен через файловые дескрипторы и ограничения такого таймера.
Фото: Towfiqu barbhuiya / PexelsШифруем пиксели PNG с парольной фразой или отдельным файлом-ключом через ImageMagick. Проверяем расшифровку, ограничения форматов и сохранение открытых метаданных.
Фото: Landiva Weber / PexelsРазбираем встроенную команду enable в Bash: отключаем shell builtin, переключаемся на дисковую утилиту и загружаем расширения оболочки. Показываем работу с test, mkdir и BASH_LOADABLES_PATH.
Фото: Ömer Yılmaz / PexelsСоздаём cgroup для процесса и запрещаем ему использовать swap, не отключая подкачку для всей системы. Разбираем cgcreate, cgclassify, memory.swap.max, OOM и восстановление настроек через systemd.
Фото: Jakub Pabis / PexelsОтключаем zswap через параметры GRUB и настраиваем сжатие оперативной памяти с помощью zram. Показываем Bash-скрипт и конфигурацию systemd-zram-generator с алгоритмом lz4.
Фото: Richard L / PexelsПроверяем существование удалённого Git-репозитория и доступ к нему через git ls-remote. Пишем Bash-скрипты для HTTPS и SSH, отключаем интерактивные запросы и возвращаем понятные коды ошибок.
Фото: Sora Shimazaki / PexelsИсследуем генератор псевдослучайных чисел RANDOM в Bash на примере безопасной русской рулетки. Разбираем seed, влияние BASH_COMPAT и различия поведения между версиями оболочки.
Фото: Pavel Danilyuk / PexelsРазбираем числовой errno из лога MySQL с помощью штатной утилиты perror. На примере ошибки 24 находим лимит открытых файлов и проверяем open_files_limit, ulimit и системные ограничения.
Фото: cottonbro studio / PexelsУстанавливаем корневой и подчинённый сертификаты Минцифры в Ubuntu одной shell-командой. Проверяем subject, SHA-1 fingerprint и цепочку OpenSSL, обновляем системное хранилище CA и тестируем HTTPS через curl.
Контролируем появление новых связок IP и MAC в сетях DMZ и LAN на OPNsense. Скрипты csh и awk сравнивают ARP-таблицу со справочником и отправляют уведомление в Telegram без раскрытия инфраструктуры.
Фото: Brett Sayles / PexelsПишем Bash-скрипт, который проверяет длину очереди RabbitMQ по SSH и перезапускает зависший микросервис при накоплении писем. Разбираем cron, rabbitmqctl, awk и запуск команд от отдельного пользователя.
Фото: Pavel Danilyuk / PexelsПривязываем SSH-подключение к bastion-серверу к комбинации Alt+B в Bash через функцию и bind -x. Также разбираем псевдотерминал, reset и вариант конфигурации для Zsh.
Фото: Prashant Singh / PexelsПоказываем разницу между обычной переменной Bash и переменной окружения, объявленной через export. Проверяем наследование в подпроцессах и разбираем обходной способ передачи массивов через строку.
Фото: luis gomes / PexelsНастраиваем автоматическое монтирование NTFS-диска и запуск резервного копирования на сервере без GUI. Связываем правило udev, mount-юнит и systemd-сервис с выводом статуса на tty1.
Фото: Nothing Ahead / PexelsНастраиваем белый список команд для SSH-пользователя с помощью Bash-скрипта ONLY и директивы command в authorized_keys. Разбираем ключи, ограничения сессии и правила .onlyrules без выдачи интерактивной оболочки.
Фото: Jakub Zerdzicki / PexelsРазбираем, как dd обновляет статистику через stderr и символ возврата каретки. Превращаем динамический прогресс в строки и пишем Bash-бенчмарк для сравнения скорости при разных размерах блока.
Фото: Aleksander Dumała / PexelsИспользуем strace с измерением времени системных вызовов, чтобы увидеть блокировку записи в Linux pipe. Разбираем сложную команду и находим скачок задержки после заполнения буфера объёмом 65536 байт.
Фото: AlphaTradeZone / PexelsСоздаём зомби-процесс на C и Bash, находим его и родительский PID через ps и разбираем завершение процесса. Объясняем, почему kill по PID зомби не помогает и когда такие записи можно не трогать.
Фото: James L / PexelsРазбираем соответствие символьных, двоичных и восьмеричных прав доступа Linux. Показываем сложение битов rwx, генерацию комбинаций в Bash и просмотр режима файлов через stat.
Фото: Felix Möller / PexelsНастраиваем IOMMU и PCI passthrough в Proxmox для передачи физических устройств виртуальным машинам. Разбираем параметры GRUB, модули VFIO, изоляцию GPU и проброс диска по стабильному идентификатору.
Фото: Jonathan Borba / PexelsСобираем Raspberry Pi 5 с NVMe-диском и резервным питанием на аккумуляторах 18650. Разбираем комплект Geekworm, запуск вентилятора через Python-сервис, стресс-тесты и нюансы питания платы расширения.
Сравниваем systemd timers и cron на практическом примере: создаём service и timer, запускаем задачу каждую минуту и включаем автозагрузку. Разбираемся, когда гибкость таймеров оправдана, а когда сотни unit-файлов только усложняют …
Фото: Kofi Nartey / UnsplashНа примерах сравниваем специальные переменные $@ и $* в Bash с кавычками и без них. Показываем разбиение аргументов с пробелами, объединение в одну строку и влияние разделителя IFS.
Фото: Nemuel Sereti / PexelsРазбираем Bash-команду, которая проверяет каждый элемент PATH и выводит отсутствующие или недоступные каталоги. Пошагово объясняем set -f, IFS, проверку переменной, права доступа и диагностику путей через namei.
Фото: Masood Aslami / PexelsУтилита ccze добавляет цветовую подсветку к системным логам в терминале и выделяет ошибки. Показываем работу с cat и tail, сохранение последних строк в цветной HTML-файл и просмотр доступных плагинов.
Фото: Nemuel Sereti / PexelsНастраиваем автоматическую проверку SMART и RAID-массива с почтовыми уведомлениями. Используем smartmontools, smartd, mdadm и лёгкий SMTP-клиент msmtp для отправки сообщений о сбоях дисков.
Фото: panumas nikhomkhai / PexelsИсследуем, почему ls отключает ANSI-цвета при передаче вывода через pipe. С помощью strace находим ENOTTY, подменяем результат ioctl и возвращаем управляющие последовательности опциями color=always и cat -v.
Фото: luis gomes / PexelsНастраиваем общий доступ к терминалу Linux и macOS через tty-share без тяжёлых видеозвонков. Разбираем публичную и локальную сессии, режим только для чтения, завершение процесса и альтернативные инструменты.
Фото: Mikhail Nilov / PexelsСоздаём ограниченное окружение chroot для SSH-пользователя в Linux. Копируем Bash и зависимости через ldd, настраиваем ChrootDirectory и по одной добавляем разрешённые утилиты.
Фото: Abdulgafur Ögel / PexelsРазбираем утилиту timeout для ограничения времени работы команд и скриптов в Linux. Показываем длительности, сигналы завершения, удалённый запуск через SSH и вариант на чистом Bash.
Фото: Annushka Ahuja / PexelsЧитаем поля SigBlk, SigIgn и SigCgt в /proc/PID/status и переводим шестнадцатеричные битовые маски в имена сигналов Linux. В конце собираем готовый Bash-скрипт для диагностики процесса.
Разбираем Патч Бармина и поведение команды rm -rf /* в Unix-системах. Показываем раскрытие glob оболочкой, права на каталоги, интерактивный режим и защиту --preserve-root=all.
Фото: Cup of Couple / PexelsОбъясняем коды завершения после SIGINT и SIGTERM и настраиваем обработчики сигналов через trap в Bash. Разбираем, почему получается код 130, как изменить поведение скрипта и почему SIGKILL нельзя перехватить.
Фото: Emiliano Rodríguez / PexelsИщем Linux-шрифты с кириллическими глифами через fc-list и сопоставляем их со шрифтами ImageMagick. Затем Bash-скрипт генерирует образцы русской буквы «А» для каждого найденного файла.
Фото: Eugenia Remark / PexelsРазбираем разделы справочной системы man: команды, системные вызовы, форматы файлов, административные утилиты и функции ядра. Показываем поиск через man -k, страницы intro и вывод справки в HTML.
Фото: Tima Miroshnichenko / PexelsСравниваем скорость запуска Bash и Zsh вручную и с помощью shellbench. Заодно разбираем плагины Oh My Zsh, автодополнение и место Dash среди быстрых POSIX-оболочек.
Фото: Gonzalo Álvarez Balcazar / PexelsОграничиваем SSH-пользователя интерактивным меню разрешённых административных команд. Bash-скрипт, ForceCommand и точечное правило sudoers дают перезапускать сервисы без полноценного доступа к серверу.
Фото: Fernando Narvaez / PexelsBash-скрипт для интерактивного проброса TCP-портов через SSH jump-сервер. Готовое меню помогает подключаться к службам во внутренних сетях, не меняя конфигурацию вручную.
Фото: Thang Nguyen / PexelsРазбираем heredoc в Bash на практических примерах с cat, sed, перенаправлением в файл и удалённым запуском команд по SSH. Показываю, как управлять подстановкой переменных и отступами.
Фото: Mikhail Nilov / PexelsПошаговая настройка двухфакторной аутентификации SSH через PAM и Google Authenticator. Разбираем конфигурацию sshd, одноразовые коды, резервный доступ и безопасную проверку новой схемы входа.
Фото: panumas nikhomkhai / PexelsПрактическое знакомство со strace на примере редактирования файла командой sed. По системным вызовам openat, read, write и rename разбираем работу временного файла и поиск ошибок доступа.
Фото: cottonbro studio / PexelsEtckeeper превращает каталог /etc в Git-репозиторий и помогает отслеживать, фиксировать и откатывать изменения конфигурации Linux. Разбираем установку, удалённый репозиторий, коммиты и автоматизацию через incron.
Фото: João Jesus / PexelsПрячем ASCII-сообщение в девяти битах прав доступа Linux-файлов. На Bash разбираем сдвиги битов, восьмеричные режимы chmod и кодирование текста последовательностью файлов.
Фото: Magda Ehlers / PexelsСравниваем su и sudo: чьи пароли они запрашивают, как переключают пользователя и что происходит с переменными окружения. Разбираем дефис у su и различия ключей sudo -s и sudo -i.
Фото: Pavel Danilyuk / PexelsДомашний сервер на Proxmox с 11 LXC-контейнерами: Jellyfin, Sonarr, Radarr, Syncthing, Pi-hole и другие сервисы. Рассказываю, как устроена моя компактная self-hosted инфраструктура на мини-ПК.
Фото: Andrey Matveev / PexelsПрактический разбор зависания PHP-FPM и ошибки 502 Bad Gateway с помощью strace и lsof. По файловому дескриптору находим недоступный Elasticsearch, из-за которого воркер перестаёт обрабатывать запросы.
Фото: Ron Lach / PexelsПеренаправляем stdout и stderr уже запущенного процесса в /dev/null без остановки. На примере tail, /proc и gdb разбираем файловые дескрипторы и вызов dup2 для потоков 1 и 2.
Фото: Eva Bronzini / PexelsНастраиваем проброс SSH-портов VirtualBox, чтобы подключаться к гостевой Ubuntu из WSL через Windows-хост. Разбираем правила NAT для localhost, локальной сети и КВН, а затем добавляем удобные алиасы.
Фото: | helloiamtugce | / PexelsРазбираем коды завершения Linux-команд от 0 до 255 и специальную переменную $?. Учимся сохранять статус, строить обработку ошибок и завершать Bash-скрипт нужным кодом через exit.
Фото: Erik Mclean / PexelsРазбираемся, что такое magic numbers в ELF-файлах и какие константы ядро Linux требует для системного вызова reboot. В примерах — readelf, фрагменты kernel/reboot.c и пасхалки с датами семьи Линуса Торвальдса.
Фото: Jakub Zerdzicki / PexelsНастраиваем policy-based routing для сервера с двумя шлюзами: API-трафик уходит через один маршрут, а ответы SSH и HTTP возвращаются через внешний шлюз. Используем netplan, отдельную таблицу маршрутизации, ip rule, iptables MARK и …
Фото: Benjamin White / PexelsНастраиваем условный запуск systemd-юнитов через ConditionPathExists и другие директивы Condition. Сравниваем пропуск юнита с ошибкой Assert и комбинируем проверки существования и монтирования ресурсов.
Фото: MART PRODUCTION / PexelsСтроим простой индекс для большого отсортированного текстового файла с помощью ассоциативного массива Bash и sed. Ограничиваем поиск диапазоном строк по первой букве и ускоряем извлечение данных без тяжёлой СУБД.
Фото: Tima Miroshnichenko / PexelsРазбираемся, почему Linux при нехватке памяти завершает не обязательно самый большой процесс. Смотрим oom_score и oom_adj, меняем вероятность завершения процесса и задаём OOMScoreAdjust в systemd-юните.
Фото: Sharath G. / PexelsМонтируем удалённое хранилище через SSHFS и берём подключение под контроль systemd. Создаём mount-, timer- и service-юниты, которые ждут сеть, проверяют маркерный файл и автоматически перемонтируют шару после сбоя.
Фото: Nothing Ahead / PexelsВоспроизводим ситуацию, когда процесс продолжает писать в удалённый лог через открытый файловый дескриптор. Восстанавливаем содержимое через /proc, а затем с помощью GDB переключаем работающий процесс на новый файл без …
Фото: Nicolas Foster / PexelsИспользуем пакет PSSH для параллельного запуска команд и копирования файлов на группу Linux-серверов. Настраиваем SSH-ключи и файл инвентаря, работаем с parallel-ssh, parallel-scp, prsync, pnuke и pslurp.
Фото: RDNE Stock project / PexelsЗапускаем фоновые команды в Bash через оператор &, управляем заданиями с помощью wait и jobs и получаем PID через $!. Собираем параллельный загрузчик файлов и сравниваем нативный подход с GNU Parallel.
Фото: Mehmet Turgut Kirkgoz / PexelsВключаем создание core dump через sysctl и ulimit, намеренно вызываем segmentation fault в программе на C и исследуем дамп памяти в GDB. По стеку и значению указателя находим причину падения и исправляем код.
Фото: Nicolas Foster / PexelsСтроим взаимодействие между Bash-процессами через сигналы SIGRTMIN и trap без временных файлов. Пишем сервер-слушатель и клиент, разделяем события по индексам сигналов и разбираем порядок обработки и приоритеты.
Фото: Elina Volkova / PexelsЭкспериментируем с /dev/zero, поведением read и нулевым символом в C-строках. Затем находим смещение строки через strings и точечно патчим бинарный файл одним нулевым байтом с помощью dd.
Фото: cottonbro studio / PexelsРазбираемся, как sparse-файлы экономят физическое место на диске, но сохраняют заявленный логический размер. Создаём разрежённый файл через dd и truncate, форматируем его в ext4 и выясняем, как эту технологию используют …
Фото: Wenxin Dong / PexelsРазбираем разницу между суффиксами ; и + у find -exec, сокращаем число запускаемых процессов и подключаем xargs для параллельной обработки файлов. Практические команды помогают ускорить поиск и безопасно передавать группы …
Фото: Mehmet Turgut Kirkgoz / PexelsРазбираем устройство разделяемых библиотек Linux, их полные имена, soname и компоновочные ссылки. Смотрим правила major, minor и patch, создаём библиотеку через gcc и проверяем зависимости с ldconfig и ldd.
Фото: Julio Lopez / PexelsРазбираем странный вывод Jase64 вместо base64 с помощью strace и системного вызова write. Смотрим, как ESC-последовательности проходят через псевдотерминал и почему эмулятор терминала скрывает первый символ сообщения об ошибке.
Фото: Pixabay / PexelsРазбираем interactive, non-interactive, login, non-login, restricted и другие типы оболочек Linux. Смотрим, какие файлы профиля они читают, почему скрипт работает вручную, но ломается в cron, и как определить текущий режим.
Фото: Kaboompics / PexelsПочему df показывает 100% занятого места, а du и ncdu не находят крупные файлы. Разбираю Hidden Space Explorer (hsed) — TUI-утилиту для поиска удалённых, но открытых файлов в Linux, освобождения дискового пространства и …
Фото: Usman AbdulrasheedGambo / PexelsКак блоки Match в sshd_config могут переопределить глобальные настройки SSH, даже если в 00-security.conf уже задан PermitRootLogin no. Разбираю приоритет параметров в Match, проверку итоговой конфигурации через sshd -T и -C, …
Фото: Adem Percem / PexelsПочему SSH игнорирует настройки в sshd_config, хотя конфиг кажется правильным? Разбираю порядок обработки Include и файлов sshd_config.d, правило первого найденного значения параметра и распространённую ловушку с PermitRootLogin. …
Фото: Michaela St / PexelsКак быстро сделать полный бэкап WSL-дистрибутива в Windows и перенести рабочее окружение Linux без долгого копирования файлов. Показываю команды wsl --shutdown и wsl --export для создания tar-архива Ubuntu, объясняю, зачем …
Фото: Blue Bird / PexelsОднажды я вручную гонял регресс 5 недель. Больше я так не хочу. Я построил фреймворк, который за 30 минут прогоняет то, на что раньше уходил месяц. Но главное — на этапе проектировки запросов мы нашли столько дефектов в SOAP API, …
Фото: Mikhail Nilov / PexelsЯ потыкал Termix, бесплатный аналог Termius. И Termix выигрывает в открытости, поддержке SSH туннелей и возможности управлять файлами из браузера. Минусы – нестабильный VNC, странные анимации панели и наверное необходимость ручных …
Фото: panumas nikhomkhai / PexelsМне за 30, я видел много скриптов с дьявольскими отрицаниями, и каждый раз хотелось задушить автора. Поэтому я решил написать пост, в котором покажу как превратить кошмарную конструкцию в простой if-else без единого лишнего знака. …
Фото: Emrah Tolu / PexelsВместе с Романом Шубиным, СТО и автором канала Bash Days, собрали отдельный мини-курс по Podman. Внутри — восемь материалов, которые помогут освоить инструмент с открытым исходным кодом для работы с контейнерами.
Фото: Alex Levis / PexelsДружище, если твой Dockerfile начинается с COPY и только потом npm install, то соболезную. Каждая твоя сборка переустанавливает зависимости заново, хотя они сто лет не менялись. Я сам так делал, пока не понял, что кеш Docker …
Фото: Willians Huerta / PexelsЯ пробовал разные инструменты, но только less позволил мне объединить просмотр и поиск в одном окне. Я могу прыгать по строкам, искать IP‑адреса и мгновенно возвращаться в режим слежения нажатием SHIFT+F. Это экономит кучу времени …
Фото: AMORIE SAM / PexelsЗнаешь этот бесконечный скролл в git log? Кто-то привык к пагинации, кто-то тупо шпарит grep. Я расскажу тебе как git управляет выводом истории коммитов через внешнюю утилиту less. И да, если её убить — простыня посыплется без …
Фото: Ron Lach / PexelsКак я поймал скрытый SSH трафик с Android и iPhone через opnSense. Люди до сих пор думают, что угрозы это когда хакер в худи ломает Пентагон. На деле твой смартфон сам бодро шатает чужие SSH порты пока ты листаешь мемы. Я проверил …
Фото: Ricky Esquivel / PexelsВ прошлый раз я тебе показал как собрать S3 кластер из трех серверов на Garage. Теперь самое время накрутить ему балансировщик и SSL сертификат чтобы всё работало как часы даже если одна из нод ляжет спать. В этой части мы ставим …
Фото: LUNA LUNA / PexelsТри рандомных сервака, композник и голый opensource — вот мой рецепт собственного S3 облачного хранилища. Garage не просит денег, реплицирует данные на все ноды и переживает падение любого сервера. Инструкция для тех, кто не …
Фото: K / PexelsЯ знаю, что сейчас все гонятся за JSON, и это удобно для новичков. Но когда речь заходит о реальной работе с большими логами, я всегда возвращаюсь к awk. Мой опыт показывает, что для быстрых фильтров и обработки огромных объемов …
Фото: Alfredo Lau-Tam / PexelsСегодня расскажу как пентестеры и черношляпы повышают привилегии на Linux машинах и получают root доступ. Без уязвимостей и эксплоитов.
Фото: Marina Zvada / PexelsРаньше с Cloudflare всё было просто, а теперь бесплатных вариантов почти нет. Я расскажу, как сам прячу IP сервера и защищаю приложения с помощью NetBird и Safeline.
Фото: panumas nikhomkhai / PexelsЕсли ты часто работаешь в командной строке, тебе точно пригодится подборка моих bash-функций для .bashrc. Они делают рутинные задачи намного удобнее и быстрее. Зацени и добавь себе.
Фото: cottonbro studio / PexelsКак автоматизировать sftp через скрипты. Объясню, почему key-based authentication это важно и как batch-mode помогает ловить ошибки.
Фото: Nicolás Rueda / PexelsКак подключить физический YubiKey к WSL2, чтобы использовать его для SSH без паролей и SMS. Разберёмся с проблемами прокидывания USB в WSL и сделаем автоматический скрипт, который решит баги с повторным подключением ключа.
Фото: Bia Sousa / PexelsЕсли не хочется связываться с доменами, но нужен SSL на IP — вот мой опыт и инструкция, как это сделать с помощью Let's Encrypt и acme.sh. Всё просто и понятно!
Фото: Anna Tarazevich / PexelsЧасто нужно быстро скачать файл с сервера, а настроить что-то сложное лень? Я расскажу, как с помощью одной команды Python поднять простой веб-сервер и скачать любой файл за пару секунд.
Фото: Elizabeth Celestino / PexelsПочему теперь можно использовать просто compose.yaml, а не привычный docker-compose.yaml. Всё стало проще, но если у тебя старая ОС — есть нюансы. Заодно обсудим, зачем вообще был нужен version в файле.
Фото: Ann H / PexelsВ пентесте реверс-шелл часто превращается в головную боль. Вот проверенный способ, который помогает быстро привести его в порядок и забыть про ошибки.
Фото: Stephan Beck / PexelsЯ придумал хитрую капчу и покажу как с помощью xdotool ее можно эффективно обойти. Роботы же начинают троить, кейс отлично подходит под нишевые проекты с защитой от дурака.
Фото: Nothing Ahead / PexelsЕсли любишь терминал и хочешь попробовать что-то новое, Brow6el для тебя. Сборка не из пакетов, но есть скрипты. Браузер поддерживает графику, скрипты и все современные фишки.
Фото: Markus Spiske / PexelsНедавно решил перенести почтовый сервер к себе домой, чтобы сэкономить пару тысяч в месяц. В статье — как настроить прокси с angie и обойти отсутствие белого IP.
Фото: Kindel Media / PexelsЕсли ты тоже путаешься, что лучше — bind или volume, этот пост для тебя. Покажу основные правила и примеры из жизни, чтобы ты не писал дичь и не ломал себе окружение.
Фото: Juan Manuel Montejano Lopez / PexelsЕсли ты устал от сложных настроек DNS и хочешь кластер «из коробки», расскажу, как я быстро развернул Technitium DNS с минимальными усилиями.
Фото: Sergei Starostin / PexelsБыстро и просто о том, как заставить Pi-Hole ноды работать с одинаковыми настройками в синхронном режиме.
Фото: U.Lucas Dubé-Cantin / PexelsОбходим проблемы кворума в Proxmox. Забудьте о сбоях при потере одной ноды, кластер остаётся живым, а бэкапы проходят без ошибок. Простой способ сделать домашнюю лабораторию надёжной.
Фото: Brett Sayles / PexelsЛень каждый раз вводить source ~/.zshrc? У меня тоже! Сделал автоперезагрузку конфига в ZSH с проверкой синтаксиса — делюсь, как это работает и что стоит учесть.
Фото: Sachith Ravishka Kodikara / PexelsСегодня покажу, как ограничить жор ресурсов у своих скриптов. Если хочешь, чтобы сервер не превращался в печку — тебе сюда.
Фото: Nikita Nikitin / PexelsВ этом разборе показываю, как в Proxmox 9.1 работает новая нативная поддержка OCI-образов. На примере nginx:latest скачиваем образ из Docker Hub, превращаем его в LXC-контейнер и запускаем без единой команды Docker. Разбираем, как …
Фото: Alex Levis / PexelsПодробная инструкция по переходу на новую ветку Debian Trixie в Proxmox. Фиксим репы, обновляем ключи, прогоняем pve8to9 и устанавливаем всё, что предлагает система. Даю комментарии по каждому этапу, чтобы апдейт не превратился в …
Фото: Suki Lee / PexelsКлассный инструмент для быстрого запуска Ubuntu виртуалок. Забудь про бесконечные настройки и тормоза VirtualBox!
Фото: Liliana Drew / PexelsВыпадающие списки в Gitlab. Многие путаются с options и inputs в GitLab, поэтому делюсь своим опытом и простым решением, которое сработало у меня.
Фото: DS stories / PexelsПошаговый разбор Load Average с примерами и советами, чтобы ты всегда знал, когда пора бежать к серверу, а когда можно спокойно пить пиво.
Фото: Mateus Ildefonso / PexelsКаждый месяц я забывал заказать туалетную бумагу, пока не написал Bash-скрипт, который делает это за меня. В этом посте расскажу, как с реверсом API и cron’ом автоматизировал рутину.
Фото: Vie Studio / PexelsПосле того, как я выполнял terraform apply, где-то в дата-центре, специально обученный мальчик шёл ножками, читал мой yaml манифест, плакал, собирал руками железный сервер и передавал мне в работу. Сейчас этот процесс полностью …
Фото: Mikael Blomkvist / PexelsСегодня поделюсь лайфхаком, как заставить процессы не прыгать по всем ядрам, а работать там, где им удобнее.
Фото: Jimmy Chan / PexelsИногда хочется заставить процессор работать на полную, а иногда сберечь батарею. Расскажу, как это сделать с помощью governors и небольшого bash-скрипта.
Фото: Abdullah Alsaibaie / PexelsПочему контейнер Docker «маскирует» код выхода приложения и как правильно настроить запуск, чтобы видеть настоящий exit code.
Фото: Shuaizhi Tian / PexelsWinBoat — маленькое чудо для тех, кто сидит на Linux, но не хочет отказываться от Windows. Это мой новый фаворит для запуска виндовых приложений в Linux без лишних заморочек. Делюсь впечатлениями.
Фото: ready made / PexelsЕсли приложение в Docker внезапно упало, этот пост поможет настроить сбор дампов и разбираться с ошибками.
Фото: Andreas Näslund / PexelsИногда проще сделать chown -R, но я решил заморочиться и написать свой мониторинг на eBPF. Рассказываю, что из этого вышло и почему это стоило того.
Фото: Bulat843 🌙 / PexelsЕсли не хочется возиться с systemd timers, вот простой хак для запуска скриптов в cron каждые 30 секунд. Быстро и понятно!
Фото: Image Hunter / PexelsЕсли продакшен тормозит, strace поможет найти виновника и быстро исправить ситуацию.
Фото: Wolf Art / PexelsРассмотрим сервис в виде веб-сервиса, который помогает понять, что делает та или иная shell-команда в Unix/Linux. Проще говоря, ты вставляешь команду, а оно разбирает её и объясняет фрагмент за фрагментом, что означает каждая …
Фото: Daniil Kondrashin / PexelsСохранение правил iptables часто плохо реализовано из коробки или отсутствует. Разбираем, как настроить механизм в Linux и не потерять правила после перезагрузки.
Фото: Quentin Guiot / PexelsСитуация неприятная и чаще всего выходом служит удаление «ненужных» файлов. Рассмотрим ситуацию, когда все файлы нужны, то есть удалять ничего не будем.
Фото: cottonbro studio / PexelsПосылаем PING всем redis'ам в кластере и собираем PONG в ответ.
Фото: https://kaboompics.com/ / PexelsКогда GUI не вариант, Posting — идеальный инструмент, минималистично, понятно, сессии сохраняются — рекомендую всем, кто любит чистый терминал.
Фото: Kevin Ku / PexelsСегодня пакажу, как в Linux узнать степень деградации батареи и вынести этот показатель в аккуратный модуль Waybar.
Фото: IT services EU / PexelsКак направить логи прямиком в journald без костылей и внешнего софта.
Фото: adanvdo / PexelsРазбираемся почему перестал меняться дефолтный ssh порт, залазием в кишочки и обнаруживаем интересное поведение.
Фото: Erik Mclean / PexelsКак работает команда fsck, нюансы и как её лучше запускать.
Фото: Gustavo Fring / PexelsКухонные посиделки девопс-инженеров и размышления на тему - а что если делегировать всю работу специальной операционной системе с ядром на базе ИИ.
Фото: panumas nikhomkhai / PexelsСегодня будет обучать cron понимать рабочие и выходные дни. Из коробки этот функционал не работает, да и systemd тут не особо поможет. Так что, придется изобретать очередную кишку.
Фото: Edge Training / PexelsРазбираемся с daemon-reload и daemon-reexec, в чем отличия и практическое применение.
Фото: cottonbro studio / PexelsВ этой статье я шаг за шагом показываю, как установить SelectOS «с нуля» — прямо из ISO-образа — в облаке Selectel. Рассказываю, с какими трудностями столкнулся (от нехватки памяти до проблем с сетью), и как их обошёл. Подойдёт …
Фото: panumas nikhomkhai / PexelsЯ решил попробовать поднять GitLab CE на SelectOS без всяких Docker’ов — в лоб, как есть. Завёл раннеры, погонял CI и нагрузку, SelectOS тащит!
Фото: Christina Morillo / PexelsПотребовалось мне сегодня поднять один серверный линукс дистрибутив на базе debian. Задача не тривиальная. Но по итогу как обычно подкинули граблей. Раньше всегда был уверен, что если сделать машину с параметрами 1 CPU, 512МБ RAM, …
Фото: K / PexelsПроникаемся новой операционной системой SelectOS на базе Debian, тыкаем в реальных условиях, смотрим фишки и фичи. Пробуем установить базовый софт и провести нагрузочное тестирование.
Фото: I'm Zion / PexelsКоманда if [ bar = "$foo" ]; проверяет, равны ли два значения. Тут самое важно это — пробелы, про кавычки повторять не буду, ты это уже и так знаешь. Все уши прожужал.
Фото: Chris F / PexelsВ Bash конструкция [ ... ] — не часть синтаксиса if, а отдельная команда, аналогичная test. Разбираем, как на самом деле выполняются условия и почему это важно для скриптов.
Фото: Markus Spiske / PexelsОн считает, сколько строк в файле bar.txt содержат слово foo. Здесь главная проблема — переменная count не изменится вне цикла while, потому что в Bash каждая команда в пайплайне (|) запускается в отдельной оболочке (subshell). То …
Фото: Sergei Starostin / PexelsКонструкция [[ ... ]] в Bash предназначена для проверки условий, но не для арифметики. Разбираем ошибочное сравнение и правильное применение (( ... )) для чисел.
Фото: Markus Spiske / PexelsПредставь две коробки с созвучными подписями. Разбираемся, как Bash интерпретирует строки и почему одинаково выглядящие условия могут давать неожиданный результат.
Фото: Chia-Ho Lin / PexelsКогда в Bash сравниваешь две переменные, важно не про***ться с кавычками. Разбираем, что произойдёт, если переменная $foo окажется пустой.
Фото: Connor Scott McManus / PexelsЭто ошибочный вариант, бэд мать его практика. Команда cd $(dirname "$f") должна вернуть путь к папке, где лежит файл.
Фото: Sergei Starostin / PexelsПродолжаем погружаться в Бэд-Практики! В прошлом посте мы рассмотрели файлы, которые начинаются с дефиса и то, что команда cp их может воспринимать как флаг. Ну дак вот. Предыдущие посты про Бэд-Практики ищи по тегу pitfalls Как …
Фото: Vie Studio / PexelsВот всё трём мы с тобой за бест-практики, но практически ничего не разбираем по бэд-практикам. Давай это исправлять в контексте Bash скриптов.
Фото: Yanming Guo / Pexels