LinuxCamp | DevOps
13.6K subscribers
292 photos
14 videos
402 links
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.

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

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

РКН: https://clck.ru/3RWA3C
Download Telegram
В России заблокировали Linux! на время

Российские пользователи и разработчики потеряли доступ к git.kernel.org и другим связанным ресурсам. Проблемы, вероятно, возникли из-за работы технических средств противодействия угрозам (ТСПУ) на фоне замедления работы Telegram.

Роскомнадзор заявил, что не блокировал сервисы Linux в России, так что пока выдыхаем 😮‍💨

LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
😱42😁30❤6🔥2🙏2🙈2👾2🥱1
Типичный линуксоид, он такой))

1. Хейтим винду и хвалим творение "О Великого Торвальдса"

2. Не тянем тяжелый люкс и 10 часов восстанавливаем систему))

LinuxCamp | #memes
😁73🤔8👍7🔥5🥴2
Notepad++ полгода распространял китайский вирус через обновления из-за взлома хостинга

Китайские хакеры более полугода имели возможность запускать бинарники на компьютерах пользователей Notepad++

Детали компрометации Notepad++:

- В июне 2025 года был взломан сервер обновлений Notepad++. Это позволило вредоносным бинарникам выполняться через механизм обновления утилиты.

- По словам исследователя в области кибербезопасности Кевина Бомонта, взлом был осуществлён группировкой «Funky Stamen».

- Автор Notepad++ также заявил, что, по всей вероятности, атака была проведена «китайской группой, спонсируемой государством».

- 18 ноября 2025 года разработчик Notepad++ выпустил обновление версии 8.8.8, в которое был включён патч для апдейтера в связи с «потенциальной проблемой перехвата».

- Окончательно выгнать хакеров удалось только 2 декабря.

Это тот редкий кейс, когда open-source проект пострадал не из-за собственного кода, а из-за слабого звена в цепочке поставки — хостинга. Полгода атака оставалась почти незаметной.

LinuxCamp | #news
😱23👍7❤6😁1🤔1
Я настроил свое рабочее пространство в терминале сервера

Люблю работать прямо на сервере: деплой, логи, конфиги, контейнеры. Раньше для этого я открывал несколько вкладок и подключался по SSH по два-три раза. Когда проектов и логов становится много это превращается в хаос. Закрыл вкладку - процесс умер. Переподключился - всё заново.

Решение:

Пересобрать это через tmux.

tmux создает отдельную сессию внутри SSH. Даже если соединение оборвалось, процессы продолжают жить. Ты возвращаешься на сервер, открываешь сессию, а там все на месте.

Создать сессию:


tmux new -s backend


Окна и панели

Но самое полезное - это окна и панели.

Окна в tmux как вкладки, а панели разделяют экран внутри одного окна. Теперь у меня в одной сессии может быть окно с логами, второе с деплоем, третье с htop.

Разделить экран можно так:


Ctrl + b, % # вертикальный split
Ctrl + b, " # горизонтальный split


Создавать и переключаться между окнами:


Ctrl + b, c # создание окна
Ctrl + b, n # переключение между окнами


Если нужно уйти и оставить все работать:


Ctrl + b, d


Вернуться:


tmux attach -t backend


Вывод:

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

LinuxCamp | #utils
👍38❤‍🔥8🔥6❤5
Временный секрет в Linux без следов

Иногда нужно сохранить пароль или токен на пару минут. Передать в скрипт, использовать в деплое, проверить подключение и не оставить его в history, tmp-файлах или с правами.

Сделаем временный файл, который доступен только владельцу и сам удалится.

Создаём безопасный файл

Сразу задаем строгие права и создаём уникальный файл:


umask 077
SECRET_FILE=$(mktemp /tmp/secret.XXXXXX)


umask 077 гарантирует, что файл будет доступен только владельцу.
mktemp создаёт файл атомарно и защищает от подмены в /tmp.

Права выставляются в момент создания.

Вводим секрет без history

Читаем данные напрямую из TTY и записываем в файл:


read -s SECRET
printf "%s\n" "$SECRET" > "$SECRET_FILE"


