linux.exex [GFYB]
157 subscribers
746 photos
87 videos
9 files
544 links
GFYB - go fuck yourself bitch. This Is team GFYB. goida
Download Telegram
Совет по безопасности, который реально стоит применить

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

🔐 Отключи вход root по SSH

Открой /etc/ssh/sshd_config и найди строку PermitRootLogin. Поставь значение no. Перезапусти sshd. Всё — теперь брутфорс root по SSH бессмысленен, потому что даже правильный пароль не поможет. Заходи обычным пользователем, а дальше sudo.

🔑 Используй ключи, а не пароли

Отключи аутентификацию по паролю вообще. В том же конфиге строка PasswordAuthentication — ставь no. Только после того, как убедился, что твой SSH-ключ работает и ты не потеряешь доступ. Ключи сложнее украсть, чем пароль.

🧱 fail2ban — твой молчаливый охранник

Установи fail2ban. Он мониторит логи и банит IP после нескольких неудачных попыток входа. Базовая конфигурация работает из коробки, но загляни в /etc/fail2ban/jail.local и подкрути maxretry и bantime под себя. Например, 3 попытки и бан на сутки — уже неплохо.

👤 Принцип минимальных привилегий

Не давай пользователям sudo без причины. Если нужно разрешить только одну команду — пропиши именно её в sudoers через visudo. Например, разрешить перезапускать только nginx, а не всё подряд. Это называется least privilege и реально спасает, если что-то пойдёт не так.

🔍 Проверяй, кто логинился

Команды last и lastb показывают историю входов и неудачные попытки соответственно. Полезно иногда смотреть — особенно на серверах. Если видишь странные IP или время входа, которого не было — повод насторожиться.

🛡️ UFW или iptables — закрой лишние порты

Если не используешь какой-то порт — закрой его. ufw allow 22 и ufw enable — минимальный старт. Открывай только то, что реально нужно. Меньше открытых портов — меньше поверхность для атаки.

Безопасность — это не разовая настройка, это привычка. Даже пара этих шагов уже делает твою систему заметно менее привлекательной для сканеров и ботов, которые долбятся в SSH каждую минуту 🤖

linux.exe

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Amazon ведёт переговоры о покупке Globalstar — и доля Apple здесь играет ключевую роль

По данным источников 9to5Mac, Amazon находится в активных переговорах о приобретении спутниковой компании Globalstar. Интересный нюанс: значительная доля в Globalstar принадлежит Apple, что делает эту потенциальную сделку особенно неоднозначной.

Apple вложилась в Globalstar ещё в 2022 году — тогда купертиновцы направили около 450 миллионов долларов в компанию, чтобы обеспечить работу функции экстренной спутниковой связи на iPhone 14 и более поздних моделях. Фактически Apple стала крупнейшим клиентом и одним из ключевых акционеров Globalstar.

Если Amazon действительно купит Globalstar, это означало бы, что главный конкурент Apple получит прямой контроль над спутниковой инфраструктурой, от которой зависит одна из флагманских функций безопасности iPhone. Ситуация, мягко говоря, щекотливая.

Amazon при этом активно развивает собственный спутниковый проект — Kuiper, который должен конкурировать со Starlink от SpaceX. Покупка Globalstar дала бы Amazon уже готовую инфраструктуру и лицензии, что существенно ускорило бы экспансию на рынке спутникового интернета.

Официальных комментариев ни от Amazon, ни от Globalstar пока не поступало. Переговоры, по имеющимся данным, продолжаются.

Источник (r/technews): https://www.reddit.com/r/technews/comments/1saqm7e/amazon_in_talks_to_acquire_globalstar_and_apples/

📍 Подпишись на создателей: https://t.me/linuxexex
httpie — curl для тех, кто устал от curl

Если ты хоть раз гуглил "как правильно передать json через curl", этот пост для тебя.

HTTPie — консольный HTTP-клиент, который делает то же самое что curl, но по-человечески. Написан на Python, ставится одной командой, и сразу понятно что происходит.

Сравни сам.

Запрос через curl с JSON-телом:

curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer token123" \
-d '{"name":"Ivan","role":"admin"}'

Тот же запрос через httpie:

http POST https://api.example.com/users \
Authorization:"Bearer token123" \
name=Ivan role=admin

