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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/linux_ready
Download Telegram
👍 На Хабре недавно вышла крайне полезная статья: «Строим свой остров, как создать минимальный Linux для Raspberry Pi»

В этой статье:
• Изучите отличия между Linux для PC и Linux для встраиваемых систем;
• Настроите окружение и соберёте собственное минимальное ядро Linux без Buildroot и Yocto;
• Научитесь кросс-компилировать ядро и собирать образ SD-карты для Raspberry Pi 3 и 4;
• Поймёте, как создаётся полноценная система;


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


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥97
Как быстро передавать файлы между серверами через tar-поток по SSH!

Перенос каталогов без создания архива на диске. Поток идёт напрямую, распаковка выполняется сразу на целевой стороне.

Push каталога на удалённый сервер:
tar -cf - ./my-folder | ssh user@server "tar -C /home/user -xf -"


Метод потоковый — файлы не копятся в RAM целиком, запись сразу в указанную директорию.

Сжатие в момент передачи:
tar -czf - ./my-folder | ssh user@server "tar -C /home/user -xzf -"


Сжатие экономит трафик и может ускорить перенос, но на слабом или загруженном CPU иногда замедляет.

Мониторинг прогресса (не меняет поток):
tar -cf - ./big-data | pv | ssh user@server "tar -C /data -xf -"


pv просто показывает скорость, объём и ETA. Без него всё работает так же, но без визуального прогресса.

Pull каталога к себе:
ssh user@server "tar -C /data -cf - ./remote-folder" | tar -C ./target -xf -


Удобно для забора бэкапов, артефактов сборки и выгрузки данных со служебных серверов.

Флаги для миграций, где важны права, владельцы, ACL и xattrs (обычно под root):
-p --same-owner --numeric-owner --acls --xattrs


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

🔥 Нет промежуточных архивов на диске; Для инкрементальных копий лучше rsync; Для изоляции раздела можно добавить --one-file-system

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍9🤝6🔥3
📂 Напоминалка по SSH и сетям!

Например, ssh -D 1080 user@server поднимает локальный SOCKS-прокси и позволяет пускать трафик приложений через SSH-сервер.

На картинке — наглядно показано, как работает SSH Dynamic Port Forwarding: локальный порт, SSH-туннель и проброс трафика к конечным адресам.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝12👍98🔥5
Нужно быстро понять, есть ли в директории файлы, содержащие определённый текст?

Для этого подходит рекурсивный 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