read -s не показывает ввод.
Переменная живет только в текущем shell.
В history ничего не попадет.

Автоудаление

Настроим удаление через 5 минут:


(sleep 300; shred -u "$SECRET_FILE") &


sleep задает задержку. shred -u перезаписывает и удаляет файл. Процесс уходит в фон, можно продолжать работу.

Даже если выйдешь из shell, удаление все равно произойдет.

Итог

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

LinuxCamp | #utils
👍37❤13🔥11😁3✍2👌1
В 2004 году Sun Fire E25K (UNIX-сервер, мейнфрейм-класс) был самым топом в мире вычислений.

Это была самая большая Unix-машина, которую вообще можно было купить за деньги (около $2 млн в максимальной конфигурации)

Что по мощностям:

• 36 процессоров UltraSPARC IV (72 ядра)
• 576 ГБ ОЗУ
• 18 полностью hot-swap плат CPU/памяти
• гигабитный Ethernet и Fibre Channel HBA
• резервированные блоки питания и зоны охлаждения, энергопотребление – около 15 кВт

Сейчас это все, конечно, смешно, но тогда равных не было 😳

LinuxCamp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥14❤11
Говори с Linux. Буквально.

Vocalinux - это CLI утилита для Linux, которая слушает микрофон, распознает речь и вставляет результат как обычный текст в активное окно.

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


голос → распознавание → текст → вставка в активное окно


Чем распознает и что умеет

В репозитории заявлена поддержка нескольких движков распознавания, включая whisper.cpp как основной вариант, а также альтернативы вроде Whisper и Vosk.

Утилита ориентирована на локальную работу и не требует облачного сервиса как обязательного условия.


vocalinux --help


Как правильно воспринимать результат

Vocalinux не "управляет Linux", он печатает распознанный текст туда, где стоит курсор.

Поэтому для терминала самый прямой сценарий это произнести команду так, чтобы она распозналась текстом, а выполнение уже делает сам shell после нажатия Enter.

Например сказать:


docker ps


и команда вставится в поле ввода

Вывод

Vocalinux полезен как hands free ввод текста, а не как голосовой ассистент, который понимает смысл фраз и сам строит команды.

LinuxCamp | #utils
👍23🤔6🔥5😁5🥴4❤1
Параллельная разработка без git checkout

Есть интересная CLI-утилита - worktrunk.

Она упрощает работу с git worktree - встроенной возможностью Git, которая позволяет держать несколько веток одного репозитория одновременно в разных папках.

В чем проблема обычного Git. Обычно workflow такой:


git checkout feature-a
# работаем

git checkout main

# возвращаемся
git checkout feature-b


Но если нужно:

* держать несколько веток одновременно
* тестировать несколько фич
* работать с несколькими PR
* запускать разные версии сервиса


начинаются постоянные checkout, stash и переключения.

Что решает worktrunk

Утилита делает удобным использование git worktree.

Создать отдельную рабочую папку для ветки:


wt create feature-auth


Git создаст новую директорию:


repo/
repo-feature-auth/


Теперь можно держать несколько веток открытыми, запускать разные версии проекта, не делать постоянные checkout

Почему это особенно актуально сейчас

С появлением AI-агентов разработка все чаще становится параллельной.

Например:


repo-main -> основная работа
repo-agent-auth -> агент пишет фичу
repo-agent-refactor -> агент делает рефактор
repo-agent-tests -> агент генерирует тесты


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

Вывод

git worktree позволяет иметь один репозиторий, несколько веток и несколько рабочих директорий, а CLI вроде worktrunk просто делает эту возможность Git намного удобнее.

LinuxCamp | #utils
👍14🤔8🔥4⚡2❤2❤‍🔥1😍1
Только она спасает 🫡

LinuxCamp | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁96👍11🔥6🤣4❤3🤔1🤯1🥴1
Как пишут интерфейсы для терминала на Rust

Многие популярные CLI-утилиты имеют интерактивный интерфейс прямо в терминале.

Такие интерфейсы называют TUI (Terminal UI) - панели, таблицы, графики и списки, которые работают прямо в терминале по SSH. В Rust для этого часто используют библиотеку Ratatui.

