Linux Skill - Освой Linux c нуля до DevOps – Telegram
Linux Skill - Освой Linux c нуля до DevOps
11.3K subscribers
68 photos
103 videos
500 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
📁 Перестань терять файлы! Система каталогов за 5 минут

Эй, архитектор данных!
Устал искать файлы по всему серверу? Покажу, как создать чёткую структуру каталогов и забыть про хаос навсегда. 👆
____________________

Дополнительный материал:
🧠 - Мониторинг и логирование: Установка и настройка системы мониторинга (примеры: Nagios, Prometheus)
🧠 - Мониторинг и логирование: Логирование событий и анализ логов
🧠 - Облачные технологии и DevOps: Введение в облака. Примеры: AWS

#инфографика@LinuxSkill #Linux@LinuxSkill #mkdir@LinuxSkill
👍4🔥3
Устал от sudo? Одна строчка решит проблему навсегда

Привет, повелитель root-прав!
Бесит, когда sudo каждые 15 минут требует пароль заново? Особенно когда работаешь с длинными скриптами или деплоишь проекты. Покажу, как настроить кэширование один раз и забыть про эту боль. 👆
____________________

Дополнительный материал:
🧠 - Облачные технологии и DevOps: Введение в облака. Примеры: Azure
🧠 - Облачные технологии и DevOps: Конфигурация и автоматизация облачных ресурсов
🧠 - Безопасность и сетевые аспекты: Основы безопасности Linux-сервера

#инфографика@LinuxSkill #Linux@LinuxSkill
👍15👎3
Вопрос №46 из теста Linux Essentials Certification: Which command displays the list of groups to which a user belongs? / Какая команда отображает список групп, к которым принадлежит пользователь?
Anonymous Quiz
43%
lsgroup
20%
whoami
7%
who
31%
id
👍9👀1
tail -n 20 test.txt
👀6🔥5
tail -n 20 test.txt

Дублирую, команду. Для вопроса
🛡️ Защита системы: как разрешить запуск бинарника только службе systemd

Привет! Сегодня поговорим о том, как надёжно ограничить запуск подозрительных или потенциально небезопасных программ в Linux.

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

🔹 SELinux
Создай отдельный SELinux-домен для бинарника. Только init_t сможет инициировать его запуск:
allow init_t myapp_t:process { transition };
type_transition init_t myapp_exec_t:process myapp_t;

Не забудь правильно промаркировать файл через chcon!

🔹 Изменение прав доступа
Можно убрать права на исполнение:
chmod 644 /path/to/binary

А запускать его через:
/lib64/ld-linux-x86-64.so.2 /path/to/binary

Но с потерей некоторых capabilities — учитывай это.

🔹 Контейнеризация через Podman
Запускай приложение в контейнере, ограничивая его окружение:
podman run --rm -p 80:80 your_container_image

Или с генерацией сервис-файлов через podman generate systemd.

Так ты минимизируешь риски и защищаешь систему от случайного или несанкционированного запуска.

🌐 Источник: unix.stackexchange.com

________________

Дополнительный материал:
🧠 - GRUB: Командный мостик космического корабля вашего ПК
🧠 - Утренний будильник для вашего ПК: Включение по расписанию с UEFI
🧠 - GRUB Menu Reveal: Как пригласить скрытое меню на ужин

#stackoverflow #Linux #Systemd #SELinux #Безопасность #Fedora #Администрирование #Bash #DevOps
👍9👎1
🚨 НИКОГДА не редактируй bash-скрипт во время его выполнения!

Привет, повелитель терминала! 👋

Знаешь, что может превратить безобидный скрипт в оружие массового уничтожения данных? Всего одно неосторожное редактирование.

💣 Смотри, какая бомба:


#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"


Выглядит безопасно? Команда rm закомментирована, скрипт просто ждёт 30 секунд. Но стоит тебе отредактировать его во время выполнения...

Что происходит:
1. Запускаешь скрипт → bash начинает читать его частями
2. Меняешь sleep 30 на sleep 3 в редакторе
3. Сохраняешь файл → смещение байтов сбивается
4. BOOM! → bash читает rm -rf / вместо комментария

