LinuxCamp | DevOps – Telegram
LinuxCamp | DevOps
14.2K subscribers
193 photos
7 videos
298 links
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.

Админ (реклама): @XoDefender
Чат: @linuxcamp_chat

Менеджер: @Spiral_Yuri
Биржа: https://telega.in/c/linuxcamp_tg

№ 6327102672
Download Telegram
Forwarded from ITCamp
Пацаны, биг дроп на канале! 🔥

Какой язык программирования выбрать новичку? JavaScript, Python, C/C++, Java, Go, Rust, C#, а может быть вообще ассемблер?)

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

Выбор первого языка - очень важное событие на старте карьеры. Ошибёшься - потеряешь время, попадёшь не туда, выгоришь.

Поинты, которые обсудили:

— Чем опасен неверный выбор языка и как "не прогадать"?

— Как найти свою нишу и в каких направлениях на старте может быть тяжелее обычного?

— Какие языки правят в каждой сфере: веб, мобилки, десктоп, геймдев, ML?

— Где активно используются C/C++ и стоит ли начинать с них?

— Что нужно учитывать при выборе языка и на какие моменты обратить особое внимание?

Смотреть на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥137👍7🤔3
Собери себе эстетичный IDE в терминале

Представь, что ты открываешь терминал и хочешь быстро найти какой-то фрагмент кода, увидеть его контекст, а затем сразу же открыть файл ровно там, где найдено совпадение.

Всё это можно сделать через утилиту rgo, не переключаясь в тяжёлую графическую IDE. Ниже показано, как настроить такой «мини-IDE» за несколько минут. Будем использовать: ripgrep + fzf + bat + любой редактор.

Короткая версия команды:


rgo "<паттерн>" [vim|nano|bat]


Ты пишешь rgo, затем в задаёшь шаблон поиска, а далее — редактор, в котором хочешь открыть результат. Если второй аргумент опустить, по умолчанию откроется vim.

Редактор можно заменить на nano, bat или почти любой другой: главное, чтобы он понимал, как открыть файл и перейти к нужной строке.

Что происходит внутри:

ripgrep (rg) мгновенно пробегает по всем файлам вашего проекта и выводит совпадения в формате "путь:строка:текст", fzf превращает вывод в интерактивный список, где можно перемещаться стрелками.

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

Полный скрипт, который кладётся в конфиг шелла:


rgo () {
local editor=${2:-vim}

# ищем совпадения, показываем их в fzf с превью
local sel=$(
rg --line-number --no-heading --color=never "$1" \
| fzf \
--height 50% --border \
--delimiter ':' \
--preview 'bat --style=numbers --color=always --highlight-line {2} {1}' \
--preview-window 'right:60%' \
) || return

# вытаскиваем путь и номер строки
local file=${sel%%:*}
local rest=${sel#*:}
local line=${rest%%:*}

case "$editor" in
vim) vim +"$line" "$file" ;;
nano) nano +"$line" "$file" ;;
bat) bat --style=numbers --highlight-line "$line" "$file" ;;
*) "$editor" "$file" ;;
esac
}
export -f rgo


После того как вставишь этот блок в "~/.bashrc" или "~/.zshrc", перезапусти оболочку "exec $SHELL". Теперь rgo готова к работе.

Вывод:

В ситуациях, когда приходится много работать в терминале и редактировать файлы, такая команда заметно ускоряет работу. Одна короткая функция в конфиге превращает терминал в лёгкую и быструю среду разработки.

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

LinuxCamp | #utils #bymaga
🔥23👍149
This media is not supported in your browser
VIEW IN TELEGRAM
Этому вашему виндовсу "что в лоб что по лбу". Линуха никого не щадит)

LinuxCamp | #memes
😁43🔥7👍61
autossh — чтобы SSH-туннели не отваливались

Обычный "ssh -L" рвётся: сеть пропала, ноут ушёл в сон — туннель умер. Тулза autossh следит за соединением и сам перезапускает его. Незаменим для баз, Grafana, внутренних API — всего, что должно «всегда работать».