HTTPie сам проставит Content-Type, сам сформирует JSON, сам покрасит вывод в терминале — ты сразу видишь статус, заголовки и тело ответа читаемым образом.

Что умеет из полезного:

Цветной и форматированный вывод прямо в терминале — JSON приходит уже отформатированным, не надо пайпить в jq.

Сессии. Можно сохранить куки и заголовки между запросами:
http --session=./session.json POST api.example.com/login user=me pass=secret
и дальше работать как авторизованный пользователь.

Загрузка файлов без боли:
http POST api.example.com/upload file@/path/to/photo.jpg

Работа с формами (не JSON):
http --form POST api.example.com/submit field=value

Оффлайн-режим — можно посмотреть как будет выглядеть запрос, не отправляя его:
http --offline POST api.example.com/test key=val

Установка простая:

pip install httpie

или через пакетный менеджер:

brew install httpie
sudo apt install httpie

Есть ещё httpie-desktop — графическая версия, но честно говоря, терминальная удобнее.

Когда реально пригождается: отладка REST API, быстрая проверка эндпоинта, написание скриптов где важна читаемость, объяснение коллеге как работает запрос прямо в терминале.

curl никуда не исчезает — он везде, в каждом докере и CI. Но для живой работы руками httpie заметно приятнее.

Попробуй один раз — обратно не захочется 🙂

📍 Подпишись на создателей: https://t.me/linuxexex
Лайфхак для терминала, который реально экономит время ⚡

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

Ctrl+R. Reverse search в bash и zsh.

Нажимаешь Ctrl+R, начинаешь вводить часть команды — терминал сам находит последнее совпадение в истории. Нашёл нужное — Enter, и оно выполняется. Хочешь подправить перед запуском — стрелка вправо или End, команда встаёт в строку ввода.

Это знают многие. Но вот что знают не все:

Если нажать Ctrl+R ещё раз, не вводя ничего нового — поиск уйдёт глубже по истории к предыдущему совпадению. Можно листать все вхождения подряд.

Теперь уровень выше. По умолчанию история в bash хранит 500-1000 строк, и она затирается. Вот три строки в ~/.bashrc, которые решают проблему навсегда:

HISTSIZE=100000
HISTFILESIZE=200000
HISTCONTROL=ignoredups:erasedups

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

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

PROMPT_COMMAND="history -a; history -c; history -r"

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

После правок не забудь:

source ~/.bashrc

Итого: Ctrl+R плюс нормально настроенная история — и ты перестаёшь вспоминать, как называлась та команда, которую запускал три недели назад. Всё найдётся за пару секунд. 🔍

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Как типично и абсолютно предсказуемо 😄

Samsung искусственно ограничивала объёмы производства оперативной памяти. Китай объявляет, что теперь способен делать свою. Apple начинает истошно вопить в уши американскому правительству — мол, позвольте нам закупаться у китайцев. Samsung: «эээ, ладно, шутка была, расширяемся!»

Ссылка на новость: en.sedaily.com/finance/2026/07/27/samsung-expands-hwaseong-fab-to-break-dram-bottleneck

Не прошло и 24 часов. Вот это цирк. Все, кто говорил, что конкуренция со стороны Китая ничего не изменит — просто идиоты.

Источник (4chan /g/): https://boards.4chan.org/g/thread/109403553

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Chromium Thread #27

Добро пожаловать в тред, посвящённый браузерам на основе Chromium!

Список актуальных браузеров на основе Chromium:

Google Chrome ‒ основоположник движения браузеров на основе Chromium. Активно экспериментирует над пользователями, внедряя инновационные технологии по профилированию и предоставлению рекламы. Недавно внедрил manifest v3, что запрещает пользователям устанавливать расширения на основе mv2, такие как uBlock Origin, Violentmonkey и другие.
Скачать: https://www.google.com/chrome https://www.google.com/chrome

