NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
499 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
Превзошел себя

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22🙈1
🎉 С днем системного администратора! 🎉

Сегодня не будет познавательных постов, но будет не менее важное - поздравление! Сегодня - день тех, кто всегда остается за кулисами, но без кого не работает ничего. Это вы начинающие или уже опытные - волшебники командной строки, мастера uptime и защитники серверов от хаоса.

Именно Вы держите на плаву сети, базы данных, почту, бэкапы, мониторинг, безопасность и еще тысячу вещей, о которых никто не догадывается... пока все не сломается, ну или им не покажется, что все сломалось..

Буду короток: пусть в логах будет чисто, аптайм радует глаз, а пользователи не беспокоят в пятницу вечером. А еще - стабильных обновлений, бесшумных серверов и свободного времени для себя.

За вас, сисадмины! С праздником! 🎆

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾32👍11🔥83😁2
🔗 Коллекция приемов на чистом Bash

Если вы пишете скрипты и хотите свести количество зависимостей к минимуму - загляните в pure-bash-bible. Это подборка трюков и функций, реализующих полезные операции на чистом bash, без использования sed, awk, grep, perl и других внешних утилит. Все работает прямо внутри интерпретатора.

▪️ Пример 1. Преобразование строки в нижний регистр. Из библиотеки берём такую функцию:


lower() {
printf '%s\n' "${1,,}"
}


Создаем скрипт lower.sh:


#!/bin/bash
lower() {
printf '%s\n' "${1,,}"
}
lower "$1"


Запускаем:


$ ./lower.sh HELLO
hello


▪️ Пример 2. Получение имени файла из полного пути