Установка:


sudo apt install autossh


Быстрый старт:

Достаточно заменить привычную команду ssh -L на autossh, добавив пару опций. Например, вместо:


ssh -L 5432:localhost:5432 user@111.111.111.111


Пишем:


autossh -M 0 -fN -L 5432:localhost:5432 user@111.111.111.111


Параметры тут важны. Флаг "-fN" означает запуск в фоне без запуска удалённой команды. Флаг "-M 0" отключает echo-порт, чтобы не мешал, — вместо него autossh будет использовать настройки keep-alive из SSH-конфига.

Надёжность через keep-alive:

Чтобы autossh действительно знал, когда туннель умер, нужно включить keep-alive. Добавьте в "~/.ssh/config":


Host *
ServerAliveInterval 30
ServerAliveCountMax 3


Теперь SSH будет каждые 30 секунд отправлять пинг на сервер. Если три пинга подряд не получат ответа, соединение считается мёртвым - и autossh запустит его заново.

Примеры из практики:

Обратный туннель (если сервер стоит за NAT или роутером):


autossh -M 0 -fN -R 2222:localhost:22 user@111.111.111.111


На VPS теперь можно выполнить ssh -p 2222 localhost — и попасть внутрь домашнего сервера, как будто он сам подключился. SOCKS-прокси с автопереподключением:


autossh -M 0 -fN -D 1080 user@111.111.111.111


Выставляете localhost:1080 в браузере - и получаете надёжный прокси, который не развалится при первой же потере Wi-Fi.

Автозапуск с systemd:

Если туннель нужен всегда (например, при старте сервера) — стоит обернуть autossh в systemd-сервис:


# /etc/systemd/system/db-tunnel.service

[Unit]
Denoscription=Persistent SSH tunnel to prod DB
After=network-online.target
Wants=network-online.target

[Service]
User=deploy
ExecStart=/usr/bin/autossh -M 0 -N -L 5432:localhost:5432 deploy@db-host
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target


Активировать можно одной командой:


sudo systemctl enable --now db-tunnel.service


Теперь туннель поднимется при загрузке сервера и будет перезапущен, если вдруг упадёт.

Вывод:

autossh незаметный, но жизненно важный инструмент. Просто заменяешь ssh на autossh, и туннель больше не рвётся. Настроил один раз - и забыл, что раньше ты делал это вручную.

LinuxCamp | #utils
28👍16🔥152❤‍🔥1
Релиз отечественного дистрибутива РЕД ОС 8 и 7

Все же в курсе про примерную ОС РЕД?) Так вот, разрабы «РЕД СОФТ» радуют нас новыми апдейтами.

Произошел выпуск РЕД ОС 8.0.2 и 7.3.6 с ядрами Linux 6.12.21 и 6.1.128, обновленным ПО (Zabbix, Docker, PostgreSQL), улучшенным дизайном KDE, MATE, GNOME 46.

Что нового в РЕД ОС 8?

— Обновленные ядра: исправлены уязвимости, улучшена производительность, наложены патчи безопасности, закрывающие более 1500 CVE.

— Обновленный дизайн графических окружений: в РЕД 8 обновлены темы оформления для KDE и MATE, изменен стиль экранов входа и блокировки. Окружение GNOME обновлено до версии 46.

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

LinuxCamp | #news
👍28💊9🔥63❤‍🔥2🫡2🗿2
Закрываем Docker-порты правильно

Даже если ты настроил ufw и открыл порты только на 22, 433 и 80, у тебя все равно сервисы docker могут торчать наружу. Это происходит потому что docker напрямую управляет iptables/nftables, вставляя свои правила до UFW, поэтому опубликованные порты могут быть доступны, даже если UFW их не показывает.

Почему это небезопасно:

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


docker run -p 8080:80 …


Или в docker-compose у тебя:

  ports:
- "8080:80"


