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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/devops_ready
Download Telegram
Переменные окружения в Linux: управление поведением процессов!

Переменные окружения (environment variables) задают контекст выполнения программ. Через них настраиваются shell, компиляторы, интерпретаторы, библиотеки и большинство CLI-утилит. Это базовый механизм конфигурации в Unix-подобных системах.

Посмотреть все переменные окружения текущего процесса (shell):
printenv


или:
env


Обе команды выводят окружение текущего процесса (экспортированные переменные). env также часто используют для запуска команды с заданными переменными.

Посмотреть значение конкретной переменной:
echo "$PATH"


Кавычки важны при подстановке переменных: они предотвращают нежелательное разбиение на слова и обработку спецсимволов (особенно если значение содержит пробелы или символы glob).

Временная переменная для одного запуска программы:
DEBUG=true ./app


Переменная будет доступна только процессу ./app и его дочерним процессам. В текущем shell она не сохранится.

Экспорт переменной в текущей сессии shell:
export NODE_ENV=production


После export переменная становится частью окружения текущего shell и наследуется всеми дочерними процессами, но не влияет на другие терминалы и будущие входы в систему.

Удаление переменной:
unset NODE_ENV


Удаляет переменную из текущего shell и его окружения.

Постоянные переменные пользователя - задаются в конфигурационных файлах shell и применяются при старте сессии. Для Bash обычно используют: ~/.bashrc — интерактивные shell; ~/.profile или ~/.bash_profile — login-shell

Конкретный файл зависит от способа запуска shell в системе.

Пример:
export EDITOR=vim
export PATH="$HOME/bin:$PATH"


После изменения применить настройки можно:
source ~/.bashrc


или просто открыть новый терминал.

Глобальные переменные для всех пользователей - можно задать в файле:
/etc/environment


Этот файл обычно обрабатывается при входе в систему через PAM. Он поддерживает только простые присваивания без shell-синтаксиса, экспорта и подстановок.

Пример:
JAVA_HOME=/usr/lib/jvm/java-17


Посмотреть окружение конкретного запущенного процесса:
cat /proc/<PID>/environ | tr '\0' '\n'


Переменные хранятся в памяти процесса как строки, разделённые нулевым байтом. Обычно доступно только для своих процессов или с правами root (может ограничиваться настройками безопасности).

Порядок PATH критичен - поиск исполняемых файлов идёт слева направо:
echo "$PATH"


Будет запущена первая найденная программа с совпадающим именем.

🔥 Переменные окружения передаются процессам через механизм fork/exec, существуют только в памяти процесса и наследуются его потомками. Они не изменяют систему глобально сами по себе и являются стандартным способом управления поведением программ в Linux.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117🔥5🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
💡 How To Secure A Linux Server — пошаговое руководство по защите Linux-сервера!

Репозиторий представляет собой подробный чек-лист по хардненингу системы: настройка безопасного SSH-доступа, файрвола, ограничение прав пользователей, аудит действий, антивирусная защита и другие меры повышения безопасности. Материал ориентирован на реальные сценарии эксплуатации серверов и может применяться как для домашних, так и для облачных систем.

Оставляю ссылочку: GitHub 📱


➡️ DevOps Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤝76🔥2
🖼️ Helm: 7 команд для управления релизами в Kubernetes

Helm — это менеджер пакетов для Kubernetes, который превращает деплой сложных приложений в простую операцию. Эта шпора поможет быстро ориентироваться в командах управления жизненным циклом ваших чартов и эффективно работать с репозиториями.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127🔥6
Знали, что DNS-запросы могут работать как скрытый канал связи?

DNS-туннелирование и эксфильтрация данных через TXT-записи позволяют обходить брандмауэры, так как стандартный UDP-трафик на порт 53 редко блокируется.

Злоумышленники кодируют секретную информацию в поддомены или значения TXT-записей, незаметно отправляя её на подконтрольный сервер.

Проверить TXT-записи любого домена на наличие странных строк или кодированного текста можно одной командой:
dig +short TXT target-domain.com


Выводит все TXT-записи домена (часто там скрыты ключи или инструкции для малвари).