basename() {
local tmp
tmp=${1%"${1##*[!/]}"}
tmp=${tmp##*/}
tmp=${tmp%"${2/"$tmp"}"}
printf '%s\n' "${tmp:-/}"
}


Скрипт basename.sh:


#!/bin/bash
basename() {
local tmp
tmp=${1%"${1##*[!/]}"}
tmp=${tmp##*/}
tmp=${tmp%"${2/"$tmp"}"}
printf '%s\n' "${tmp:-/}"
}
basename "$1"


Запуск:


$ ./basename.sh /var/log/syslog.2.gz
syslog.2.gz


В большинстве систем можно просто вызвать утилиты basename или tr, но в минималистичных окружениях (например, initrd, embedded Linux, Docker) такие функции в bash-стиле особенно ценны.

Библиотека охватывает десятки задач: обработка строк, массивов, файлов, путей, случайные числа, цвета в терминале и т.д.

Сохрани себе 😺

#bash #linux

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4
📂 Проверка и восстановление файловой системы

Поврежденная структура каталогов или битые иноды могут привести к потере данных или проблемам при загрузке. Для таких случаев есть проверенные временем инструменты: fsck в linux и chkdsk в windows.

🐧 Linux: fsck (file system check). fsck - утилита для проверки и восстановления файловой системы. Работает с различными типами ФС: ext2/3/4, xfs, btrfs и т.д.

▪️ Проверка и автоматическое исправление ошибок:


fsck -y /dev/sda1


▪️ Только проверка (без изменений):


fsck -n /dev/sda1


▪️ Проверка всех файловых систем, указанных в /etc/fstab, кроме смонтированных:


fsck -A


⚠️ Не запускайте fsck на смонтированных разделах - особенно тех, которые используются системой. Лучше делать это с LiveCD или в режиме восстановления.

🏠 Windows: chkdsk. chkdsk - аналогичная утилита в windows. Она проверяет раздел на наличие логических и физических ошибок, может попытаться восстановить поврежденные сектора.

▪️ Проверка и исправление ошибок:


chkdsk C: /F


▪️ Проверка с попыткой восстановления поврежденных секторов:


chkdsk D: /F /R


▪️ Назначение проверки при следующей перезагрузке (если диск системный):


chkntfs /C C:


#fsck #chkdsk

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102
This media is not supported in your browser
VIEW IN TELEGRAM
Универсальная комбинация для входа в BIOS

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁34👍6🤡1
🔝 Borg + Borgmatic: удобные и надежные бэкапы в linux

Обычные бэкапы - тема, о которой стоит напоминать регулярно. Сегодня расскажу о проверенной связке инструментов: Borg и его обертке Borgmatic. Это отличное решение, если вам нужен надежный и автоматизированный консольный бэкап без внешних агентов.

▪️ Borg - это утилита для создания резервных копий с поддержкой: дедупликации данных (экономия места), шифрования, работы по SSH без установки агентов, монтирования архива через FUSE для удобного просмотра содержимого.

Установка:


apt install borgbackup


▪️ Borgmatic - это python-обертка над borg, позволяющая описывать бэкап в YAML-конфиге - никаких длинных команд и скриптов. Все в одном месте.

Установка:


pip3 install borgmatic


⭐️ Преимущества использования Borgmatic:

несколько целевых репозиториев для хранения бэкапов;
автоматические дампы баз данных (PostgreSQL, MySQL, MongoDB, SQLite);
хуки до и после запуска (удобно для остановки сервисов);
отправка уведомлений (в том числе по ошибке);
централизованное хранение параметров и секретов (через переменные среды).


▪️ Пример конфигурации:


location:
source_directories:
- /etc
- /var/www
repositories:
- user@backupserver:repo.borg

retention:
keep_daily: 7
keep_weekly: 4
keep_monthly: 6

hooks:
before_backup:
- systemctl stop nginx
after_backup:
- systemctl start nginx


Если уже используете borg, переход на borgmatic - это чистое удобство. Упрощенная автоматизация, гибкость и читаемость настроек.

#linux #backup

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🔒 Использование VLAN в домашних и офисных сетях

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

VLAN (Virtual LAN) - это способ логического разделения одной физической сети на несколько изолированных друг от друга сегментов. Устройства в разных VLAN не видят друг друга, пока не настроен маршрутизатор.


▪️ Сценарии для дома:

📍 Разделение умного дома и основной сети — изоляция IoT-устройств (камеры, лампочки, чайники) от домашней Wi-Fi-сети с личными данными.
📍 Детская VLAN с ограничениями - создаем отдельный сегмент с фильтрацией сайтов и доступом по расписанию.
📍 Гостевая Wi-Fi - изолируем гостей от основной сети.

▪️ Сценарии для офиса:

📍 VLAN для бухгалтерии - выделенный сегмент с доступом только к 1С и серверам документов.
📍 VLAN для VoIP - стабильная телефония без помех от общего трафика.
📍 VLAN для видеонаблюдения - чтобы камеры не грузили общий канал.
📍 Разделение Wi-Fi по ролям (сотрудники, гости, администрация).

▪️ Как настраивать?

1️⃣ На свитче (управляемом): назначаем порты access (одна VLAN) или trunk (несколько VLAN).

Пример на Cisco:


interface FastEthernet0/1
switchport mode access
switchport access vlan 10


2️⃣ На роутере: интерфейсы или саб-интерфейсы на разные VLAN.

Настройка маршрутизации между VLAN при необходимости.

3️⃣ На клиенте (Linux):


ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.2/24 dev eth0.10
ip link set up eth0.10


Даже в домашних условиях VLAN дает возможность для наведения порядка, контроля и повышения безопасности в сети.

#vlan #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4🤔21🗿1
📍 Как не перезапустить не тот сервер: утилита molly-guard

Если вы когда-нибудь случайно выполнили reboot или shutdown не на том сервере - вы знаете, насколько это больно. Особенно, когда в консоли много сессий, и все на одинаковых хостах типа prod01, prod02, db01... Чтобы подстраховаться от таких ошибок - есть простейшее, но гениальное решение: molly-guard. После установки утилита подменяет стандартные команды reboot, shutdown, poweroff. При их запуске появляется запрос на подтверждение имени хоста. Ошиблись терминалом - команда не выполнится.

▪️ Установка:


# apt install molly-guard


▪️ Пример:


# reboot
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot:
>


Вводим имя хоста вручную. Только после этого произойдёт перезагрузка.

🌟 Небольшой совет: сразу после установки можно прописать ее в список стандартного ПО для всех серверов. Минимум настроек - максимум пользы.

#linux #mollyguard

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🏠 Повышение производительности Windows с помощью Sysinternals Tools

Когда windows начинает тормозить, а «диспетчер задач» мало что говорит - на помощь приходят sysinternals tools. Это набор от microsoft, разработанный ещё Марком Руссиновичем, и он до сих пор незаменим для администраторов.

🔗 Скачать все разом

Ключевые инструменты, которые реально помогают увидеть и устранить узкие места в системе:

▪️ Process Explorer. Улучшенный «Диспетчер задач». Показывает дерево процессов, какие DLL они используют, как именно загружают систему. Можно отследить, кто блокирует файл, кто грузит ЦП, кто жрет RAM.

📍 Альтернатива taskmgr
📍 Ищем паразитные процессы и утечки памяти
📍 Убиваем вирусы, которые не видит антивирус

▪️ Process Monitor (Procmon). Показывает все, что происходит: файловые операции, работа с реестром, сеть. Идеально, когда приложение «виснет», но не пишет ошибок.

📍 Отладка медленных запусков программ
📍 Отслеживание, куда приложение пытается записать
📍 Найти, кто трогает подозрительный файл

▪️ RAMMap. Показывает, куда на самом деле уходит ОЗУ. Иногда в диспетчере — пусто, а система тормозит. RAMMap покажет все по сегментам: кэш, драйверы, standby, modified и т.д.

▪️ Autoruns. Разбираемся с автозагрузкой: служба, планировщик, драйверы, контекстное меню, расширения проводника. Можно безопасно отключить мусор без сторонних твикеров.

📍 Удалить нежелательные утилиты из автозагрузки
📍 Быстро выявить вирус или майнер

▪️ TCPView. Если тормозит сеть - можно посмотреть, какие процессы установили соединения, какие порты открыты, куда идет трафик.

▪️ Disk Usage (du.exe). Утилита в стиле unix du - покажет, какие каталоги занимают больше всего места. Особенно полезно при очистке диска.


du -q -l 1 C:\Users\admin


Все утилиты можно использовать без установки, просто скачать и запускать по мере надобности. А некоторые - использовать прямо из PowerShell, если положить их в %PATH%.

#windows #sysinternals

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎21
🔔 Уведомления из консоли прямо на смартфон и десктоп

Иногда хочется, чтобы о важных событиях (бэкапы, алерты мониторинга, запуск задач) приходило пуш-уведомление прямо на смартфон. Без танцев с ботами и сторонними облаками. Есть отличный инструмент - ntfy.sh.

🌟 Как это работает

Заходим в веб-приложение: https://ntfy.sh/app
Разрешаем уведомления, подписываемся на тему и получаем URL вроде: https://ntfy.sh/Stkclnoid6pLCpqU

Теперь отправим уведомление:


curl -d "Test Message" https://ntfy.sh/Stkclnoid6pLCpqU


Уведомление мгновенно прилетит в веб-интерфейс или в мобильное приложение (Android/iOS).

▪️ Интеграция с системой мониторинга (например, Zabbix). Zabbix умеет отправлять Webhook-запросы. Достаточно в настройках создать новый метод оповещения и использовать такой скрипт:


var params = JSON.parse(value),
msg = params.Message,
url = params.URL,
req = new CurlHttpRequest();

req.AddHeader('Content-Type: text/plain');
req.Post(url, msg);


Указываем в URL свой ntfy-адрес, а в сообщении - макрос {ALERT.MESSAGE}.

▪️ Пример: уведомления о результате бэкапа


rsync -a /mnt/data user@10.10.10.10:/backups/srv01 \
&& curl -H prio:low -d "Backup OK" https://ntfy.sh/Stkclnoid \
|| curl -H prio:high -H tags:warning -d "Backup FAILED" https://ntfy.sh/Stkclnoid


Ntfy - полностью open-source. Вы можете установить сервер у себя (есть готовые пакеты и образы в Docker) и использовать его как закрытую систему уведомлений.

Небольшая пачка плюсов:

Поддержка push-уведомлений на мобильные и десктопы;
Безопасность: можно хостить у себя;
Простая интеграция через curl;
Поддержка приоритетов, тэгов, вложений, подписок;
Бесплатно.


#monitoring #bash

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Однажды встает выбор, решающий судьбу..

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18👍16
⚙️ Настройка DHCP-сервера и резервации IP-адресов

Когда устройств в сети становится больше десятка, раздача IP вручную перестает быть удобной. Решение - поднять свой DHCP-сервер, который будет автоматически раздавать адреса, DNS, шлюз и другие параметры клиентам. Но важно не просто «раздавать все подряд», а уметь закрепить конкретные IP-адреса за нужными устройствами (например, серверами, принтерами, VoIP). Это делается через резервации (DHCP reservations).

🐧 Настройка DHCP-сервера на Linux (например, ISC-DHCP)

1️⃣ Устанавливаем сервер:


sudo apt install isc-dhcp-server


2️⃣ Пример настройки /etc/dhcp/dhcpd.conf:


subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
option domain-name "home.lan";
}

# Резервация IP по MAC-адресу
host printer01 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.10;
}