То Docker сам открывает порт всему интернету (0.0.0.0), даже если в ufw status его нет. Это значит, что любой человек из сети может достучаться до твоего контейнера и ufw это не остановит - Docker обходит его фильтры.

Как правильно защитить контейнер:

Лучше всего конечно вообще не открывать порт наружу, если в этом нет нужды. Безопасный вариант (локальный доступ):


docker run -p 127.0.0.1:8080:80 …


либо в docker-compose.yml:

  ports:
- "127.0.0.1:8080:80"


Так сервис будет доступен только внутри сервера. Подходит для проксирования через nginx, который проксирует наружу, скрытых API и внутренних утилит, ssh-туннелей или VPN.

Вариант с открытым портом контейнера:

Если все-таки нужно по какой-то причине поднять контейнер на 0.0.0.0, то лучше закрыть эти порты с помощью правил. Docker поддерживает специальную цепочку DOCKER-USER, где ты можешь сам прописать фильтры:


# Разрешаем уже установленные соединения
sudo iptables -I DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Разрешаем только нужный порт (например, 8080)
sudo iptables -I DOCKER-USER -p tcp --dport 8080 -j ACCEPT

# Всё остальное режем
sudo iptables -A DOCKER-USER -j DROP


Важно: правила читаются сверху вниз, поэтому разрешающие вставляем перед правилом DROP.

Проверка:


ss -lntp | grep 8080 # Слушает ли порт


Если вывод пуст - порт больше не слушает «снаружи».

Вывод:

Docker по умолчанию открывает всё наружу, даже если UFW говорит, что порты закрыты. Если не нужен внешний доступ, не публикуй порты или публикуй на 127.0.0.1. Если доступ нужен - используй DOCKER-USER, чтобы жёстко ограничить доступ к нужным портам.

LinuxCamp | #devops #docker #bymaga
👍36🔥128👌71
This media is not supported in your browser
VIEW IN TELEGRAM
Особенно кайфово, когда windows раздел случайно затирается 🗣

LinuxCamp | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁65👍64💔3🔥1
Как найти процесс, который грузит сеть?

В случае когда соединение начинает тормозить, а ты не понимаешь, кто именно грузит сеть. Может, какой-то скрипт что-то качает? Или случайно оставил curl в фоне? В таких случаях хочется просто одной командой увидеть, какой процесс активнее всех гоняет трафик.

Для этого есть простая, но очень удобная утилита - nethogs. Она показывает, какой процесс сколько трафика использует в реальном времени. Интерфейс у неё похож на top, только вместо нагрузки на CPU - сетевой трафик.

Установка:


sudo apt install nethogs


Использование:

Запустить её можно вообще без параметров:


sudo nethogs


В этом случае она попытается определить интерфейс автоматически. Часто этого достаточно. Если ты точно знаешь, через какой интерфейс идёт трафик (чаще всего это eth0, но может быть ens18, enp0s3, wlan0, зависит от системы и типа подключения), то можешь указать его явно:


sudo nethogs eth0


После запуска ты увидишь список процессов, которые что-то скачивают или отдают. Указывается имя процесса, путь до исполняемого файла, пользователь, и скорость входящего/исходящего трафика.

Всё обновляется в реальном времени, можно наблюдать за сетевой активностью прямо на лету. Если не уверен, какой интерфейс использовать, глянь список всех с помощью команды:


ip a


Команда покажет список всех интерфейсов. Обычно нужный - это тот, где есть IP-адрес из подсети (например, 192.168.*.* или 10.*.*.*), и видно state UP.

Вывод:

Так можно удобно на сервере быстро понять, кто шумит. Или локально, если подозреваешь, что какая-то программа активно лезет в интернет. Утилита nethogs не показывает домены, IP-адреса или порты, а только процессы и их скорость. Но для локальной отладки этого обычно хватает с головой.

LinuxCamp | #utils
👍52🔥1813
Автоматическая защита SSH от перебора