Если нужно автоматизировать мониторинг подозрительно длинных ответов, используйте фильтрацию:
tcpdump -vvv -s 0 'udp port 53' | grep 'TXT?'


Перехватывает и отображает DNS-запросы типа TXT в реальном времени для анализа аномалий.

🔥 Для обнаружения скрытых каналов обращайте внимание на записи, содержащие Base64 или имеющие аномальную длину (более 200 символов).

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍6🔥5
📂 Напоминалка по Bash-символам!

Например, () запускает команды в subshell, {} выполняет их в текущем процессе, а [[ ]] даёт более гибкие проверки условий по сравнению с [ ].

На картинке — ключевые конструкции Bash, база для написания скриптов, автоматизации и DevOps-задач.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍11🔥7
ACL в Linux: расширенные права доступа (setfacl / getfacl)!

Стандартная модель прав rwx учитывает только владельца файла, его группу и остальных пользователей, без возможности выдавать права точечно. ACL (Access Control Lists) позволяют выдавать точечные права отдельным пользователям и группам, не меняя владельца файла и не трогая основную группу.

Просмотр ACL файла или каталога:
getfacl file.txt


Показывает обычные права доступа и все дополнительные записи ACL, включая маску (mask), которая может ограничивать реальные (effective) права.

Выдать пользователю права чтения и записи:
setfacl -m u:alice:rw file.txt


Пользователь alice получит доступ независимо от основной группы файла. Если фактические права оказались меньше ожидаемых, проверьте маску ACL в выводе getfacl.

Выдать группе права чтения:
setfacl -m g:devs:r file.txt


Удобно для совместного доступа к файлам проекта. Для каталогов обычно требуется также право выполнения (x), иначе нельзя открыть каталог и работать с его содержимым.

Удалить ACL для конкретного пользователя:
setfacl -x u:alice file.txt


Удаляет только дополнительную запись ACL, не затрагивая стандартные права владельца и группы.

Рекурсивно применить ACL к каталогу:
setfacl -R -m u:alice:rwx /shared/data


Права будут установлены для всех вложенных файлов и подкаталогов.
Используйте аккуратно: команда изменит доступ ко всему содержимому дерева.

Задать ACL по умолчанию для новых объектов в каталоге:
setfacl -d -m u:alice:rwx /shared/data


Такие права будут автоматически наследоваться новыми файлами и папками, создаваемыми внутри каталога. Уже существующие объекты не изменяются.

Удалить все расширенные ACL (вернуться к обычным правам):
setfacl -b file.txt


Удаляет все дополнительные записи ACL и оставляет только стандартные rwx.

Удалить наследуемые (default) ACL у каталога:
setfacl -k /shared/data


Убирает правила наследования для новых объектов внутри каталога.

🔥 ACL — крутой инструмент тонкой настройки доступа в многопользовательских системах, когда стандартной модели прав недостаточно, а менять владельцев или группы нежелательно.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍97
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Bash Guide — подробное руководство по работе с Bash!

Репозиторий представляет собой структурированный гайд по командной строке и скриптингу на Bash. Собраны примеры основных команд Linux, операции с файлами и директориями, работа с переменными, функциями, условиями и др. Материал охватывает как базовые операции, так и практические приёмы написания скриптов.

Оставляю ссылочку: GitHub 📱


➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥10🤝81
👩‍💻 Быстрые операции с текстом в терминале!

В этом посте собраны утилиты для эффективной обработки текстовых файлов в командной строке. Рассмотрены сортировка строк, подсчёт повторений, устранение дубликатов, а также объединение данных построчно и по ключевым полям. Полезно для анализа логов, работы со списками и построения конвейеров обработки данных.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍9🔥9🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ EC-RS — материалы по информационной безопасности и защите данных!

Сайт со статьями по информационной безопасности, где подробно разбираются киберугрозы, методы защиты, требования регуляторов и практические аспекты построения защищённых систем. Материалы охватывают широкий круг тем. Подойдёт всем, кто хочет глубже понять, как защищаются данные и информационные системы на практике.

📌 Оставляю ссылочку: ec-rs.ru

➡️ DevOps Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🤝8👍7
Как уменьшать лог-файлы без перезапуска сервиса!