🔍 Доказательство через strace:


# Открытие скрипта
openat(AT_FDCWD, "delay.sh", O_RDONLY) = 3

# Парсинг первой строчки (до 80 символов)
read(3, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 80) = 64

# Возврат к началу
lseek(3, 0, SEEK_SET) = 0

# Переключение на на файловый дескриптор 255
dup2(3, 255) = 255

# Чтение 64-байтового куска файла, чтобы получить команду
read(255, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 64) = 64

# Поместить курсор обратно в конец команды, которую мы собираемся выполнить
# Offset 21 is the `#`
lseek(255, -43, SEEK_CUR) = 21

# Приостановка выполнения, уход в sleep
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2072

# До возвращения wait4 файл редактируется с `30` на `3`

# Чтение 64-байтового куска файла, чтобы получить следующую команду
# В этом демо я заменил опасную команду на echo
read(255, "echo \"Don't execute me\"\necho \"Ti"..., 64) = 42

# Bash решает выполнить оба echo одновременно без нового чтения
# Очевидно, что-то идёт не так
write(1, "Don't execute me\n", 17) = 17
write(1, "Time's up!\n", 11) = 11

# Чтение следующего фрагмента и обнаружение конца файла
read(255, "", 64) = 0


🛡️ Как защититься:
Копируй скрипт перед редактированием
Останови выполнение перед правками
Используй блокировки файлов
Тестируй на копиях важных скриптов

💡 Вывод
Bash читает скрипт блоками по 64 байта и отслеживает позицию. Удаление символов сдвигает содержимое, но не позицию чтения!

🌐 Источник: https://habr.com/ru/articles/500832/
________________

Дополнительный материал:
🧠 - GRUB Files Unveiled: Путеводитель по конфигурационным файлам
🧠 - Как настроить автоматическое включение вашего компьютера с помощью RTC
🧠 - GRUB Rescue Ops: Как оживить систему, замершую на grub>

#Linux_Mastery #Linux #Bash #Security #DevOps #SysAdmin #ScriptSafety
👍24
🔐 Забыл заблокировать ПК? Твой телефон сделает это за тебя

Привет, мастер безопасности!

Знакомо? Отошёл за кофе, а коллега уже изучает твой браузер. Сейчас покажу, как превратить твой смартфон в умный ключ — Linux будет автоматически блокироваться, когда ты уходишь.

📌 Что понадобится:
- Bluetooth на компе и телефоне
- 5 минут времени
- Bash-скрипт ниже

🔧 Настройка за 3 шага:

1. Найди MAC-адрес телефона:
# Включи Bluetooth на телефоне и запусти
hcitool scan


2. Создай скрипт автоблокировки:
#!/bin/bash
# MAC-адрес твоего телефона
DEVICE="AA:BB:CC:DD:EE:FF"
# Имя устройства из hcitool scan
DEV_NAME="My Phone"
# Интервал проверки (сек)
INTERVAL=5

# PID xscreensaver
XSS_PID=

# Запускаем xscreensaver, если не запущен
pgrep xscreensaver
if [ $? -eq 1 ]; then
echo "Starting xscreensaver..."
xscreensaver &
fi

# Основной цикл проверки
while [ 1 ]; do
opt=$(hcitool name $DEVICE)
if [ "$opt" = "$DEV_NAME" ]; then
echo "Device '$opt' found"
if [ -n "$XSS_PID" ]; then
echo "Killing $XSS_PID"
kill $XSS_PID
XSS_PID=
fi
else
echo "Can't find device $DEVICE ($DEV_NAME); locking!"
xscreensaver-command -lock
XSS_PID=$!
fi
sleep $INTERVAL
done


3. Запусти и забудь:
chmod +x bluetooth-lock.sh
./bluetooth-lock.sh &


💡 Как это работает:
Скрипт каждые 5 секунд проверяет, видит ли компьютер твой телефон по Bluetooth. Ушёл дальше 10 метров — экран автоматически блокируется. Вернулся — всё как было.