Fail2ban - утилита для автоматической блокировки ip-адресов, с которых идёт много неудачных попыток подключения по ssh. Она нужна, когда сервер доступен напрямую по порту 22 и авторизация по SSH открыта во внешний интернет без vpn.

Установка:


sudo apt install fail2ban


По умолчанию fail2ban готов к работе сразу после установки. Чтобы убедиться, что он запущен и будет стартовать автоматически при перезагрузке системы, можно выполнить:


sudo systemctl enable --now fail2ban


Базовая настройка:

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


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


Затем отредактируйте файл:


sudo nano /etc/fail2ban/jail.local


В самом верху задаются базовые настройки: сколько времени держать IP заблокированным (bantime), за какой промежуток времени подсчитывать неудачные попытки (findtime), и после скольких попыток банить (maxretry). Например:


[DEFAULT]
ignoreip = 127.0.0.1
bantime = 3600
findtime = 600
maxretry = 5


Здесь fail2ban будет банить IP на 1 час (3600 секунд), если за последние 10 минут (600 секунд) с него было 5 неудачных попыток входа. Отдельно включается защита SSH:


[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s


После внесения изменений нужно перезапустить fail2ban, чтобы они вступили в силу:


sudo systemctl restart fail2ban


Для проверки текущего состояния защиты SSH используется:


sudo fail2ban-client status sshd


Эта команда покажет, сколько IP-адресов сейчас заблокировано и сколько всего попыток было зафиксировано.

Вывод:

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

LinuxCamp | #utils
👍38🔥175❤‍🔥5
KDE Plasma 6.4.4

Всем любителям окружения KDE Plasma посвящается) Вышел неплохой релиз. Что исправили и доработали в версии 6.4.4?

KWin (оконный менеджер)

— Теперь, для плагина лупы, правильно устанавливает начальный уровень масштабирования, так что больше не возникнет неловких проблем при первом запуске.

— Реже возникают "зависания" при работе с несколькими мониторами.

— Внесено множество исправлений, включая улучшенное поведение перетаскивания на прокручиваемых рабочих столах.

— Более стабильное редактирование виджетов панели для языков с письмом справа налево.

Discover (центр приложений)

— Discover стал надежнее в управлении удаленными источниками Flatpak.

— Теперь он не "задумывается" по 5 минут при проверке обновлений.

— Исправлены ошибки, из-за которых иногда не отображались доступные программы.

А так же исправили:

— Улучшена совместимость с новыми видеодрайверами (особенно для NVIDIA).

— Сетевой плагин System Monitor больше не опережает события, объявляя данные для процессов, которые еще не полностью загружены.

➡️ Подробнее про обновление читать ТУТ

🔥 Давайте, по приколу: все, кто использует KDE, ставьте пламя

LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥76👍139
Торвальдс снова агрессирует

Вы уже 100% видели эту новость, но давайте и у меня будет.

«Мусор», который «активно делает мир худшим местом для жизни» — так Линус Торвальдс вчера ответил на код инженера Google, присланный в рамках обновления поддержки RISC-V в ядре Linux.

Он добавил, что коду инженера Google «самое место в мусорке». Как вы уже догадались, данный коммит был отклонен.

Короче, желаю вам активно прокачивать софт скиллы, чтобы ваши комментарии не репостил кажды первый IT паблик)

LinuxCamp | #news
👍34😁18🔥6🥴54
Минимальная настройка мониторинга контейнеров в терминале

Иногда нужно быстро оценить, что происходит с контейнерами: какие из них под нагрузкой, сколько памяти занято, нет ли узких мест по I/O.

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

Установка:

Свежая версия ctop работает и с cgroup v2, поэтому ставим бинарник напрямую из репозитория проекта.


sudo install -m 0755 -d /usr/local/bin

curl -L https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -o /tmp/ctop

sudo install -m 0755 /tmp/ctop /usr/local/bin/ctop

ctop -v


Использование:

Чтобы просмотреть ресурсы всех контейнеров на локальном хосте, достаточно выполнить одну команду:


