Linux Skill - Освой Linux c нуля до DevOps
10.7K subscribers
59 photos
76 videos
436 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

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

РКН https://vk.cc/cMUwm4
Download Telegram
🚀 LinPEAS: Твой помощник в поиске уязвимостей на Linux

Привет, отдыхающий линукс-мастер! Сегодня я расскажу тебе о LinPEAS — мощном инструменте для повышения привилегий на Linux. Этот скрипт, созданный пентестером Карлсоном, поможет тебе найти уязвимости и слабые места в системе. Давай разберемся, как он работает!

Что такое LinPEAS?

LinPEAS (Linux Privilege Escalation Awesome Script) — это скрипт на sh, который сканирует Linux машину на наличие уязвимостей и ошибок в конфигурации. Он поможет выявить файлы с suid битами и другие потенциальные угрозы.

Преимущества LinPEAS:

- Самодостаточность: Не требует root-доступа и не пишет на диск.
- Легкость запуска: Не требует установки, достаточно одной команды.
- Широкие возможности: Поддерживает различные ключи запуска для более детального анализа.

Как запустить LinPEAS?

1. Запуск через curl:
   curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh


2. Запуск через Python:
   python -c "import urllib.request; urllib.request.urlretrieve('https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh', 'linpeas.sh')"
python3 -c "import urllib.request; urllib.request.urlretrieve('https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh', 'linpeas.sh')"


LinPEAS — это отличный инструмент для проверки безопасности твоих серверов. Рекомендую попробовать его на своих проектах и найти интересные моменты.

🌐 Страница проекта на GitHub https://github.com/peass-ng/PEASS-ng

📩 Завтра:
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Резервное копирование и восстановление в Debian: защита данных с уверенностью
🧠 - iptables или nftables: что выбрать для управления сетевыми правилами?
🧠 - Настраиваем базовые правила файрвола: защити свой сервер от угроз

#Linux_Mastery @LinuxSkill
👍14
🚀 Топ команды для DevOps: Что спрашивают на собеседованиях?

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

🔧 Git

git init                        # Инициализация нового репозитория
git clone <url> # Клонирование репозитория
git add <file> # Добавление файла к коммиту
git commit -m "сообщение" # Создание коммита
git push # Отправка изменений
git pull # Получение изменений
git branch # Список веток
git checkout <branch> # Переключение ветки


🐳 Docker

docker build -t <image_name> .         # Создание образа
docker run -d -p 80:80 <image_name> # Запуск контейнера
docker ps # Список контейнеров
docker stop <container_id> # Остановка контейнера
docker rm <container_id> # Удаление контейнера
docker images # Список образов
docker rmi <image_id> # Удаление образа


☸️ Kubernetes (kubectl)

kubectl get pods                         # Список подов
kubectl get services # Список сервисов
kubectl describe pod <pod_name> # Информация о поде
kubectl logs <pod_name> # Логи пода
kubectl apply -f <file.yaml> # Применение конфигурации
kubectl delete pod <pod_name> # Удаление пода
kubectl exec -it <pod_name> -- /bin/bash # Подключение к поду


🤖 Ansible

ansible-playbook <playbook.yml>                   # Запуск плейбука
ansible <host> -m ping # Проверка хостов
ansible <host> -m command -a 'uptime' # Выполнение команды
ansible-galaxy install <role> # Установка роли


🌍 Terraform

terraform init       # Инициализация
terraform plan # Планирование изменений
terraform apply # Применение изменений
terraform destroy # Удаление ресурсов


🐧 Linux (bash)

ls                                # Список файлов
cd <directory> # Переход в каталог
pwd # Текущий каталог
cp <source> <destination> # Копирование
mv <source> <destination> # Перемещение
rm <file> # Удаление
mkdir <directory> # Создание каталога
grep <pattern> <file> # Поиск шаблона
find <directory> -name <pattern> # Поиск файлов
chmod <permissions> <file> # Изменение прав
chown <user>:<group> <file> # Изменение владельца
top # Мониторинг процессов
ps aux # Список процессов


🔄 CI/CD (GitLab, Jenkins, GitHub Actions)

GitLab CI/CD:
.gitlab-ci.yml
gitlab-runner register


Jenkins:
jenkins-cli.jar
jenkins-jobs create <job_name>


