Linux Ready | DevOps
9.53K subscribers
838 photos
41 videos
343 links
Авторский канал по разработке на Linux.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/linux_ready
Download Telegram
Нужно быстро понять, есть ли в директории файлы, содержащие определённый текст?

Для этого подходит рекурсивный grep:
grep -Pri "Search_Term" /path/to/dir


Опции означают:
-P — поддержка PCRE (удобно для сложных шаблонов);
-r — рекурсивный обход директорий;
-i — поиск без учёта регистра.

Если важны только сами файлы, а не строки:
grep -Pril "Search_Term" /path/to/dir


-l выводит только имена файлов с совпадениями, идеально для быстрой проверки.

Чтобы не ловить мусор из бинарных файлов:
grep -Pri --binary-files=without-match "Search_Term" /path/to/dir


🔥 Для быстрых проверок grep -r — самый прямой путь.
Но если поиск становится сложнее (фильтрация по имени, размеру, дате, типу), комбинируйте find и grep: это даёт полный контроль над поиском и масштабируется лучше.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7
😁278🔥7🤝1
Работа с архивами tar в Linux!

tar — инструмент для упаковки и распаковки данных. Часто используется для бэкапов, доставки артефактов, упаковки проектов и обмена данными между серверами.

Создание архива с gzip-сжатием:
tar -czvf archive.tar.gz /path/to/data


Создание архива с zstd-сжатием (нужен GNU tar с поддержкой --zstd и установленный zstd):
tar --zstd -cvf archive.tar.zst /path/to/data


Основные ключи:
c — create
x — extract
t — list
z — gzip
v — verbose
f — файл/поток
-C — директория
--zstd — zstd


Просмотр содержимого без извлечения:
tar -tzvf archive.tar.gz
tar --zstd -tvf archive.tar.zst


Проверка целостности (проверяется поток сжатия, не структура tar):
gzip -t archive.tar.gz
zstd -t archive.tar.zst


Извлечение архива:
tar -xzvf archive.tar.gz -C /tmp/extract/
tar -xzvf archive.tar.gz path/inside/archive/file.conf


Инкрементальный архив (GNU tar):
tar -czvf backup.tar.gz -g snapshot.file /path/to/data


snapshot.file нужно переиспользовать между запусками.

Потоковая передача по SSH (без промежуточного файла):
tar -czf - /data | ssh user@server "tar -xzf - -C /srv/data"


🔥 tar по умолчанию сохраняет права доступа, владельца/группу, mtime и симлинки; ACL и xattrs требуют явных опций (--acls, --xattrs).

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍12🤝7
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ ArchWiki — супер информативный справочник!

Это огромная база знаний про то, как работает Linux: загрузка системы, systemd, сеть, файловые системы, драйверы, безопасность и оптимизация. Статьи написаны точно и понятно, каждый раздел объясняет почему и как всё устроено. Даже если ты не используешь Arch, сайт объясняет общие принципы Linux, которые применимы в большинстве дистрибутивов.

📌 Оставляю ссылочку: wiki.archlinux.org

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥9🤝8👎1
Как за одну команду узнать, что висит на занятом порту?

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

lsof показывает PID и бинарь, использующий указанный порт:
sudo lsof -i :8080


Самый быстрый способ вычислить, какой процесс слушает TCP/UDP на нужном порту.

ss даёт тот же результат, но компактнее:
ss -tulpn | grep 8080


Хороший вариант, если lsof не установлен.

fuser выводит только PID, что удобно для последующего kill:
sudo fuser 8080/tcp


🔥 Также можешь добавить алиас, чтобы проверять любой порт одной командой:
alias port=‘sudo lsof -i :$1’

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥76
😁26👍12🤝7
👩‍💻 Работа с сетевыми namespace (netns)!

Шпаргалка по управлению изолированными сетевыми стеками через iproute2: создание, удаление, перенос интерфейсов и мониторинг именованных network namespace. Позволяет тестировать и отлаживать сеть в полной изоляции, управляя адресами, маршрутами, veth-парами и loopback прямо из терминала.


🚪 Linux Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍95🤝2😁1
💡 На Хабре вышел отличный практический туториал: «Сеть вместо SD-карты»!