ctop


В интерфейсе можно переключаться между контейнерами стрелками, останавливать или перезапускать их, а также открывать логи прямо оттуда. Если нужно подключиться к удалённому Docker, можно указать адрес перед запуском:


DOCKER_HOST=tcp://remote-host:2375 ctop


Для тех, кто не хочет ставить бинарник на хост, есть запуск из контейнера:


docker run --rm -ti \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
quay.io/vektorlab/ctop:latest


Чем отличается от docker stats:

docker stats тоже показывает ресурсы, но только в виде списка с метриками. В ctop всё представлено в виде интерактивной таблицы с сортировкой, поиском, фильтрацией и возможностью управлять контейнерами прямо из интерфейса.

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

Вывод:

С помощью ctop можно в пару команд получить наглядную картину по всем контейнерам, переключаться между хостами и при необходимости управлять ими прямо из терминала. Такой способ полезен как при мониторинге и отладке, так и при повседневной работе с Docker.

LinuxCamp | #utils #devops #docker #bymaga
🔥23👍154❤‍🔥4🥴1
Прикольный сервис по разбору команд

Наткнулся тут в ленте на ExplainShell (интерактивный разборщик команд Linux) и решил мельком глянуть.

Работает он так: вбиваешь команду целиком, и получаешь объяснение, что конкретно делает каждый аргумент или оператор оболочки.

Работает на базе ~30k man-страниц из Ubuntu. Также является открытым решением (ссылка на Github). Мб кому-то будет интересно залезть внутрь и посмотреть реализацию. Под капотом у него: Python, NLTK, Flask и d3.js.

Конечно, в эпоху GPT юзкейс этого сервиса минимален... Но если нужно, допустим, убедиться в корректности оператора и лень открывать man в ручную, можно использовать.

Сори за перезалив 🗣


LinuxCamp | #services
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍159🥴1
Быстрая работа с json и yaml прямо в терминале

Иногда нужно быстро вытащить нужный параметр из конфигурации, проверить значение в json-ответе api или подправить yaml-файл, не открывая редактор.

Делать это вручную неудобно, особенно в скриптах и автоматизации. Здесь помогают jq и yq - это лёгкие утилиты, которые умеют разбирать, фильтровать и менять данные прямо в терминале.

Установка:

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


sudo apt install jq


С yq важно не путать версию на Go с устаревшей на Python, у них разные возможности. Быстрее всего взять готовый бинарник с официального репозитория:


sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq


Как использовать?

jq читает данные из файла или из пайпа, что удобно, когда работаешь с api. Например, чтобы вытащить значение поля name из json:


jq '.name' config.json


Если внутри массив, можно пройти по каждому элементу и взять только нужные значения. Такой приём часто используют для вытаскивания id:


jq '.[].id' data.json


yq делает то же самое с yaml и к тому же понимает json. Если нужно узнать, какой образ используется в docker-compose.yml:


yq '.services.app.image' docker-compose.yml


Менять файлы тоже просто, добавляем -i и задаём новое значение, например, меняем порт:


yq -i '.services.app.ports[0] = "8080:80"' docker-compose.yml


Полезно помнить, что оба инструмента можно комбинировать с grep, awk и другими утилитами, а yq умеет работать с вложенными yaml-файлами, что упрощает правку сложных конфигов kubernetes.

Вывод:

С помомью jq и yq можно автоматизировать множество рутинных задач: от чтения конфигов в ci/cd до быстрой правки параметров без открытия редактора.

Такой подход экономит время и позволяет обрабатывать данные прямо в командной строке, без лишних инструментов.

LinuxCamp | #utils
🔥28👍158🥴1
Увеличение рыночной доли Linux

ОС Linux с каждым годом все более уверенно подгребает под себя пользователей и набирает обороты.

Подъехали свежие цифры текущей доли рынка Linux на десктопах:

— Судя по статистике от различных источников (Statcounter, Steam Survey, Statista и Stack Overflow), доля Linux на десктопах варьируется от 2,7% до 4%.