GitHub Actions:
.github/workflows/<workflow>.yml
workflow_dispatch


📌 Эти команды охватывают управление версиями, контейнеризацию, оркестрацию, автоматизацию и администрирование.
Изучи, запомни, сохрани — и чувствуй себя уверенно на любом собесе!


📩 Завтра: Укроти символические ссылки с namei -n!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Секреты Zabbix: Мониторинг веб-серверов без проблем
🧠 - Мониторинг серверов с помощью Zabbix: Настройка мониторинга SMART-дисков через Zabbix
🧠 - Измени группу файлов за секунды с помощью chgrp

#Linux_Mastery @LinuxSkill #devops #GitHub #Jenkins #GitLab #bash #Kubernetes #Docker #Git
👍17🔥3
🔗 Укроти символические ссылки с namei -n!

Привет, укротитель символических ссылок! Устал от бесконечных переходов по ссылкам? namei с опцией -n - твое секретное оружие!

Смотри, как это работает:

Обычный namei:
namei /home/himanshu/link1

f: /home/himanshu/link1
d /
d home
d himanshu
l link1 -> file1
- file1


А теперь с опцией -n:
namei -n /home/himanshu/link1

f: /home/himanshu/link1
d /
d home
d himanshu
l link1 -> file1


Видишь разницу? С -n namei останавливается на символической ссылке, не следуя за ней.

Это полезно когда:
1. Ты хочешь увидеть только структуру ссылок
2. Нужно избежать зацикливания в сложных структурах ссылок
3. Ты отлаживаешь проблемы с символическими ссылками

📩 Завтра: Вопрос №23 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Автоматизируй управление группами файлов с chgrp
🧠 - Секреты успешного CI/CD: Gitea и GitHub Actions, которые ты должен знать
🧠 - Автоматизируй сборку и деплой с GitLab: практическое руководство

#Linux_Mastery @LinuxSkill #namei
👍10
🔁 Шпаргалка по циклам в Bash

1. for — перебор элементов
for item in one two three; do
echo $item
done


📌 Можно использовать маски:
for file in *.txt; do
cat "$file"
done


🔁 2. while — цикл пока условие истинно
count=1
while [ $count -le 5 ]; do
echo "Iteration $count"
((count++))
done


3. until — цикл пока условие ложно
count=1
until [ $count -gt 5 ]; do
echo "Until loop: $count"
((count++))
done


💥 4. Прерывание и пропуск итераций
break   # Выход из цикла
continue # Пропустить текущую итерацию


📌 5. for с диапазоном чисел
for i in {1..5}; do
echo "Num: $i"
done


🧠 Примечания:
- В цикле for обязательно используй do
- Внутри while и until условия берутся в [ ]
- Переменные инкрементируются через (( )) или let

📩 Завтра: Почему бенчмарки в bash дают разные результаты?
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Мастер-класс по iptables: вставляем, заменяем и удаляем правила
🧠 - Настраиваем iptables с нуля: Полный гайд по фильтрации пакетов
🧠 - Раскрой тайны владения файлами с namei -o!

#Linux_Mastery #Linux_youtube #Bash #циклы
👍21
🧠 Как узнать ВСЁ о железе и системе в Linux за 5 минут

Привет, линукс-мастер! 🐧

Хочешь быстро получить полную информацию о процессоре, памяти, дисках, устройствах USB и прочем железе в системе? Лови топ команд для диагностики без лишних движений:

⚙️ Системная информация
- uname -a — версия ядра и архитектура системы.

🖥️ Информация о железе
- lspci — список всех устройств на шинах PCI.
- lsusb — список USB-контроллеров и устройств.
- lshw — детальное описание железа.
- hwinfo — альтернатива lshw с расширенными данными.
- dmidecode — чтение таблицы DMI/SMBIOS (информация о BIOS, материнке, памяти).

🧠 Процессор и память
- lscpu — характеристики процессора.
- free -h — текущая загрузка ОЗУ.
- cat /proc/cpuinfo — подробности о CPU.

🛠️ Диски и файловые системы
- lsblk — список всех блочных устройств.
- blkid — метки разделов и UUID.
- fdisk -l, gdisk -l, parted -l — разметка дисков.
- df -h — свободное место на дисках.
- mount — список смонтированных разделов.