Теперь каждый раз принтер с указанным MAC-адресом будет получать именно 192.168.1.10.

🏠 На Windows Server (DHCP Role)

Откройте оснастку DHCP → Перейдите к своему пулу IP-адресов → ПКМ → New Reservation

Укажите имя, IP, MAC-адрес и тип клиента

🌟 Зачем нужны резервации:

Упрощают администрирование (IP-адреса не меняются)
Удобны для мониторинга и firewall-правил
Избавляют от конфликтов IP
Полезны при интеграции с DNS (обратная зона)


#network #DHCP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎3
📈 Как сымитировать нагрузку в linux без сторонних утилит

Иногда при настройке мониторинга на малонагруженных серверах нужно протестировать графики и дашборды, добавив искусственную нагрузку. Устанавливать отдельные утилиты вроде stress или stress-ng не всегда хочется. К счастью, это можно сделать встроенными средствами - через dd, sha1sum, yes, /dev/zero, /dev/urandom и другие.

▪️ Нагрузка на диск и CPU одновременно. Сжимаем случайные данные и пишем во временный файл:


while true; do
dd if=/dev/urandom count=30M bs=1 | bzip2 -9 > /tmp/tempfile
rm -f /tmp/tempfile
done


/dev/urandom → нагрузка на диск
bzip2 -9 → нагрузка на CPU

