Шпаргалка по управлению изолированными сетевыми стеками через iproute2: создание, удаление, перенос интерфейсов и мониторинг именованных network namespace. Позволяет тестировать и отлаживать сеть в полной изоляции, управляя адресами, маршрутами, veth-парами и loopback прямо из терминала.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9❤5🤝2😁1
В этой статье:
• Автор последовательно показывает, как избавиться от традиционной загрузки с SD-карты и перейти на сетевую загрузку;
• Пошагово настраивается среда для сетевой загрузки с использованием DHCP, TFTP и NFS;
• Разбираются особенности загрузочного процесса Raspberry Pi;
• Приводится готовый Docker-образ и конфигурации.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤9🔥7
Поиск открытых, но удалённых файлов!
Если файл удалён, но процесс продолжает удерживать его файловый дескриптор, место на диске не освобождается до закрытия этого дескриптора.
Поиск таких файлов:
Команда показывает файлы с
Фильтрация по пути:
Позволяет отфильтровать файлы, связанные с указанным путём (по имени/расположению файла).
Формат вывода зависит от версии
Освобождение места без перезапуска системы:
Работает только для демонов, которые корректно обрабатывают сигнал перезагрузки конфигурации и переоткрывают файловые дескрипторы.
Завершение процесса:
Отправляется
Проверка после очистки:
Важно убедиться, что удалённые файлы больше не удерживаются процессами.
🔥 Типичная ситуация при ручном удалении логов без logrotate или при аварийной ротации файлов.
🚪 Linux Ready | #практика
Если файл удалён, но процесс продолжает удерживать его файловый дескриптор, место на диске не освобождается до закрытия этого дескриптора.
Поиск таких файлов:
sudo lsof -nP +L1
Команда показывает файлы с
link count = 0 — то есть удалённые из файловой системы (unlinked), но всё ещё открытые процессами.Фильтрация по пути:
sudo lsof -nP +L1 /var
Позволяет отфильтровать файлы, связанные с указанным путём (по имени/расположению файла).
Формат вывода зависит от версии
lsof и ширины терминала, поэтому парсинг через awk возможен, но небезопасен — используйте вывод как ориентир.Освобождение места без перезапуска системы:
sudo kill -HUP PID
Работает только для демонов, которые корректно обрабатывают сигнал перезагрузки конфигурации и переоткрывают файловые дескрипторы.
Завершение процесса:
sudo kill PID
Отправляется
SIGTERM — процесс штатно завершается, закрывает файловые дескрипторы и освобождает место. SIGKILL (-9) — крайняя мера, если процесс не реагирует.Проверка после очистки:
df -h
sudo lsof -nP +L1
Важно убедиться, что удалённые файлы больше не удерживаются процессами.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤8👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Это тренажёр с терминалом, где Linux изучается через реальные задания, а не через статьи. Здесь можно на практике поработать с systemd, файловыми системами, процессами и Docker в полноценном окружении. Формат обучения максимально ориентирован на реальные задачи администрирования и работы в командной строке.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍10🔥8
Как защитить скрипт от двойного запуска?
Бывает, что cron/CI/ручной запуск запускают один и тот же скрипт дважды.
Своеобразным замком может послужить
Здесь мы открыли файл-замок и привязали его к FD
Пробуем взять
Дальше можно выполнять работу, пока процесс жив,
Для проверки откроем второй терминал и запустим тот же блок, второй экземпляр завершится (или можешь заменить
🔥
🚪 Linux Ready | #совет
Бывает, что cron/CI/ручной запуск запускают один и тот же скрипт дважды.
Своеобразным замком может послужить
flock, он берёт advisory lock на файл через дескриптор:exec 9>/tmp/myjob.lock
Здесь мы открыли файл-замок и привязали его к FD
9.Пробуем взять
lock без ожидания, если уже занято, сразу выходим:flock -n 9 || exit 0
Дальше можно выполнять работу, пока процесс жив,
lock удерживается ядром:echo "running: $$"
Для проверки откроем второй терминал и запустим тот же блок, второй экземпляр завершится (или можешь заменить
exit 0 на сообщение):sleep 10
flock - способ защитить скрипт от повторного запуска: блокировка привязана к процессу, автоматически снимается ядром и не требует ручной очистки файлов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤝7🔥6❤3
Например,
pvcreate инициализирует диск или раздел под LVM, а vgcreate объединяет физические тома в volume group.На картинке — наглядная схема архитектуры LVM и самые часто используемые команды для управления physical volumes, volume groups и logical volumes.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍8🤝7
Выдача бинарникам точечных привилегий через setcap!
Иногда программе нужен root только для одной операции (bind к 80 порту, raw socket, cap_sys_ptrace). Для этого в Linux есть capabilities — они управляются через
Проверка
Типичный вывод:
В современных дистрибутивах
Пример: разрешить бинарнику слушать порт
Теперь запуск возможен от обычного пользователя:
Проверка назначенных
Удаление
Несколько
Просмотр списка и описания всех
Важно: работает только на файловых системах с поддержкой extended attributes,
🔥
🚪 Linux Ready | #практика
Иногда программе нужен root только для одной операции (bind к 80 порту, raw socket, cap_sys_ptrace). Для этого в Linux есть capabilities — они управляются через
setcap.Проверка
capabilities у исполняемого файла:getcap /usr/bin/ping
Типичный вывод:
/usr/bin/ping cap_net_raw=ep
В современных дистрибутивах
ping часто не setuid-root, а работает через capabilities, получая доступ к raw socket.Пример: разрешить бинарнику слушать порт
<1024 без root:sudo setcap cap_net_bind_service=ep ./server
Теперь запуск возможен от обычного пользователя:
./server
Bind к :80 будет работать без sudo.Проверка назначенных
capabilities:getcap ./server
Удаление
capabilities у бинарника, если нужно полностью убрать выданные ранее права и вернуть его в обычное состояние:sudo setcap -r ./server
Несколько
capabilities сразу, если бинарнику требуется больше одного привилегированного действия:sudo setcap cap_net_bind_service,cap_sys_time=ep ./tool
Просмотр списка и описания всех
capabilities:man 7 capabilities
Важно: работает только на файловых системах с поддержкой extended attributes,
cp по умолчанию сбрасывает xattr (используйте cp --preserve=xattr или -a), tar сохраняет capabilities только с --xattrsCapabilities — способ выдавать минимально необходимые права, вместо запуска всего от root.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤10🔥7
Знали, что одна настройка логирования может стереть следы реальной атаки?
Опция
Для хакера это подарок: можно замаскировать брутфорс или шумный скан внутри одного легитимного события, которое система просто объединит:
Эта настройка в
Перезапуск сервиса для применения изменений:
После применения лог станет «грязнее», но в нем перестанут исчезать попытки подбора паролей и сетевые аномалии.
🔥 Чтобы не раздувать логи до терабайтов, настройте агрессивную ротацию через
🚪 Linux Ready | #совет
Опция
RepeatedMsgReduction в rsyslog заменяет одинаковые строки лога фразой «last message repeated N times».Для хакера это подарок: можно замаскировать брутфорс или шумный скан внутри одного легитимного события, которое система просто объединит:
# Отключаем скрытие повторов
$RepeatedMsgReduction off
Эта настройка в
/etc/rsyslog.conf заставит систему записывать каждое событие отдельно, сохраняя точную хронологию и уникальные маркеры атак.Перезапуск сервиса для применения изменений:
sudo systemctl restart rsyslog
После применения лог станет «грязнее», но в нем перестанут исчезать попытки подбора паролей и сетевые аномалии.
logrotate только для тех файлов, где отключено сжатие повторов.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍7🔥7🤝2
Как убрать зависший процесс, дав ему шанс завершиться нормально?
Иногда процесс нужно убрать, но
Сначала отправь корректный сигнал завершения:
Подожди пару секунд (значение условное, часто этого достаточно):
Если не вышел, завершаем принудительно:
🔥
🚪 Linux Ready | #совет
Иногда процесс нужно убрать, но
SIGKILL сразу не всегда правильно, можно потерять буферы, получить битые временные файлы.Сначала отправь корректный сигнал завершения:
kill -TERM 1234
SIGTERM даёт процессу шанс закрыть файлы, сохранить состояние и выйти.Подожди пару секунд (значение условное, часто этого достаточно):
sleep 2
Если не вышел, завершаем принудительно:
kill -KILL 1234 2>/dev/null || true
SIGKILL нельзя перехватить: ядро завершит процесс (за исключением редких случаев D-state из-за I/O).SIGTERM - позволяет процессу корректно освободить ресурсы и закрыть файловые дескрипторы; SIGKILL используй только как fallback, когда процесс игнорирует сигналы и завис.Please open Telegram to view this post
VIEW IN TELEGRAM
🤝11👍10🔥6❤5
Например, Reflected XSS выполняется сразу после перехода по вредоносной ссылке, а Stored XSS сохраняется в базе и срабатывает у всех пользователей.
На картинке — 3 основных типа XSS, которые важно различать при разработке и ревью кода.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤝7👍6❤3
Разрежённые файлы (sparse files) и экономия диска!
В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.
Создание файла большого размера без записи данных:
Файл имеет логический размер 10G, но почти не занимает место на диске.
Проверка:
Создание sparse-файла через
Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.
Частичная запись данных:
Физически будет занят только небольшой участок около 1G, остальное останется дырами.
Просмотр расположения данных:
Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).
Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
Точечное выбивание физических блоков с сохранением логического размера:
Корректное копирование sparse-файлов:
Для архивов:
Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).
🔥 Sparse-файлы — базовый механизм экономии диска для образов, дампов и крупных артефактов.
🚪 Linux Ready | #практика
В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.
Создание файла большого размера без записи данных:
truncate -s 10G bigfile.img
Файл имеет логический размер 10G, но почти не занимает место на диске.
Проверка:
ls -lh bigfile.img
du -h bigfile.img
ls показывает логический размер файла, du — реально занятое дисковое пространство.Создание sparse-файла через
dd:dd if=/dev/zero of=bigfile.img bs=1 count=0 seek=10G
Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.
Частичная запись данных:
printf 'DATA' | dd of=bigfile.img bs=1 seek=1G conv=notrunc
Физически будет занят только небольшой участок около 1G, остальное останется дырами.
Просмотр расположения данных:
filefrag -v bigfile.img
Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).
Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
fallocate -d bigfile.img
Точечное выбивание физических блоков с сохранением логического размера:
fallocate --punch-hole --offset 1G --length 500M --keep-size bigfile.img
Корректное копирование sparse-файлов:
cp --sparse=always src.img dst.img
Для архивов:
tar --sparse -cf backup.tar bigfile.img
Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤8🤝8
This media is not supported in your browser
VIEW IN TELEGRAM
Отличный репозиторий с реальными вопросами, которые проверяют знания Linux и DevOps. Здесь есть вопросы по командам, процессам, файловым системам, сетям, bash и другим темам, которые часто встречаются в задачах и на собеседованиях.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤11🤝9🔥1
DDoS — это атака, при которой сервер заваливают огромным количеством запросов, из-за чего он перестаёт отвечать реальным пользователям.
На картинке — наглядная схема: как работает DDoS; роль ботов (zombie); чем отличается нормальный TCP handshake от атаки.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥10🤝7
Почему grep выводит данные с задержкой в пайпах?
Бывало
Это не баг. Большинство CLI-утилит буферизуют
Классический сценарий мониторинга логов без задержек:
Альтернатива специально для
Работает и с другими командами:
🔥 Если команда в пайпе не отвечает, почти всегда виновата буферизация.
🚪 Linux Ready | #совет
Бывало
tail -f app.log | grep ERROR - лог пишется, а grep молчит и выводит всё сразу через секунды?Это не баг. Большинство CLI-утилит буферизуют
stdout, когда работают не в TTY, а в пайпе. Отключаем буферизацию:stdbuf -oL grep "ERROR" app.log
-oL — построчный вывод (line-buffered).Классический сценарий мониторинга логов без задержек:
tail -f app.log | stdbuf -oL grep "ERROR"
Альтернатива специально для
grep:tail -f app.log | grep --line-buffered "ERROR"
Работает и с другими командами:
journalctl -f | stdbuf -oL grep nginx
stdbuf -oL (или grep --line-buffered) возвращает вывод без переписывания пайпа.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥10❤8
В этом посте — набор утилит для потоковой обработки и анализа больших файлов без загрузки их в память. Эти инструменты используются при работе с логами, CSV/TSV-данными и текстовыми дампами. С их помощью можно извлекать колонки, фильтровать строки, сортировать данные и отслеживать прогресс обработки.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍12❤8🤝3