Автоматическое монтирование дисков в Linux через systemd
Многие по привычке используют
Это особенно полезно:
📍 в средах с динамически подключаемыми дисками
📍 при работе с нестабильными устройствами (например, сетевыми томами)
📍 для точного контроля зависимостей и порядка монтирования
▪️ Пример: монтируем диск /dev/sdb1 в /mnt/data
1️⃣ Создаём unit-файл для монтирования:
Пример содержимого:
Обратите внимание: имя unit-файла mnt-data.mount формируется по пути монтирования: /mnt/data → mnt-data.mount
2️⃣ Активируем и проверяем
Проверим статус:
⭐️ Преимущества systemd-монтажа:
🌟 Важно: если диск может не быть доступен при загрузке, рассмотрите опции nofail или отложенное монтирование через automount.
#linux #systemd
🧑💻 NetworkAdmin
Многие по привычке используют
fstab для автоподключения дисков в линукс. Но systemd предлагает более гибкий и надёжный механизм - монтирование через unit-файлы.Это особенно полезно:
sudo systemctl edit --force --full mnt-data.mount
Пример содержимого:
[Unit]
Denoscription=Монтирование диска в /mnt/data
After=network.target
[Mount]
What=/dev/sdb1
Where=/mnt/data
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target
Обратите внимание: имя unit-файла mnt-data.mount формируется по пути монтирования: /mnt/data → mnt-data.mount
sudo systemctl daemon-reexec
sudo systemctl enable mnt-data.mount
sudo systemctl start mnt-data.mount
Проверим статус:
systemctl status mnt-data.mount
📍 Учитываются зависимости (можно настроить Requires= и After=)📍 Возможность рестартов и таймаутов📍 Удобство в контейнерах и виртуальных средах📍 Логирование и отладка через journalctl
#linux #systemd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1
CI/CD на минималках: как быстро развернуть GitLab Runner на своём сервере
Если вы используете GitLab и хотите автоматизировать сборки, тесты или деплой - вам нужен GitLab Runner. Это агент, который обрабатывает пайплайны и запускает описанные в .gitlab-ci.yml задачи.
🔎 Что нужно?
📍 Сервер (виртуалка или физика) с Linux
📍 GitLab проект
📍 Пара минут времени
⚙️ Установка GitLab Runner. Официальная установка для Debian/Ubuntu:
▪️ Регистрация Runner'а
Берём токен в GitLab:
Settings → CI/CD → Runners → Expand → Registration token
И запускаем регистрацию:
▪️ Ответы на вопросы:
▪️ Пример .gitlab-ci.yml для начала:
Добавьте файл в корень репозитория, закоммитьте и запушьте. После пуша GitLab запустит пайплайн, и ваш Runner выполнит команду.
❓ Зачем это нужно?
#gitlab #linux
🧑💻 NetworkAdmin
Если вы используете GitLab и хотите автоматизировать сборки, тесты или деплой - вам нужен GitLab Runner. Это агент, который обрабатывает пайплайны и запускает описанные в .gitlab-ci.yml задачи.
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/noscript.deb.sh | sudo bash
sudo apt install gitlab-runner
Берём токен в GitLab:
Settings → CI/CD → Runners → Expand → Registration token
И запускаем регистрацию:
sudo gitlab-runner register
URL GitLab: https://gitlab.com или адрес вашего GitLab
Token: тот, что скопировали
Описание: любое имя
Теги: по желанию
Executor: shell, docker, virtualbox и др. (начать можно с shell)
stages:
- test
test_job:
stage: test
noscript:
- echo "Тестируем Runner"
- uname -a
Добавьте файл в корень репозитория, закоммитьте и запушьте. После пуша GitLab запустит пайплайн, и ваш Runner выполнит команду.
📍 Автоматизация тестов, сборки, деплоя📍 Локальный контроль - runner работает на вашем железе📍 Безопасность - код не уходит в сторонние облака📍 Можно изолировать окружения (через Docker executor)
#gitlab #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Не забывайте про защиту от несанкционированного доступа, кошачьего в том числе 😎
#юмор
🧑💻 NetworkAdmin
#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
👌14😁7🔥1🙈1
Python - язык простой и удобный, но в плане безопасности исходников у него есть слабое место: скрипты легко читаются, модифицируются и анализируются. Если ты разрабатываешь утилиту, обрабатываешь конфиденциальные данные или просто хочешь защититься от «любопытных», стоит продумать меры защиты. Разберём основные подходы:
Python автоматически компилирует .py в .pyc, но и их можно дизассемблировать. Более надёжный способ - сборка в .pyd/.so (динамическую библиотеку):
pip install cython
cythonize -i mynoscript.py
На выходе - скомпилированный бинарник. Исходный код спрятан, но не полностью защищён от реверса.
Использовать PyArmor, который шифрует байткод:
pip install pyarmor
pyarmor obfuscate mynoscript.py
Использовать Nuitka или PyInstaller - обфускация + упаковка в исполняемый файл:
pyinstaller --onefile mynoscript.py
Для чувствительных задач - запускай скрипты через Docker, изолируя переменные окружения и доступ к файловой системе.
📍 Используй .env файл + библиотеку python-dotenv📍 Храни секреты в HashiCorp Vault, AWS SSM или аналогах📍 Шифруй конфиги с GPG, если нужно хранить локально
Полной защиты от реверса не будет - Python не компилируемый в машинный код язык. Но затруднить анализ, защитить данные и повысить безопасность вполне реально.
#python #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
Сегодня расскажу про несколько простых приемов, которые помогут вам эффективнее работать с текстом и конфигами в терминале. Речь пойдёт о символах ^ и $ - они обозначают начало и конец строки в регулярных выражениях.
Очень удобно, когда нужно исключить строки, начинающиеся с комментариев (#), но оставить те, где # идёт в середине строки:
grep -E -v '^#' nginx.conf
Если комментарий начинается с табуляции, команда выше его не отфильтрует. Чтобы учесть таб, нужно ввести его "вручную":
1. Наведите курсор после ^
2. Нажмите Ctrl + V, затем Tab
Получится поиск по строкам с табом и # в начале:
grep -E -v '^ #' nginx.conf
(Скопированная команда не сработает — таб символ нужно вставить вручную в консоли!)
Также ^ помогает искать по началу имени файла:
ls | grep ^error
Допустим, в директории есть файлы *.png и *.png.webp. Если сделать:
ls | grep .png
Вы получите оба варианта. А чтобы отфильтровать только те, что заканчиваются на .png:
ls | grep .png$
Можно объединить два условия:
ls | grep ^error | grep .png$
Очень удобно, если хотите вычистить конфиг от пустых строк и комментариев:
grep -E -v '^#|^$' nginx.conf
Эти трюки работают с любой текстовой утилитой (grep, sed, awk) и экономят кучу времени при разборе логов, конфигов и вывода в терминале.
#linux #grep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Forwarded from Карьера в Bell Integrator
Оптимизируем работу в Linux 🚀
Linux — сердце цифровой инфраструктуры 21 века. Эта ОС лежит в основе облаков, дата-центров и серверов. А для ИТ-специалистов Linux — стандарт де-факто: мощный инструмент для автоматизации, кибербезопасности и администрирования.
Совместно с каналом NetworkAdmin.ru подготовили дельные лайфхаки для облегчения и ускорения работы с Linux — читайте в карточках! На канале есть много другой полезной информации для специалистов в области сетевого администрирования, посмотреть можете здесь.
#BellintegratorTeam #советыBell
Linux — сердце цифровой инфраструктуры 21 века. Эта ОС лежит в основе облаков, дата-центров и серверов. А для ИТ-специалистов Linux — стандарт де-факто: мощный инструмент для автоматизации, кибербезопасности и администрирования.
Совместно с каналом NetworkAdmin.ru подготовили дельные лайфхаки для облегчения и ускорения работы с Linux — читайте в карточках! На канале есть много другой полезной информации для специалистов в области сетевого администрирования, посмотреть можете здесь.
#BellintegratorTeam #советыBell
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2🤔1😡1
Несколько раз сталкивался с неприятной проблемой: при наборе или вставке текста в PowerShell внезапно "пропадают" заглавные буквы. Особенно заметно, если набираете команды в кириллической раскладке - PowerShell просто не реагирует на Shift.
Проблема возникает из-за сбоя в модуле PSReadLine, который отвечает за подсветку, автодополнение, историю команд и другие удобства в CLI.
# Проверим установленную версию
Get-Module | Where-Object Name -eq "PSReadLine" | Select-Object Name, Path
# Удалим старую версию
Remove-Module PSReadLine
Remove-Item "C:\Program Files\WindowsPowerShell\Modules\PSReadLine\*" -Recurse -Force
# Установим последнюю версию из PSGallery
Install-Module PSReadLine -Force
Модуль будет установлен в актуальной версии, и проблема с заглавными буквами исчезнет. После установки перезапустите PowerShell.
#powershell #windows
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤1😁1
Auditd - это система аудита в Linux, входящая в состав auditd (Audit Daemon), которая позволяет детально отслеживать действия пользователей и системные события: от попыток доступа к файлам до изменений в правах и запусков команд. Она полезна как для соблюдения требований безопасности, так и для расследования инцидентов.
На большинстве дистрибутивов:
sudo apt install auditd # Debian/Ubuntu
sudo yum install audit # RHEL/CentOS
Проверьте, что служба активна:
sudo systemctl enable --now auditd
/etc/passwd):
auditctl -w /etc/passwd -p war -k passwd-watch
-w - путь к файлу
-p war - права: write, attribute change, read
-k - метка (key) для фильтрации в логах
auditctl -l
auditctl -W /etc/passwd
ausearch -k passwd-watch
aureport -f # по файлам
aureport -au # по пользователям
Добавьте правило для аудита всех выполненных команд:
auditctl -a always,exit -F arch=b64 -S execve -k exec-track
Это даст полную картину того, какие команды запускаются (через ausearch -k exec-track).
Не злоупотребляйте количеством правил - это может замедлить систему и засорить логи. Используйте
audit.rules или /etc/audit/rules.d/*.rules для постоянных правил.#linux #auditd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2
Не все знают, но в линукс удаление большого количества файлов - задача не из простых. Особенно когда речь идет о сотнях тысяч или миллионах объектов в одной директории. Часто встречаешь ошибку
Argument list too long, а даже если команда и запускается, она может висеть часами. Сегодня про то, а какой же способ удаления самый быстрый.
rm -r test/
rm -r test/*
find test/ -type f -delete
cd test && ls . | xargs -n 100 rm
rsync -a --delete empty/ test/
Последний способ - rsync с пустой директорией - оказался самым быстрым. Суть: создаёте пустой каталог empty/ и синхронизируете его с целевым test/:
mkdir empty
rsync -a --delete empty/ test/
mkdir test
count=1
while [ $count -le 10 ]; do
touch test/file$count-{000..50000}
count=$(( count + 1 ))
done
Вывод: rsync уничтожил всё быстрее всех. rm -r test/* вылетает с ошибкой при большом числе файлов.
count=1
while [ $count -le 10 ]; do
mkdir -p test/dir$count-{000..500}
touch test/dir$count-{000..500}/file-{000..100}
count=$(( count + 1 ))
done
Вывод: в этом случае почти все методы сработали одинаково. Но если файлов ещё больше -
rsync снова выигрывает.#linux #rsync
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤2
Хотите быть уверены, что критические обновления безопасности устанавливаются автоматически? Тогда стоит взглянуть на
unattended-upgrades - инструмент для автоматического применения обновлений в debian/ubuntu системах.unattended-upgrades - это пакет, который автоматически скачивает и устанавливает обновления безопасности и другие пакеты по заданным правилам.
sudo apt update
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
При конфигурации утилита предложит включить автообновления - согласитесь. После установки основной конфигурационный файл будет находиться здесь:
/etc/apt/apt.conf.d/50unattended-upgrades
В нём можно указать, какие типы пакетов обновлять (только security, или всё подряд), включить автоудаление ненужных пакетов, настроить отправку уведомлений и пр.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timer
Можно изменить расписание, если нужно.
/var/log/unattended-upgrades/unattended-upgrades.log
/var/log/apt/history.log
#linux #update
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Иногда пользователи не могут сменить истекающий пароль - особенно если подключаются к домену через VPN, RDP или веб-интерфейс, где просто нет соответствующих инструментов. Вариант «поставить галку на бессрочный пароль» выглядит заманчиво, но так легко забыть отключить её, и в итоге у пользователя остается пароль без ограничений.
В AD есть специальный атрибут
pwdLastSet, который хранит дату последней смены пароля. Редактировать его напрямую нельзя, но можно «обновить» его:
# Сначала сбрасываем атрибут
Set-ADUser petrov.pa -Replace @{pwdLastSet=0}
# Затем задаём текущую дату как дату смены пароля
Set-ADUser petrov.pa -Replace @{pwdLastSet=-1}
#ActiveDirectory #PowerShell
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27
Три базовых, но эффективных подхода, которые стоит внедрить в любом API:
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});
app.use("/api/", limiter);
const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));
Не забудьте запретить * в production - это дырка в безопасности.
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
const token = req.headers['authorization']?.split(' ')[1];
if (!token) return res.sendStatus(401);
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
Итого:
Rate Limiting - спасает от злоупотреблений.
CORS - управляет доступом между доменами.
Token-based доступ - дает безопасность и гибкость.
Правильная комбинация этих механизмов - основа для защиты любого публичного API.
#API #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Инструменты трассировки маршрута и диагностики сети - незаменимая часть работы администратора. Ниже собран краткий обзор утилит для Linux и Windows, которые помогают понять, где тормозит или обрывается соединение.
traceroute -I ya.ru
tracepath ya.ru
mtr ya.ru
tracert ya.ru
pathping ya.ru
tracetcp ya.ru:443
Полезна, когда ICMP или UDP заблокированы, а нужно проверить доступность TCP-сервиса. Показывает, где именно по пути блокируется соединение. Ставится отдельно (ищите на сайте разработчика). Аналога на Linux, увы, нет, но было бы очень кстати.
📍 Используйте mtr и tracetcp, если нужно точечно диагностировать проблемы.📍 tracepath удобен для анализа MTU.📍 На Windows pathping даст больше инфы, чем tracert.
#network #diagnostic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3
Начиная с версии Windows 10 1809, Microsoft отключила автоматическое создание бэкапов реестра - якобы ради экономии места (всего 100–200 МБ). Но вместе с этой "оптимизацией" пользователи лишились простого способа восстановить систему, заменив повреждённые файлы реестра на рабочие копии из RegBack.
Хотя используется эта функция нечасто, иметь резервную копию всегда лучше, чем её отсутствие.
Создайте параметр EnablePeriodicBackup в реестре:
reg add "HKLM\System\CurrentControlSet\Control\Session Manager\Configuration Manager" /v EnablePeriodicBackup /t REG_DWORD /d 1 /f
Теперь задание планировщика RegIdleBackup будет выполняться в рамках автоматического обслуживания системы (раз в сутки), и сохранять резервные копии реестра в папку:
%windir%\System32\config\RegBack
Start-ScheduledTask -TaskName "RegIdleBackup"
#windows #registry
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16