— Среди геймеров на Steam она составляет ~ 2,9%, опережая macOS.

— По опросу вутри Steam, самыми ходовыми ос являются: Arch Linux, Linux Mint и Ubuntu.

Так что продолжаем проталкиваться в массы и учить программирование, чтобы проталкивать Linux в массы)

LinuxCamp | #news
😇28👍129🔥4🦄2🥴1
🐸 Основы Linux: самые нужные команды

Держи несколько базовых команд, которые помогут тебе чувствовать себя "на коне".

Узнать путь

Начнем с перемещения по файловой системе. Команда pwd показывает, где ты находишься сейчас:


pwd


Посмотреть файлы

Если нужно посмотреть, что лежит в папке, используется ls. Для удобства сразу пиши флаги "-l" или "-la", чтобы увидеть доп инфу и скрытые файлы:


ls -la


Создать каталоги

Создавать папки и файлы можно через mkdir и touch. Например, так создаётся новая директория и пустой файл внутри неё:


mkdir projects
cd projects
touch readme.txt


Переместить/скопировать файлы

Чтобы переместить или скопировать файлы, пригодятся mv и cp. Перемещение файла в другую папку выглядит так:


mv readme.txt /home/user/Documents/


А если нужно именно скопировать:


cp readme.txt backup_readme.txt


Посмотреть содержимое файла

Чтение содержимого файла можно сделать через cat, а если файл большой, то удобнее использовать less:


cat readme.txt
less /var/log/syslog


Поиск файла

Иногда нужно найти, где именно лежит файл. Для этого есть команда find:


find /home/user -name "*.txt"


Управление процессами

Работа с процессами тоже часто нужна. Чтобы посмотреть, что сейчас запущено, используется ps или более наглядный top:


ps aux
top


А чтобы завершить процесс по PID, выполняется kill:


kill 1234


Управление правами доступа

И, конечно, права доступа. Проверить их можно через ls -l, а изменить с помощью chmod. Например, дать права на выполнение скрипта:


chmod +x noscript.sh


LinuxCamp | #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍228🥴4🤝2🌚1
Линус, три в одном

Мне вот этот комментарий на Reddit понравился:

«Если бы я оказался на необитаемом острове, и единственным способом выбраться оттуда было бы сделать красивый интерфейс, я бы там и умер».

— Торвальдс, великий дизайнер


Мы же, как раз, все его и знаем как "великого дизайнера" 🗣

LinuxCamp | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁65🔥193👏3🤔2🤨1
Знаешь только apt? Разбираемся в пакетных менеджерах

Многие начинают с ubuntu и apt, но потом сталкиваются с другими дистрибутивами. Там вместо привычных команд - dnf или pacman. Плюс новые форматы приложений.

Давайте расширим базу наших знаний и пройдемся по всем популярным менеджерам пакетов:

Apt

Начнём с apt. Он используется в Debian и всех его производных: Ubuntu, Linux Mint, Pop!_OS. Это один из самых простых и понятных менеджеров:


sudo apt update
sudo apt install htop


Плюс apt в том, что пакеты проверяются и приходят из официальных репозиториев, а значит они стабильны и хорошо интегрируются в систему.

Минус - версии могут заметно отставать от апстрима, а чтобы получить новое, приходится подключать PPA или ставить вручную.

Dnf

Используется в Fedora, RHEL и CentOS. Это развитие старого yum. Он работает схожим образом, но отличается продуманным управлением зависимостями и расширенной системой плагинов:


sudo dnf install htop


Преимущество dnf - обновления в Fedora приходят очень быстро, почти сразу после релиза. В корпоративных системах на RHEL, наоборот, делают упор на стабильность.

Минус - экосистема поменьше, чем у Debian/Ubuntu, и часть пакетов приходится искать в сторонних репозиториях.

Pacman

Arch Linux и все его производные, например Manjaro, используют pacman.


sudo pacman -Syu htop