Ungoogled Chromium ‒ Chromium версия веб-браузера Chromium без интеграции сервисов Google, ориентированная на приватность (включаются через флаги). Включает улучшения для конфиденциальности, прозрачности и контроля онлайн-активности, а так же добавляет в хромиум дополнительные настройки, позволяющие убрать плашку варнинга при входе в полноэкранный режим, крестики с вкладок, настроить кастомную новую вкладку и многое другое.
Скачать: https://github.com/ungoogled-software/ungoogled-chromium https://github.com/ungoogled-software/ungoogled-chromium
Для windows: https://github.com/ungoogled-software/ungoogled-chromium-windows https://github.com/ungoogled-software/ungoogled-chromium-windows (бинарники от васянов качать строго не рекомендуется!)

Chromium: https://www.chromium.org/getting-involved/download-chromium/ https://www.chromium.org/getting-involved/download-chromium/

Cromite ‒ это форк Chromium на основе Bromite со встроенной стойкой блокировки рекламы и обеспечения конфиденциальности. Имеет мощную защиту от отслеживания, пробивает такие трекеры как fingerprint-js-pro и creepjs. Умеет устанавливать расширения из Chrome Web Store. В мобильной версии есть возможность устанавливать расширения.
Скачать: https://github.com/uazo/cromite/releases https://github.com/uazo/cromite/releases

Brave – защищенный браузер с открытым исходным кодом на базе Chromium. Официально браузер имеет нативный блокировщик рекламы, на который не распространяются ограничения накладываемые Google manifest v3 и который поддерживает фильтры от uBlock Origin, анонимную синхронизацию без регистрации между устройствами (без аккаунтов), встроенный Tor с мостами, IPFS, Web3 кошелек. Также в наличии всё еще имеется поддержка mv2 расширений, возможность установки uBO прямо из настроек, вертикальные вкладки с возможностью полного скрытия и сопротивление microsoft recall. Недавно в браузер добавлены контейнеры, подобные тем, которые в фаерфокс. Включить можно через brave://flags. Также еще добавлена возможность скроллить вкладки (когда ширина вкладки не сжимается зависимо от самого количества вкладок) тоже как в фаерфокс. Доступна Origin версия браузера, на windows/android она платна, на linux бесплатна. Отлична тем, что вырезан весь ненужный говняк, из-за которого часто возникают споры и сомнения (типо крипты).
Скачать: https://brave.com https://brave.com
Ссылка на скрипт где можете удалить ненужные вам фичи браузера: https://github.com/ltx0101/SlimBrave https://github.com/ltx0101/SlimBrave

Microsoft Edge ‒ второй крупный игрок после Google Chrome. Реинкарнация некогда известного браузера Internet Explorer на современный лад и его замена. Быстрый и безопасный,…

Источник (2ch /s/): https://2ch.org/s/res/3728838.html

📍 Подпишись на создателей: https://t.me/linuxexex
Один и тот же ноутбук, три дистрибутива — что получилось

Взял старый ThinkPad X230 (Core i5-3320M, 8 ГБ RAM, SSD 120 ГБ) и поставил по очереди три популярных дистрибутива. Задача простая: настроить рабочее окружение для разработки, поднять Docker, настроить vim/neovim, подключить внешний монитор через DisplayPort. Ничего экзотического — типичный сценарий.

Ubuntu 22.04 LTS

Установка заняла 12 минут. Всё завелось сразу, внешний монитор подхватился без танцев. Docker ставится двумя командами по официальной документации. Из коробки — snap-пакеты, которые никто не просил, и Firefox в snap-формате с заметной задержкой старта. Потребление RAM в простое — около 900 МБ. Для новичка или тех, кто не хочет думать об инфраструктуре — честный выбор. Для ветерана раздражает обилие лишнего.

Arch Linux

Установка — 40 минут, если знаешь что делаешь. Если нет — добро пожаловать на wiki.archlinux.org, там реально хорошо написано. Пакетный менеджер pacman работает быстро, AUR закрывает почти любую потребность. Docker, neovim, шрифты — всё нашлось без самодеятельности. Внешний монитор через xrandr настроился одной командой. RAM в простое — 350 МБ с i3wm. Главный минус: rolling-release иногда преподносит сюрпризы после обновления. За месяц один раз слетел конфиг pipewire после апдейта — починил за 10 минут, но осадочек.

Fedora 38

Вот это приятно удивило. Установка — 15 минут, SELinux включён по умолчанию и почти не мешает (почти). RPM Fusion подключается быстро и даёт нужные кодеки. Docker здесь заменяется на Podman — rootless из коробки, это реально удобнее с точки зрения безопасности. Внешний монитор завёлся сам. RAM в простое с GNOME — около 750 МБ. Fedora ощущается как Ubuntu для тех, кто чуть вырос из Ubuntu. Свежее ядро, современный стек, но без необходимости собирать всё руками.

