PyLinux - Всё о Linux, Python и IT


Гео и язык канала: Россия, Русский
Категория: Технологии


У нас ты найдешь 👇
- библиотеки и скрипты python
- инструменты linux
- полезный софт
- важнейшие новости из мира IT
Связь с админом: @ghostifix
Купить рекламу: https://telega.in/c/pylinux0
РКН: https://clck.ru/3NywZG

Зарегистрирован в РКН
Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Таков путь... 🫡

😎 PyLinux | #memes


namei — почему нет доступа к файлу

Знакомая боль: пытаемся открыть файл, а в ответ Permission denied. Права на сам файл вроде правильные, но доступа все равно нет.

Часто проблема не в самом файле, а в одной из папок по пути к нему. И есть команда, которая позволяет быстро проверить всю цепочку целиком — namei.

🤔 Почему прав на файл недостаточно

Чтобы добраться до /home/user/data/secret.txt, система проверяет права на каждый каталог в пути:

/ ➡️ home/ ➡️ user/ ➡️ data/ ➡️ и только потом сам файл

Для каталогов особенно важно право x — оно позволяет проходить через каталог.

Если хотя бы у одного каталога в цепочке нет подходящего x, доступ к файлу будет невозможен — даже если сам файл имеет права 777.

🔍 Что такое namei

namei берёт путь и разбирает его по звеньям, показывая права на каждом уровне. Не нужно вручную выполнять ls -ld для каждой папки.

namei -l /home/user/data/secret.txt

Флаг -l (long) показывает права, владельца и группу.

📄 Как читать вывод

f: /home/user/data/secret.txt
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-x--- user user user
drwxr-xr-x user user data
-rw-r--r-- user user secret.txt

Разбираем:

🔵 f: — путь, который анализируем
🔵 каждая строка — одно звено цепочки с правами, владельцем и группой
🔵 первая буква: d — папка, - — файл, l — симлинк

🎯 Находим виновника

Допустим, мы заходим под другим пользователем, который не является владельцем user и не входит в группу user.

Тогда упираемся в:

drwxr-x--- user user user

Права drwxr-x--- означают:

🔵 user как владелец — rwx
🔵 группа user — r-x
🔵 остальные пользователи — ---

То есть чужой пользователь не может даже пройти через каталог /home/user.

При этом права самого secret.txt могут быть совершенно нормальными. Проблема находится выше — в пути к файлу.

🔗 Симлинки тоже видно

Если в пути есть символическая ссылка, namei покажет её и укажет, куда она ведёт:

namei -l /var/www/html
f: /var/www/html
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
lrwxrwxrwx root root html -> /srv/website
drwxr-x--- root root /srv/website

Сразу видно: html — это ссылка на /srv/website, а уже у этой директории ограничены права.

⚙️ Как исправить

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

chmod o+x /home/user

o+x добавляет пользователям из категории other право x — то есть возможность проходить через каталог.

⚠️ Но это лишь пример. Не стоит бездумно открывать домашние каталоги. Если доступ нужен только конкретному пользователю, лучше использовать ACL, а не давать x всем.


Если нравится подобный формат, ставь — 🔥

😎 PyLinux | #linux


🚀 10 неочевидных фишек bash

Все знают ls и cd, но в bash есть масса мелочей, которые экономят часы.

1️⃣ !! — повтори последнюю команду

git commit
# забыл sudo?
sudo !!
Работает везде, даже если команда была длинная.

2️⃣ !$ — последний аргумент

Предыдущая команда была cat /etc/very/long/path/to/file.conf, а теперь нужно отредактировать этот же файл:
cat /etc/very/long/path/to/file.conf
vim !$

3️⃣ ^старое^новое — замена в последней команде

Ввели неправильно, но лень печатать всё сначала:
lsof /etc/passwrd
^passwrd^passwd

Bash сам заменит и выполнит исправленную команду.

4️⃣ cd - — вернись на предыдущую папку

Прыгаем между папками туда-сюда:
cd /var/log
cd /home/user
cd - # вернулся в /var/log
cd - # снова в /home/user

5️⃣ pushd и popd — стек директорий

Когда cd - недостаточно и нужно помнить несколько папок:
pushd /var/log
pushd /home/user
pushd /etc
popd # вернулись в /home/user
popd # в /var/log
dirs # видим весь стек

6️⃣ ${variable:-default} — значение по умолчанию

Если переменная не установлена — используй значение по умолчанию:
echo ${EDITOR:-nano}
# если EDITOR не установлена, выведет nano
Без : будет ошибка.

7️⃣ {1..10} — диапазоны