Pacman минималистичный и очень быстрый. У Arch одно из самых свежих и полных репозиториев. А если чего-то нет, есть AUR, где пользователи выкладывают свои PKGBUILD. Нужно учитывать, что не все пакеты из AUR одинаково безопасны.

Snap

Теперь перейдём к универсальным форматам. Snap - это контейнеризованные пакеты от Canonical. Он предустановлен в Ubuntu, а в других системах ставится отдельно. На Debian и Ubuntu-подобных он доступен в репозитории:


sudo apt update
sudo apt install snapd


В Fedora нужно включить snapd и добавить поддержку сервисов:


sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap


В Arch Linux установка выглядит так:


sudo pacman -S snapd
sudo systemctl enable --now snapd.socket


После этого можно ставить приложения:


sudo snap install vlc


Flatpak

Он решает похожую задачу. Предустановлен в Fedora, а в других системах добавляется вручную. В Ubuntu и Debian ставится так:


sudo apt install flatpak
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo


В Fedora он уже включён, достаточно лишь подключить Flathub:


sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo


В Arch Linux flatpak доступен напрямую:


sudo pacman -S flatpak
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo


После чего можно устанавливать приложения, например:


flatpak install flathub com.spotify.Client


Flatpak экономит место за счёт общих библиотек и даёт гибкий контроль доступа. Но приложения из Flathub могут быть тяжелее и иногда хуже интегрируются с системой.

Вывод

apt, dnf и pacman — это системные менеджеры, каждый со своим семейством дистрибутивов. Они надёжные и интегрированные, но иногда ограничены по свежести пакетов.

Snap и Flatpak - это универсальные форматы, которые работают поверх любой системы, позволяют получать последние версии программ, но требуют больше ресурсов.

На практике часто сочетают оба подхода: системный менеджер для базовых пакетов и Flatpak или Snap для новых приложений. Такой микс даёт и стабильность, и актуальность.

LinuxCamp | #utils
👍6714🔥13
А потому что компанию нужно правильную выбирать) Сначала windows под забором ставит, а потом, что...

LinuxCamp | #memes
😁93🥱63🔥3🤔3
Namespaces в Linux: как работает изоляция процессов

Когда мы говорим про контейнеры и виртуализацию на уровне ОС, ключевая технология, которая это обеспечивает - namespaces.

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

По умолчанию все процессы видят одну и ту же систему: один список процессов, один hostname, одну файловую иерархию. Namespaces позволяют разрезать это пространство на отдельные «куски», и процесс внутри такого куска думает, что он единственный в системе.

Пример создания namespace:

Создать новый namespace можно утилитой unshare. Например, давайте изолируем hostname:


sudo unshare --uts /bin/bash


Теперь в новом шелле можно поменять имя хоста:


hostname container1


Если открыть вторую сессию и выполнить hostname, мы увидим старое имя. То есть разные процессы живут с разными настройками.

Пример изоляции процессов:

В обычной системе ps покажет все процессы, но если создать новый PID namespace:


sudo unshare --pid --fork --mount-proc /bin/bash


и выполнить там:


ps -ef


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

Namespaces бывают разных типов:

UTS - изоляция имени хоста и домена.
PID - изоляция процессов.
Mount - отдельная файловая иерархия.
Network - собственные сетевые интерфейсы и таблицы маршрутов.
IPC - изоляция межпроцессного взаимодействия.
User - собственные пользователи и идентификаторы.
Cgroup - изоляция и управление ресурсами (каждый процесс видит только свою часть иерархии cgroups).

Вывод:

На практике контейнеры в Docker или Podman используют комбинацию нескольких namespaces сразу. Поэтому внутри контейнера видно только свои процессы, сеть, файловую систему и т.д.

Главный плюс namespaces - это лёгкая изоляция без полноценной виртуальной машины. Но они не решают задачу безопасности полностью, поэтому для жёсткой изоляции применяют дополнительные механизмы, например cgroups и seccomp.