Итог по ощущениям

Если нужно просто работать и не думать — Ubuntu. Если хочешь контроль и не боишься терминала — Arch. Если хочешь баланс между свежестью и стабильностью — Fedora.

Для того ThinkPad X230 я в итоге оставил Fedora: свежее ядро лучше работает с энергосбережением на этом железе, и Podman мне честно понравился больше Docker-демона. Arch был бы идеален, но на машине, которой пользуюсь каждый день для работы, не хочу гамблить на обновлениях.

Какой дистрибутив у вас на основной машине? 👇

📍 Подпишись на создателей: https://t.me/linuxexex
скоро призма станет мессенджером
jq — швейцарский нож для JSON

Если ты хоть раз работал с API или логами в терминале, ты знаешь эту боль: curl что-то возвращает, а в ответ — одна длинная каша из JSON без пробелов и переносов. Читать невозможно, искать нужное поле — страдание.

Вот тут и заходит jq.

Это консольная утилита для парсинга, фильтрации и трансформации JSON. Маленькая, быстрая, без зависимостей. Стоит один раз освоить базу — и работа с любыми API в терминале становится приятной.

Самое простое — красивый вывод:

curl -s https://api.github.com/users/torvalds | jq .

Всё, JSON уже читаемый, с подсветкой.

Хочешь только одно поле:

curl -s https://api.github.com/users/torvalds | jq .name

Массив объектов? Вытащи конкретное поле из каждого:

jq '.[].login' users.json

Фильтрация — только те объекты, где значение совпадает:

jq '.[] | select(.active == true)' data.json

Можно собирать новый объект из нужных полей:

jq '.[] | {id: .id, email: .email}' data.json

Работает и с файлами, и с пайпами — встраивается в любой скрипт без проблем.

Установка везде одинаково просто:

Ubuntu/Debian — apt install jq
macOS — brew install jq
Alpine — apk add jq

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

Если ты до сих пор парсишь JSON через grep или Python-однострочники — попробуй jq. Скорее всего, он останется у тебя навсегда 🛠️

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Java Thread №291

Вики по джаве: https://github.com/java2ch/java-thread/wiki https://github.com/java2ch/java-thread/wiki (доступна для редактирования всем)
Предыдущий: >>3686960 (OP)

Источник (2ch /pr/): https://2ch.org/pr/res/3718743.html

📍 Подпишись на создателей: https://t.me/linuxexex
Знаешь, откуда взялось имя «Linux»?

Линус Торвальдс изначально хотел назвать своё ядро Freax — от слов «free», «freak» и «Unix». Он даже успел создать файлы с таким именем и несколько месяцев использовал его у себя локально.

Но в 1991 году его приятель Ари Лемке, который администрировал FTP-сервер финского университета, загрузил ядро в публичный доступ. И назвал директорию своей волей — linux. Лемке посчитал, что это звучит лучше. Торвальдс поначалу был против, но потом смирился и принял имя как данность.

Так что технически Linux назвал не сам Линус. 😄

Интересно, что сам Торвальдс признавался: если бы он выбирал имя осознанно, то слово Freax ему нравилось больше. Но история распорядилась иначе, и сегодня слово «Linux» знает весь мир — от серверных стоек до смартфонов в кармане.

Вот так случайное решение одного системного администратора в маленьком университете Финляндии навсегда вошло в историю IT.

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Объявление: правила обновлены, и апрель наконец-то закончился

После временного бана на контент об LLM в течение всего апреля, и после того как модераторы собрали обратную связь от пользователей, было решено завершить временный запрет на посты об ИИ — тот самый, про который уже думали «не верю, что он до сих пор действует».

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

Кроме того, в процессе написания нового правила модераторы обнаружили, что правила не отображались в сайдбаре на old.reddit.com — это исправили. Для тех, кто видит правила впервые: там нет ничего нового. Модераторы применяли эти правила как могли уже давно. По ссылке над списком правил можно перейти на страницу правил old.reddit с подробной информацией, которая просто плохо влезает в сайдбар.

