В этой статье:
• Изучите отличия между Linux для PC и Linux для встраиваемых систем;
• Настроите окружение и соберёте собственное минимальное ядро Linux без Buildroot и Yocto;
• Научитесь кросс-компилировать ядро и собирать образ SD-карты для Raspberry Pi 3 и 4;
• Поймёте, как создаётся полноценная система;🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9❤7
Как быстро передавать файлы между серверами через tar-поток по SSH!
Перенос каталогов без создания архива на диске. Поток идёт напрямую, распаковка выполняется сразу на целевой стороне.
Push каталога на удалённый сервер:
Метод потоковый — файлы не копятся в RAM целиком, запись сразу в указанную директорию.
Сжатие в момент передачи:
Сжатие экономит трафик и может ускорить перенос, но на слабом или загруженном CPU иногда замедляет.
Мониторинг прогресса (не меняет поток):
Удобно для забора бэкапов, артефактов сборки и выгрузки данных со служебных серверов.
Флаги для миграций, где важны права, владельцы,
Владельцы и расширенные атрибуты применятся только при достаточных правах у пользователя.
🔥 Нет промежуточных архивов на диске; Для инкрементальных копий лучше
🚪 Linux Ready | #практика
Перенос каталогов без создания архива на диске. Поток идёт напрямую, распаковка выполняется сразу на целевой стороне.
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-systemPlease open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🤝6🔥3
Например,
ssh -D 1080 user@server поднимает локальный SOCKS-прокси и позволяет пускать трафик приложений через SSH-сервер.На картинке — наглядно показано, как работает SSH Dynamic Port Forwarding: локальный порт, SSH-туннель и проброс трафика к конечным адресам.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝12👍9❤8🔥5
Нужно быстро понять, есть ли в директории файлы, содержащие определённый текст?
Для этого подходит рекурсивный
Опции означают:
Если важны только сами файлы, а не строки:
Чтобы не ловить мусор из бинарных файлов:
🔥 Для быстрых проверок
Но если поиск становится сложнее (фильтрация по имени, размеру, дате, типу), комбинируйте
🚪 Linux Ready | #совет
Для этого подходит рекурсивный
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: это даёт полный контроль над поиском и масштабируется лучше.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤9🔥7
Работа с архивами tar в Linux!
tar — инструмент для упаковки и распаковки данных. Часто используется для бэкапов, доставки артефактов, упаковки проектов и обмена данными между серверами.
Создание архива с gzip-сжатием:
Создание архива с zstd-сжатием (нужен GNU tar с поддержкой
Основные ключи:
Просмотр содержимого без извлечения:
Проверка целостности (проверяется поток сжатия, не структура tar):
Извлечение архива:
Инкрементальный архив (GNU tar):
Потоковая передача по SSH (без промежуточного файла):
🔥
🚪 Linux Ready | #практика
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).Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍12🤝7
This media is not supported in your browser
VIEW IN TELEGRAM
Это огромная база знаний про то, как работает Linux: загрузка системы, systemd, сеть, файловые системы, драйверы, безопасность и оптимизация. Статьи написаны точно и понятно, каждый раздел объясняет почему и как всё устроено. Даже если ты не используешь Arch, сайт объясняет общие принципы Linux, которые применимы в большинстве дистрибутивов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥9🤝8👎1
Как за одну команду узнать, что висит на занятом порту?
Иногда порт «занят», сервис не запускается, а система молчит. Эта техника позволяет моментально определить процесс, который держит сокет открытым, без перебора утилит и лишних шагов.
Самый быстрый способ вычислить, какой процесс слушает
Хороший вариант, если
🔥 Также можешь добавить алиас, чтобы проверять любой порт одной командой:
🚪 Linux Ready | #совет
Иногда порт «занят», сервис не запускается, а система молчит. Эта техника позволяет моментально определить процесс, который держит сокет открытым, без перебора утилит и лишних шагов.
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’Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤6
Шпаргалка по управлению изолированными сетевыми стеками через 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