🔥 Дополнительно
- dmesg — лог загрузки ядра и сообщения устройств.
- hdparm -I /dev/sdX — характеристики жестких дисков.
- inxi -Fxz — сводный отчёт о системе и железе.

🛡️ Все команды работают в терминале, без GUI. Удобно для серверов, VPS и быстрой диагностики локальных машин.

📩 Завтра: Вопрос №25 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Превращаем namei в супер-ls с опцией -l!
🧠 - Prometheus: Все Основы Мониторинга — Почему Это Важно
🧠 - Раскрой тайны своего файрвола: просмотр правил iptables!

#Linux_Mastery @LinuxSkill #Linux #Sysadmin #Hardware #Terminal #Diagnostics
👍38
🛠️ 10 самых частых ошибок в Linux и как быстро их исправить

Привет, цифровые искатели приключений! 🧭

Если ты хоть раз настраивал Linux, ты точно натыкался на эти проблемы.
Лови экспресс-гайд, который спасет тебе часы нервов и дебага!

🛡️ Ошибки при обновлении и установке пакетов

- Почини сломанные зависимости:

  sudo apt-get install -f


- Очисти кэш и обнови пакеты:

  sudo apt-get clean
sudo apt-get update


🌐 Проблемы с сетью

- Проверь интерфейсы:

  ip a


- Перезапусти сеть:

  sudo systemctl restart NetworkManager


- Проверь DNS:

  cat /etc/resolv.conf


🔐 Проблемы с правами доступа

- Выполни команду от суперпользователя:

  sudo <command>


- Исправь права на файлы и каталоги:

  sudo chmod 755 /path/to/dir
sudo chown user:user /path/to/file


🖥️ Проблемы с загрузкой системы

- Восстанови GRUB:

  sudo grub-install /dev/sda
sudo update-grub


- Проверь файловую систему:

  sudo fsck /dev/sda1


🗄️ Нет места на диске

- Посмотри занятое пространство:

  df -h


- Очисти временные файлы:

  sudo apt-get clean