LinuxCamp | #utils #bymagadrovosex
🔥28👍23111
Подводим итоги полугодия

Чуть с опозданием, но делаю сводку ключевых постов (март - август 2025):

Оболочка

1. Перемещайся по файловой системе как флеш: CDPATH

SSH

1. Автоматическая защита SSH от перебора
2. Портфорвардинг по ssh
3. autossh — чтобы SSH-туннели не отваливались

Сеть

1. Как найти процесс, который грузит сеть: nethogs
2. nft: современный фаервол в Linux, который заменил iptables
3. ss: современный способ смотреть порты и сетевые соединения
4. ncdu — лучший способ быстро очистить место на сервере
5. Шпаргалка по ufw для базовой настройки фаервола
6. Шпора по флагам rsync

Файлы и каталоги

1. Введение в команды: pushd, popd, dirs
2. Практика использования: pushd, popd, dirs
3. Как вернуть последний каталог в стек?
4. Полезные опции для поиска файлов через grep
5. Удаление файлов старше n дней: find
6. Как разбить файл на части: split
7. Если часто просматриваешь логи, помни про "tail -f"
8. Как правильно удалять ссылки?
9. Команда chgrp и изменение атрибутов ссылок
10. Приводим хаос данных к порядку: sort
11. lsof: что держит порт, файл или устройство занятым?
12. rg (ripgrep) - самый быстрый поиск в файлах
13. fzf - быстрый «поиск-как-пишешь» прямо в терминале
14. bat — «цветной cat» с номерами строк и подсветкой кода
15. Продвинутый просмотр размера каталога: du

Разбор команд

1. Разница между su и su -
2. Как менять пароли: passwd
3. Как узнать разрядность операционки?
4. Как работает cron и зачем он нужен?
5. Команда watch: живой взгляд на процессы и метрики
6. tmux: держим терминал «живым», даже если связь пропала
7. tldr — короткие примеры вместо километров man-страниц
8. Быстрая работа с json и yaml прямо в терминале
9. Разбираемся в пакетных менеджерах
10. Как узнать тип сессии: Wayland или Xorg?
11. Собери себе эстетичный IDE в терминале

Личные практики:

1. Как я познакомился с Dbus-ом
2. Утилиты для работы с DBus сервисами
3. На повестке дня gsettings
4. Подключение к сети через "CaptivePortal"
5. Мой Linux roadmap

DevOps

1. От cron‑а к DAG‑ам: зачем нужен оркестратор и почему именно Airflow
2. Базовая настройка Nginx и подключение домена: как я это сделал
3. Как очистить сервер от мусора
4. Что такое Ansible - и как обновить пакеты сразу на 10 серверах
5. Caddy - замена Nginx с авто-TLS и минимальной настройкой
6. Что такое logrotate и как он спасает ваши диски

Docker

1. Собираем минимальный Docker образ
2. Из чего состоит Dockerfile?
3. Команда docker init: как использовать на Windows
4. Почему docker compose logs -f спасает на проде
5. Оптимизация Dockerfile и образов
6. Что такое docker network и зачем он нужен?
7. Масштабируем сервисы через docker compose --scale
8. Что такое Docker Swarm и как с ним работать
9. Закрываем Docker-порты правильно
10. Минимальная настройка мониторинга контейнеров в терминале

Systemd

1. Как сделать службу недоступной?
2. Проверка статуса службы
3. Где же сидят эти службы?
4. Systemd Timer - альтернатива cron

Файловая система

1. Размонтирование файловой системы: unmount
2. Типы файловых систем Linux
3. Удобная работа с файловой системой через CLI: mc
4. Как исправить "rm: cannot remove ‘file’: Device or Resource Busy"?

Подборки

1. Лучшие эмуляторы терминала
2. Топ 5 полезных приложений на Linux

Процессы и программы

1. Namespaces в Linux: как работает изоляция процессов

LinuxCamp | #sumup
1🔥54👍28❤‍🔥85👏1