This media is not supported in your browser
VIEW IN TELEGRAM
Этот репозиторий собирает шпаргалки по ключевым направлениям информационной безопасности: пентестинг, сетевые атаки, эксплуатация уязвимостей, анализ трафика, веб-безопасность и многое другое. Всё разложено по темам и оформлено так, чтобы можно было быстро найти нужные команды, техники и инструменты.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥9❤7🤝2
Как не выполнять одну и ту же команду несколько раз?
В работе часто возникает ситуация: команда тяжёлая, медленная или ходит в сеть. Например, kubectl, docker, curl, запросы к API или работа с логами.
Чтобы не гонять её снова и снова для разных проверок:
Каждый раз это новый запрос, новая нагрузка и потеря времени.
Гораздо быстрее выполнить её один раз и сохранить результат:
Теперь можно сколько угодно анализировать данные без повторных вызовов:
Это особенно чувствуется при работе с удалёнными сервисами, базами и логами, где каждая команда может занимать секунды.
🔥 Если команда дорогая — не запускай её повторно. Сохрани результат и работай с ним локально.
🚪 Linux Ready | #совет
В работе часто возникает ситуация: команда тяжёлая, медленная или ходит в сеть. Например, kubectl, docker, curl, запросы к API или работа с логами.
Чтобы не гонять её снова и снова для разных проверок:
kubectl get pods
kubectl get pods | grep api
kubectl get pods | wc -l
Каждый раз это новый запрос, новая нагрузка и потеря времени.
Гораздо быстрее выполнить её один раз и сохранить результат:
out=$(kubectl get pods)
Теперь можно сколько угодно анализировать данные без повторных вызовов:
echo "$out" | grep api
echo "$out" | wc -l
Это особенно чувствуется при работе с удалёнными сервисами, базами и логами, где каждая команда может занимать секунды.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9❤8🤝2
Например,
${var%.*} убирает расширение файла, а ${var##*/} позволяет быстро получить имя файла из полного пути.На картинке — основные приёмы работы с переменными в bash: удаление префиксов и суффиксов, замена строк, работа с подстроками и значения по умолчанию.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤7🔥7🤝3
sponge: утилита, которая спасает, когда нужно перезаписать файл через pipe!
Есть старый неприятный момент в shell: если читаешь файл и тут же пишешь результат обратно в него же через
Например:
На первый взгляд выглядит нормально. На практике — нет.
Shell откроет app.log на запись сразу, ещё до того, как
В таких случаях выручает
Он работает просто: сначала полностью читает входной поток, и только потом записывает результат в файл.
То же самое, но безопасно:
Несколько примеров, где это реально удобно.
Заменить текст в конфиге:
Убрать пустые строки:
Отсортировать файл:
Отформатировать JSON:
Из нюансов:
🔥 Если коротко: когда нужно безопасно перезаписать файл результатом команды,
🚪 Linux Ready | #практика
Есть старый неприятный момент в shell: если читаешь файл и тут же пишешь результат обратно в него же через
>, можно случайно получить пустой файл.Например:
grep -v DEBUG app.log > app.log
На первый взгляд выглядит нормально. На практике — нет.
Shell откроет app.log на запись сразу, ещё до того, как
grep дочитает его до конца. В итоге файл можно просто обнулить.В таких случаях выручает
sponge из moreutils.Он работает просто: сначала полностью читает входной поток, и только потом записывает результат в файл.
То же самое, но безопасно:
grep -v DEBUG app.log | sponge app.log
Несколько примеров, где это реально удобно.
Заменить текст в конфиге:
sed 's/localhost/db.internal/' config.yml | sponge config.yml
Убрать пустые строки:
grep -v '^$' file.txt | sponge file.txt
Отсортировать файл:
sort file.txt | sponge file.txt
Отформатировать JSON:
jq '.' data.json | sponge data.json
Из нюансов:
sponge сначала забирает весь поток целиком, а уже потом пишет в файл. Для обычных задач это вообще не проблема, но на очень больших файлах про это лучше помнить.sponge делает именно то, что ожидаешь.Please open Telegram to view this post
VIEW IN TELEGRAM
🤝15👍11🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь системно раскрываются ключевые принципы работы операционной системы Linux. Рассматриваются базовые компоненты системы, включая ядро, оболочку, процессы, файловую систему и архитектуру ОС в целом. Отдельное внимание уделяется практическому применению.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍8🔥8
В Linux можно сделать файл или директорию неудаляемыми, установив флаг неизменяемости (immutable) с помощью команды
chattr:$ sudo chattr +i -V /home/traw/keys.txt
Опция
-V — подробный вывод (verbose).Чтобы сделать директорию неудаляемой, добавьте рекурсивную опцию
-R:$ sudo chattr +i -VR /home/traw/backups
Чтобы снова разрешить удаление файла, используйте флаг
-i. Для директорий — -i с опцией -R.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍12❤7
This media is not supported in your browser
VIEW IN TELEGRAM
В репозитории собран справочник по Linux-командам — более 400 утилит с описаниями и примерами использования. Каждая команда сопровождается кратким объяснением и примерами, поэтому можно быстро понять, как она работает и где применяется. Удобно использовать как справочник в работе и подготовке к собеседованиям.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥8🤝8
Всплеск нагрузки, утечка памяти или неудачный деплой и ядро включает OOM Killer. Swap — это страховка, система получает запас по памяти и время на реакцию (пусть и с деградацией по скорости).
В этом посте:
• Проверим, есть ли swap и используется ли он;
• Создадим swap-файл без перезагрузки сервера;
• Подключим его и настроим автозапуск;
• Оптимизируем поведение системы через swappiness.
Практическая настройка, которая снижает риск внезапных падений под нагрузкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥10🤝8❤2
Например, порт 22 используется для SSH-подключений, а 443 — для защищённого HTTPS-трафика. Порты — основа любого взаимодействия между клиентом и сервером.
На картинке — 18 основных портов.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🤝13🔥9
Монтируем ISO-образ без записи на диск — мгновенный доступ к содержимому!
Иногда нужно посмотреть, что внутри .iso-файла: проверить структуру, вытащить отдельные файлы, запустить установщик или просто поанализировать. Но зачем сжигать его на флешку или распаковывать, если можно примонтировать прямо в систему?
Для этого понадобится всего одна команда и пустая директория:
Здесь
Теперь ты можешь просто зайти в /mnt/iso и посмотреть всё содержимое, как если бы это был обычный диск или флешка.
Когда всё закончишь — не забудь отмонтировать:
🔥 Работает со всеми ISO: Linux-дистрибутивы, Windows-инсталляторы, образы с драйверами, тулкиты пентестера и даже старые архивы.
🚪 Linux Ready | #практика
Иногда нужно посмотреть, что внутри .iso-файла: проверить структуру, вытащить отдельные файлы, запустить установщик или просто поанализировать. Но зачем сжигать его на флешку или распаковывать, если можно примонтировать прямо в систему?
Для этого понадобится всего одна команда и пустая директория:
sudo mount -o loop ~/Downloads/disk.iso /mnt/iso
Здесь
-o loop создаёт виртуальное устройство, ~/Downloads/disk.iso — путь до образа, а /mnt/iso — куда монтировать (создай папку заранее). Теперь ты можешь просто зайти в /mnt/iso и посмотреть всё содержимое, как если бы это был обычный диск или флешка.
Когда всё закончишь — не забудь отмонтировать:
sudo umount /mnt/iso
🔥 Работает со всеми ISO: Linux-дистрибутивы, Windows-инсталляторы, образы с драйверами, тулкиты пентестера и даже старые архивы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍11❤8
This media is not supported in your browser
VIEW IN TELEGRAM
Сайт шаг за шагом объясняет, как работать с Docker: контейнеры, образы, сети. Все примеры можно сразу повторить у себя в терминале, без сложной теории. Полезно для разработчиков, которые хотят разобраться в контейнеризации и понять, как Docker используется в реальных проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥9❤8🤝1
Почему диск полный, хотя файлы уже удалены?
Удалили огромный лог, но место на диске не освободилось,
Причина в том, что процесс держит открытый файловый дескриптор.
Файл удалён из файловой системы, но продолжает существовать, пока процесс его не закроет.
Найти такие файлы можно так:
Там будет
Теперь можно освободить место без перезапуска сервиса:
Это обнуляет файл через файловый дескриптор, и место возвращается системе.
🔥 Если диск заполнен невидимыми файлами, часто нужно найти открытые дескрипторы и очистить их через
🚪 Linux Ready | #совет
Удалили огромный лог, но место на диске не освободилось,
df показывает, что диск всё ещё заполнен.Причина в том, что процесс держит открытый файловый дескриптор.
Файл удалён из файловой системы, но продолжает существовать, пока процесс его не закроет.
Найти такие файлы можно так:
lsof | grep deleted
Там будет
PID процесса и номер дескриптора.Теперь можно освободить место без перезапуска сервиса:
: > /proc/<PID>/fd/<FD>
Это обнуляет файл через файловый дескриптор, и место возвращается системе.
/proc.Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11🔥8
Например,
ls показывает содержимое директории, cd помогает перемещаться между папками, а grep позволяет быстро находить нужный текст в файлах.На картинке — самые используемые команды: работа с файлами, процессами, сетью, правами доступа и системой. Такой набор закрывает 90% повседневных задач в терминале.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍10🤝8❤4
Смотрим, какие библиотеки реально отображены в адресное пространство процесса!
Когда приложение падает из-за несовместимой или отсутствующей библиотеки,
Если нужен точный ответ, что уже замаплено в память, используем
Сначала находим PID процесса:
Допустим, это 1234. Теперь смотрим, какие shared objects отображены в его адресное пространство:
Что здесь важно:
Пример:
Это означает, что в адресном пространстве процесса есть маппинг этой версии
Если нужен список без дублей:
Практический кейс — конфликт версий после обновления: систему обновили, новая библиотека уже лежит на диске, а процесс всё ещё держит старую версию в памяти.
Проверить можно так:
Если у файла есть пометка (deleted), это сильный сигнал: файл на диске уже удалён или заменён, но процесс продолжает использовать старый
🔥 Что важно помнить: изменения на диске не влияют на уже загруженные библиотеки в работающем процессе, после обновления библиотек сервисы обычно нужно перезапускать, доступ к
🚪 Linux Ready | #практика
Когда приложение падает из-за несовместимой или отсутствующей библиотеки,
ldd полезен, но он показывает, как динамический загрузчик разрешает зависимости для бинаря, а не текущее состояние уже запущенного процесса.Если нужен точный ответ, что уже замаплено в память, используем
/proc.Сначала находим PID процесса:
pgrep -a python
Допустим, это 1234. Теперь смотрим, какие shared objects отображены в его адресное пространство:
grep '\.so' /proc/1234/maps
Что здесь важно:
/proc/<pid>/maps — карта памяти процесса; каждая строка — отдельный участок памяти; если в строке есть путь к .so, значит есть файловый маппинг этого объекта.Пример:
7f2c1a000000-7f2c1a200000 r-xp ... /usr/lib/x86_64-linux-gnu/libssl.so.1.1
Это означает, что в адресном пространстве процесса есть маппинг этой версии
libssl (и, с высокой вероятностью, она используется процессом).Если нужен список без дублей:
grep '\.so' /proc/1234/maps | awk '{print $6}' | sort -u
Практический кейс — конфликт версий после обновления: систему обновили, новая библиотека уже лежит на диске, а процесс всё ещё держит старую версию в памяти.
Проверить можно так:
ls -l /proc/1234/map_files/
Если у файла есть пометка (deleted), это сильный сигнал: файл на диске уже удалён или заменён, но процесс продолжает использовать старый
inode через существующий маппинг./proc/<pid> и особенно map_files может быть ограничен правами.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥10❤8
В этой статье:
• Подробно разбирается, что на самом деле скрывается за терминалом в Linux;
• Объясняется разница между консолью, терминалом, shell, TTY и эмуляторами;
• Показано, как процессы взаимодействуют с системой через stdin/stdout/stderr и файловые дескрипторы, и какую роль в этом играет ядро.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤10🔥8🤝1
Например,
0 0 * * * выполняет задачу ежедневно в полночь, а */5 * * * * — с интервалом в 5 минут.На изображении — структура cron-выражения, основные алиасы (
@daily, @weekly, @reboot) и типовые примеры расписаний, которые удобно использовать в повседневной работе.Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤9🤝8
Непонятно, откуда взялся процесс?
Большинство смотрят
Настоящая картина — это дерево процессов:
Здесь видно, какой процесс чей родитель, с аргументами и
Можно быстро понять: это
Если есть конкретный
Это показывает путь запуска, от
Для точечной проверки родителя:
И дальше можно идти вверх по PPID.
Важно: PPID показывает текущего родителя. Если процесс был перезапущен, демонезирован или его родитель умер — он может быть перепривязан к
🔥 Дерево процессов даёт быстрый ответ в большинстве случаев.
🚪 Linux Ready | #совет
Большинство смотрят
ps aux, но он не показывает причинно-следственную связь.Настоящая картина — это дерево процессов:
pstree -ap
Здесь видно, какой процесс чей родитель, с аргументами и
PID.Можно быстро понять: это
systemd-сервис, cron-задача или дочерний процесс скрипта.Если есть конкретный
PID, смотри цепочку до корня:pstree -s <PID>
Это показывает путь запуска, от
init/systemd до нужного процесса.Для точечной проверки родителя:
ps -o pid,ppid,cmd -p <PID>
И дальше можно идти вверх по PPID.
Важно: PPID показывает текущего родителя. Если процесс был перезапущен, демонезирован или его родитель умер — он может быть перепривязан к
systemd/init, и исходный источник уже не виден.Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍10🔥8