Создаём кучу файлов или папок без цикла:
touch file{1..5}.txt
# создаст file1.txt file2.txt ... file5.txt

mkdir -p backup/{2024..2026}/{01..12}
# распределит по годам и месяцам

8️⃣ !!:gs/старое/новое/ — глобальная замена в истории

Более мощный вариант замены в команде:
docker ps -a | grep postgres
!!:gs/postgres/mysql/
# повторит команду, заменив все postgres на mysql

9️⃣ shopt -s histappend — история не перезаписывается

По умолчанию bash перезаписывает историю, если открыто несколько терминалов. Добавляем в .bashrc:
shopt -s histappend
HISTFILESIZE=20000
HISTSIZE=10000

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

1️⃣0️⃣ set -o vi или set -o emacs — режимы редактирования

В bash встроены навигация как в vim или emacs:
set -o vi

Теперь можем использовать h/j/k/l для движения по строке, dd удаляет и прочее.

Если было полезно, сохраняй и ставь — 👍

😎 PyLinux | #linux #bash


А в чем, собственно, проблема? 🚬

😎 PyLinux | #memes


🐧 Реверс-прокси и HTTPS через Caddy автоматом

Настройка HTTPS всегда была болью: сертификаты, продления, простыни конфигов. Caddy решает это одной строкой — он сам получает и обновляет сертификаты Let’s Encrypt. Поднимаем реверс-прокси с авто-HTTPS за пять минут 👇

🤔 Зачем нужен реверс-прокси

Запросы приходят на него, а он направляет их нужному сервису внутри. Что это даёт:

🔵 Один вход (порты 80/443) на несколько приложений
🔵 HTTPS в одном месте для всех сервисов
🔵 Красивые домены вместо IP:8080

Почему Caddy, а не nginx

🔻 Автоматический HTTPS — сам получает и продлевает сертификаты
🔻 Простейший конфиг — пара строк вместо 30
🔻 HTTP/2 и HTTP/3 из коробки, один бинарник без зависимостей

📦 Установка

Debian/Ubuntu:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy

Arch: sudo pacman -S caddy

🌐 Самый простой реверс-прокси

Конфиг живёт в /etc/caddy/Caddyfile. Пишем всё, что нужно для HTTPS + проксирования:
myapp.example.com {
reverse_proxy localhost:8080
}

Перезагружаем:
sudo systemctl reload caddy

Всё.
Caddy сам получит сертификат от Let’s Encrypt и настроит HTTPS.

⚠️ Важно: домен должен указывать на IP сервера (A-запись), а порты 80 и 443 — быть открыты. Без этого сертификат не выдадут.


📱 Несколько сервисов сразу

Легко раскидать приложения по поддоменам — каждый получит свой сертификат:
app.example.com {
reverse_proxy localhost:3000
}
api.example.com {
reverse_proxy localhost:5000
}

⚙️ Полезные примеры

Балансировка между бэкендами:
app.example.com {
reverse_proxy localhost:8081 localhost:8082
}

Базовая авторизация (хеш — через caddy hash-password):
secret.example.com {
basic_auth {
admin $2a$14$хеш_пароля
}
reverse_proxy localhost:9000
}

🔍 Отладка

# логи
sudo journalctl -u caddy -f

# проверка конфига
caddy validate --config /etc/caddy/Caddyfile

💡 Вывод: Caddy превращает настройку HTTPS из мучения в одну строку. Никаких certbot, cron на продление и простыней конфигов.

😎 PyLinux | #linux #tools


Vibecoder moment.... 🍷

😎 PyLinux | #memes


👩‍💻 Управление памятью в Python

Автор максимально просто объясняет, как работает управление памятью (memory management) в Python. Стэк и куча, арены, пулы, блоки — как все это устроено и работает под капотом, узнаете в этом видео.

🖤 Ссылка на видео

😎 PyLinux | #python #videos


😁

😎 PyLinux | #memes


👩‍💻 Запуск нескольких интерпретаторов в коде на Python для достижения высокой скорости

Настоящий материал посвящен методологии запуска нескольких интерпретаторов в едином процессе Python с использованием отдельных экземпляров GIL. Рассмотрены преимущества данного подхода, технические детали реализации и обоснование его необходимости.

🖥 Ссылка на статью

😎 PyLinux | #python #articles


🫡

😎 PyLinux | #memes


👩‍💻 Обновления Linux за предыдущую неделю

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

🔐 432 CVE за одни сутки — это не опечатка