count=30M - объем данных
-9 - максимальная степень сжатия


Изменяйте параметры, чтобы регулировать силу нагрузки.

▪️ Только диск: оценка скорости записи. Быстрое тестирование производительности диска:


sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync


Вывод покажет, с какой скоростью пишутся 1 ГБ данных.

▪️ Только CPU: простейшие варианты.

Нагрузка на одно ядро:


dd if=/dev/zero of=/dev/null


Параллельная нагрузка на несколько ядер:


cpuload() {
dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &
}
cpuload; read; pkill dd


Либо:


sha1sum /dev/zero


Для нескольких ядер:


seq 4 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero


▪️ Простая нагрузка в пространстве ядра


seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null


Запускается yes, который генерирует бесконечный вывод. Отлично грузит CPU в режиме ядра.

▪️ Загрузка памяти. Скрипт на Python, резервирующий 1 ГБ RAM:


python3 -c 'a="a"*1024**3; input()'


Можно менять объем, изменяя 1024**3.

#linux #monitoring

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Как работает LACP и зачем использовать агрегирование каналов

Когда одного сетевого интерфейса мало - приходит время объединять их в «команду». Это называется агрегация каналов, и один из самых популярных способов реализовать ее - протокол LACP (Link Aggregation Control Protocol).

LACP - часть стандарта IEEE 802.3ad. Он позволяет объединить несколько физических интерфейсов в один логический (LAG - Link Aggregation Group), который операционная система и приложения видят как один.

🌟 Зачем это нужно?

📍 Повышение пропускной способности;
📍 Повышение отказоустойчивости (если один порт отваливается - остальные продолжают работать);
📍 Балансировка нагрузки между портами.


🌟 Как это работает

📍 LACP автоматически обнаруживает, какие интерфейсы можно объединить
📍 Обе стороны (свитч и хост) договариваются, какие порты войдут в LAG
📍 Если кабель выпал или порт упал - он просто исключается из группы, ничего не рушится


▪️ Настройка в Linux. Пример для двух интерфейсов ens33 и ens34:

1️⃣ Устанавливаем ifenslave (если нужно):


sudo apt install ifenslave


2️⃣ Настраиваем bonding-мод LACP (mode 4): В /etc/network/interfaces или аналогичном конфиге:


auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves ens33 ens34
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4


3️⃣ Важно! На свитче тоже нужно включить LACP на соответствующих портах (обычно называются channel-group или LAG в интерфейсе).

⭐️ Несколько нюансов:

📍 LACP работает только при поддержке с обеих сторон (сервер + свитч)
📍 LAG не удваивает скорость для одного TCP-соединения, но позволяет нескольким соединениям распределяться по разным каналам
📍 Лучше всего работает с хешированием по Layer3+4 (IP + порт)


#network #LACP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
🛡 Как корректно отслеживать и логировать выполнение Ansible-плейбуков

Если вы регулярно работаете с Ansible - важно не только писать рабочие плейбуки, но и контролировать, когда, кем и как они были запущены. Особенно, если в вашей инфраструктуре Ansible используется как часть CI/CD или централизованного управления.