____________________

Дополнительный материал:
🧠 - GRUB Boot Mastery: Изучаем искусство восстановления
🧠 - Как настроить ночное выключение вашего компьютера с помощью cron
🧠 - GRUB Makeover: Как дать новую жизнь конфигурации загрузчика

#Linux_Mastery #Linux #Security #Bash #Bluetooth #Desktop #Automation
👍24🔥10👀1
🔥 HTTPS в локалке: от красного замка к зелёному за 10 команд

Привет, укротитель сертификатов!

Браузер постоянно ругается на самоподписанный сертификат? Надоело кликать "Продолжить несмотря на риск"? Создаём свой CA (Certificate Authority - центр сертификации) и забываем про предупреждения навсегда!

🔧 Создаём свой CA:
# mkdir ~/tls && cd ~/tls
# openssl ecparam -out myCA.key -name prime256v1 -genkey
# openssl req -x509 -new -nodes -key myCA.key -sha256 -days 9999 -out myCA.crt


📝 Генерируем сертификат для сервера:
# openssl genrsa -out zabbix.internal.key 2048
# openssl req -new -key zabbix.internal.key -out zabbix.internal.csr


⚙️ Конфиг с альтернативными именами:
# mcedit zabbix.internal.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 172.30.245.222
DNS.1 = zabbix.internal


🚀 Подписываем сертификат:
# openssl x509 -req -in zabbix.internal.csr -CA myCA.crt -CAkey myCA.key \
-CAcreateserial -out zabbix.internal.crt -days 9999 -sha256 -extfile zabbix.internal.ext


🔧 Настройка Nginx:
# mkdir /etc/nginx/certs
# cp zabbix.internal.crt /etc/nginx/certs/.
# cp zabbix.internal.key /etc/nginx/certs/.
# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048


listen     443 http2 ssl;
server_name zabbix.internal 172.30.245.222;
ssl_certificate /etc/nginx/certs/zabbix.internal.crt;
ssl_certificate_key /etc/nginx/certs/zabbix.internal.key;
ssl_dhparam /etc/ssl/certs/dhparam.pem;


💡 Финальный штрих:
Добавь myCA.crt в доверенные корневые сертификаты на клиенте. Всё! Зелёный замок на 27 лет!
____________________

Дополнительный материал:
🧠 - Настройка Ctrl+Alt+Delete в Linux: Перезагрузка или Выключение?
🧠 - GRUB's Got Talent": За кулисами самотестирования компьютера
🧠 - Linux на ночь: Как уложить систему спать с помощью systemctl

#Linux_Mastery #ssl #nginx #https #certificates #Linux #security
👍21
Media is too big
VIEW IN TELEGRAM
🔥 Сайт упал в пиковую нагрузку? Решение за 8 минут

Привет, архитектор надёжности!

Помнишь тот момент, когда твой сервис лёг под нагрузкой в самый важный момент? Антон Павленко показывает, как настроить балансировку NGINX и забыть про такие проблемы навсегда.

📹 Что в видео (таймкоды):
00:01 — Зачем нужна балансировка
00:55 — Настройка с нуля
01:35 — Продвинутые настройки upstream
03:15 — Управление отказами
04:23 — Методы балансировки
05:55 — Тестирование на Go
07:29 — Обработка HTTP-ошибок

Всё! Теперь твой сервис выдержит любую нагрузку и останется доступным даже при отказе серверов.

🌐 Источник: YouTube - Антон Павленко
____________________

Дополнительный материал:
🧠 - GRUB Reboot: Как пересобрать конфигурацию после тюнинга?
🧠 - Путеводитель по командам выключения и перезагрузки в Linux: halt, reboot и poweroff
🧠 - GRUB Minimalism: Искусство минимальной конфигурации