Именно столько отчётов об уязвимостях ядра появилось в рассылке linux-cve-announce за 24 часа. Пугаться раньше времени не стоит: Грег Кроа-Хартман объяснил, что это не апокалипсис, а разбор накопившейся очереди ревью. Но среди записей есть и по-настоящему неприятные — например, Frag Gap с рабочим эксплойтом для получения прав root. Отдельно всплыла дыра RefluXFS в файловой системе XFS, которая тихо жила там аж с 2017 года и позволяет локальному пользователю дорасти до root. Заодно Canonical залатала три уязвимости в snapd, затрагивающие все LTS вплоть до Ubuntu 16.04. Единственное лекарство — обновляться, благо на неделе прилетели все ветки ядра, а Торвальдс выкатил уже пятый RC ядра 7.2.

🎮 Proton чинит то, что сам же сломал

Valve выпустила релиз-кандидат Proton 11.0-2, и он возвращает к жизни игры, которые сломала одиннадцатая ветка — Diablo IV, Helldivers 2, Marvel Rivals снова играбельны. Параллельно Glorious Eggroll не спал ночами: сначала GE-Proton11-2, затем корректирующий 11-3, оба с интеграцией OptiScaler и допилами FSR4. А в сборке Proton-CachyOS появилась экспериментальная поддержка vkd3d-low-latency — она режет задержку ввода в DirectX 12-играх на любых видеокартах, не только на топовых. Wine 11.14 добил ещё 21 баг и научился запускать режим WoW64 на FreeBSD.

⚠️ А теперь плохая новость про кошелёк

Инженеры Valve прямо предупредили: цены на оперативную память и SSD будут расти дальше. Причина знакомая — производственные мощности всё жаднее пожирают ИИ-дата-центры, и розница ещё даже не успела отразить всё подорожание. Так что если планируете апгрейд — момент неоднозначный.

🖥 Что нового на рабочем столе

GNOME обзавёлся расширением Simple Taskbar, которое превращает верхнюю панель в аналог таскбара Windows 11 — с миниатюрами окон и опциональной кнопкой «Пуск». KDE в Plasma 6.8 добавила приятную мелочь для удалёнки: сессия RDP теперь автоматически блокируется, когда отключается последний клиент. А Firefox 153 наконец принёс поддержку HDR-видео на Windows, обмен страницами через QR-коды и улучшения для PDF и JPEG XL.

📦 По мелочи, но полезно

Вышли VirtualBox 7.2.14 с поддержкой ядра 7.2 и фиксом критического бага Secure Boot на Windows 11, LibreOffice 26.2.5, glibc 2.44, а также Ventoy 1.1.17 с оптимизацией загрузки под Secure Boot и поддержкой новых дистрибутивов.

😎 PyLinux | #linux


🐧 LUKSbox — шифрованные контейнеры «Your Data. Your Rules.»

Инструмент на Rust для хранения файлов в облаке или на чужих носителях без доверия к хосту. Шифруешь локально, кладёшь контейнер .lbx куда угодно (iCloud, Drive, Dropbox, S3, NAS, флешка) и монтируешь как настоящий диск на Linux, macOS и Windows.

🔐 Фишка — многослотовая аппаратная аутентификация: пароль, FIDO2 (YubiKey, Titan, Nitrokey, Windows Hello), TPM 2.0, Secure Enclave (Touch ID) и гибридные постквантовые ключи ML-KEM-768/1024. Слоты комбинируются, а PQ-схема защитит секреты даже с приходом квантовых компьютеров. В комплекте — форензик-тулкит для бэкапа заголовков и спасения данных из повреждённых контейнеров.

🔗 Ссылка на инструмент

😎 PyLinux | #tools


💻 Необычные и ПОЛЕЗНЫЕ утилиты LINUX

В этом видео автор делится инструментами для повышения продуктивности и удобства при работе с Linux. Хотя упор сделан именно на Linux, большинство инструментов могут работать как и на Windows, так и на MacOS.

Список включает настройку компонентов системы, работу с сетью, настройку визуала и браузеров Firefox / Chromium.

🖤 Ссылка на видео

😎 PyLinux | #linux #videos


Это другое...🍵

😎 PyLinux | #memes


🐍 Создание MCP‑серверов на FastMCP: 7 ошибок, которых стоит избегать

В этой статье вы рассмотрите 7 распространенных ошибок, которые разработчики допускают при создании MCP‑серверов на FastMCP: от отсутствующих аннотаций инструментов и слабой обработки ошибок до ответов, расходующих слишком много токенов, и пробелов в безопасности. Также обсуждаются конкретные способы исправления каждой ошибки.

🖥 Перейти к статье

😎 PyLinux | #python #articles


🐧 ss — узнаем, что творится с сетью за секунду

netstat устарел, тормозит и его уже нет во многих дистрибутивах. Его место занял ss — быстрее и понятнее. Держите выжимку 👇

