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

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

РКН https://vk.cc/cMUwm4
Download Telegram
🤔 Как запросить ввод Yes/No/Cancel в shell скрипте?

Хочешь сделать свои скрипты более интерактивными? Узнай, как легко запросить ввод от пользователя в Linux с помощью команд read и select.

Основная информация:

1. Использование команды read:

Команда read позволяет запрашивать ввод от пользователя. Вот пример, как это сделать:

   while true; do
read -p "Do you wish to install this program? " yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done


Этот скрипт будет повторять запрос, пока пользователь не введет "yes" или "no".

2. Использование команды select:

select упрощает выбор, автоматически отображая доступные варианты:

   echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes ) make install; break;;
No ) exit;;
esac
done


Здесь пользователь выбирает номер, соответствующий его выбору.

3. Локализация ввода:

Для поддержки разных языков можно использовать locale:

   set -- $(locale LC_MESSAGES)
yesexpr="$1"; noexpr="$2"; yesword="$3"; noword="$4"

while true; do
read -p "Install (${yesword} / ${noword})? " yn
if [[ "$yn" =~ $yesexpr ]]; then make install; exit; fi
if [[ "$yn" =~ $noexpr ]]; then exit; fi
echo "Answer ${yesword} / ${noword}."
done


Используя команды read и select, ты можешь сделать свои скрипты более интерактивными и удобными для пользователей. Попробуй сам и убедись в их эффективности!

🌳 Ветка: https://stackoverflow.com/questions/226703/how-do-i-prompt-for-yes-no-cancel-input-in-a-linux-shell-script

📩 Завтра: Топ команды для DevOps: Что спрашивают на собеседованиях
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Секреты массового управления пользователями и группами в Linux
🧠 - Не трать время на логи! Вот как найти все медленные запросы за 1 минуту
🧠 - Как ускорить MySQL? Простые советы, чтобы твой сервер летал, как на стероидах

#stackoverflow @LinuxSkill #Linux #ShellScripting #UserInput #SysAdmin #DevOps
👍16
🚀 Почему бенчмарки в bash дают разные результаты?

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

Запустил простой код:

bash -c 'x=0; time while ((x < 999999)); do ((++x)); done'


А время выполнения прыгает от 0.9 до 2.2 секунд? Почему?

Ответ: CPU Frequency Scaling.
Процессор снижает частоту при простое и повышает под нагрузкой.
Из-за этого первое выполнение скрипта медленнее последующих.

Решение:

1. Зафиксировать максимальную частоту ядра:

sudo cpupower -c 0 frequency-set -g performance


2. Закрепить выполнение скрипта за одним ядром:

taskset -c 0 ./your-benchmark


3. После теста вернуть режим энергосбережения:

sudo cpupower -c 0 frequency-set -g powersave


Бонус: Делай "разогревочный" прогон перед реальными замерами и старайся минимизировать фоновую нагрузку.

🌐 Источник: https://unix.stackexchange.com/questions/777424/why-are-my-benchmark-times-not-repeatable-even-for-a-cpu-bound-task

📩 Завтра: Как узнать ВСЁ о железе и системе в Linux за 5 минут
Включи 🔔 чтобы не пропустить!
____________________

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


#stackoverflow @LinuxSkill #linux #bash #benchmark #performance
👍17🔥1
🚨 Процесс с неизвестным именем грузит CPU на 25000%! Что происходит?

Привет, повелитель терминала! На одном из серверов Linux обнаружили странный процесс:
- Имя вроде 89cdb92b, потом меняется на другое (ac1e4262)
- Процесс запущен от root
- CPU загружено на 25369% (!)
- Файл процесса уже удалён: /proc/<PID>/exe → (deleted)

Это может быть майнер или вредоносная программа. Простое перезагружение не решает проблему: процесс появляется снова.

🔍 Что делать:

1. Проверить родителя процесса:
   pstree -sap <PID>


2. Узнать командную строку процесса:
   ps -o args -p <PID>


3. Скопировать бинарник для анализа:
   cp /proc/<PID>/exe /tmp/suspect_binary


4. Безопасно изучить его содержимое:
   strings /tmp/suspect_binary


5. Проверить открытые файлы:
   lsof -p <PID>


6. Изучить логи на момент запуска процесса:
   journalctl -S 'YYYY-mm-dd HH:MM'


📌 Важно: при компрометации — лучше переустановить систему с чистого образа!

🌐 Источник: https://unix.stackexchange.com/questions/782519/high-cpu-usage-by-process-with-obfuscated-name-on-linux-server-potential-attac

📩 Завтра: Как узнать ВСЁ о железе и системе в Linux за 5 минут
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Неожиданные секреты Linux: 12 утилит, которые спасут твой сервер!
🧠 - Открой для себя 15 малоизвестных команд LINUX, которые изменят твою жизнь
🧠 - Как удалить экспортированную переменную окружения в Linux?

#stackoverflow @LinuxSkill #Linux #Security #Malware #CPU #Root
👍22
🚨 Можешь ли ты использовать sudo без пароля? Проверь за 5 секунд!