#Linux_youtube #nginx #loadbalancing #DevOps #highload #video #upstream
👍14
А у тебя тоже youtube заработал без vpn и прочего на домашнем интернете? Не понятно это баг или фича
Anonymous Poll
22%
Да
78%
Нет
Вопрос из теста Linux Essentials Certification: Which of the following commands is used to lookup the current IP address of a system? / Какая из следующих команд используется для просмотра текущего IP-адреса системы?
Anonymous Quiz
23%
ipconfig
65%
ifconfig
5%
sysinfo | grep ipaddress
2%
less /proc/net/ipconfig
5%
showip
👍3
💥 Забудь про медленный SCP: NFS-сервер одной командой

Привет, скоростной гонщик!

Копируешь терабайты через SCP и ждёшь часами? NFS быстрее в разы! Держи готовую инструкцию для копипаста — настройка временной шары за 5 минут.

🖥️ На сервере:

Подготовка:

# mkdir /mnt/nfs
# chown nobody:nogroup /mnt/nfs
# apt install nfs-kernel-server


Настройка экспорта:

# nano /etc/exports
# Для одного IP:
/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)

# Для подсети:
/mnt/nfs 10.20.1.56/24(rw,all_squash,no_subtree_check,crossmnt)

# Для нескольких IP:
/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)
/mnt/nfs 10.20.1.52(rw,all_squash,no_subtree_check,crossmnt)


Запуск:

# systemctl restart nfs-server


💻 На клиенте:


# apt install nfs-common

# Проверка доступности:
# showmount -e 10.20.1.36

# Монтирование:
# mkdir /mnt/nfs
# mount 10.20.1.36:/mnt/nfs /mnt/nfs

# Проверка версии (должна быть v4):
# mount -t nfs4


🚀 Автомонтирование:

# echo "10.20.1.36:/mnt/nfs /mnt/nfs nfs4 defaults 0 0" >> /etc/fstab


💡 Порт 2049/tcp должен быть открыт!

Теперь копирование файлов летает! По скорости: NFS > HTTP > SMB > SSH > SCP.

________________

Дополнительный материал:
🧠 - Временная спираль Linux: От SysV к Systemd
🧠 - GRUB Rescue Mission: Как восстановить систему из grub rescue>
🧠 - Systemd для начинающих: Первые шаги к мастерству в Linux

#Linux_Mastery #nfs #network #storage #Linux #performance #filesharing
👍16
Media is too big
VIEW IN TELEGRAM
Linux грузится минуту? Ускоряем до 10 секунд!

Привет, нетерпеливый админ!

Устал ждать загрузку системы? Автор показывает, как сократить время старта с 60+ секунд до 10! Реальный кейс на Debian 12.

📹 Что узнаешь (таймкоды):

00:00 — Введение
00:57 — Анализ проблем загрузки
02:57systemd-analyze в действии
03:55 — Находим самые медленные службы
04:50 — Оптимизация монтирования разделов
06:47 — Отключаем ненужные службы
08:45 — Решаем проблему с ядром и swap
12:38 — Обновление системы
14:37 — Работа с NTFS разделами
18:31 — Результаты: с 37 до 6 секунд!
21:28 — Графический анализ загрузки

Смотри видео и ускоряй свою систему прямо сейчас!

🌐 Источник: https://youtu.be/sLZ8kYfp2lQ

#Linux_youtube #systemd #optimization #boot #Linux #performance #video
👍18🔥6
🎯 Nginx выдаёт домены по IP? Решение, которое работает

Привет, страж безопасности!

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

📌 Стандартная заглушка для HTTP:
server {
listen 80 default_server;
server_name _;
return 404;
}


С HTTP всё просто. А вот с HTTPS начинаются танцы с бубном...

🔧 Проблема HTTPS:
Без сертификата Nginx использует сертификат первого виртуального хоста. Пользователь видит:
- Предупреждение о несоответствии домена
- Реальное имя твоего сайта в сертификате 😱

💭 Старое решение — сертификат-пустышка:
# Генерируем самоподписанный сертификат
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/nginx/certs/nginx.key \
-out /etc/nginx/certs/nginx.crt


server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /etc/nginx/certs/nginx.crt;
ssl_certificate_key /etc/nginx/certs/nginx.key;
return 404;
}


Домены скрыты, но предупреждение о сертификате остаётся...

