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
🔍 Как найти различия между двумя деревьями каталогов в Linux?

Ты когда-нибудь задумывался, как быстро сравнить содержимое двух директорий и выявить различия? Сегодня мы расскажем, как это сделать с помощью команды diff в Linux.

Чтобы сравнить два дерева каталогов и найти различия в содержимом файлов, используй команду diff с флагами -qr:

diff -qr dir1/ dir2/


- -q или --brief — выводит только информацию о различиях, без детального сравнения.
- -r или --recursive — рекурсивно обходит все подкаталоги.

Если ты хочешь увидеть различия для файлов, которые могут отсутствовать в одной из директорий, добавь флаг -N:

diff -qrN dir1/ dir2/


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

🌳 Ветка: https://stackoverflow.com/questions/4997693/given-two-directory-trees-how-can-i-find-out-which-files-differ-by-content

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

Дополнительный материал:
🧠 - Мастерство использования команды chown для смены владельца файлов и каталогов
🧠 - Станьте Мастером Календаря в Linux с Cal и NCal
🧠 - Станьте Мастером Управления Пользователями в Linux

#stackoverflow @LinuxSkill #Linux #Diff #DirectoryComparison #SysAdmin #DevOps
👍22
⏱️ Как измерить время выполнения программы в Linux?

Хочешь узнать, сколько времени занимает выполнение твоих скриптов или команд в Linux? Сегодня мы расскажем, как использовать встроенную команду time для этого.

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

Команда time позволяет измерить реальное время, затраченное на выполнение команды, а также время работы процессора. Вот как это сделать:

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

Просто добавь time перед командой, которую хочешь измерить. Например:

   time sleep 2


Вывод будет примерно таким:

   real    0m2.009s
user 0m0.000s
sys 0m0.004s


- real — общее время выполнения.
- user — время, затраченное на выполнение пользовательского кода.
- sys — время, затраченное на выполнение системного кода.

2. Измерение времени для нескольких команд:

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

   time { command1; command2; }


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

🌳 Ветка: https://stackoverflow.com/questions/385408/get-program-execution-time-in-the-shell

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

Дополнительный материал:
🧠 - Открываем Мир b2-tools
🧠 - Открываем Все Тайны Команды Cat
🧠 - Разгадываем Загадки с Diff3

#stackoverflow @LinuxSkill #Linux #TimeCommand #Performance #SysAdmin #DevOps
👍13
🛠️ Что означает $@ в shell скрипте?

Если ты когда-либо задавался вопросом, что такое $@ в shell скрипте, то сегодня мы разберем эту загадку и покажем, как использовать его для передачи параметров.

$@ представляет собой все параметры, переданные скрипту. Например, если ты вызовешь скрипт так:

./someScript.sh foo bar


то $@ будет равно foo bar.

Когда внутри someScript.sh ты используешь:

umbrella_corp_options "$@"


каждый параметр будет передан в umbrella_corp_options в двойных кавычках. Это позволяет передавать параметры с пробелами, как единое целое.

Пример использования:

Если ты вызовешь:

./someScript.sh foo bar "boo far"


то $@ в двойных кавычках будет содержать три аргумента: "foo", "bar" и "boo far".

Использование $@ в shell скриптах позволяет легко и безопасно передавать параметры, включая те, которые содержат пробелы. Попробуй сам и убедись, насколько это удобно!

🌳 Ветка: https://stackoverflow.com/questions/9994295/what-does-mean-in-a-shell-script

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

Дополнительный материал:
🧠 - Текстовый редактор Nano — как работать с файлами на минималках и не страдать!
🧠 - Почувствуй себя цифровым рентгенологом — откроем файлы насквозь с Od!
🧠 - Давно занимался спортом? Нет? Ну вот, пора хотя бы пароли сменить!

#stackoverflow @LinuxSkill #Linux #ShellScripting #SysAdmin #DevOps
👍17🔥2
🧠 Нужно ли ставить кавычки вокруг переменных в shell-скриптах?