Источник (r/programming): https://www.reddit.com/r/programming/comments/1tlh5aj/announcement_weve_updated_the_rules_and_april_is/

📍 Подпишись на создателей: https://t.me/linuxexex
Быстрый совет по безопасности для тех, кто сидит на Linux 🐧

Многие ставят систему, настраивают всё под себя — и забывают про одну банальную вещь. Это аудит файлов с SUID-битом.

Что такое SUID? Это специальный бит, который позволяет запускать программу с правами владельца файла, а не с правами того, кто её запустил. Звучит безобидно, пока владелец не root.

Типичный пример — /usr/bin/passwd. Он должен иметь SUID, потому что меняет системные файлы. Но если в системе появится посторонний файл с этим битом, злоумышленник получит лёгкий путь к повышению привилегий.

Как это проверить? Одной командой:

find / -perm -4000 -type f 2>/dev/null

Она найдёт все файлы с SUID в системе. Запусти и пробегись по списку. Большинство из них — стандартные утилиты: passwd, su, sudo, ping. Это нормально.

Но если видишь что-то незнакомое — это повод копать глубже.

Что делать с подозрительными файлами?

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

ls -la /путь/к/файлу
dpkg -S /путь/к/файлу # для Debian/Ubuntu
rpm -qf /путь/к/файлу # для RHEL/Fedora

Если файл не принадлежит ни одному пакету — это красный флаг 🚩

Убрать SUID-бит, если он не нужен, просто:

chmod u-s /путь/к/файлу

Дополнительно можно автоматизировать мониторинг. Сохрани текущий список доверенных SUID-файлов в файл и сравнивай периодически через cron:

find / -perm -4000 -type f 2>/dev/null | sort > /root/suid_baseline.txt

Потом через cron запускаешь аналогичную команду и сравниваешь diff-ом с baseline. Любое новое вхождение — сигнал для проверки.

Это не паранойя, это гигиена. Linux доверяет тебе, а ты доверяй, но проверяй 🔍

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Это случилось

Несколько лет назад люди начали говорить об определённых китайских колёсах не просто как о «лучших китайских» или «лучших бюджетных», а просто как о «лучших колёсах». В этом году Winspace выпустила T1600 — продукт для внутреннего китайского рынка, который стоит дороже Madone или Tarmac. Прямо из коробки он одобрен UCI (хотя, возможно, придётся приклеить свинцовые грузики, чтобы вписаться в весовые ограничения). Западным покупателям он официально не предназначен — хотя они, без сомнения, всё равно попытаются его достать.

Западные бренды сыпались один за другим ещё до того, как опустился железный занавес 2.0, а теперь прозвучал и контрольный выстрел: такие гиганты, как Trek, рискуют обанкротиться, потому что их производственные цепочки перерезала политика импортозамещения — популярная тактика развития третьего мира, которую в своё время с энтузиазмом практиковали такие визионеры, как Пиночет и Гальтиери.

Это конец эпохи западного велосипеда? Будут ли завтрашние дантисты соглашаться не меньше чем на китайские байки с китайской же трансмиссией?

Источник (4chan /n/): https://boards.4chan.org/n/thread/2039960

📍 Подпишись на создателей: https://t.me/linuxexex
Как Linux понимает, что файл — это файл 📁

Давайте разберём VFS — виртуальную файловую систему. Это одна из тех штук, которую все используют, но мало кто думает о том, как она вообще работает.

Проблема, которую VFS решает

На вашей машине может стоять ext4 на системном разделе, btrfs на домашнем, ntfs на флешке, и ещё /proc с /sys, которые вообще не хранят данные на диске — они генерируются ядром на лету. Как пользовательская программа работает с ними одинаково? Пишет open(), read(), write() — и всё просто работает.

Ответ: VFS — это слой абстракции внутри ядра, который прячет все различия за единым интерфейсом.

Четыре кита VFS

Внутри VFS есть четыре ключевых объекта.

Суперблок — это метаданные всей файловой системы. Когда вы монтируете раздел, ядро читает суперблок и создаёт его in-memory представление. Там хранится тип ФС, размер блока, указатели на корневой inode и прочее.

Inode — описание конкретного файла или директории. Здесь живут права доступа, владелец, размер, временные метки и указатели на блоки данных. Имени файла здесь нет — это важный момент.