🚀 Новое решение — ssl_reject_handshake:
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_reject_handshake on;
return 404;
}


💡 Что происходит:
ssl_reject_handshake on отклоняет SSL-соединение на уровне handshake, если запрос не соответствует server_name. Результат:
- Никаких предупреждений о сертификатах
- Мгновенная ошибка соединения
- Полная анонимность виртуальных хостов

Теперь любопытные не узнают, какие сайты крутятся на твоём сервере!
____________________

Дополнительный материал:
🧠 - Linux для продвинутых: Как проверить, использует ли ваша система systemd?
🧠 - Linux Deep Dive: PID 1 и его детище - systemd
🧠 - Linux Command Mastery: Управление службами с помощью systemd

#Linux_Mastery #nginx #webserver #security #ssl #DevOps #angie
👍19👀4
🚨 Два устройства — один IP: как найти виновника за минуту

Привет, сетевой шериф!

Вопрос:
В офисе периодически пропадает сеть. Подозреваю конфликт ip-адресов. Как проверить?

Ответ:
Используй arping — он покажет MAC-адреса всех устройств с одинаковым ip!

Проверяем ip:
sudo arping -I wlan2 -c 4 192.168.1.91


Всё в порядке (один MAC):
42 bytes from 9c:ef:d5:fe:01:7c (192.168.1.91): index=0
42 bytes from 9c:ef:d5:fe:01:7c (192.168.1.91): index=1


Конфликт обнаружен (разные MAC):
42 bytes from 9c:ef:d5:fe:01:7c (192.168.1.91): index=0
42 bytes from 2F:EF:D5:FE:8F:20 (192.168.1.91): index=1


Два разных MAC-адреса = два устройства с одним ip!

💡 Почему arping лучше ping?
- ping использует ICMP (часто блокируется)
- arping работает через ARP (нельзя заблокировать)
- Показывает реальные MAC-адреса

🚀 Бонус — сканируем всю сеть:
nmap -sn 192.168.43.0/24 | grep 'Nmap scan report' | cut -d' ' -f5,6


🔧 ARP в реальном времени:
sudo tcpdump -pi eth1 arp


Теперь ты знаешь, как поймать нарушителя! Конфликты чаще возникают при ручной настройке ip — используй DHCP.
____________________

Дополнительный материал:
🧠 - Linux Systemd: Искусство мониторинга служб
🧠 - Linux Systemd: Мастер-класс по управлению службами
🧠 - Linux Systemd: Как стать магистром служб

#q_a #network #arp #arping #Linux #troubleshooting #QandA
👍15
Media is too big
VIEW IN TELEGRAM
🚨 Забываешь делать бэкапы? Linux сделает их за тебя

Привет, хранитель данных!

Константин Герасименко показывает гениальное решение: подключил флешку — бэкап начался автоматически. Никаких кликов, никаких скриптов вручную!

📹 План действий (таймкоды):

00:04 — Введение в автоматизацию
01:45 — Как работает udev в Linux
02:45 — Определяем Vendor ID флешки
05:29 — Пишем скрипт резервного копирования
08:41 — Настраиваем rsync для умного копирования
10:36 — Тестируем автоматический бэкап
13:27 — Итоги и рекомендации

🚀 Результат:
Воткнул флешку → файлы скопировались → вытащил флешку. Всё!

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

🌐 Источник: YouTube - Константин Герасименко
____________________

Дополнительный материал:
🧠 - Настройка команды useradd для создания системных учетных записей в Linux
🧠 - Настройка персонализированных каталогов в Linux: Управление пользовательскими директориями
🧠 - Создание пользовательских и системных групп в Linux: Пошаговое руководство

#Linux_youtube #backup #udev #rsync #automation #Linux #usb #video
👍20🔥2
Вопрос из теста Linux Essentials Certification: Which of the following directories is often used to store log files? / Какая из следующих директорий часто используется для хранения файлов журналов (логов)?
Anonymous Quiz
81%
/var
4%
/usr
3%
/dev
11%
/temp
1%
/home
👍5