Привет, повелитель терминала! Если ты в скриптах пишешь $var без кавычек — скорее всего, ты (пока что) просто везучий.
Давай разберёмся, когда и зачем переменные в shell-скриптах нужно оборачивать в кавычки.

### Общее правило:
> Оборачивай переменные в двойные кавычки, если не хочешь сюрпризов от пробелов, пустых значений и спецсимволов.

---

### Когда кавычки обязательны:
1. Значение может быть пустым:
   [ "$var" = "value" ]

2. Есть пробелы:
   xdg-open "$URL"

3. В переменной спецсимволы (*, &, ?):
   wget "$link"


---

### Пример бага:
file="My documents/report.pdf"
rm $file # Попытка удалить два файла: 'My' и 'documents/report.pdf'
rm "$file" # Удаляется нужный файл


---

### Когда кавычки можно опустить:
- $?, $#, $0 — безопасны без кавычек.
- Внутри арифметических или логических выражений:
   if [ "$?" -eq 0 ]; then ...


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

🌳 Ветка: https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable

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

Дополнительный материал:
🧠 - Откройте для себя мир Управления Службами в Linux с нашей серией статей
🧠 - Контейнер в контейнере? Да это как матрёшка для айтишников: открываешь, а там ещё больше проблем… но зато все свои!
🧠 - Секретная Команда nsenter! Управляй Контейнерами как Хакер

#stackoverflow @LinuxSkill #Linux #ShellScripting #Quotes #SysAdmin #DevOps
👍13
🧯 Как удалить конкретные правила из iptables (а не всё подряд)?

Привет, линуксоид! Бывало такое: правила в iptables работают как часы, но внезапно нужно откатить одно-два, не трогая всё остальное. Ниже — короткий гайд, как это сделать аккуратно и по-взрослому.

Способ 1. Удалить правило по содержимому
Повтори ту же команду, но с -D вместо -A:
iptables -D INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

💡 Работает, только если правило совпадает дословно.

🧩 Способ 2. Удалить по номеру
Сначала покажи номера правил:
iptables -L INPUT --line-numbers

Удаление:
iptables -D INPUT 3

Если правило в NAT:
iptables -t nat -L PREROUTING --line-numbers
iptables -t nat -D PREROUTING 1


🛠 Способ 3. Комментарии и iptables-restore
Добавляешь правило с комментарием:
iptables -A INPUT -s 1.2.3.4 -j DROP -m comment --comment "ban_temp"

Потом удаляешь всё с этим тегом:
iptables-save | grep -v "ban_temp" | iptables-restore


🧼 Способ 4. Через iptables -S
Показать все правила:
iptables -S

Удалить нужное вручную (заменив -A на -D):
iptables -D INPUT -p tcp --dport 443 -j ACCEPT


⚠️ Не забудь:
- При удалении по номеру порядок важен: после удаления строки остальные смещаются.
- Не используй iptables -F, если не хочешь снести всё подчистую.

🌳 Ветка: https://stackoverflow.com/questions/10197405/how-can-i-remove-specific-rules-from-iptables

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

Дополнительный материал:
🧠 - Эй, ты в курсе, что с Grafana можно раз и навсегда забыть о хаосе в мониторинге серверов?
🧠 - Секретная связка Angie и Grafana для тотального контроля над серверами
🧠 - Неожиданно закончилась память? 3 секрета команды du -h

#stackoverflow @LinuxSkill #iptables #Linux #сетевоеадминистрирование #firewall #DevOps #SysAdmin #безопасность
👍16🔥2
🔐 iptables: доступ к порту 8000 только с одного IP

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

🔧 Пример: разрешить доступ только для 1.2.3.4

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP

Так ты явно разрешаешь доступ для IP 1.2.3.4, а все остальные — отсекаешь.

💡 Альтернатива: блокировать всех, кроме одного IP
iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP

Один простой вариант — одна строка, эффект тот же.