Dentry (directory entry) — связывает имя файла с inode. Именно поэтому hard link работает так, как работает: два dentry указывают на один inode. Ядро кэширует dentry агрессивно, потому что обход пути /usr/bin/python3 иначе превратился бы в кучу операций чтения.

File — объект, который создаётся при каждом вызове open(). Он хранит текущую позицию чтения, флаги доступа и указатель на inode. Один и тот же файл могут открыть десять процессов — будет десять объектов file, но один inode.

Как это работает при open()

Вы пишете open("/home/user/notes.txt", O_RDONLY).

Ядро начинает с корня, берёт dentry для "/", потом ищет "home" в нём, потом "user", потом "notes.txt". На каждом шаге идёт в dentry-кэш, и только при промахе — на диск. В итоге получает inode нужного файла, создаёт объект file, кладёт его в таблицу открытых файлов процесса и возвращает вам файловый дескриптор — просто число.

Когда вы делаете read(), ядро по дескриптору находит объект file, через него добирается до inode, а дальше вызывает метод read конкретной файловой системы. ext4 и btrfs реализуют эти методы по-своему, но VFS не знает и знать не хочет — он просто дёргает указатель на функцию.

Почему /proc — это гениально

/proc монтируется как отдельная ФС типа procfs. Когда вы читаете /proc/1/status, никакого файла на диске нет. Ядро просто вызывает функцию, которая генерирует текст прямо в момент чтения. С точки зрения VFS это обычный файл. С точки зрения реализации — вызов в планировщик и подсистему памяти.

Вот почему cat /proc/cpuinfo работает точно так же, как cat README.md, хотя природа этих файлов принципиально разная.

VFS — это классический пример того, как правильный слой абстракции делает систему расширяемой без боли. Хотите добавить новую файловую систему в Linux? Реализуйте нужные операции, зарегистрируйте тип — и всё, она работает как родная. 🐧

📍 Подпишись на создателей: https://t.me/linuxexex
Знаете, почему пингвин Тукс стал символом Linux?

В 1996 году Линус Торвальдс объявил конкурс на логотип для своей операционной системы. Единственное условие — никаких серьёзных корпоративных орлов и прочей пафосной живности. Линус хотел что-то милое и немного нелепое.

Тут он вспомнил, что однажды его укусил пингвин в австралийском зоопарке. Звучит как байка, но сам Торвальдс это подтверждал. Укус оказался несильным, но запоминающимся — и образ остался в голове.

Художник Ларри Юинг нарисовал толстенького довольного пингвина, сидящего с набитым пузом. Как будто только что съел лишнюю рыбу и теперь просто кайфует. Никакой агрессии, никакой серьёзности. Торвальдсу понравилось.

Имя Tux, кстати, придумал не Линус. Его предложил Джеймс Хьюз — от слова tuxedo, то есть смокинг. Потому что чёрно-белая расцветка пингвина напоминает вечерний костюм. Ещё одна версия — сокращение от Torvalds UniX. Оба варианта красивые, официально закреплённого нет.

Самое интересное: Ларри Юинг нарисовал Тукса в программе GIMP — тогда совсем молодом open source редакторе. Символ Linux появился благодаря другому open source проекту. Такое вот взаимное уважение.

С тех пор Тукс живёт везде — на серверах, суперкомпьютерах, смартфонах с Android и даже в ядре марсохода NASA. Укушенный пингвином программист из Финляндии явно не предполагал, к чему это приведёт 🐧

📍 Подпишись на создателей: https://t.me/linuxexex
🛠 Инструмент дня: ripgrep

Если ты до сих пор ищешь по проекту через grep -R, попробуй rg.

Пример:

rg "TODO|FIXME"

ripgrep быстрый, по умолчанию уважает .gitignore и удобно показывает контекст. Для больших репозиториев разница чувствуется сразу.

Полезные варианты:
rg -n "pattern" — с номерами строк
rg --files — список файлов проекта
rg -t py "async def" — искать только в Python-файлах

Один из тех инструментов, после которых назад возвращаться не хочется.

📍 Подпишись на создателей: https://t.me/linuxexex
📰 Проект ЕС по верификации возраста обяжет использовать аппаратную аттестацию