Что умеет Ratatui

Это набор виджетов для терминальных интерфейсов:


* таблицы
* списки
* графики
* вкладки
* прогресс-бары
* панели и layout


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


use ratatui::widgets::{Block, Borders};

let block = Block::default()
.title("Dashboard")
.borders(Borders::ALL);


После этого интерфейс рендерится прямо в терминал.

Почему TUI снова популярны

Терминальные интерфейсы имеют несколько преимуществ:


* работают по SSH
* почти не требуют ресурсов
* идеально подходят для DevOps
* удобны для серверных инструментов


Поэтому всё больше CLI-утилит делают не просто вывод текста, а полноценный интерфейс в терминале.

Вывод

Ratatui - библиотека на Rust, которая позволяет писать интерактивные интерфейсы прямо в терминале. Именно на таких инструментах строятся современные TUI-утилиты вроде lazygit и k9s.

LinuxCamp | #utils
👍22❤7🔥5
Шпаргалка про доступы в Linux: ACL

Зачем ACL, если есть chmod

chmod умеет только "владелец, группа, остальные". ACL нужен, когда надо выдать права конкретному пользователю или группе точечно, не трогая владельца и не создавая отдельную группу под каждый кейс. Проверить, есть ли ACL у файла, можно сразу командой.


getfacl file.txt


Выдать доступ конкретному юзеру

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


setfacl -m u:alice:rw file.txt
setfacl -x u:alice file.txt


Дефолтные ACL для папки

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


setfacl -m d:u:alice:rwX -m u:alice:rwX /shared
getfacl /shared


Вывод:

ACL это точечные права для файлов без плясок с группами. Если видишь странный доступ, не забывай смотреть getfacl, помимо ls -l.

LinuxCamp | #utils
🔥27👍16❤4
Atuin: история команд, которую реально можно найти

Что это и чем лучше обычного history

Atuin заменяет стандартный history на нормальный поиск по командам. Он хранит команды в базе, умеет искать по подстроке и фильтровать по каталогу, хосту и времени, а не просто листать "последние 500 строк".


команда → сохраняется → индексируется → находится за секунды


Установка и подключение к shell

Ставишь бинарник и добавляешь инициализацию в свой shell. После этого стрелка вверх начинает работать через Atuin, плюс появляется интерактивный поиск по истории.


atuin init bash >> ~/.bashrc
source ~/.bashrc


Как пользоваться

Самый частый сценарий: забыл точную команду, помнишь кусок или контекст. Открываешь поиск и находишь ровно то, что ты уже делал. Это особенно полезно для длинных команд с kubectl, docker, ssh, rsync, openssl.


atuin search "kubectl port-forward"


Вывод

Atuin превращает историю команд из помойки в инструмент, который экономит время каждый день.

LinuxCamp | #utils
🔥16👍6❤5🤔1
fzf-tab: автокомплит через tab в терминале

Что это такое

fzf-tab - это плагин для zsh, который прокачивает Tab completion. Вместо “вставило первый вариант и молись” ты получаешь список вариантов и можешь выбрать нужный через fzf. Особенно приятно на путях, git ветках, kubectl контекстах, ssh хостах и пакетах.


Tab → список вариантов → fzf выбор → подстановка в команду


Установка и включение

Нужны zsh, fzf и менеджер плагинов (чаще всего zinit или oh-my-zsh). С zinit установка выглядит так.


zinit light Aloxaf/fzf-tab


Можно также просто склонить плагин и подключить в ~/.zshrc:


sudo apt install fzf
git clone https://github.com/Aloxaf/fzf-tab ~/.zsh/fzf-tab
source ~/.zsh/fzf-tab/fzf-tab.plugin.zsh
exec zsh


Как работать

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


cd /var/www/ # жмёшь Tab и выбираешь нужный каталог через fzf


LinuxCamp | #utils
❤12🔥10👌2
Эйджизм дошел и до Linux

В Калифорнии с 1 января 2027 года все операционные системы, включая Linux, обязаны проверять возраст пользователей при создании аккаунта.

Система сортирует на четыре группы: до 13, 13–16, 16–18 и 18+. Любое приложение сможет запросить эту категорию через API.