📌 Несколько полезных замечаний:
- Для диапазона IP используй:
-s 1.2.3.0/24
- Чтобы снять правило, замени -A на -D (или используй iptables -S и удаляй по номерам).
- Не забудь сохранить конфигурацию, если не хочешь потерять правила после перезагрузки:
  iptables-save > /etc/iptables.rules

🌳 Ветка: https://stackoverflow.com/questions/7423309/iptables-block-access-to-port-8000-except-from-ip-address

📩 Завтра: Как управлять iptables на лету — без sudo, без потерь
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 - Не трать время на конфиги: как упростить работу с WireGuard
🧠 - Неожиданный способ взломать систему: что такое бинарный анализ в Linux?

#stackoverflow @LinuxSkill #iptables #Linux #firewall #порт #безопасность #SysAdmin #DevOps
👍12👀1
🧠 Как управлять iptables на лету — без sudo, без потерь

Привет, сетевой волшебник! Если ты хоть раз пытался автоматически обновлять правила iptables из приложения или скрипта — ты знаешь, насколько это боль.
Сегодня разберём, как это делать программно, безопасно и эффективно — даже без API.

🤯 Проблема: у iptables нет API

- libiptc не предназначена для использования — она нестабильна и может быть удалена в будущем.
- Прямого, документированного API в C, Python, Rust и т.д. не существует.

📌 Официальный ответ от Netfilter:
> “Нет, API не предусмотрен. Используйте system() или iptables-restore.”
Источник: Netfilter FAQ

Что работает на практике:

#1. iptables-restore (атомарная загрузка правил)
Можно применять *весь ruleset сразу*, не теряя соединений:

iptables-restore < my_ruleset.conf


✔️ Безопасно: правила применяются при COMMIT, в один вызов ядра
✔️ Работает из любой программы через stdin


#2. ipset — для добавления IP без пересборки

ipset create allowlist hash:ip
ipset add allowlist 1.2.3.4
iptables -A INPUT -m set --match-set allowlist src -j ACCEPT


✔️ Отлично подходит для динамических списков
✔️ Есть поддержка timeout и swap
✔️ Работает быстро и без потерь


#3. rfw — REST API для iptables (open source)

Позволяет управлять правилами через HTTP-запросы:

PUT /drop/input/eth0/11.22.33.44


👉 Проект: https://github.com/gluczywo/rfw
✔️ Поддерживает JSON, GET, PUT, DELETE, сериализацию
✔️ Работает на localhost без SSL
✔️ Подходит для распределённых систем


#4. python-iptables

Обёртка над libiptc (но будь осторожен):

🔗 https://github.com/ldx/python-iptables
✔️ Удобен для скриптов
Требует осторожности при работе с низкоуровневым API

🛑 Что не делать:

- Не пиши правила через iptables -A в цикле
- Не используй libiptc напрямую в проде
- Не забывай про iptables-save как бэкап перед внесением правок

🌳 Ветка: https://stackoverflow.com/questions/109553/how-can-i-programmatically-manage-iptables-rules-on-the-fly

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

Дополнительный материал:
🧠 - Настрой cron за 5 минут и забудь о ручной работе навсегда!
🧠 - Ты больше никогда не запутаешься в systemd: разбор по шагам!
🧠 - 10 секретов команды ping, которые знают только сетевые гуру

#stackoverflow @LinuxSkill #iptables #ipset #Linux #SysAdmin #DevOps #firewall #rfw #сетибезопасность
👍14
🚀 Как работает export в bash и когда он реально нужен?

Привет, архитектор переменных и властелин скриптов! Задумывался, зачем вообще нужен export в bash и что он делает с переменными? Сегодня разложим по полочкам — коротко, чётко и с пользой!

🧠 Что делает export

Когда ты пишешь:
export MY_VAR=value

ты говоришь bash: “Эй, сделай эту переменную доступной для всех дочерних процессов.”
Например, твой скрипт вызывает python, curl, node — они смогут использовать MY_VAR.

🤔 А если без export?

Вот так:
MY_VAR=value

Переменная будет доступна только внутри текущего shell, но не в дочерних процессах.
Однако есть лайфхак:

MY_VAR=hello node script.js

Так переменная временно экспортируется только для выполнения node script.js. Удобно? Да!

⚠️ Важное ограничение
Экспорт работает вниз по процессу, но не вверх.
Если ты экспортируешь переменную в скрипте, родительский терминал её не увидит.

🛠 Вывод
Хочешь, чтобы переменная работала в дочерних процессах? Используй export.
Пишешь скрипт с вызовом других программ? Без export будет больно.
Но если переменная нужна только внутри текущего скрипта — не трать лишние байты.


🌳 Ветка: https://stackoverflow.com/questions/1158091/defining-a-variable-with-or-without-export

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

Дополнительный материал:
🧠 - Поднимем отказоустойчивое хранилище в Proxmox VE с Ceph
🧠 - Отключи ненужные конфиги в Apache за пару команд!
🧠 - Контролируй трафик в реальном времени! Три утилиты для мониторинга сети в Linux

#stackoverflow @LinuxSkill #Linux #ShellScripting #Export #SysAdmin #DevOps
👍18🔥1
💥 Почему set -e в bash может сломать тебе всё!

Привет, терминальный заклинатель! Кажется, ты добавил set -e в свой bash-скрипт и думал, что теперь ошибки сами себя поймают? А потом скрипт резко перестал доходить до конца?.. Давай разберемся, в чём подвох.

🤔 Что вообще делает set -e?

set -e говорит интерпретатору bash:
> "Если любая команда завершится ошибкой, — останови скрипт немедленно".

Это полезно для CI/CD, бэкапов и всего, что не прощает ошибок. Но...

⚠️ Проблема: поведение set -e — неочевидно!

Вот типичный случай:

#!/bin/bash
set -e
false
echo "Я не выполнюсь!"


Скрипт завершится после false, и echo даже не запустится. Всё логично.
Но теперь внимание:

#!/bin/bash
set -e
if false; then
echo "Упс"
fi
echo "А вот и я!"


🎉 Здесь echo выполнится! Потому что ошибки внутри if, while, until и &&/|| — игнорируются!

🔍 Когда set -e может навредить?

Если ты используешь команды вроде:

grep "что-то" файл.txt || echo "не найдено"


Скрипт продолжит работу, даже если grep вернёт ненулевой код. Но теперь представь, что ты этого не знал… 😬

Как правильно использовать set -e?
1. Сначала — пойми, где оно действительно нужно (например, в CI/CD, деплое, тестах).
2. Используй его в отдельных функциях, а не во всём скрипте сразу.
3. Если обрабатываешь ошибку вручную — используй ||, if, trap, set +e.

👨‍💻 Итог:
set -e — не волшебная палочка. Это строгий сторож, который иногда рубит по-живому. Используй с умом, тестируй поведение и знай, где он тебя может подставить.

🌳 Ветка: https://stackoverflow.com/questions/19622198/what-does-set-e-mean-in-a-bash-script

📩 Завтра: BTRFS: Продвинутые техники для настоящих гуру!
Включи 🔔 чтобы не пропустить!
____________________

Дополнительный материал:
🧠 -Настрой мониторинг сети в реальном времени с Prometheus и Grafana
🧠 - b2-tools — простое и быстрое резервное копирование в облако
🧠 - Ты не знал, что cat умеет это! Лайфхаки для работы с файлами в Linux

#stackoverflow @LinuxSkill #bash #linux #скрипты #автоматизация #devops #linuxskill #сетевые_лайфхаки #shell #ci_cd #ошибки
👍16👀1
🤔 Как запросить ввод 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
👍15
🚀 Почему бенчмарки в 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
👍15🔥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
👍21
🚨 Можешь ли ты использовать 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
👍11
🚀 Как за 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👍8
🚨 Почему 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
👍13🔥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🔥2
Как скопировать только изменённые файлы с помощью 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
🔥 Как убивать скрипты в 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 #администрирование #автоматизация
👍11👎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🔥1
🛡️ Защита системы: как разрешить запуск бинарника только службе 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
👍6👎1