Европейский союз работает над системой верификации возраста, и судя по всему, она потребует аппаратной аттестации — то есть привязки к железу конкретного устройства.

Что это значит на практике: сайты и сервисы смогут убедиться, что ты совершеннолетний, только если твоё устройство аппаратно подтверждает личность через встроенный чип (вроде TPM). Без «правильного» железа — нет доступа.

Сообщество Linux встревожено по понятным причинам. Аппаратная аттестация в том виде, в каком её продвигают крупные вендоры, — это по сути Web Environment Integrity от Google или аналогичные схемы. Они проверяют не только железо, но и то, «одобрена» ли операционная система. Linux, кастомные прошивки, разблокированные загрузчики — всё это рискует оказаться за бортом.

Фактически ЕС может узаконить механизм, который:
— дискриминирует пользователей свободного ПО
— даёт производителям железа и ОС контроль над тем, кто получает доступ к интернету
— создаёт инфраструктуру слежки под соусом «защиты детей»

Верификация возраста — цель благородная. Но аппаратная аттестация — это кувалда там, где нужен скальпель. И прецедент крайне опасный. 🔒

Источник (r/linux): https://www.reddit.com/r/linux/comments/1vfl2nq/eu_age_verification_project_mandates/

📍 Подпишись на создателей: https://t.me/linuxexex
Расскажу про одну штуку в bash и zsh, которую большинство не замечает годами.

Называется это parameter expansion с модификаторами. Звучит скучно, но на практике экономит кучу времени.

Смотри. У тебя есть переменная с путём к файлу:

file="/home/user/projects/app.tar.gz"

Теперь без единой внешней утилиты — ни basename, ни dirname, ни sed — ты можешь вытащить что угодно:

Только имя файла:
echo "${file##*/}"
→ app.tar.gz

Только директорию:
echo "${file%/*}"
→ /home/user/projects

Убрать расширение:
echo "${file%%.*}"
→ /home/user/projects/app

Убрать только последнее расширение:
echo "${file%.*}"
→ /home/user/projects/app.tar

Логика простая. Решётка # — режем с начала строки, процент % — режем с конца. Одинарный символ — минимальное совпадение, двойной — максимальное. Один раз запомнил, и больше не забудешь.

Но это ещё не всё. Есть замена по паттерну прямо внутри переменной:

text="hello world world"

echo "${text/world/linux}"
→ hello linux world

echo "${text//world/linux}"
→ hello linux linux

Один слэш — заменяет первое вхождение, два — все сразу. Никакого sed для простых замен.

И совсем редкая вещь — изменение регистра. Работает в bash 4+ и zsh:

name="hello world"

echo "${name^}"
→ Hello world

echo "${name^^}"
→ HELLO WORLD

str="LINUX IS COOL"
echo "${str,,}"
→ linux is cool

Каретка поднимает регистр, запятая опускает. Двойная — применяет ко всей строке.

