Изменил настройки firewall или iptables, и вдруг сервер «пропал» из сети?
Решаем так👇
Если есть доступ к консоли через провайдера или локальный терминал, сначала проверь, какие правила сейчас активны:
Можно временно применить новые правила и убедиться, что SSH остаётся доступен:
Если что-то пошло не так — откат произойдёт автоматически.
Для более безопасной работы всегда держи резервную копию:
И проверяй соединения:
Так можно экспериментировать с firewall, не теряя доступ к серверу.
Решаем так
Если есть доступ к консоли через провайдера или локальный терминал, сначала проверь, какие правила сейчас активны:
iptables -L -v -n
Можно временно применить новые правила и убедиться, что SSH остаётся доступен:
iptables-apply --test
Если что-то пошло не так — откат произойдёт автоматически.
Для более безопасной работы всегда держи резервную копию:
iptables-save > ~/iptables-backup-$(date +%F).rules
И проверяй соединения:
ss -tulnp
Так можно экспериментировать с firewall, не теряя доступ к серверу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6❤3🤡1
Чем отличается TCP-флаг RST от FIN?
Anonymous Quiz
10%
RST завершает соединение корректно
76%
FIN сообщает о конце передачи, RST — о сбое
5%
Оба выполняют «мягкое» завершение
9%
FIN используется только при SYN Flood
❤5👍1
Проверка, что реально грузит CPU
Когда сервер кажется «тормозным», top и htop часто показывают поверхностную картину.
Иногда виноваты shared библиотеки, а не сам процесс.
📝 smem — утилита, которая учитывает shared memory и показывает реальное потребление:
Выведет топ процессов по реальной памяти.
📝 pidstat — для мониторинга нагрузки в динамике:
Показывает, какие процессы жрут CPU каждые 2 секунды в течение 10 замеров.
Когда сервер кажется «тормозным», top и htop часто показывают поверхностную картину.
Иногда виноваты shared библиотеки, а не сам процесс.
smem -r | sort -nrk 4 | head -n 10
Выведет топ процессов по реальной памяти.
pidstat -u 2 10
Показывает, какие процессы жрут CPU каждые 2 секунды в течение 10 замеров.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥3
Rust Coreutils 0.3.0: быстрее, безопаснее и почти как GNU
24 октября 2025 вышел Rust Coreutils 0.3.0 (uutils) — аналог GNU Coreutils, но на Rust.
Это более сотни утилит вроде ls, cat, chmod, sort и cp, переписанных с упором на кроссплатформенность и безопасность (работает даже на Windows, Redox и Fuchsia).
Что нового:
⏺ sort стал быстрее GNU-версии в 3.7 раза, base64 — в 1.2, uniq -c — в 1.13;
⏺ добавлена инфраструктура для автоматического трекинга производительности (через CodSpeed);
⏺ улучшена работа с путями, безопасное обращение с rm, du, chmod, chgrp;
⏺ меньше unsafe, больше Rust-подхода через crate nix;
⏺ добавлены новые флаги (--progress, --reference=file, --base58 и др.);
⏺ совместимость с GNU-тестами — 83.9% (немного ниже из-за новых тестов).
Rust Coreutils распространяется по MIT-лицензии, в отличие от GPL у GNU, и уже движется к полной замене классических coreutils.
24 октября 2025 вышел Rust Coreutils 0.3.0 (uutils) — аналог GNU Coreutils, но на Rust.
Это более сотни утилит вроде ls, cat, chmod, sort и cp, переписанных с упором на кроссплатформенность и безопасность (работает даже на Windows, Redox и Fuchsia).
Что нового:
Любопытный факт: именно из-за отсутствия флага --reference в date на Ubuntu 25.10 сломалось автообновление. Теперь всё исправили.
Rust Coreutils распространяется по MIT-лицензии, в отличие от GPL у GNU, и уже движется к полной замене классических coreutils.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🥱1
OSPF Passive Interface: контроль анонсов маршрутов
В крупных сетях бывают интерфейсы, которые должны только получать маршруты OSPF, но не формировать соседства.
Passive Interface решает эту проблему.
С его помощью интерфейс продолжает принимать маршруты, но не инициирует соседские сессии.
⏺ Маршрутизатор знает всё, что нужно, при этом сеть становится «тише», а нагрузка на CPU снижается.
На Cisco IOS настройка выглядит так:
После применения этой команды интерфейс GigabitEthernet0/1 перестанет отправлять hello-пакеты, но маршруты через другие интерфейсы продолжают работать корректно.
На Juniper JunOS принцип аналогичен:
Passive Interface особенно нужен на VLAN-подсетях и внутренних сегментах, где соседей нет.
🔥 Если сочетать passive mode с аутентификацией OSPF, вы получаете дополнительный уровень безопасности. Маршруты продолжают приходить, сеть остаётся стабильной, а ненужные пакеты hello больше не «шумят» в топологии.
В крупных сетях бывают интерфейсы, которые должны только получать маршруты OSPF, но не формировать соседства.
Если оставить их активными, маршрутизатор рассылает hello-пакеты на все интерфейсы, создавая лишний трафик и раскрывая топологию сети.
Passive Interface решает эту проблему.
С его помощью интерфейс продолжает принимать маршруты, но не инициирует соседские сессии.
На Cisco IOS настройка выглядит так:
router ospf 1
network 10.0.0.0 0.0.0.255 area 0
passive-interface GigabitEthernet0/1
После применения этой команды интерфейс GigabitEthernet0/1 перестанет отправлять hello-пакеты, но маршруты через другие интерфейсы продолжают работать корректно.
На Juniper JunOS принцип аналогичен:
protocols ospf {
interface ge-0/0/1.0 {
passive
}
}Passive Interface особенно нужен на VLAN-подсетях и внутренних сегментах, где соседей нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🔥1
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.При изменении структуры создаётся её новая версия, обновление “публикуется”, а старые версии остаются доступными для текущих читателей. После того как все старые читатели завершили работу, ядро удаляет устаревшие копии.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥3
udev: управление устройствами автоматически
В Linux устройства появляются и исчезают постоянно — USB-диски, сетевые карты, внешние диски.
⏺ Тут поможет udev — подсистема, которая позволяет автоматически выполнять действия при появлении устройства.
udev работает через правила, которые проверяют свойства устройства: тип, серийный номер, производитель, интерфейс.
В зависимости от условий можно задавать имя устройства, права, группу, запускать скрипты или автоматически монтировать диск.
Например, правило для автоматического переименования USB-диска по серийному номеру выглядит так:
После перезагрузки или переподключения устройства оно всегда будет называться /dev/usb_backup.
Чтобы автоматически монтировать диск с конкретными правами, можно использовать RUN и mount:
udev позволяет назначать права и группы для устройств, например, чтобы обычный пользователь мог записывать на USB-диск:
Файлы правил обычно лежат в /etc/udev/rules.d/. После добавления или изменения правил нужно перезагрузить udev:
В Linux устройства появляются и исчезают постоянно — USB-диски, сетевые карты, внешние диски.
Если каждый раз вручную менять права, монтировать или переименовывать — это неудобно.
udev работает через правила, которые проверяют свойства устройства: тип, серийный номер, производитель, интерфейс.
В зависимости от условий можно задавать имя устройства, права, группу, запускать скрипты или автоматически монтировать диск.
Например, правило для автоматического переименования USB-диска по серийному номеру выглядит так:
SUBSYSTEM=="block", ATTRS{serial}=="12345678", NAME="usb_backup"После перезагрузки или переподключения устройства оно всегда будет называться /dev/usb_backup.
Чтобы автоматически монтировать диск с конкретными правами, можно использовать RUN и mount:
SUBSYSTEM=="block", ATTRS{serial}=="12345678", ACTION=="add", RUN+="/usr/bin/mount /dev/%k /mnt/backup"udev позволяет назначать права и группы для устройств, например, чтобы обычный пользователь мог записывать на USB-диск:
SUBSYSTEM=="block", ATTRS{serial}=="12345678", MODE="0660", GROUP="users"Файлы правил обычно лежат в /etc/udev/rules.d/. После добавления или изменения правил нужно перезагрузить udev:
sudo udevadm control --reload
sudo udevadm trigger
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥4
logrotate для нестандартных каталогов
В Linux большинство системных логов лежит в /var/log, и для них уже настроена ротация.
Без ротации такие файлы могут быстро «съесть» диск. Для этого используется logrotate с кастомными конфигурациями.
Создаём файл конфигурации для нашего приложения, например /etc/logrotate.d/myapp:
Что здесь происходит: файлы логов в /opt/myapp/logs/ будут ротацироваться каждый день, храниться 7 архивов, старые версии будут сжиматься, а если лог пустой — пропускается.
⏺ После ротации сервис перезагружается, чтобы продолжить писать в новый файл.
Проверить конфигурацию можно в режиме dry-run:
И вручную запустить ротацию:
В Linux большинство системных логов лежит в /var/log, и для них уже настроена ротация.
Но приложения часто пишут логи в свои каталоги, например /opt/myapp/logs или /srv/service/logs.
Без ротации такие файлы могут быстро «съесть» диск. Для этого используется logrotate с кастомными конфигурациями.
Создаём файл конфигурации для нашего приложения, например /etc/logrotate.d/myapp:
/opt/myapp/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 myuser mygroup
postrotate
systemctl reload myapp
endnoscript
}Что здесь происходит: файлы логов в /opt/myapp/logs/ будут ротацироваться каждый день, храниться 7 архивов, старые версии будут сжиматься, а если лог пустой — пропускается.
Проверить конфигурацию можно в режиме dry-run:
sudo logrotate -d /etc/logrotate.d/myapp
И вручную запустить ротацию:
sudo logrotate -f /etc/logrotate.d/myapp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5👎1
Какой тип изоляции обеспечивает Docker при запуске контейнеров? (Простой)
Anonymous Quiz
10%
Полная виртуализация
78%
Изоляция на уровне ядра через namespaces и cgroups
4%
Эмуляция оборудования
8%
Изоляция через гипервизор
❤8👍3
systemd Path Units: запуск сервисов по событиям файловой системы
В Linux часто возникает задача: сервис должен запускаться только при появлении или изменении файла или каталога, а не висеть постоянно в фоне.
⏺ Для таких сценариев systemd предлагает Path Units. Это единицы, которые отслеживают файловую систему и могут запускать обычные сервисы при срабатывании события.
Например, у нас есть каталог /srv/watch и сервис process-files.service, который должен обрабатывать новые файлы. Сначала создаём Path Unit:
Path Unit отслеживает появление или изменение файлов в указанной директории. Когда событие происходит, systemd запускает связанный service unit.
Service Unit может выглядеть так:
После создания единиц активируем Path Unit:
В Linux часто возникает задача: сервис должен запускаться только при появлении или изменении файла или каталога, а не висеть постоянно в фоне.
Например, у нас есть каталог /srv/watch и сервис process-files.service, который должен обрабатывать новые файлы. Сначала создаём Path Unit:
# /etc/systemd/system/watch-files.path
[Unit]
Denoscription=Watch /srv/watch for new files
[Path]
PathExists=/srv/watch
PathChanged=/srv/watch
[Install]
WantedBy=multi-user.target
Path Unit отслеживает появление или изменение файлов в указанной директории. Когда событие происходит, systemd запускает связанный service unit.
Service Unit может выглядеть так:
# /etc/systemd/system/process-files.service
[Unit]
Denoscription=Process new files
[Service]
Type=oneshot
ExecStart=/usr/local/bin/process_new_files.sh
После создания единиц активируем Path Unit:
sudo systemctl daemon-reload
sudo systemctl enable --now watch-files.path
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4
Ошибка команды date в Ubuntu 25.10 нарушила автообновления
В Ubuntu 25.10 команда date из набора uutils на Rust не поддерживала опцию -r.
Проблема затронула облачные развёртывания, контейнеры, Desktop и Server. Ручное обновление через apt работало корректно.
Исправлено в пакете rust-coreutils 0.2.2-0ubuntu2.1:
⏺ Причина: при релизе Ubuntu 25.10 изменения с поддержкой -r в uutils не были включены, и ошибка не проявлялась в тестах, так как вызов date -r не выдавал ошибку.
В Ubuntu 25.10 команда date из набора uutils на Rust не поддерживала опцию -r.
Скрипт apt.systemd.daily, проверяющий время последних обновлений, всегда получал текущее время и считал систему обновлённой.
Проблема затронула облачные развёртывания, контейнеры, Desktop и Server. Ручное обновление через apt работало корректно.
Исправлено в пакете rust-coreutils 0.2.2-0ubuntu2.1:
sudo apt update
sudo apt install --only-upgrade rust-coreutils
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5🤬2🤡1🥱1
lockf / fcntl: синхронизация через файлы
Когда несколько процессов работают с одним ресурсом, важно предотвратить конфликты.
Для этого есть lockf и fcntl — более гибкие аналоги flock.
Пример с lockf:
В Python с fcntl можно блокировать файл или его часть:
Когда несколько процессов работают с одним ресурсом, важно предотвратить конфликты.
Для этого есть lockf и fcntl — более гибкие аналоги flock.
Пример с lockf:
exec 200>/var/lock/myapp.lock
lockf -t 0 200 || exit 1
echo "Process $$ is running" >> /var/log/myapp.log
В Python с fcntl можно блокировать файл или его часть:
import fcntl
with open("/var/lock/myapp.lock", "w") as f:
fcntl.flock(f, fcntl.LOCK_EX)
f.write("Process is running\n")
❤6🔥2
inotifywait: реакции на изменения файлов в реальном времени
Иногда нужно отследить, когда меняется файл — лог, конфиг или каталог с бэкапами.
tail -f помогает только смотреть, но не реагировать.
А вот inotifywait из пакета inotify-tools позволяет «подслушивать» изменения и запускать действия сразу.
Как отследить обновление конфига nginx
После каждой модификации inotifywait выведет событие — например:
Автоматический reload при изменении
Теперь при каждом сохранении файла nginx перезагрузится без твоего участия.
Мониторинг каталога
Следит рекурсивно за всеми файлами — удобно для dev-среды, где файлы часто меняются.
Типы событий
• create — создан файл
• delete — удалён
• modify — изменён
• close_write — файл записан и закрыт
• move — переименован или перемещён
Можно комбинировать:
Иногда нужно отследить, когда меняется файл — лог, конфиг или каталог с бэкапами.
tail -f помогает только смотреть, но не реагировать.
А вот inotifywait из пакета inotify-tools позволяет «подслушивать» изменения и запускать действия сразу.
Как отследить обновление конфига nginx
inotifywait -m /etc/nginx/nginx.conf
После каждой модификации inotifywait выведет событие — например:
/etc/nginx/ MODIFY nginx.conf
Автоматический reload при изменении
while inotifywait -e close_write /etc/nginx/nginx.conf; do
systemctl reload nginx
done
Теперь при каждом сохранении файла nginx перезагрузится без твоего участия.
Мониторинг каталога
inotifywait -m -r /var/www/html
Следит рекурсивно за всеми файлами — удобно для dev-среды, где файлы часто меняются.
Типы событий
• create — создан файл
• delete — удалён
• modify — изменён
• close_write — файл записан и закрыт
• move — переименован или перемещён
Можно комбинировать:
inotifywait -e create,delete,move /opt/data
❤8👍6
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Как это работает:
• Ядро поддерживает два списка: active и inactive.
• Активные страницы недавно использовались, неактивные — давно не трогались.
• При нехватке памяти запускается kswapd, который перемещает страницы из active → inactive и затем освобождает их, сбрасывая dirty-страницы на диск или удаляя чистые.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5
Как запретить юзерам выключать сервер или менять сетевые настройки
Иногда на сервере несколько пользователей, и не все должны иметь полные права.
Например, кто-то случайно жмёт “Выключить” в GUI — и сервер падает.
Linux даёт способ это запретить без удаления sudo: через PolicyKit (polkit).
Запрет выключения и перезапуска
Создаём правило:
И добавляем:
Теперь только пользователи из группы wheel (или другой, если заменишь) смогут перезагружать и выключать систему.
Запрет изменения сети
Файл:
Код:
Теперь менять соединения, IP и Wi-Fi смогут только пользователи группы netadmin.
Как проверить:
Покажет все доступные polkit-действия.
Иногда на сервере несколько пользователей, и не все должны иметь полные права.
Например, кто-то случайно жмёт “Выключить” в GUI — и сервер падает.
Linux даёт способ это запретить без удаления sudo: через PolicyKit (polkit).
Запрет выключения и перезапуска
Создаём правило:
sudo nano /etc/polkit-1/rules.d/49-disable-shutdown.rules
И добавляем:
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.reboot") &&
!subject.isInGroup("wheel")) {
return polkit.Result.NO;
}
});Теперь только пользователи из группы wheel (или другой, если заменишь) смогут перезагружать и выключать систему.
Запрет изменения сети
Файл:
sudo nano /etc/polkit-1/rules.d/50-disable-network.rules
Код:
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.network-manager.settings.") == 0 &&
!subject.isInGroup("netadmin")) {
return polkit.Result.NO;
}
});Теперь менять соединения, IP и Wi-Fi смогут только пользователи группы netadmin.
Как проверить:
pkaction | grep power
pkaction | grep network
Покажет все доступные polkit-действия.
👍12🔥8
Вышел Rust 1.91.0!
В обновлении участвовали 235 разработчиков, а ключевые улучшения направлены на производительность, удобство и расширение поддержки платформ.
Главное в релизе:
⏺ Windows на ARM (aarch64-pc-windows-msvc) получила статус Tier-1 — теперь есть официальные бинарники и полный саппорт.
⏺ Новые lint-проверки: защита от висячих указателей и преобразования чисел в указатели через transmute.
⏺ В Cargo стабилизирована опция build.build-dir — можно указать каталог для временных артефактов сборки.
⏺ Поддержка inline-ассемблера для LoongArch32 и обновление компилятора до LLVM 21.
⏺ Добавлены десятки стабильных API — от PathBuf::add_extension до Ipv6Addr::from_segments.
30 октября 2025 года состоялся релиз новой версии языка Rust — одной из самых стабильных и безопасных экосистем в мире.
В обновлении участвовали 235 разработчиков, а ключевые улучшения направлены на производительность, удобство и расширение поддержки платформ.
Главное в релизе:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Без seq_file разработчикам приходилось вручную управлять буферами, обрезками строк и позиционированием, что повышало риск ошибок.
seq_file решает эти проблемы, обеспечивая:
• последовательную генерацию данных в чанках,
• автоматическую поддержку seek/read,
• потокобезопасный доступ к данным ядра,
• экономию памяти за счёт ленивой генерации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4
Как безопасно удалить старые логи и кэши, не трогая нужное
Со временем на сервере накапливаются гигабайты старых логов и временных файлов.
Рука не поднимается чистить /var/log — страшно что-то удалить лишнее.
Но всё можно сделать аккуратно, одной командой find с правильными фильтрами.
Удалим файлы старше 30 дней
-mtime +30 — старше 30 дней
-type f — только файлы
-delete — удалить (осторожно, без подтверждения)
Добавим исключения:
Так мы не тронем systemd-журналы и конфиги лог-демонов.
Чистим кэш без вреда
Можно ограничить размер:
и удалить вручную то, что реально разрослось (например, apt или pip кэши).
Тест перед удалением:
Покажет, что будет удалено. Меняем -delete на -print, если нужно просто посмотреть.
Автоматизация:
Добавляем в cron:
и строку:
Каждое воскресенье в 3:00 — чистка логов.
Со временем на сервере накапливаются гигабайты старых логов и временных файлов.
Рука не поднимается чистить /var/log — страшно что-то удалить лишнее.
Но всё можно сделать аккуратно, одной командой find с правильными фильтрами.
Удалим файлы старше 30 дней
sudo find /var/log -type f -mtime +30 -delete
-mtime +30 — старше 30 дней
-type f — только файлы
-delete — удалить (осторожно, без подтверждения)
Добавим исключения:
sudo find /var/log -type f -mtime +30 \
! -name "*.conf" \
! -path "/var/log/journal/*" \
-delete
Так мы не тронем systemd-журналы и конфиги лог-демонов.
Чистим кэш без вреда
sudo find /var/cache -type f -mtime +15 -delete
Можно ограничить размер:
sudo du -sh /var/cache/*
и удалить вручную то, что реально разрослось (например, apt или pip кэши).
Тест перед удалением:
sudo find /var/log -type f -mtime +30 -print
Покажет, что будет удалено. Меняем -delete на -print, если нужно просто посмотреть.
Автоматизация:
Добавляем в cron:
sudo crontab -e
и строку:
0 3 * * 0 find /var/log -type f -mtime +30 -delete
Каждое воскресенье в 3:00 — чистка логов.
❤10🔥8👍4
Что произойдет, если удалить запись /etc/fstab для корневого раздела и перезагрузить систему?
Anonymous Quiz
2%
Система загрузится нормально
26%
Kernel автоматически пересоздаст fstab
67%
Система не сможет смонтировать корневой раздел и не загрузится
5%
Будет использован swap вместо корня
❤4😁3