В Linux файловый дескриптор привязан к inode, а не к имени файла. Если процесс уже открыл лог и пишет в него, удаление файла не освободит место сразу.

Поэтому лог корректно очищать без удаления файла:
> application.log


Эта конструкция обнуляет содержимое, но сохраняет тот же inode и открытый дескриптор.

Если нужно урезать файл до конкретного размера, используется truncate:
truncate -s 1M application.log


Команда обрежет файл до 1MB. Она оставляет начало файла и удаляет хвост, то есть будут потеряны последние (самые новые) записи.

Если требуется сохранить последние записи, важно не менять inode файла.

Корректный вариант, перезаписать содержимое в тот же файл:
tail -n 1000 application.log > tmp.log && cat tmp.log > application.log && rm tmp.log


🔥 Так сохраняются последние 1000 строк, inode остаётся тем же, и сервис продолжит писать в текущий файл.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥10🤝7
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Cheat Sheets — большая база шпаргалок по безопасности приложений!

Здесь собраны практические заметки и техники по анализу уязвимостей, эксплуатации ошибок и защите систем: веб-приложения, мобильные приложения, контейнеры, CI/CD, облачные сервисы и Linux-среды. Также рассматриваются распространённые сценарии атак, такие как конфигурационные ошибки и проблемы безопасности инфраструктуры.

Оставляю ссылочку: GitHub 📱


➡️ DevOps Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍9🔥7
Использование tmpfs для временных данных и ускорения I/O!

tmpfs — файловая система в оперативной памяти. Применяется для временных файлов, кешей, unix-сокетов и данных, которые не должны переживать перезагрузку.

Типичный сценарий — ускорить операции и убрать лишнюю нагрузку с диска, особенно на серверах с активным I/O.

Создание точки монтирования выполняется один раз:
mkdir -p /mnt/tmpfs


Монтирование tmpfs в память:
mount -t tmpfs -o size=1G,noatime tmpfs /mnt/tmpfs


Важно: параметр size задаёт верхний лимит, а не резервирует память заранее. Каталог начинает использовать RAM по мере записи (и swap при необходимости). Файлы размещаются в памяти, без прямых операций записи на диск.

Проверить, что файловая система действительно смонтирована:
df -hT /mnt/tmpfs


или более точно:
findmnt /mnt/tmpfs


Любые данные, созданные внутри, существуют только пока tmpfs смонтирован. После размонтирования или перезагрузки они будут утеряны — это ожидаемое поведение и ключевая особенность tmpfs.

Для постоянного использования tmpfs добавляется в /etc/fstab:
tmpfs   /mnt/tmpfs   tmpfs   size=1G,noatime,nodev,nosuid,noexec   0  0


Ограничение по размеру защищает систему от неконтролируемого потребления памяти, а nodev, nosuid и noexec повышают безопасность (если выполнение файлов не требуется).

После добавления запись можно активировать без перезагрузки:
mount /mnt/tmpfs


(при условии, что точка монтирования уже существует)

Частый вариант — использование tmpfs вместе с systemd-сервисами. systemd умеет автоматически создавать временные директории в памяти и очищать их при остановке сервиса:
[Service]
RuntimeDirectory=myapp


В этом случае каталог создаётся в /run/myapp (который находится в tmpfs) и живёт столько, сколько работает сервис. Поведение можно дополнительно настраивать через RuntimeDirectoryPreserve=.

Контроль использования памяти:
df -h | grep tmpfs


Важно учитывать, что tmpfs использует оперативную память и может задействовать swap. При неправильно выбранных лимитах это способно повлиять на всю систему.

🔥 tmpfs — простой и надёжный инструмент для временных данных, когда важны скорость, чистота окружения и предсказуемое поведение при рестартах.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍98🔥6
📂 Напоминалка по ACL (Access Control Lists)!

ACL — это расширение обычных прав доступа в Linux. Если стандартные права (owner / group / other) позволяют управлять доступом только на базовом уровне, то ACL дает возможность назначать права конкретным пользователям и группам.

На картинке — базовые принципы работы ACL.

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

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍128🔥8