В этой статье:
• Автор последовательно показывает, как избавиться от традиционной загрузки с SD-карты и перейти на сетевую загрузку;
• Пошагово настраивается среда для сетевой загрузки с использованием DHCP, TFTP и NFS;
• Разбираются особенности загрузочного процесса Raspberry Pi;
• Приводится готовый Docker-образ и конфигурации.


🔊 Продолжайте читать на Habr!


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7
Поиск открытых, но удалённых файлов!

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

Поиск таких файлов:
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


Важно убедиться, что удалённые файлы больше не удерживаются процессами.

🔥 Типичная ситуация при ручном удалении логов без logrotate или при аварийной ротации файлов.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥108👍8
This media is not supported in your browser
VIEW IN TELEGRAM
👍 KillerCoda — платформа с интерактивными задачами!

Это тренажёр с терминалом, где Linux изучается через реальные задания, а не через статьи. Здесь можно на практике поработать с systemd, файловыми системами, процессами и Docker в полноценном окружении. Формат обучения максимально ориентирован на реальные задачи администрирования и работы в командной строке.

📌 Оставляю ссылочку: killercoda.com

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍10🔥8
Как защитить скрипт от двойного запуска?

Бывает, что 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 - способ защитить скрипт от повторного запуска: блокировка привязана к процессу, автоматически снимается ядром и не требует ручной очистки файлов.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤝7🔥63
📂 Напоминалка для работы с Linux LVM!

Например, pvcreate инициализирует диск или раздел под LVM, а vgcreate объединяет физические тома в volume group.

На картинке — наглядная схема архитектуры LVM и самые часто используемые команды для управления physical volumes, volume groups и logical volumes.

Сохрани, чтобы не забыть!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍8🤝7
Выдача бинарникам точечных привилегий через setcap!

Иногда программе нужен 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 только с --xattrs

🔥 Capabilities — способ выдавать минимально необходимые права, вместо запуска всего от root.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1510🔥7
Знали, что одна настройка логирования может стереть следы реальной атаки?

Опция RepeatedMsgReduction в rsyslog заменяет одинаковые строки лога фразой «last message repeated N times».

Для хакера это подарок: можно замаскировать брутфорс или шумный скан внутри одного легитимного события, которое система просто объединит:
# Отключаем скрытие повторов
$RepeatedMsgReduction off


Эта настройка в /etc/rsyslog.conf заставит систему записывать каждое событие отдельно, сохраняя точную хронологию и уникальные маркеры атак.

Перезапуск сервиса для применения изменений:
sudo systemctl restart rsyslog


После применения лог станет «грязнее», но в нем перестанут исчезать попытки подбора паролей и сетевые аномалии.

🔥 Чтобы не раздувать логи до терабайтов, настройте агрессивную ротацию через logrotate только для тех файлов, где отключено сжатие повторов.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7🔥7🤝2
👍16🤝7🔥61
Как убрать зависший процесс, дав ему шанс завершиться нормально?

Иногда процесс нужно убрать, но SIGKILL сразу не всегда правильно, можно потерять буферы, получить битые временные файлы.

Сначала отправь корректный сигнал завершения:
kill -TERM 1234


SIGTERM даёт процессу шанс закрыть файлы, сохранить состояние и выйти.

Подожди пару секунд (значение условное, часто этого достаточно):
sleep 2


Если не вышел, завершаем принудительно:
kill -KILL 1234 2>/dev/null || true


SIGKILL нельзя перехватить: ядро завершит процесс (за исключением редких случаев D-state из-за I/O).

🔥 SIGTERM - позволяет процессу корректно освободить ресурсы и закрыть файловые дескрипторы; SIGKILL используй только как fallback, когда процесс игнорирует сигналы и завис.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝11👍10🔥65
📂 Напоминалка для работы с XSS!

Например, Reflected XSS выполняется сразу после перехода по вредоносной ссылке, а Stored XSS сохраняется в базе и срабатывает у всех пользователей.

На картинке — 3 основных типа XSS, которые важно различать при разработке и ревью кода.

Сохрани, чтобы не забыть!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤝7👍63