1️⃣ Включаем логирование в конфиге Ansible. В файле /etc/ansible/ansible.cfg (или в локальной копии ansible.cfg) пропишите:


[defaults]
log_path = /var/log/ansible.log


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

2️⃣ Используйте теги и переменные для понятности. Добавляйте теги к задачам:


- name: Установка nginx
apt:
name: nginx
state: present
tags:
- web
- nginx


Это поможет фильтровать задачи в логах, запускать только нужные части и документировать назначение.

3️⃣ Логируйте переменные, хосты, результаты. Для отладки - полезно писать значения переменных в лог:


- name: Показываем значение переменной
debug:
var: some_variable


Также можно логировать hostname, пользователя и дату запуска, добавляя кастомную задачу:


- name: Логируем запуск
shell: echo "{{ ansible_date_time.iso8601 }}: {{ inventory_hostname }} - {{ ansible_user }}" >> /var/log/ansible_run.log


4️⃣ Используйте Ansible Callback Plugins. Для более глубокого логирования можно подключить callback-плагины.

Например, json или yaml:


[defaults]
stdout_callback = yaml


А если хотите логировать в файл в формате JSON, можно использовать:


[defaults]
callback_whitelist = json
stdout_callback = json
log_path = /var/log/ansible-json.log


5️⃣ Храните вывод выполнения с ansible-playbook. При запуске:


ansible-playbook site.yml | tee -a /var/log/ansible-run-$(date +%F-%T).log


Так у вас будет отдельный лог под каждое выполнение.

6️⃣ Интеграция с CI/CD и мониторингом. Если Ansible запускается через GitLab, Jenkins, Drone и прочее - обязательно сохраняйте артефакты выполнения и возвращайте статус завершения. Также можно отправлять результаты выполнения в телегу через webhook после ansible-playbook.

#ansible #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤢 HDD или SSD? Как быстро определить тип диска в linux

Если вы не уверены, установлен ли в вашем сервере SSD или классический жесткий диск, вот простой способ это проверить без сторонних утилит:


cat /sys/block/sda/queue/rotational
1

cat /sys/block/sde/queue/rotational
0


Значение 1 означает HDD (с вращающимся шпинделем), 0 - SSD (без вращения).

🌟 Как это работает?

Это файловый интерфейс к параметрам устройств в Linux. Поле rotational говорит ядру, как обращаться с устройством:

HDD - запросы стараются упорядочивать, чтобы сократить перемещения головки.
SSD - доступ равномерный, очередь не критична.

Поэтому для SSD оптимизация очереди часто не нужна - это влияет на планировщик ввода-вывода.

А что в виртуалках?

Виртуальные машины чаще всего по умолчанию видят виртуальные диски как HDD, даже если физический диск - SSD. Проверка rotational внутри VM может вернуть 1.

Пример: Proxmox. Чтобы "объяснить" виртуалке, что она на SSD:

📍 В настройках диска активируйте опцию SSD Emulation.
📍 После этого значение rotational станет 0.

Это не критично, но желательно - для корректной работы планировщика в гостевой ОС.

Trim в VM: работает или нет? Появляется логичный вопрос: если включить SSD-эмуляцию, будет ли работать TRIM в виртуалке?

Нет, сам по себе флаг SSD не включает поддержку TRIM.

Чтобы TRIM работал в гостевой ОС:

📍 Виртуальный диск должен поддерживать discard.
📍 Должна быть включена поддержка в гипервизоре (например, в proxmox - флаг Discard).
📍 Гостевая ОС должна использовать файловую систему, поддерживающую TRIM (ext4, btrfs и т.д.) и выполнять его (например, через fstrim или discard в /etc/fstab).

#linux #storage

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
This media is not supported in your browser
VIEW IN TELEGRAM
Неожиданно стал верующим человеком

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁292
🐶 Фейковый root в linux: зачем он нужен и когда пригодится

Наткнулся на утилиту с говорящим названием - fakeroot. Оказывается, она довольно старая и есть в стандартных репозиториях большинства дистрибутивов. Программа запускает окружение, в котором приложения думают, что работают с root-доступом. На самом деле вы остаетесь обычным пользователем, а fakeroot просто перехватывает системные вызовы (через LD_PRELOAD) и подменяет информацию.

▪️ Установка:


sudo apt install fakeroot


