💾 Потерял данные? Вот скрипт, который этого не допустит
Привет, хранитель данных!
Делаешь бэкапы вручную? Пора автоматизировать! Готовый bash-скрипт архивирует важные директории и отправляет на удалённый сервер. Настрой раз и спи спокойно.
Скрипт backup.sh
Как работает скрипт
Переменные:
-
-
-
-
Процесс:
1. Архивирует каждую директорию в tar.gz
2. Отправляет по scp на удалённый сервер
3. Проверяет успешность каждого шага
4. Удаляет локальные временные архивы
Пример работы
Автоматизация через cron
Добавь в crontab для ежедневного запуска в 3 ночи:
💡 Совет: настрой SSH-ключи для scp без пароля, иначе скрипт не сработает в cron.
Результат: автоматические бэкапы критически важных данных каждую ночь. Никакой рутины, полная автоматизация.
____________________
Дополнительный материал:
🧠 - От первого контейнера до мощного Swarm: Путешествие Docker в мире DevOps
🧠 - Углубляемся в безопасность Linux: Специальные режимы и их мощь!
🧠 - Разгадываем тайны команды "Apropos": Ваш ключ к миру Linux Man Pages
#Linux_Mastery #bash #backup #automation #sysadmin #scripts
Привет, хранитель данных!
Делаешь бэкапы вручную? Пора автоматизировать! Готовый bash-скрипт архивирует важные директории и отправляет на удалённый сервер. Настрой раз и спи спокойно.
Скрипт backup.sh
#!/bin/bash
backup_dirs=("/etc" "/home" "/boot")
dest_dir="/backup"
dest_server="server1"
backup_date=$(date +%b-%d-%y)
echo "Starting backup of: ${backup_dirs[@]}"
for i in "${backup_dirs[@]}"; do
sudo tar -Pczf /tmp/$i-$backup_date.tar.gz $i
if [ $? -eq 0 ]; then
echo "$i backup succeeded."
else
echo "$i backup failed."
fi
scp /tmp/$i-$backup_date.tar.gz $dest_server:$dest_dir
if [ $? -eq 0 ]; then
echo "$i transfer succeeded."
else
echo "$i transfer failed."
fi
done
sudo rm /tmp/*.gz
echo "Backup is done."
Как работает скрипт
Переменные:
-
backup_dirs — массив директорий для бэкапа-
dest_dir — куда складывать на удалённом сервере-
dest_server — имя/IP целевого сервера-
backup_date — дата в имени архиваПроцесс:
1. Архивирует каждую директорию в tar.gz
2. Отправляет по scp на удалённый сервер
3. Проверяет успешность каждого шага
4. Удаляет локальные временные архивы
Пример работы
kabary@handbook:~$ ./backup.sh
Starting backup of: /etc /home /boot
/etc backup succeeded.
etc-Aug-30-20.tar.gz 100% 1288KB 460.1KB/s 00:02
/etc transfer succeeded.
/home backup succeeded.
home-Aug-30-20.tar.gz 100% 2543KB 547.0KB/s 00:04
/home transfer succeeded.
/boot backup succeeded.
boot-Aug-30-20.tar.gz 100% 105MB 520.2KB/s 03:26
/boot transfer succeeded.
Backup is done.
Автоматизация через cron
Добавь в crontab для ежедневного запуска в 3 ночи:
0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
💡 Совет: настрой SSH-ключи для scp без пароля, иначе скрипт не сработает в cron.
Результат: автоматические бэкапы критически важных данных каждую ночь. Никакой рутины, полная автоматизация.
____________________
Дополнительный материал:
🧠 - От первого контейнера до мощного Swarm: Путешествие Docker в мире DevOps
🧠 - Углубляемся в безопасность Linux: Специальные режимы и их мощь!
🧠 - Разгадываем тайны команды "Apropos": Ваш ключ к миру Linux Man Pages
#Linux_Mastery #bash #backup #automation #sysadmin #scripts
Telegram
Linux Skill - Освой Linux c нуля до DevOps
#short_story
🚢⚙️ От первого контейнера до мощного Swarm: Путешествие Docker в мире DevOps 🌍💻
В мире, где каждая секунда на счету и гибкость внедрения определяет успех, одна технология выделяется, переопределяя архитектуру современных приложений. Это история…
🚢⚙️ От первого контейнера до мощного Swarm: Путешествие Docker в мире DevOps 🌍💻
В мире, где каждая секунда на счету и гибкость внедрения определяет успех, одна технология выделяется, переопределяя архитектуру современных приложений. Это история…
👍18
🔧 20+ переменных Bash, которые ты точно не использовал
Привет, повелитель скриптов!
Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.
📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя
👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь
🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС
⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды
📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик
🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов
🔖 Сохрани шпаргалку — пригодится в каждом скрипте!
#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
Привет, повелитель скриптов!
Видел скрипты, где пути и настройки вбиты намертво? А потом ломаешь голову, почему они не работают на другой машине. Bash уже всё придумал за тебя — используй зарезервированные переменные.
📂 Навигация и окружение
$DIRSTACK — Содержимое вершины стека каталогов
$OLDPWD — Прежний рабочий каталог
$PATH — Путь поиска программ
$HOME — Домашний каталог пользователя
👤 Информация о пользователе
$UID — Содержит реальный идентификатор, который устанавливается только при логине
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя
$GROUPS — Массив групп к которым принадлежит текущий пользователь
🖥️ Информация о системе
$HOSTNAME — hostname машины
$HOSTTYPE — Архитектура машины
$OSTYPE — Тип ОС
⚙️ Работа со скриптами и функциями
$EDITOR — Текстовый редактор по-умолчанию
$FUNCNAME — Имя текущей функции в скрипте
$SECONDS — Время работы скрипта (в сек.)
$$ — PID самого скрипта
$PPID — Идентификатор родительского процесса
$! — PID последнего запущенного в фоне процесса
$? — Содержит код завершения последней команды
📝 Работа с параметрами
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданные скрипту (выводятся в строку)
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик
🔍 Дополнительные переменные
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов
🔖 Сохрани шпаргалку — пригодится в каждом скрипте!
#Linux_Mastery #bash #scripting #linux #automation #devops #sysadmin
👍9🔥3
🔑 Уязвимость: Почему добавление в группу Docker равносильно
Привет, цифровой архитектор!
Ты, вероятно, сталкивался с советом, как избавиться от постоянного ввода
В этом посте разберем, почему добавлять пользователя в группу
📌 Ошибка: Запуск Docker без
Для удобства многие инженеры выполняют всего одну команду:
С этого момента любой член группы
🚨 Почему это критическая уязвимость?
Если пользователь может управлять Docker-демоном без ограничений, он может запустить контейнер, который способен:
1. Смонтировать корневую файловую систему хост-машины (например,
2. Получить полный доступ к
3. Выполнить любую команду от имени
В результате, член группы
💡 Вывод: Практика, которая ломает всё
Использование группы
Если ты используешь это решение, ты должен понимать, что любой злоумышленник, получивший доступ к этой учетной записи, получит безусловный доступ к хост-системе.
#Docker #Security #Linux #SysAdmin #DevOps
sudo su -Привет, цифровой архитектор!
Ты, вероятно, сталкивался с советом, как избавиться от постоянного ввода
sudo при работе с Docker. Решение простое: добавить своего пользователя в группу docker. Удобно? Да. Но это одна из самых критических ошибок безопасности в Linux!В этом посте разберем, почему добавлять пользователя в группу
docker равносильно вручению ему полных прав root на хост-машине.📌 Ошибка: Запуск Docker без
sudoДля удобства многие инженеры выполняют всего одну команду:
# Не делай так, если не понимаешь рисков!
sudo usermod -aG docker $(whoami)
С этого момента любой член группы
docker может выполнять команды Docker. Но проблема в том, что Docker-демон по умолчанию работает от имени root.🚨 Почему это критическая уязвимость?
Если пользователь может управлять Docker-демоном без ограничений, он может запустить контейнер, который способен:
1. Смонтировать корневую файловую систему хост-машины (например,
/) в контейнер.2. Получить полный доступ к
/etc/shadow (теневой файл паролей) и другим критическим системным файлам.3. Выполнить любую команду от имени
root на хосте.В результате, член группы
docker может легко повысить свои привилегии до суперпользователя, полностью обходя систему sudo.💡 Вывод: Практика, которая ломает всё
Использование группы
docker ломает фундаментальный принцип изоляции привилегий в Linux. Удобство не стоит безопасности.Если ты используешь это решение, ты должен понимать, что любой злоумышленник, получивший доступ к этой учетной записи, получит безусловный доступ к хост-системе.
#Docker #Security #Linux #SysAdmin #DevOps
👍22👎1
Media is too big
VIEW IN TELEGRAM
⚙️ Установка Ubuntu Server и CasaOS Пошаговое руководство
Привет, системный инженер!
Устал от сложной настройки базового Linux-сервера, когда тебе нужна простая и красивая панель управления? В этом гайде мы покажем, как быстро развернуть CasaOS на надежной базе Ubuntu Server для создания домашнего облака или мини-сервера с веб-интерфейсом.
🌐 Источник: https://www.youtube.com/watch?v=eTjIXKtSV94
#Linux #Ubuntu #Server #CasaOS #CLI #Sysadmin #Минигайд #DevOps
Привет, системный инженер!
Устал от сложной настройки базового Linux-сервера, когда тебе нужна простая и красивая панель управления? В этом гайде мы покажем, как быстро развернуть CasaOS на надежной базе Ubuntu Server для создания домашнего облака или мини-сервера с веб-интерфейсом.
🌐 Источник: https://www.youtube.com/watch?v=eTjIXKtSV94
#Linux #Ubuntu #Server #CasaOS #CLI #Sysadmin #Минигайд #DevOps
👍12🔥1👀1
This media is not supported in your browser
VIEW IN TELEGRAM
🌐 Как настроить сеть в Ubuntu вручную за 6 минут
👋 Привет, мастер консоли!
Нужно настроить статический IP в Ubuntu через терминал? Показываю весь процесс от определения сетевого адаптера до настройки DNS. Всё просто и быстро.
🔗 Источник https://www.youtube.com/
#ubuntu #linux #сеть #статическийip #sysadmin #терминал #networking
👋 Привет, мастер консоли!
Нужно настроить статический IP в Ubuntu через терминал? Показываю весь процесс от определения сетевого адаптера до настройки DNS. Всё просто и быстро.
🔗 Источник https://www.youtube.com/
#ubuntu #linux #сеть #статическийip #sysadmin #терминал #networking
👍14
Media is too big
VIEW IN TELEGRAM
🔐 SSH для сисадминов: безопасность и удобство за 17 минут
👋 Привет, защитник серверов!
Админ попросил SSH-ключ? Не знаешь, какой отправить? Разбираемся с созданием ключей, настройкой SSH-сервера, клиента и пробросом портов. Всё пошагово и с примерами.
Полезные ссылки из видео:
- Источник видео
- Пример sshd_config
- Пример ssh config
- Команды для прав на .ssh
#ssh #linux #безопасность #sysadmin #devops #туннелирование #ubuntu
👋 Привет, защитник серверов!
Админ попросил SSH-ключ? Не знаешь, какой отправить? Разбираемся с созданием ключей, настройкой SSH-сервера, клиента и пробросом портов. Всё пошагово и с примерами.
Полезные ссылки из видео:
- Источник видео
- Пример sshd_config
- Пример ssh config
- Команды для прав на .ssh
#ssh #linux #безопасность #sysadmin #devops #туннелирование #ubuntu
👍15🔥1
📚 Где учить Zabbix бесплатно и эффективно?
👋 Эй, повелитель мониторинга!
Вот проверенные источники на русском языке:
1. Текстовый курс по Zabbix от практикующего специалиста
Подробные разборы от преподавателя с реальным опытом.
🔗 https://koobik.net/cources/zabbix
2. Демо курс Zabbix 6 на Stepik
Бесплатный урок из большого платного курса: установка, настройка сервера, подключение агентов.
🔗 https://stepik.org/course/226879/promo
3. Видеокурс "Zabbix с нуля до короля" на YouTube
Полный разбор: автообнаружение, мониторинг Mikrotik, интеграции и многое другое.
🔗 https://www.youtube.com/playlist?list=PLdQohrQ3OmqS2wo9MwFKJtnXcVH5SCOh8
4. Книга "Zabbix 7: мониторинг ИТ-инфраструктуры"
Издательство Packt при поддержке КРОК. Доступна в открытом доступе.
#zabbix #обучение #мониторинг #sysadmin #Linux_err24
👋 Эй, повелитель мониторинга!
Вот проверенные источники на русском языке:
1. Текстовый курс по Zabbix от практикующего специалиста
Подробные разборы от преподавателя с реальным опытом.
🔗 https://koobik.net/cources/zabbix
2. Демо курс Zabbix 6 на Stepik
Бесплатный урок из большого платного курса: установка, настройка сервера, подключение агентов.
🔗 https://stepik.org/course/226879/promo
3. Видеокурс "Zabbix с нуля до короля" на YouTube
Полный разбор: автообнаружение, мониторинг Mikrotik, интеграции и многое другое.
🔗 https://www.youtube.com/playlist?list=PLdQohrQ3OmqS2wo9MwFKJtnXcVH5SCOh8
4. Книга "Zabbix 7: мониторинг ИТ-инфраструктуры"
Издательство Packt при поддержке КРОК. Доступна в открытом доступе.
#zabbix #обучение #мониторинг #sysadmin #Linux_err24
🔥17👍5
Media is too big
VIEW IN TELEGRAM
🌐 Почему каждому IT-специалисту нужно знать сети
👋 Привет, повелитель трафика!
Сети — в каждой вакансии: разработчик, тестировщик, DevOps, сисадмин. Разбираем OSI/ISO, TCP/IP, MAC и IP-адреса, порты, NAT, TCP vs UDP, DNS и траблшутинг. Всё кратко и понятно.
🔗 Полезные ссылки:
- Источник видео
- Сети для самых маленьких
- Комикс про DNS
- Про приватные подсети
#сети #networking #tcp #udp #dns #nat #devops #sysadmin #osiiso #ip
👋 Привет, повелитель трафика!
Сети — в каждой вакансии: разработчик, тестировщик, DevOps, сисадмин. Разбираем OSI/ISO, TCP/IP, MAC и IP-адреса, порты, NAT, TCP vs UDP, DNS и траблшутинг. Всё кратко и понятно.
🔗 Полезные ссылки:
- Источник видео
- Сети для самых маленьких
- Комикс про DNS
- Про приватные подсети
#сети #networking #tcp #udp #dns #nat #devops #sysadmin #osiiso #ip
👍18
🔥 Настройка проброса портов в Incus: проще, чем в Proxmox
👋 Эй, укротитель виртуалок!
Покажу, как добавить веб-интерфейс к Incus и настроить проброс портов. Всё просто и быстро — без танцев с бубном.
✅ Установка веб-интерфейса Incus
Проблема: Нужен удобный GUI для управления виртуалками и контейнерами.
Решение: Установи официальный пакет из репозитория Zabbly.
Вариант 1: Скачать пакет напрямую
Вариант 2: Подключить репозиторий
Настраиваем systemd:
Открываем доступ извне:
Готово! Открывай браузер, заходи на порт 8443 и следуй простой инструкции по добавлению сертификата.
🌐 Проброс портов: в 10 раз проще Proxmox
Проблема: Нужно пробросить порт 80 с хоста в виртуалку, чтобы получить доступ к веб-сервису.
Решение: В Incus это делается за 3 клика или одной командой.
Пример: Пробросим порт 80 с хоста
Через веб-интерфейс:
1. Иди в Networks → incusbr0 → Forwards
2. Жми "Add Forward"
3. Заполняй:
- Listen address:
- Listen port:
- Target address:
- Target port:
Через CLI (одна команда):
Вот и всё! В Proxmox тебе пришлось бы писать правила для iptables и разбираться с NAT вручную.
💡 Почему Incus удобнее для одиночного хоста?
✅ IPAM из коробки — разбираешься за 2 минуты
✅ NAT и DHCP работают сразу, ничего настраивать не нужно
✅ Проброс портов через GUI за 3 клика или одну команду
✅ Никаких iptables — всё просто и наглядно
Если у тебя есть виртуалка с nested virtualization (у многих хостеров она включена) — разворачивай Incus и запускай VM внутри. Получишь полноценный хост виртуализации.
🔗 Официальный репозиторий Incus:
https://github.com/lxc/incus
🔗 Репозиторий Zabbly с пакетами:
https://pkgs.zabbly.com/incus/stable/
#incus #виртуализация #linux #devops #proxmox #sysadmin #Linux_err24
👋 Эй, укротитель виртуалок!
Покажу, как добавить веб-интерфейс к Incus и настроить проброс портов. Всё просто и быстро — без танцев с бубном.
✅ Установка веб-интерфейса Incus
Проблема: Нужен удобный GUI для управления виртуалками и контейнерами.
Решение: Установи официальный пакет из репозитория Zabbly.
Вариант 1: Скачать пакет напрямую
# Качаем готовый .deb пакет
wget https://pkgs.zabbly.com/incus/stable/pool/main/i/incus/incus-ui-canonical_6.17-debian11-202510101456_amd64.deb
# Устанавливаем
dpkg -i incus-ui-canonical_6.17-debian11-202510101456_amd64.deb
Вариант 2: Подключить репозиторий
# Добавляем ключ репозитория
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
# Создаём источник пакетов
sh -c 'cat <<EOF > /etc/apt/sources.list.d/zabbly-incus-lts-6.0.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/lts-6.0
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF'
# Обновляем и ставим UI
apt update
apt install incus-ui-canonical
Настраиваем systemd:
# Редактируем юнит
systemctl edit incus.service
# Добавляем переменную окружения
[Service]
Environment = INCUS_UI=/opt/incus/ui/
# Применяем изменения
systemctl daemon-reload
systemctl restart incus
Открываем доступ извне:
incus config set core.https_address :8443
Готово! Открывай браузер, заходи на порт 8443 и следуй простой инструкции по добавлению сертификата.
🌐 Проброс портов: в 10 раз проще Proxmox
Проблема: Нужно пробросить порт 80 с хоста в виртуалку, чтобы получить доступ к веб-сервису.
Решение: В Incus это делается за 3 клика или одной командой.
Пример: Пробросим порт 80 с хоста
192.168.137.14 в VM ubuntu24 с IP 10.253.116.184.Через веб-интерфейс:
1. Иди в Networks → incusbr0 → Forwards
2. Жми "Add Forward"
3. Заполняй:
- Listen address:
192.168.137.14- Listen port:
80, Protocol: TCP- Target address:
10.253.116.184- Target port:
80Через CLI (одна команда):
incus network forward port add incusbr0 192.168.137.14 TCP 80 10.253.116.184 80
Вот и всё! В Proxmox тебе пришлось бы писать правила для iptables и разбираться с NAT вручную.
💡 Почему Incus удобнее для одиночного хоста?
✅ IPAM из коробки — разбираешься за 2 минуты
✅ NAT и DHCP работают сразу, ничего настраивать не нужно
✅ Проброс портов через GUI за 3 клика или одну команду
✅ Никаких iptables — всё просто и наглядно
Если у тебя есть виртуалка с nested virtualization (у многих хостеров она включена) — разворачивай Incus и запускай VM внутри. Получишь полноценный хост виртуализации.
🔗 Официальный репозиторий Incus:
https://github.com/lxc/incus
🔗 Репозиторий Zabbly с пакетами:
https://pkgs.zabbly.com/incus/stable/
#incus #виртуализация #linux #devops #proxmox #sysadmin #Linux_err24
GitHub
GitHub - lxc/incus: Powerful system container and virtual machine manager
Powerful system container and virtual machine manager - GitHub - lxc/incus: Powerful system container and virtual machine manager
👍7
Media is too big
VIEW IN TELEGRAM
🐧 Linux-администратор: с чего начать и куда расти
👋 Привет, покоритель пингвинов!
Анатолий, ведущий системный администратор с 10-летним опытом, отвечает на главные вопросы: как войти в профессию, нужно ли программировать, стоит ли ставить Linux дома и почему самообразование в IT — это навсегда.
🔗 Источник: https://www.youtube.com/
#linux #sysadmin #карьера #ansible #python #bash #devops
👋 Привет, покоритель пингвинов!
Анатолий, ведущий системный администратор с 10-летним опытом, отвечает на главные вопросы: как войти в профессию, нужно ли программировать, стоит ли ставить Linux дома и почему самообразование в IT — это навсегда.
🔗 Источник: https://www.youtube.com/
#linux #sysadmin #карьера #ansible #python #bash #devops
🔍 Откуда Linux берет пользователей: загляни в /etc/passwd
👋 Привет, покоритель Linux!
Знаешь, где Linux хранит информацию о пользователях? Правильный ответ —
📂 Что такое /etc/passwd?
Проблема: Системе нужно знать, какие пользователи существуют, какие у них UID, домашние директории и оболочки.
Решение: Файл
Структура записи:
Пример:
Разбор полей:
1. username — имя пользователя
2. x — раньше здесь хранился хеш пароля, теперь он в
3. UID — уникальный идентификатор пользователя (0 = root)
4. GID — идентификатор основной группы
5. comment — комментарий (обычно полное имя)
6. home_directory — путь к домашней директории
7. shell — оболочка для входа (например,
🔎 Как посмотреть содержимое?
🛡️ Почему пароли больше не в /etc/passwd?
Раньше хеши паролей хранились прямо в
Решение: Хеши паролей перенесли в
💡 Полезные команды для работы с пользователями
⚡ Быстрая шпаргалка
✅
✅
✅
✅ UID 0 = root, UID 1-999 = системные пользователи, UID >= 1000 = обычные пользователи
🔗 Полезные ссылки:
Документация: https://man7.org/linux/man-pages/man5/passwd.5.html
#linux #sysadmin #passwd #безопасность #Linux_err24
👋 Привет, покоритель Linux!
Знаешь, где Linux хранит информацию о пользователях? Правильный ответ —
/etc/passwd. Разберём, что это за файл и почему он так важен.📂 Что такое /etc/passwd?
Проблема: Системе нужно знать, какие пользователи существуют, какие у них UID, домашние директории и оболочки.
Решение: Файл
/etc/passwd содержит базовую информацию о каждой локальной учетной записи в системе.Структура записи:
username:x:UID:GID:comment:home_directory:shell
Пример:
root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:User One:/home/user1:/bin/bash
nginx:x:33:33:nginx:/var/www:/usr/sbin/nologin
Разбор полей:
1. username — имя пользователя
2. x — раньше здесь хранился хеш пароля, теперь он в
/etc/shadow3. UID — уникальный идентификатор пользователя (0 = root)
4. GID — идентификатор основной группы
5. comment — комментарий (обычно полное имя)
6. home_directory — путь к домашней директории
7. shell — оболочка для входа (например,
/bin/bash или /usr/sbin/nologin для системных пользователей)🔎 Как посмотреть содержимое?
# Полный список пользователей
cat /etc/passwd
# Только имена пользователей
cut -d: -f1 /etc/passwd
# Информация о конкретном пользователе
grep "^user1:" /etc/passwd
# Пользователи с оболочкой bash
grep "/bin/bash$" /etc/passwd
🛡️ Почему пароли больше не в /etc/passwd?
Раньше хеши паролей хранились прямо в
/etc/passwd, но этот файл доступен всем пользователям для чтения. Это создавало угрозу безопасности.Решение: Хеши паролей перенесли в
/etc/shadow, который доступен только root.💡 Полезные команды для работы с пользователями
# Добавить пользователя
useradd newuser
# Изменить оболочку пользователя
usermod -s /bin/zsh user1
# Удалить пользователя
userdel user1
# Посмотреть информацию о текущем пользователе
id
# Посмотреть всех пользователей с UID >= 1000 (обычные пользователи)
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
⚡ Быстрая шпаргалка
✅
/etc/passwd — основной файл учетных записей ✅
/etc/shadow — хранит хеши паролей (только root) ✅
/etc/group — информация о группах ✅ UID 0 = root, UID 1-999 = системные пользователи, UID >= 1000 = обычные пользователи
🔗 Полезные ссылки:
Документация: https://man7.org/linux/man-pages/man5/passwd.5.html
#linux #sysadmin #passwd #безопасность #Linux_err24
👍12🔥1
🏎️ Почему твой Linux грузится вечность? Находим и обезвреживаем
Эй, линуксоид! 👋
Знакома ситуация: отправил сервер в reboot, и можно идти варить кофе, потому что он поднимается мучительно долго? 😤 Часто виноват один-единственный «зависший» сервис, который тянет время всей системы.
В systemd есть встроенный инструмент-детектив, который покажет, кто именно крадет твои секунды.
📌 1. Оцениваем общий масштаб бедствия
Сначала посмотрим, сколько времени ушло на загрузку в целом (ядро + userspace).
Это дает общее понимание: если userspace занимает слишком много времени, значит, проблема в службах.
📌 2. Ищем виновника (команда blame)
Эта команда выводит список всех запущенных юнитов, отсортированных по времени инициализации — от самых медленных к самым быстрым.
В данном примере видно, что NetworkManager-wait-online.service задерживает запуск почти на 4 секунды.
📌 3. Анализируем критический путь
Иногда сервис запускается долго, но не тормозит остальных. Чтобы увидеть дерево зависимостей и понять, какой процесс реально блокирует финиш загрузки, используйте:
Здесь видно, что systemd-networkd-wait-online.service является узким местом в цепочке,.
💡 Совет:
Если вы нашли «тормоза», которые вам не нужны (например, postfix на рабочей станции или ожидание сети там, где это не критично), их можно отключить (systemctl disable) или оптимизировать.
#Linux #Systemd #DevOps #SysAdmin #Performance
Эй, линуксоид! 👋
Знакома ситуация: отправил сервер в reboot, и можно идти варить кофе, потому что он поднимается мучительно долго? 😤 Часто виноват один-единственный «зависший» сервис, который тянет время всей системы.
В systemd есть встроенный инструмент-детектив, который покажет, кто именно крадет твои секунды.
📌 1. Оцениваем общий масштаб бедствия
Сначала посмотрим, сколько времени ушло на загрузку в целом (ядро + userspace).
$ systemd-analyze
Startup finished in 253ms (kernel) + 933ms (initrd) + 6.873s (userspace) = 8.060s
Это дает общее понимание: если userspace занимает слишком много времени, значит, проблема в службах.
📌 2. Ищем виновника (команда blame)
Эта команда выводит список всех запущенных юнитов, отсортированных по времени инициализации — от самых медленных к самым быстрым.
$ systemd-analyze blame
3.811s NetworkManager-wait-online.service
806ms tuned.service
680ms postfix.service
490ms lvm2-monitor.service
...
В данном примере видно, что NetworkManager-wait-online.service задерживает запуск почти на 4 секунды.
📌 3. Анализируем критический путь
Иногда сервис запускается долго, но не тормозит остальных. Чтобы увидеть дерево зависимостей и понять, какой процесс реально блокирует финиш загрузки, используйте:
$ systemd-analyze critical-chain
graphical.target @9.663s
└─multi-user.target @9.661s
└─snapd.seeded.service @9.062s +62ms
└─basic.target @6.336s
└─sockets.target @6.334s
└─snapd.socket @6.316s +16ms
└─sysinit.target @6.281s
└─cloud-init.service @5.361s +905ms
└─systemd-networkd-wait-online.service @3.498s +1.860s
Здесь видно, что systemd-networkd-wait-online.service является узким местом в цепочке,.
💡 Совет:
Если вы нашли «тормоза», которые вам не нужны (например, postfix на рабочей станции или ожидание сети там, где это не критично), их можно отключить (systemctl disable) или оптимизировать.
#Linux #Systemd #DevOps #SysAdmin #Performance
👍10🔥3
🔥 Компактный IP: Смотрим сеть без боли в глазах
EHLO, коллега! 👋
Признайся, сколько раз ты вводил ip addr и тонул в потоке информации о MTU, qdisc и broadcast-адресах, пытаясь найти заветные цифры IP? 😵 Или по старой привычке ставил net-tools, чтобы вернуть любимый, но устаревший ifconfig,?
В современном пакете iproute2 есть скрытая жемчужина — флаг -br (brief), который превращает вывод в аккуратную таблицу. Больше не нужно писать длинные пайплайны с grep и awk.
📌 Команда для читаемого вывода:
Что она делает:
-br (brief) — включает режим краткого вывода.
a (addr) — показывает адреса.
Результат будет выглядеть примерно так:
💡 Почему это круто:
1. Ты сразу видишь статус (
2. Это работает «из коробки» в большинстве современных дистрибутивов (CentOS 8+, Ubuntu 18.04+ и др.).
3. Идеально для твоих скриптов и беглого просмотра состояния сети.
#Linux #Networking #CLI #SysAdmin #DevOps
EHLO, коллега! 👋
Признайся, сколько раз ты вводил ip addr и тонул в потоке информации о MTU, qdisc и broadcast-адресах, пытаясь найти заветные цифры IP? 😵 Или по старой привычке ставил net-tools, чтобы вернуть любимый, но устаревший ifconfig,?
В современном пакете iproute2 есть скрытая жемчужина — флаг -br (brief), который превращает вывод в аккуратную таблицу. Больше не нужно писать длинные пайплайны с grep и awk.
📌 Команда для читаемого вывода:
ip -br a
Что она делает:
-br (brief) — включает режим краткого вывода.
a (addr) — показывает адреса.
Результат будет выглядеть примерно так:
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.168.1.10/24 fe80::a00:27ff:fe0d:d90c/64
💡 Почему это круто:
1. Ты сразу видишь статус (
UP/DOWN), имя интерфейса и IP.2. Это работает «из коробки» в большинстве современных дистрибутивов (CentOS 8+, Ubuntu 18.04+ и др.).
3. Идеально для твоих скриптов и беглого просмотра состояния сети.
#Linux #Networking #CLI #SysAdmin #DevOps
👍25
💾 UUID или /dev/sda? Почему твой сервер не грузится
Привет, суперпользователь! 👋
Знакомая ситуация: подключил новый диск, перезагрузил сервер, а он «встал»? Скорее всего, имена устройств сместились (например, sda стал sdb), и система не нашла корневой раздел по старому пути,.
Чтобы спать спокойно, используй в /etc/fstab не имена устройств, а UUID (универсальный уникальный идентификатор). Он остается неизменным, даже если ты переставишь диски местами,.
📌 Как узнать UUID всех разделов?
Используй команду blkid (Block ID). Она покажет атрибуты всех блочных устройств.
Что мы видим:
UUID="..." — тот самый идентификатор, который нужно копировать в fstab.
TYPE="..." — тип файловой системы (ext4, swap, vfat).
💡 Лайфхак:
Если нужно узнать данные только для конкретного диска, просто укажи его имя: blkid /dev/sda1.
#Linux #SysAdmin #Storage #CLI #Fstab
Привет, суперпользователь! 👋
Знакомая ситуация: подключил новый диск, перезагрузил сервер, а он «встал»? Скорее всего, имена устройств сместились (например, sda стал sdb), и система не нашла корневой раздел по старому пути,.
Чтобы спать спокойно, используй в /etc/fstab не имена устройств, а UUID (универсальный уникальный идентификатор). Он остается неизменным, даже если ты переставишь диски местами,.
📌 Как узнать UUID всех разделов?
Используй команду blkid (Block ID). Она покажет атрибуты всех блочных устройств.
# blkid
/dev/sdf2: UUID="b600fe63-d2e9-461c-a5cd-d3b373a5e1d2" TYPE="ext4"
/dev/sda1: UUID="17f12d53-c3d7-4ab3-943e-a0a72366c9fa" TYPE="ext4" PARTUUID="c9a5ebb0-01"
/dev/sda5: UUID="b600fe63-d2e9-461c-a5cd-d3b373a5e1d2" TYPE="swap" PARTUUID="c9a5ebb0-05"
/dev/sde1: UUID="4859-EFEA" TYPE="vfat"
Что мы видим:
UUID="..." — тот самый идентификатор, который нужно копировать в fstab.
TYPE="..." — тип файловой системы (ext4, swap, vfat).
💡 Лайфхак:
Если нужно узнать данные только для конкретного диска, просто укажи его имя: blkid /dev/sda1.
#Linux #SysAdmin #Storage #CLI #Fstab
👍17
🔥 Забудь про vim: Добавляем источники apt в одну строку
root@localhost:~#
Часто нужно добавить новый репозиторий в систему (например, при начальной настройке сервера), но открывать текстовый редактор долго и неудобно для скриптов. Обычное перенаправление вывода через sudo может вызвать ошибку «Permission denied».
Есть элегантный способ добавлять строки текста в файл, например, имя репозитория ПО в файл источников, не открывая его для редактирования. Используй синтаксис с командой tee.
📌 Команда для добавления репозитория (на примере Nginx):
Разбор полетов:
echo — передает строку текста в канал (pipe).
lsb_release -cs — автоматически подставляет кодовое имя твоего дистрибутива.
sudo tee — принимает вывод и записывает его в файл с правами суперпользователя, обходя ограничения оболочки.
💡 Совет:
Используй флаг -a с командой tee (например, sudo tee -a), если хочешь добавить строку в конец файла, а не перезаписать его полностью.
#Linux #CLI #SysAdmin #DevOps #Apt
root@localhost:~#
Часто нужно добавить новый репозиторий в систему (например, при начальной настройке сервера), но открывать текстовый редактор долго и неудобно для скриптов. Обычное перенаправление вывода через sudo может вызвать ошибку «Permission denied».
Есть элегантный способ добавлять строки текста в файл, например, имя репозитория ПО в файл источников, не открывая его для редактирования. Используй синтаксис с командой tee.
📌 Команда для добавления репозитория (на примере Nginx):
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Разбор полетов:
echo — передает строку текста в канал (pipe).
lsb_release -cs — автоматически подставляет кодовое имя твоего дистрибутива.
sudo tee — принимает вывод и записывает его в файл с правами суперпользователя, обходя ограничения оболочки.
💡 Совет:
Используй флаг -a с командой tee (например, sudo tee -a), если хочешь добавить строку в конец файла, а не перезаписать его полностью.
#Linux #CLI #SysAdmin #DevOps #Apt
👍8
🔥 Забудь про 500 ошибку: Тест конфига Nginx перед запуском
echo "Привет, инженер!"
Знакомая ситуация: поправил конфиг, перезапустил службу, а сервер «лежит» из-за пропущенной точки с запятой? Чтобы избежать страданий и простоя продакшна, всегда проверяй исправность конфигурационных файлов перед перезапуском.
У многих популярных программ есть встроенные средства для такой проверки.
📌 Команда для проверки конфигурации Nginx:
Что происходит:
Если в файле нет синтаксических ошибок, команда просто завершится или выведет сообщение об успехе. Если ошибки есть, она сообщит о них, указав строку с проблемой,.
💡 Совет:
Используй systemctl reload вместо restart, когда это возможно. Reload (перезагрузка конфигурации) обычно безопаснее, так как процесс перезапускается только после успешной проверки конфигурации,.
Проверяй конфиг до того, как это сделают пользователи! 😉
#Nginx #Linux #SysAdmin #DevOps #CLI
echo "Привет, инженер!"
Знакомая ситуация: поправил конфиг, перезапустил службу, а сервер «лежит» из-за пропущенной точки с запятой? Чтобы избежать страданий и простоя продакшна, всегда проверяй исправность конфигурационных файлов перед перезапуском.
У многих популярных программ есть встроенные средства для такой проверки.
📌 Команда для проверки конфигурации Nginx:
nginx -t
Что происходит:
Если в файле нет синтаксических ошибок, команда просто завершится или выведет сообщение об успехе. Если ошибки есть, она сообщит о них, указав строку с проблемой,.
💡 Совет:
Используй systemctl reload вместо restart, когда это возможно. Reload (перезагрузка конфигурации) обычно безопаснее, так как процесс перезапускается только после успешной проверки конфигурации,.
Проверяй конфиг до того, как это сделают пользователи! 😉
#Nginx #Linux #SysAdmin #DevOps #CLI
👍14👀3👎1
📊 Вот как настоящие админы видят, что происходит на сервере
Сервер зависает, CPU зашкаливает, память утекает — а ты не знаешь, в чём проблема.
Проблема: top, htop, df разбросаны по разным окнам. Решение: один bash-скрипт, который покажет всё сразу.
🔹 System Monitor
https://github.com/elliotsecops/System-Monitor
Bash-скрипт для мониторинга Linux:
• Отображает CPU, память и диск в реальном времени (обновляется каждые 5 сек)
• Поддерживает несколько точек монтирования диска
• Настраивается через конфиг или аргументы командной строки
• Graceful shutdown (Ctrl+C) без зависания
Запусти на своём сервере — увидишь, что там реально происходит.
#linux #мониторинг #bash #sysadmin #devops
Сервер зависает, CPU зашкаливает, память утекает — а ты не знаешь, в чём проблема.
Проблема: top, htop, df разбросаны по разным окнам. Решение: один bash-скрипт, который покажет всё сразу.
🔹 System Monitor
https://github.com/elliotsecops/System-Monitor
Bash-скрипт для мониторинга Linux:
• Отображает CPU, память и диск в реальном времени (обновляется каждые 5 сек)
• Поддерживает несколько точек монтирования диска
• Настраивается через конфиг или аргументы командной строки
• Graceful shutdown (Ctrl+C) без зависания
Запусти на своём сервере — увидишь, что там реально происходит.
#linux #мониторинг #bash #sysadmin #devops
👍6
💾 Данные пропадут завтра — два скрипта спасут их сегодня
Диск упадёт когда угодно. У тебя есть backup?
Два скрипта, которые админы используют для автоматического резервного копирования.
🔹 rsync-backup (Python)
https://github.com/hkbakke/rsync-backup
Умный backup через rsync:
• Жёсткие ссылки — неизменённые файлы не дублируются
• Автоматическая проверка MD5
• Снимки: daily, weekly, monthly, yearly
• Email отчёты о статусе
• Централизованный backup с серверов
🔹 RSync Backup Script v1 (Bash)
https://github.com/Aman7123/RSync-Backup-Script-v1
Простой backup в cron:
• Автоматические weekly и monthly папки
• Удаление старых backup'ов
• Логирование каждого backup'а
• Настраивается через config-файл
• Идеален для daily cron
Запусти один из них сегодня — спаси свои данные.
#linux #backup #rsync #devops #sysadmin #безопасность
Диск упадёт когда угодно. У тебя есть backup?
Два скрипта, которые админы используют для автоматического резервного копирования.
🔹 rsync-backup (Python)
https://github.com/hkbakke/rsync-backup
Умный backup через rsync:
• Жёсткие ссылки — неизменённые файлы не дублируются
• Автоматическая проверка MD5
• Снимки: daily, weekly, monthly, yearly
• Email отчёты о статусе
• Централизованный backup с серверов
🔹 RSync Backup Script v1 (Bash)
https://github.com/Aman7123/RSync-Backup-Script-v1
Простой backup в cron:
• Автоматические weekly и monthly папки
• Удаление старых backup'ов
• Логирование каждого backup'а
• Настраивается через config-файл
• Идеален для daily cron
Запусти один из них сегодня — спаси свои данные.
#linux #backup #rsync #devops #sysadmin #безопасность
👍6👀1
🔤 Регулярки мозг не атрофируют
ChatGPT решает задачи → когнитивный спад. Освой regex самостоятельно!
🔹 RegexLearn (RU)
https://regexlearn.com/ru
• Теория + практика
• Русский перевод
• Шпаргалка
Изучал Asterisk? Без regex никуда. База для extensions.conf.
#linux #regex #bash #sysadmin
ChatGPT решает задачи → когнитивный спад. Освой regex самостоятельно!
🔹 RegexLearn (RU)
https://regexlearn.com/ru
• Теория + практика
• Русский перевод
• Шпаргалка
Изучал Asterisk? Без regex никуда. База для extensions.conf.
#linux #regex #bash #sysadmin
Regexlearn
Regex Learn - шаг за шагом, от нуля до продвинутого уровня.
Изучайте Regex в интерактивном режиме, практикуйтесь на своём уровне, протестируйте и поделитесь своими собственными Regex с другими участниками.
📂 Хватит гуглить синтаксис! Вся база iptables в одной шпаргалке
👉 Рубрика: #шпаргалка@LinuxSkill
#iptables #linux #sysadmin #devops #security #firewall #netfilter #networking #кибербезопасность #шпаргалка #linuxadmin
👉 Рубрика: #шпаргалка@LinuxSkill
#iptables #linux #sysadmin #devops #security #firewall #netfilter #networking #кибербезопасность #шпаргалка #linuxadmin
Telegraph
🛑 Хватит гуглить синтаксис! Вся база iptables в одной шпаргалке
iptables — это база безопасности Linux, но запомнить все ключи и таблицы с первого раза почти невозможно. Сохраняй эту шпаргалку, чтобы не искать команды каждый раз, когда нужно пробросить порт или закрыть доступ. 1. Основные понятия и структура iptables —…
👍4🔥2