Если компания проигнорирует API и допустит ребёнка куда не следует, её оштрафуют: 2500$ за случайное нарушение и 7500$ за умышленное — с каждого пострадавшего ребёнка.

Дистрибутивы Linux Ubuntu и Elementary OS уже думают над текм, как реализовать функциональность проверки возраста (для всех пользовательских аккаунтов в ОС), чтобы соответствовать новому закону штата Калифорния.

«Сейчас мы изучаем, как реализовать API, который будет соответствовать требованиям закона и при этом не станет катастрофой для приватности» — Аарон Рейнболт, член Ubuntu Community Council.


Текущее предложение – добавить новый D-Bus-интерфейс (org.freedesktop.AgeVerification), что потенциально затронет все Linux-системы.

LinuxCamp | #news
💊43😁17👍7🤯4
Ладно, Сэму Альтману еще есть над чем работать))

LinuxCamp | #memes
😁94❤6❤‍🔥4
gping: ping, который показывает график

Зачем он нужен

Обычный ping даёт цифры, но по ним сложно быстро понять картину: есть ли спайки, дрожание задержки, редкие провалы. gping делает то же самое, но рисует график задержек прямо в терминале, и сразу видно стабильность канала.


gping 1.1.1.1


Как поставить и запустить

Ставится как обычная утилита, дальше просто указываешь хост или IP. Можно пинговать несколько целей одновременно и сравнить, где хуже.


# Debian/Ubuntu (часто через cargo)
cargo install gping
gping google.com 1.1.1.1 8.8.8.8


Как читать график

Каждая точка это RTT, а зубцы показывают джиттер. Если линия ровная, сеть стабильна. Если есть редкие пики, значит где-то очереди или перегрузка. Если появляются дыпы, значит потери или проблемы с маршрутом.


ровно = стабильно
пики = джиттер или очереди
пропуски = потери или таймауты


Вывод

gping удобен как быстрая диагностика сети без Wireshark и без угадывания по цифрам из ping.

LinuxCamp | #utils
👍28🔥8👌5❤1🌚1
age: шифрование файлов без лишних сущностей

Зачем оно нужно

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


файл → age encrypt → файл.age → age decrypt → файл


Генерация ключей и шифрование

Сначала создаёшь ключевую пару и берёшь публичный ключ. Шифруешь файл публичным ключом, расшифровываешь приватным. В репозитории обычно хранится только *.age, приватный ключ хранится отдельно.


age-keygen -o key.txt
age-keygen -y key.txt > key.pub

age -r "$(cat key.pub)" -o .env.age .env
age -d -i key.txt -o .env .env.age


Практика для серверов и команд

Удобный сценарий: зашифровал конфиг, положил в git или отправил на сервер, а на сервере расшифровал ключом, который лежит в защищённом месте. Чтобы не оставлять открытый файл на диске, можно расшифровать в stdout и сразу передать дальше в команду.


age -d -i key.txt .env.age | docker compose --env-file /dev/stdin up -d


Вывод

age - это простой способ держать секреты в файлах, не превращая задачу в отдельный проект.

LinuxCamp | #utils
👍20🔥9❤5
rsync по SSH: быстрые копии без ошибок

Быстро и с прогрессом

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


rsync -avh --info=progress2 ./project/ user@server:/opt/project/


Исключения и чистая синхронизация

Часто не нужно тащить node_modules, .git, кеши и сборки. Это проще делать через --exclude. А если хочешь, чтобы на сервере стало ровно как локально, добавляешь --delete, тогда удалятся файлы, которых уже нет у тебя.


rsync -avh --info=progress2 \
--exclude '.git' --exclude 'node_modules' --exclude 'dist' \
--delete \
./project/ user@ip:/opt/project/


Быстрее на больших деревьях

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


rsync -avh --info=progress2 -z \
-e "ssh -T -c aes128-gcm@openssh.com" \
./project/ user@ip:/opt/project/


Вывод

rsync по SSH это рабочий инструмент для деплоя и миграций, где важны скорость, контроль и предсказуемость.

LinuxCamp | #utils
👍38🔥14❤6