👋 Привет, мастер терминала! Иногда нужно понять: можешь ли ты выполнять команды через sudo без запроса пароля? Особенно важно для скриптов и автоматизации.

Базовая проверка:

sudo -n true 2>/dev/null || exit 1

- -n запрещает запрос пароля.
- Команда мгновенно завершится с ошибкой, если пароль требуется.

🛡️ Проверка без влияния кэшированных сессий:

sudo -k
sudo -n true 2>/dev/null || exit 1

- sudo -k очищает кэш пароля.

🔍 Защита от частных NOPASSWD правил:

rand=$(mktemp /tmp/true.XXXXX)
cp /usr/bin/true "$rand"
sudo -n "$rand" 2>/dev/null && echo "Есть доступ" || echo "Нет доступа"
rm "$rand"

- Проверяем реальное право на запуск любой команды без пароля.

🌐 Источник: https://unix.stackexchange.com/questions/777552/check-if-current-user-can-run-sudo-without-requiring-a-password

📩 Завтра: Что будет, если ввести неправильный пароль в sudo? (спойлер: тебя унизят)
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Производительность Nginx vs Apache: кто победит?
🧠 - Как измерить время выполнения программы в Linux?
🧠 - Осторожно: Как не стать жертвой сниффинга паролей на Linux!

#stackoverflow @LinuxSkill #linux #bash #sudo #shell #security
👍12
🚀 Как за 1 минуту определить, чем управляется сеть в Linux?

Привет, мастер серверов! 👋
Сегодня разберём, как быстро понять, что именно рулит сетью на вашем Linux-сервере — без лишней магии и догадок!

🔍 Пошаговый чек:

1. Проверка старой школыifupdown:
   systemctl status networking.service


2. Есть ли NetworkManager?
   systemctl status NetworkManager


3. Активен ли systemd-networkd?
   systemctl status systemd-networkd


4. Ищем Netplan (обычно для облаков):
   ls /etc/netplan/


5. Быстрая проверка активных сетевых демонов:
   networkctl status
nmcli general status
netplan status


Если активно /etc/network/interfaces + networking.service — значит у вас классическая схема через ifupdown.
Если активен NetworkManager — скорее всего десктоп или ноутбук.
Если активен systemd-networkd — модульная минималистичная конфигурация.
Если есть /etc/netplan/ — используется промежуточный слой Netplan.

🌐 Источник: https://unix.stackexchange.com/questions/785544/how-to-know-if-the-network-is-configured-through-etc-network-interfaces-networ

📩 Завтра: Почему set -e в bash может сломать тебе всё!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - 10 самых частых ошибок в Linux и как быстро их исправить
🧠 - Reverse Shell на практике: подключаемся к скрытому серверу за 1 минуту!
🧠 - Урок 4 — Почему case круче вложенных if в Bash

#stackoverflow #Linux #Network #SysAdmin #Networking #Debian #NetworkManager #Systemd #Netplan
👍9🔥9
🚨 Почему cat всё ещё опасен в 2025 году?

Привет, покоритель терминала! 👨‍💻👩‍💻

Многие думают, что cat — это безопасная команда для просмотра файлов. Но даже сегодня простое cat file может быть рискованным!

Терминальные эмуляторы — сложные программы. Если файл содержит хитро сформированные escape-последовательности, это может:
- зависнуть весь терминал,
- испортить буфер обмена через OSC 52,
- вызвать баги в системе.

Терминалы вроде GNOME Terminal или xterm исправили многие уязвимости, но 100% защиты нет. Особенно, если файл пришёл из сомнительного источника.

Как безопасно просматривать файлы:
- Используй cat -v file — выводит управляющие символы видимыми.
- Открывай файлы через less (безопаснее для длинного вывода).
- Никогда не доверяй логам и текстам из внешних источников.

🔒 В безопасности даже самые простые команды требуют внимательности!

🌐 Источник: https://unix.stackexchange.com/questions/780938/is-it-still-unsafe-to-cat-an-arbitrary-file

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

Дополнительный материал:
🧠 - Урок 5 — Функции Bash за 49 минут: основы, примеры, фишки
🧠 - Можешь ли ты использовать sudo без пароля? Проверь за 5 секунд!
🧠 - Что будет, если ввести неправильный пароль в sudo?

#stackoverflow #linux #bash #security #terminal #linuxskill
👍14🔥2
💣 Как можно случайно сломать систему, установив ПО вручную?

Привет, линуксоид! 👋

Кажется, что скачать программу с сайта и установить её вручную — это быстро и удобно. Но в Linux это может стоить работоспособности всей системы.

Когда ты устанавливаешь программы через:
- curl | sh
- компиляцию из исходников
- .deb файлы вне репозиториев

ты обходишь пакетный менеджер (apt, dnf), и:
- система не отслеживает установку
- обновления и удаление могут стать проблемой
- легко получить конфликт версий библиотек