sudo rm -rf /var/cache/apt/archives/*


📡 Проблемы с NFS

- Проверь и перезапусти сервисы:

  sudo systemctl status nfs-server
sudo systemctl restart nfs-server


🐍 Конфликты в Python

- Используй виртуальные окружения:

  python3 -m venv myenv
source myenv/bin/activate
pip install <package>


🔥 Проблемы с SELinux

- Просмотри логи:

  sudo ausearch -m avc -ts recent


- Переключи в permissive-режим:

  sudo setenforce 0


🧩 Ошибки с модулями ядра

- Загрузи модуль вручную:

  lsmod
sudo modprobe <module>


🔥 Проблемы с фаерволом

- Посмотри текущие правила:

  sudo iptables -L


- Открой нужный порт:

  sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT


📚 Забирай эту базу знаний в закладки и экономь часы жизни! Проблемы больше не застанут тебя врасплох.

📩 Завтра: Reverse Shell на практике: подключаемся к скрытому серверу за 1 минуту
Включи 🔔 чтобы не пропустить!
________________

Дополнительный материал:
🧠 - Открой секреты своей системы: 18 команд которые должен знать каждый линуксоид!
🧠 - Осторожно: Никогда не запускай эти 11 команд в Linux!
🧠 - Защита SSH-сервера: порты, ключи и iptables

#Linux_Mastery @LinuxSkill #Linux #Troubleshooting #Errors #Sysadmin #DevOps
👍40🔥5
Что будет, если ввести неправильный пароль в sudo? (спойлер: тебя унизят)

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

Ты знал, что в Linux можно включить "режим унижений" прямо через sudo? 😈
Каждый раз, когда ты вводишь неправильный пароль, система будет подшучивать над тобой острыми фразочками.
Всё работает без установки стороннего шлака!

🚀 Как включить «оскорбительный режим»

Добавь в /etc/sudoers или в отдельный файл в /etc/sudoers.d/ строчку:

Defaults insults


Теперь попробуй выполнить команду от пользователя:

sudo apt update

и нарочно введи неправильный пароль.

Все фразы зашиты в библиотеку /usr/libexec/sudo/sudoers.so.

🎯 Как вывести свои собственные оскорбления

Хочешь персонализировать ответы? Легко!

1. Сначала закомментируй Defaults insults.
2. Добавь свою фразу:

Defaults badpass_message="Попробуй ещё раз, герой терминала!"


Или сделай ротацию фраз через скрипт:

#!/bin/bash
messages=("Неверный пароль! Ты уверен, что это твоя клавиатура?"
"Еще одна ошибка — и я вызываю хакеров!"
"Может, стоит попробовать старый пароль?")
echo "${messages[$RANDOM % ${#messages[@]}]}"


📩 Завтра: Ускоряй рутину в 5 раз: DevToys спасает!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Автоматизация кибербезопасности: 5 полезных скриптов на Bash
🧠 - Сравнение производительности Nginx и Caddy Performance: кто победит?
🧠 - Как сделать простую защиту от DoS-атак с Fail2Ban?

#Linux_Mastery @LinuxSkill #Linux #Sudo #Fun #Sysadmin
👍22🔥9
🚨 Ускоряй рутину в 5 раз: DevToys спасает!

Привет, цифровые мастера и оптимизаторы времени! Надоело переключаться между кучей мелких утилит?
Хочешь, чтобы базовые задачи решались быстро и удобно прямо на месте?

Тогда встречай DevToys — универсальный набор инструментов для разработчиков и системных администраторов! ⚙️

Что умеет DevToys прямо из коробки:

- 🔑 Генерация и декодирование JWT
- 📦 Базовая кодировка/декодировка Base64
- 🧮 Быстрые конвертации JSON YAML
- 🖥️ Преобразование UUID, хеширование (SHA, MD5)
- 🔍 Форматирование SQL-запросов
- 🖋️ Валидация регулярных выражений
- 📜 Работа с текстами: сравнение, преобразование
- 🌐 Проверка IP-адресов, портов и других сетевых параметров

Фишка: все это доступно локально — без отправки данных в облако! 🔒

Установка элементарная: через snap, flatpak или компиляцию с GitHub.

🌐 Источник: https://github.com/DevToys-app/DevToys

📩 Завтра:
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Что означает $@ в shell скрипте?
🧠 - Защити свой сервер: Настройка безопасности SSH на Linux
🧠 - Избавься от лишнего: Как установить только нужные пакеты в Linux

#Linux_Mastery #Linux #DevTools #Productivity #Sysadmin #OpenSource
👍8
🎯 Автоматизируй деплой в один клик через GitLab Variables

Привет, цифровые мастера! 🧑‍💻

Сегодня разберём фишку, которая облегчит жизнь всем, кто работает с GitLab CI/CD: как сделать удобные выпадающие списки переменных прямо на этапе запуска пайплайна! 🚀

Обычно перед стартом Pipeline нужно руками вбивать переменные окружения типа ENVIRONMENT=stage/production.
Это неудобно, долго и приводит к ошибкам.

Решение — сделать выпадающие списки в .gitlab-ci.yml:

variables:
ENVIRONMENT:
value: "N/A"
options:
- "N/A"
- "STAGE"
- "PRODUCTION"
description: "Deployment environment"


🎯 Что это даёт:
- Не нужно помнить варианты окружений
- Минимизируем ошибки
- Быстрый выбор через UI

А дальше через rules можно легко управлять логикой деплоя:

deploy:
script:
- echo "Deploying to $ENVIRONMENT"
rules:
- if: '$ENVIRONMENT == "STAGE"'
variables:
WEB_NODE: "xx.xx.xx.xx"
- if: '$ENVIRONMENT == "PRODUCTION"'
variables:
WEB_NODE: "yy.yy.yy.yy"


🎁 Бонус: Один пайплайн на несколько проектов

Чтобы не копировать .gitlab-ci.yml везде:

include:
- project: "dev/pipelines"
file: ".gitlab-ci.yml"

Теперь все проекты тянут пайплайн из одного места!

📩 Завтра: Ускорь создание виртуалок в Linux за пару минут с Quickemu
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Linux команды: sudo !!,man,cd ,jot,cal,tac,w,yes,du,expr,look,espeak
🧠 - Linux команды: factor, reset, mtr, ps aux, alias, tr, tree, uname, lsb_release, wall, date, uptime, hostname, shutdown, reboot, gedit, wc
🧠 - Linux команды: grep, zip, unzip, tar

#Linux_Mastery #DevOps #GitLab #CICD #Automation
🔥12
🚀 Ускорь создание виртуалок в Linux за пару минут с Quickemu

Привет, цифровые исследователи! 🧑‍🚀

Если тебе нужно быстро протестировать новую ОС, окружение или обновление — забудь про тяжёлые VirtualBox и KVM.
Встречай Quickemu — минималистичный инструмент для молниеносной установки виртуалок!

Что такое Quickemu?
Это скрипт на bash, который автоматизирует развёртывание виртуальных машин через QEMU.
Сам определяет настройки оптимальные для твоего железа. Минимум настроек — максимум скорости.

📦 Как установить:

sudo apt install quickemu

(на Arch: yay -S quickemu)

Как развернуть виртуалку:

quickget ubuntu-mate
quickemu --vm ubuntu-mate.conf


quickget — скачает ISO и подготовит конфигурацию.
quickemu — запустит виртуалку за считанные секунды.

#🛠️ Особенности:
- Автоматический подбор параметров виртуалки
- Поддержка множества популярных ОС
- Минимальные требования к ресурсам
- Идеально подходит для тестов и быстрой отладки

🌐 Источник: https://spy-soft.net/quick-virtual-machines-installation-linux-quickemu/

📩 Завтра: Вопрос №31 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Linux команды: gksu, pstree, top, screenfetch
🧠 - Диспетчер задач в Linux
🧠 - Лучшие практики для повышения производительности Linux-системы

#Linux_Mastery #linux #virtualization #devops #qemu
👍18🔥1
🔥 Быстрое обнаружение проблем в сети через массовый пинг

Привет, мастера мониторинга! 📡

Когда у тебя десятки серверов или рабочих станций, проверять их по одному — это адская рутина.
К счастью, в Linux есть удобные способы пинговать сразу несколько хостов параллельно!

⚙️ Самый простой способ: использовать fping

Установка:
sudo apt install fping


Массовый пинг по списку IP или доменов:
fping -a -f hosts.txt

Где hosts.txt — файл со списком адресов (один хост на строку).

🛠️ Альтернативный способ через bash-скрипт

Минималистичный скрипт:

!/bin/bash
for ip in $(cat hosts.txt)
do
ping -c 1 $ip > /dev/null && echo "$ip is UP" || echo "$ip is DOWN"
done

Можно усложнить и добавить параллельность через & и wait, чтобы ускорить процесс. 🚀

🧠 Плюсик в карму:
- fping поддерживает опцию ограничения количества параллельных пингов (-C).
- Легко интегрируется в cron-джобы для ежедневных проверок.

🌐 Источник: https://spy-soft.net/ping-multiple-hosts-linux/

📩 Завтра: Полная шпаргалка по Bash: команды, синтаксис и фишки!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Команды в Linux, которые используются в повседневной работе
🧠 - Бесплатный курс по Linux c нуля до DevOps
🧠 - Работа с файлами и директориями

#Linux_Mastery #linux #networking #sysadmin #monitoring
👍17🔥2
🐚 Полная шпаргалка по Bash: команды, синтаксис и фишки!

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

Ты устал листать десятки страниц в поисках нужной Bash-команды? Тогда держи готовую шпаргалку, собранную специально для тебя!
🛠️ Все команды удобно структурированы: условия, циклы, массивы, функции, работа с файлами и процессами.

Что тебя ждёт:
- Основы синтаксиса Bash без воды
- Краткие примеры команд и скриптов
- Умные лайфхаки для оптимизации рутины
- Пояснения, когда что использовать на практике

Шпаргалка пригодится:
- Начинающим пользователям
- Системным администраторам
- DevOps инженерам
- Тем, кто хочет автоматизировать свои задачи в Linux

🌐 Источник:https://devhints.io/bash

📩 Завтра: Вопрос №33 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - 50 команд Linux
🧠 - Как быстро запомнить базовые команды Linux
🧠 - Управление процессами: Часть 1

#Linux_Mastery #linux #bash #devops #automation #cheatsheet
🔥11👍5👀1
🔥 Как etckeeper спасает сервер от криворуких админов!

Привет, архитекторы серверов!

Когда из твоего /etc внезапно исчезают изменения — это тревожный звоночек.
Сегодня делюсь реальным кейсом, как на сервере внезапно пропали локейшены в nginx.conf. Всё оказалось банально: в /etc была спрятана .git-папка, а на сервере стоял etckeeper.

Что делает etckeeper?
🛡️ Он автоматически отслеживает любые изменения в /etc через git.
Если кто-то что-то сломал — ты сразу увидишь все изменения и сможешь откатить систему за пару команд.

Как установить и настроить:

sudo apt install etckeeper git
cd /etc
git remote add origin git@github.com:your-repo/etc.git
git push -u origin master


Перед пушем обязательно почисти .gitignore, убрав чувствительные файлы!

✔️ Чтобы зафиксировать изменения:

etckeeper commit "комментарий" && git push


✔️ Чтобы откатить только один файл:

etckeeper vcs checkout <commit_id> /etc/fstab


🎯 Теперь никакие магниты Марса и криворукие тестировщики не навредят твоему серверу!

📩 Завтра: Почему в Linux нужно запускать скрипты через ./ ?
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Управление процессами: Часть 2
🧠 - Docker с 0 до 100%. Всё, что нужно знать
🧠 - Управление процессами: Перенаправление ввода/вывода и конвейеры

#Linux_Mastery #linux #utils #devops #server
👍12
🔥 Почему в Linux нужно запускать скрипты через ./ ?

Доброе утро, мастера консоли! ☕️

Каждый в начале пути сталкивается с ошибкой:

script.sh: command not found


Вроде скрипт есть, права +x есть… а запустить нельзя.
В чём подвох?

💡 Всё просто: оболочка ищет команды только в каталогах, прописанных в $PATH.
Текущая директория (.) туда по умолчанию не входит — из соображений безопасности!

Чтобы запустить скрипт из текущей папки, нужно указать явно:

./script.sh


Тем самым ты говоришь системе: "Запусти ЭТОТ конкретный файл, а не ищи его где-то в системных каталогах".

Почему это важно для безопасности:

Представь, ты работаешь под рутом и влетаешь в папку пользователя. А там злой скрипт с именем ls. Без ./ ты бы случайно его запустил вместо нормального ls. Результат: потеря контроля над сервером.

✔️ Для надёжной работы cron-джобов или скриптов в автоматизации всегда указывай полные пути:

/bin/bash /home/user/script.sh


Или определяй команды явно:

CAT=$(which cat)
$CAT script.sh


И помни — добавлять . в $PATH крайне не рекомендуется! Это открывает брешь для атак.

📩 Завтра: Вопрос №35 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Управление процессами: Конвейер (pipeline)
🧠 - Управление процессами: Создание и выполнение скриптов командной строки
🧠 - Установка Docker

#Linux_Mastery #bash #linux #security
👍22
🚀 ТОП-скрипты для автоматизации Linux задач

Привет, искатель эффективности! 👨‍💻

Если хочешь меньше тратить время на рутину в Linux — тебе нужны правильные скрипты.

Сегодня делюсь отличной находкой: на GitHub лежит коллекция полезных bash-скриптов для автоматизации повседневных задач.
Проект развивается в духе "всё для жизни", без лишнего хлама.

🔹 Что можно найти:
- Скрипты для резервного копирования и восстановления
- Мониторинг состояния серверов
- Автоматическая очистка мусора и логов
- Сканирование сети
- Управление Docker-контейнерами
- Базовые операции с системными сервисами

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

Почему стоит заглянуть:
- Сэкономишь время на написание велосипедов
- Быстро расширишь свой арсенал инструментов
- Подчистишь и оптимизируешь свои сервера без лишних усилий

🌐 Репозиторий: https://github.com/ggeorgovassilis/linuxscripts

Забирай в закладки и используй на практике!

📩 Завтра: Секретная книга знаний для Linux и DevOps
Включи 🔔 чтобы не пропустить!
____________________

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

#Linux_Mastery #linux #bash #devops #automation #github
👍10👎3
🚨 НИКОГДА не редактируй 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
👍21
🔐 Забыл заблокировать ПК? Твой телефон сделает это за тебя

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

Знакомо? Отошёл за кофе, а коллега уже изучает твой браузер. Сейчас покажу, как превратить твой смартфон в умный ключ — 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
👍22🔥8👀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
👍20
💥 Забудь про медленный 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
👍14
🎯 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
👍17👀2