⚙️ База

ss -t # активные TCP-соединения
ss -u # UDP
ss -l # только слушающие сокеты
ss -a # всё сразу
ss -p # показать процесс (нужен sudo)

➡️ Самая частая связка

ss -tulpn
# -t TCP -u UDP -l слушающие
# -p процесс -n без резолва портов в имена

Отвечает на вопрос «что и на каком порту у меня открыто» — одной командой.

✔️ Фильтры по портам

ss -t '( dport = :443 )' # соединения на 443
ss -tln sport = :22 # кто слушает 22 порт
ss -t state established # только установленные

📌 Практичное применение

# кто занял порт 8080
ss -tlpn | grep :8080

# сколько всего соединений
ss -s

# соединения к конкретному IP
ss -t dst 10.0.0.5

💡 ss -tlpn | grep :ПОРТ мгновенно находит процесс, захвативший порт — когда сервис не стартует с ошибкой «address already in use», это первое, что стоит запустить.

Если было полезно, ставь — 👍

😎 PyLinux | #linux


😧

😎 PyLinux | #memes


🐧 curl — 20 флагов на все случаи

curl умеет почти всё: качать, тестировать API, дебажить сеть, логиниться. Но 90% людей знают три флага. Ниже — арсенал на каждый день 👇

⚙️ Базовое: вывод и сохранение

curl example.com # вывести в терминал
curl -o file.zip URL # сохранить в конкретное имя
curl -O URL # сохранить с именем из URL
curl -L URL # идти за редиректами (301/302)
curl -s URL # silent — без прогресс-бара
curl -sS URL # тихо, но ошибки показать

📌 Самая частая связка для скриптов:

curl -fsSL URL
# -f — падать при HTTP-ошибке (не сохранять 404-страницу)
# -s — тихо
# -S — но ошибки показать
# -L — за редиректами

Именно её вы видите чаще всего в curl -fsSL ... | bash.

➡️ Работа с API

# GET с заголовком
curl -H "Authorization: Bearer TOKEN" api.site.com/user

# POST с JSON
curl -X POST api.site.com/users \
-H "Content-Type: application/json" \
-d '{"name":"Alex","age":30}'

# отправить данные формы
curl -X POST -d "user=alex&pass=123" site.com/login

# данные из файла
curl -X POST -d @data.json api.site.com

✔️ Дебаг и диагностика

curl -I URL # только заголовки ответа (HEAD)
curl -v URL # verbose — весь диалог с сервером
curl -w "%{http_code}\n" -o /dev/null -s URL
# ↑ вывести ТОЛЬКО код ответа (200/404/500)

⏲️ Замеряем скорость и время ответа

curl -w "@-" -o /dev/null -s URL


Индусы на YT не зря стараются 😧

😎 PyLinux | #memes


🐧 nohup vs disown vs & — фоновые процессы

Запустил долгую команду, закрыл терминал — а процесс умер. Разбираемся, как отправить задачу в фон и не потерять её.

⚙️ & — просто в фон

sleep 300 &
echo "PID: $!" # $! — PID последнего фонового процесса

Процесс уходит в фон, терминал свободен. Но при закрытии терминала он получит SIGHUP и умрёт.

📌 nohup — игнорируем SIGHUP

nohup ./backup.sh &
# вывод уходит в nohup.out

nohup защищает процесс от сигнала SIGHUP при закрытии терминала. Процесс переживёт выход из сессии.

Перенаправляем вывод куда нужно:
nohup ./backup.sh > log.txt 2>&1 &

➡️ disown — отвязываем уже запущенный
./long_task.sh & # забыли про nohup
disown -h %1 # защищаем job от SIGHUP

disown спасает процесс, который уже запущен. Убирает его из списка задач шелла.

disown -h %1 # защитить от SIGHUP, но оставить в списке
disown %1 # убрать из списка задач
disown -a # отвязать все процессы

✔️ В чём разница

& — отправляет в фон (умрёт при выходе)
nohup — защищает ДО запуска
disown — защищает ПОСЛЕ запуска

📎 Управление задачами

jobs # список фоновых задач
fg %1 # вернуть задачу на передний план
bg %1 # продолжить приостановленную в фоне
Ctrl+Z # приостановить текущий процесс

Приостановил Ctrl+Z, отправил в фон:
./script.sh
# Ctrl+Z
bg # продолжить в фоне
disown # отвязать

💡 Совет: для настоящих демонов и долгих задач лучше systemd-сервис или tmux/screen — надёжнее, чем nohup.

Если было полезно, ставь — 👍

😎 PyLinux | #linux #bash

Показано 20 последних публикаций.