Как безопасно устанавливать ПО:
- Использовать apt или официальные репозитории.
- Для .deb-файлов — sudo apt install ./file.deb (а не dpkg -i).
- Избегать скриптов curl | sh без проверки кода.
- Размещать ручные установки в /usr/local/ или $HOME/.local.

Помни: пакетный менеджер — это твой друг в Linux. 🛡

🌐 Источник: https://unix.stackexchange.com/questions/782971/is-it-safe-to-install-programs-other-than-with-a-distros-package-manager

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

Дополнительный материал:
🧠 - Линус Торвальдс — Человек, который придумал Linux [TED]
🧠 - Карта развития Linux-специалиста
🧠 - Операционная система - общие сведения

#stackoverflow #linux #security #package_manager #apt #bash #linuxskill
👍18🔥3
Как скопировать только изменённые файлы с помощью rsync?

Салют! Сегодня разберём одну крутую задачку! Когда работаешь с большими каталогами, часто возникает задача: обновить только изменённые файлы, не трогая новые.

И тут идеально подходит rsync!

Вот как скопировать только те файлы, которые уже есть в целевой папке и имеют изменения:

rsync --checksum --existing -av source/ dest/


Расшифруем:
- --checksum — сравнивать файлы по содержимому, а не по дате или размеру.
- --existing — копировать только те файлы, которые уже есть в dest, новые не создавать.
- -a — режим архивации (права, симлинки и т.д.).
- -v — подробный вывод.

💡 Если не хотите замедлять процесс вычислением контрольных сумм, можно убрать --checksum, но тогда сравнение будет идти только по дате и размеру.

🌐 Источник: https://unix.stackexchange.com/questions/792314/using-rsync-to-copy-only-files-that-have-changed-not-files-that-are-new

📩 Завтра: ТОП-скрипты для автоматизации Linux задач
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - История UNIX. Часть 1
🧠 - История UNIX. Часть 2
🧠 - Установка и настройка Linux-системы: Astra

#stackoverflow #linux #rsync #bash #файлы #linuxskill
👍9🔥1
🔥 Как убивать скрипты в Linux после минуты тишины

Привет, исследователь Linux! Когда скрипт "зависает" и перестаёт выводить данные, сервер может ждать бесконечно... Как автоматически завершить такой скрипт, если нет вывода в течение 1 минуты?

Вот решение:

output_timeout() (
set -o pipefail
export TIMEOUT=$1; shift
sh -c 'echo "$$"; exec stdbuf -oL "$@" 2>&1' sh "$@" | perl -ne '
BEGIN {
$SIG{ALRM} = sub {
warn "No output within $ENV{TIMEOUT} seconds, killing PID $pid";
kill "TERM", $pid;
}
}
alarm $ENV{TIMEOUT};
if (!$pid) {$pid = $_} else {print}'
)


Пример запуска:

output_timeout 60 ./s1.sh
output_timeout 60 ./s2.sh
output_timeout 60 ./s3.sh


Пояснение:
- Если скрипт не выводит ничего 60 секунд, он будет автоматически убит.
- После остановки можно запускать следующий скрипт.
- Стандартные потоки stdout и stderr объединены.

🌐 Источник: https://unix.stackexchange.com/questions/789260/how-to-automatically-terminate-shell-scripts-after-1-minute-of-no-output

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

Дополнительный материал:
🧠 - Установка и настройка Linux-системы: Mint
🧠 - Установка и настройка Linux-системы: Kali
🧠 - Linux команды: ls, rm, mkdir, pwd, cd, echo

#stackoverflow #Linux #bash #скрипты #DevOps #администрирование #автоматизация
👍12👎1
Как за 1 минуту проверить соединение с десятками серверов

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

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

1. nmap
Быстрый скан нужных портов:
nmap -sT -p 22 192.168.1.1-5


2. netcat (nc)
Минималистичный способ через nc:
timeout 3 nc -zv host1 22
timeout 3 nc -zv host2 22


3. /dev/tcp в bash
Проверка средствами самого bash:
if (exec 3<>/dev/tcp/host/port) 2>/dev/null; then
echo "Порт открыт"
else
echo "Порт закрыт"
fi


4. fping
Если важен только факт доступности по ICMP:
fping -a -r 0 -qs -g 192.168.1.0/24


Все эти методы можно обернуть в скрипт и проверять десятки или сотни хостов автоматически! 🔥

🌐 Источник: https://unix.stackexchange.com/questions/788022/how-to-check-multiple-hosts-for-simple-connectivity

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

Дополнительный материал:
🧠 - Linux команды: file, mv, cp, rmdir, ps, kill 9, find, sort, , clear
🧠 - Linux команды: mv, настройка Терминала
🧠 - Linux команды: cmp, df, apt get install, remove, update, upgrade, chmod

#stackoverflow #Linux #Bash #Скрипты #Сеть #DevOps #Порты #nmap #netcat
👍8🔥3
🛡️ Защита системы: как разрешить запуск бинарника только службе 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