Запускаем:


fakeroot


В консоли появляется как будто бы root@host, и все поведение напоминает работу с sudo su.

▪️ Пример


touch test.txt
ls -la test.txt


Внутри fakeroot получите:


-rw-r--r-- 1 root root 0 ...


Выйдя из него:


-rw-r--r-- 1 username username 0 ...


То есть реально файл принадлежит обычному пользователю, но fakeroot создаёт иллюзию root-доступа.

Зачем это вообще нужно?

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

Например, вы собираете .deb-пакет с системными файлами или конфигами, которые в реальной установке должны принадлежать root. С помощью fakeroot вы можете задать нужные владельцы/права без прав суперпользователя.

🌟 Также будет полезно, если:

📍 Вы хотите пропустить ошибки доступа к файлам при архивации/копировании;
📍 Программа ругается на отсутствие root-доступа, но для вашей задачи это некритично;
📍 Вы работаете на CI/CD или в изолированном окружении без root-доступа

#fakeroot #linux

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
Не до всех доходит

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33👍8🗿5💊2🍾1
🚫 Блокировка стран по IP

Если нужно ограничить доступ к сервису из определенных стран (например, через iptables или nginx), потребуется актуальный список IP-сетей по географии.

Готовые списки можно взять отсюда. Например, список сетей России здесь
Каждая строка - отдельная подсеть, удобно парсить скриптами.

🛠 Пример скрипта: создаем IP whitelist через ipset


#!/bin/bash

# Удаляем старый список (если был)
ipset destroy whitelist 2>/dev/null

# Создаем новый
ipset create whitelist hash:net

# Скачиваем нужные страны (пример: некоторые страны СНГ)
wget -O netwhite http://www.ipdeny.com/ipblocks/data/countries/{ru,kz,by,uz,kg,am,az,ge,tj}.zone

# Добавляем подсети в ipset
for ipnet in $(cat netwhite); do
ipset add whitelist $ipnet
done

# Проверка
ipset save whitelist > whitelist-export.txt
echo "IP-сети загружены в ipset"


Теперь подключаем список к iptables:


iptables -A INPUT -m set --match-set whitelist src -p tcp --dport 80 -j ACCEPT


⚠️ Важно: если сетей больше ~2000, не загружайте их напрямую в iptables - используйте ipset, иначе правила займут много памяти и ресурсов.

▪️ Альтернатива - готовые конфиги под разные сервисы

Сервис: https://www.ip2location.com/free/visitor-blocker

Можно сразу получить правила под apache, nginx, iptables, mikrotik и другие.

#iptables #ipset

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
📄 Разделение логов по уровням и сервисам с systemd-journald

Если вы работаете на современном дистрибутиве linux, то почти наверняка используете systemd, а значит - и journald для сбора логов. Это система логирования, которая умеет куда больше, чем просто показывать логи командой journalctl. Сегодня - о том, как удобно фильтровать и разделять логи по уровню важности (info, warning, error и т.д.) и сервисам, чтобы быстро находить нужную информацию.

▪️ Фильтрация логов по юниту. Чтобы посмотреть логи конкретного сервиса:


journalctl -u nginx.service


Добавьте -b для вывода только с текущей загрузки:


journalctl -u ssh.service -b


▪️ Логи по уровню важности. Вы можете указать минимальный уровень важности:


journalctl -p err # Только ошибки и критичнее


Список уровней (от менее к более важным):

0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug


Пример: показать все warning и выше от sshd:


journalctl -u ssh.service -p warning


▪️ Ограничение по времени. Чтобы не утонуть в огромных логах:


journalctl --since "1 hour ago"
journalctl --since "2025-09-18" --until "2025-09-19 03:00"


▪️ Разделение логов по каталогам. По умолчанию journald пишет в /run/log/journal (в RAM), если /var/log/journal отсутствует. Чтобы сохранять логи между перезагрузками:


mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald


▪️ Настройка persist-логирования и лимитов. В файле /etc/systemd/journald.conf можно настроить:


Storage=persistent
SystemMaxUse=500M
RuntimeMaxUse=100M
MaxRetentionSec=7day


После правок - перезапустите journald:


systemctl restart systemd-journald


▪️ Глубокие фильтры. Вывести только ошибки от ядра:


journalctl _TRANSPORT=kernel -p err


Фильтр по PID:


journalctl _PID=1234


По имени бинарника:


journalctl _COMM=nginx


#logs #systemd

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135