Зачем это вообще нужно? Во-первых, скорость. Всё это работает внутри самого шелла без форка нового процесса. В скриптах, которые гоняют тысячи файлов в цикле, разница ощутимая. Во-вторых, читаемость — когда видишь ${file##*/}, понимаешь намерение сразу, не гадаешь что делает регулярка в sed.

Один практический пример, который пригождается часто. Конвертируешь пачку файлов и хочешь поменять расширение:

for f in *.mp4; do
ffmpeg -i "$f" "${f%.mp4}.mkv"
done

Чисто, без подпроцессов, без временных переменных.

Это тот случай, когда bash перестаёт казаться убогим и начинает казаться хитрым 😄

📍 Подпишись на создателей: https://t.me/linuxexex
Как Linux управляет памятью — просто о сложном

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

Главная идея: виртуальная память

Каждый процесс думает, что у него есть весь адресный диапазон целиком. Браузер не знает о существовании терминала, терминал — о браузере. Это и есть виртуальная память. Ядро создаёт иллюзию, что у каждого процесса своя личная оперативка.

На самом деле за этим стоит таблица страниц. Ядро хранит маппинг: виртуальный адрес процесса → реальный физический адрес в RAM. Процессор при каждом обращении к памяти смотрит в эту таблицу через специальный блок MMU. Если адреса нет — получаешь segfault, знакомо?

Страницы и Page Fault

Память делится на страницы по 4 КБ (обычно). Когда процесс обращается к странице, которой нет в RAM, происходит так называемый page fault — прерывание. Ядро перехватывает его и решает: либо загрузить страницу с диска, либо убить процесс, если он полез куда не надо.

Это и есть механизм подкачки (swap). Когда RAM заканчивается, ядро выталкивает редко используемые страницы на диск, освобождая место. Потом, если они снова понадобятся — подгрузит обратно. Это медленно, но лучше чем OOM-killer, который просто расстреляет один из процессов 💀

OOM-killer — отдельная история

Если swap тоже кончился и памяти нет совсем, ядро запускает OOM-killer (Out Of Memory Killer). Он считает баллы каждому процессу: сколько памяти жрёт, насколько важен, сколько живёт — и убивает того, кто набрал больше всего очков "ненужности". Иногда выбор бывает... спорным. Поэтому в продакшне за памятью следят внимательно.

Copy-on-Write

Когда процесс делает fork() — создаёт дочерний процесс — ядро не копирует всю память сразу. Оба процесса смотрят на одни и те же физические страницы. Копирование произойдёт только тогда, когда кто-то из них попытается что-то записать. Это называется Copy-on-Write и экономит кучу ресурсов.

Зачем это знать на практике?

Смотришь на /proc/meminfo и видишь Cached и Buffers — это ядро использует свободную RAM как кэш файловой системы. Это нормально и хорошо. Если приложению понадобится память — кэш освободится. Поэтому "свободная" память в Linux почти всегда близка к нулю, и это не проблема.

Команды, которые помогают разобраться:
free -h — общая картина
vmstat 1 — динамика
cat /proc/meminfo — детали
dmesg | grep -i oom — был ли OOM-killer

Подсистема памяти в Linux — это огромный айсберг. Сегодня показал только верхушку, но уже достаточно, чтобы не паниковать когда видишь "память занята" 🧊

📍 Подпишись на создателей: https://t.me/linuxexex
Лайфхак для терминала, который я использую каждый день

Если ты часто работаешь в терминале, то наверняка знаешь боль: набрал длинную команду, нажал Enter — и только потом заметил ошибку. Или хуже — забыл как называлась та команда, которую вводил три дня назад.

Вот несколько трюков, которые реально экономят время.

⚡ Ctrl+R — поиск по истории

Нажимаешь Ctrl+R и начинаешь вводить часть команды — bash или zsh сами найдут её в истории. Не нужно листать стрелочками вверх сто раз. Просто вводишь кусок того, что помнишь, и получаешь результат. Если не то — жмёшь Ctrl+R ещё раз, идёт дальше по истории.

⚡ !! и !$

!! — повторяет предыдущую команду целиком. Классика: забыл написать sudo.

sudo !!

И команда выполнится с правами суперпользователя.

!$ — подставляет последний аргумент предыдущей команды. Например:

mkdir /very/long/path/to/project
cd !$

Не нужно копировать путь заново — он подставится сам.

⚡ Ctrl+A и Ctrl+E

Ctrl+A — прыгает в начало строки. Ctrl+E — в конец. Намного быстрее, чем держать стрелку зажатой.

⚡ Ctrl+U и Ctrl+K

Ctrl+U — удаляет всё от курсора до начала строки. Ctrl+K — до конца строки. Очень удобно, когда набрал длинную команду и хочешь переписать только начало или конец.

⚡ Alt+. (точка)

Подставляет последний аргумент из самой последней команды — аналог !$, но работает интерактивно. Нажимаешь несколько раз — листаешь аргументы из предыдущих команд по истории. Это вообще магия, пока не попробуешь — не понимаешь насколько полезно.

⚡ history | grep

Если Ctrl+R не справляется — можно поискать руками:

history | grep docker

Выдаст все команды с docker из истории. Находишь номер нужной и запускаешь через !номер — например !342.

Все эти штуки встроены в bash и zsh, ничего устанавливать не нужно. Просто начни использовать — через неделю руки сами будут тянуться к Ctrl+R вместо стрелки вверх. 🖥️

Какой из этих трюков уже знал, а какой стал открытием? Пиши в комментарии.

📍 Подпишись на создателей: https://t.me/linuxexex