GNU/Linux | Notes
2.23K subscribers
139 photos
11 files
119 links
Open Source, GNU/Linux, Debian/Ubuntu, Dotfiles, Software, Scripts, Notes, Terminal, Shell, Tools, Games, Fun, Misc, Music, Geek, Free Software Movement.

Почта: krekhov.dev@gmail.com
Кто я: https://t.me/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
CI/CD

(Continuous Integration) Непрерывная интеграция - постоянное слияние рабочих копий в общую основую ветвь разработки и выполнение частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов.

(Continuous delivery) Непрерывная поставка - частые выпуски RC, такой подход позволяет уменьшить стоимость, время и риски внесения изменений путем более частных мелких обновлений в продакшн-приложение. Гарантия того, что ПО стабильно и может быть передано в эксплуатацию в любое время. Целью является сборка, тестирование и релиз программного обеспечения с большей скоростью и частотой.

* Pipelines:
Последовательность шагов, которые нужно выполнить для того, чтобы код прошел через все стадии проверки, тестирования и развертывания. Процесс преобразования кода из "только что написанного" в "готово к использованию".

* Jobs:
Это отдельные задания или задачи внутри Pipeline. Например, одна работа может быть связана с компиляцией кода, другая — с запуском тестов, третья — с развертыванием.

* Artifacts:
Это файлы, которые создаются и сохраняются в ходе выполнения Jobs. Например, если есть шаг сборки, который компилирует код, то результат этой сборки (например, исполняемый файл или архив) будет артефактом. Артефакты могут быть использованы в последующих шагах или сохранены для будущего использования.

#misc #build
Что замедляет загрузку системы?

Можно использовать команду:
$ systemd-analyze blame


Она покажет службы systemd и время, которое потребовалось на их запуск.

Например:
8.421s NetworkManager-wait-online.service
3.105s docker.service
1.842s plymouth-quit-wait.service


Чем больше время — тем сильнее служба влияет на запуск системы. Но не спешите отключать всё подряд: некоторые сервисы запускаются параллельно, поэтому их время не всегда напрямую увеличивает время загрузки.

#misc #utils
Основные термины из мира безопасности

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

- CVE (Common Vulnerabilities and Exposures) - уникальный идентификатор публично известной уязвимости. Например: CVE-2024-3094. CVE - это не сама уязвимость, а её номер в общей базе.

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

- Эксплуатировать уязвимость - использовать её на практике. Например: "Злоумышленник эксплуатировал уязвимость в веб-сервере".

Ещё важные понятия:

- Патч - обновление, исправляющее ошибку или уязвимость.

- Zero-day / 0-day - уязвимость, для которой ещё нет исправления либо о которой разработчик узнал недавно.

- PoC (Proof of Concept) - демонстрационный код, подтверждающий, что уязвимость действительно работает. Не всегда является полноценным эксплойтом.

- CVSS - оценка критичности уязвимости по шкале от 0 до 10. Чем выше число, тем потенциально опаснее проблема.

#theory #security
rtorrent

Это консольный BitTorrent-клиент для Linux: через него можно добавлять и скачивать .torrent-файлы или magnet-ссылки, следить за скоростью и раздачами прямо в терминале.

Установка:
apt-get install rtorrent


Как выйти из rtorrent? Ctrl+Q

> GitHub

#software #opensource #utils
concatenate — соединять, объединять.

#fun #misc
- SUID — программа запускается с правами её владельца. Может использоваться для повышения привилегий, если настроена небезопасно. Эскалация прав. Пример: /usr/bin/passwd

Как найти все файлы с SUID-битом?
$ find / -type f -perm -4000 2>/dev/null


- SGID — программа запускается с правами группы-владельца; у директории новые файлы наследуют её группу. Эскалация прав. Пример: /usr/bin/crontab

Как найти все файлы с SGID-битом?
$ find / -type f -perm -2000 2>/dev/null


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

- Sticky Bit — применяется к директориям, например /tmp: удалять или переименовывать чужие файлы может только их владелец, владелец директории или root.

#theory #security
libcap2-bin

$ dpkg -L libcap2-bin
/.
/usr
/usr/sbin
/usr/sbin/capsh
/usr/sbin/getcap
/usr/sbin/getpcaps
/usr/sbin/setcap
/usr/share
/usr/share/doc
/usr/share/doc/libcap2-bin
/usr/share/doc/libcap2-bin/README.Debian
/usr/share/doc/libcap2-bin/changelog.Debian.amd64.gz
/usr/share/doc/libcap2-bin/changelog.Debian.gz
/usr/share/doc/libcap2-bin/changelog.gz
/usr/share/doc/libcap2-bin/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libcap2-bin
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/capsh.1.gz
/usr/share/man/man8
/usr/share/man/man8/getcap.8.gz
/usr/share/man/man8/getpcaps.8.gz
/usr/share/man/man8/setcap.8.gz


libcap2-bin — пакет с утилитами для Linux capabilities: getcap смотрит capabilities файлов, setcap назначает их, getpcaps показывает capabilities процесса, capsh позволяет просматривать и изменять capabilities shell/процесса.

#security #misc #utils
Упрощённая схема жизненного цикла ПО

* Сбор и обработка требований

* Получение технических заданий, планы работ

* Разработка
- Дизайн
- Кодирование
- Тестирование
- Документирование

* Поддержка
- Внедрение (Установка ПО, обучение пользователей)
- Сопровождение (Исправление выявленных ошибок, поддержка пользователей)

#theory #misc
Если нужно, чтобы Git нормально отображал кириллицу в git status / git log, именах файлов и похожих местах, добавьте в .git/config репозитория:
[core]
quotepath = false


или выполните команду:
$ git config core.quotepath false


Эта настройка отключает экранирование не-ASCII-символов.

#git
Полезные ссылки (или неполезные)

https://tracker.debian.org/ - отслеживание пакетов Debian: версии, баги, изменения, сопровождение.

https://www.codewars.com/ - задачи по программированию и практика кода.

https://chatgpt.com/ - чат с ИИ ChatGPT.

https://chat.mistral.ai/ - чат с ИИ Mistral.

https://distrowatch.com/ - новости, рейтинги и информация о Linux-дистрибутивах.

https://goodfirstissues.com/ - поиск простых задач для первого вклада в open source.

https://goodfirstissue.dev/ - подборка beginner-friendly задач в open-source проектах.

https://www.linux.org.ru/ - русскоязычное сообщество и новости о Linux.

https://www.opennet.ru/ - новости, статьи и документация по Linux/Unix и ПО.

https://micronews.debian.org/ - короткие новости из жизни Debian.

https://www.debian.org/News/ - официальные новости проекта Debian.

https://www.debian.org/ - официальный сайт Debian.

https://salsa.debian.org/ - GitLab-платформа Debian с исходным кодом пакетов и проектов.

https://contributors.debian.org/ - участники проекта Debian.

https://keyserver.ubuntu.com/ - сервер поиска и публикации OpenPGP/GPG-ключей.

https://wiki.debian.org/Teams - список команд и рабочих групп Debian.

https://wiki.debian.org/LTS, https://www.debian.org/releases/ - информация о
долгосрочной поддержке Debian (LTS), релизы Debian.

https://www.debian.org/intro/help.en.html - как можно помочь Debian и с чего начать?

https://web.telegram.org/ - веб-версия Telegram.

https://tgstat.ru/ - статистика и аналитика Telegram-каналов.

https://tgstat.ru/tag/linux - подборка Telegram-каналов по теме Linux.

https://tgstat.ru/tag/devops - подборка Telegram-каналов по DevOps.

https://tgstat.ru/tag/it-books - подборка Telegram-каналов с IT-книгами.

https://online-timer.ru/ - онлайн-таймеры, секундомеры и будильники.

https://downsub.com/ - скачивание субтитров из видео по ссылке (например, YouTube).

https://ipcalc.co/ - калькулятор IP-подсетей, масок и диапазонов адресов.

https://2ip.io/ru/ - проверка IP-адреса, сети, DNS и других параметров подключения.

https://crontab.guru/ - удобная проверка и расшифровка cron-выражений.

https://wintelguy.com/umask-calc.pl - калькулятор прав доступа Unix/Linux и umask.

https://www.nerdfonts.com/ - шрифты с иконками для терминала, редакторов и status bar.

https://openbuildservice.org/ - система сборки и публикации пакетов для разных Linux-дистрибутивов.

https://www.profileme.dev/ - создание и оформление README-профиля GitHub (Demo).

https://ftp.ubuntu.com/ - сервер с пакетами, ISO-образами и файлами Ubuntu.

https://archive.debian.org/ - архив старых, неподдерживаемых релизов и пакетов Debian.

https://ftp.debian.org/debian/ - основной зеркальный сервер репозиториев Debian: пакеты, обновления и метаданные.

https://shields.io/badges - создание бейджей для оформления README.md и проектов.

#misc
Warning: Debian 11 Long Term Support reaches end-of-life

Новость: https://www.debian.org/News/2026/20260831

Короче говоря, с 31 августа 2026 года Debian 11 (Bullseye) больше не получает официальные обновления безопасности и исправления. Если у вас есть серверы или машины на этом релизе, лучше обновиться хотя бы до Bookworm или выше.

#news #debian
ИИ-токены - это условные "кусочки текста", которыми ChatGPT измеряет объём диалога. Токен - не обязательно слово: короткое слово может быть одним токеном, а длинное слово, число, ссылка или знак препинания - несколькими.

Например, надпись "Использовано токенов: 115 665 из 325 000" означает, что в чате уже обработано примерно 115 тысяч таких кусочков текста, а общий лимит - 325 тысяч. В токены входят сообщения пользователя и ответы ChatGPT. Это не валюта, но в API токены также используют для расчёта стоимости работы ИИ.

Чем длиннее сообщения и ответы ChatGPT, тем больше расходуется токенов. В счётчик входят текст диалога, цитаты, код, ссылки и другие данные.

#ai
Chroot и Docker: в чём разница

Chroot и Docker-контейнеры позволяют запускать программы в изолированной среде, но работают по-разному.

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

Плюсы chroot: минимальный расход ресурсов, простота, быстрый запуск, полный контроль над файловой структурой. Минус — слабая изоляция: chroot не предназначен для защиты от вредоносных процессов. При наличии root-доступа из такого окружения часто можно выбраться в основную систему. Также chroot не изолирует сеть, процессы и другие системные ресурсы сам по себе.

Docker использует возможности ядра Linux: namespaces изолируют процессы, сеть, пользователей и точки монтирования, а cgroups ограничивают потребление ресурсов. Контейнер Docker обычно запускается из готового образа и включает приложение со всеми зависимостями.

Плюсы Docker: удобная упаковка и переносимость приложений, воспроизводимый запуск, управление сетью и томами, более сильная изоляция, развитая экосистема. Минусы: больше служебных компонентов, сложнее настройка, крупнее образы и выше расход ресурсов по сравнению с простым chroot.

Итог: chroot подходит для лёгких локальных окружений, сборки пакетов и экспериментов, где важны простота и минимализм. Docker удобнее для развёртывания сервисов, командной разработки и проектов, которым нужна переносимость и изоляция.

———

Если хотите работать с chroot удобно и быстро, советую использовать pbuilder или sbuild в Debian. А ещё можно написать свой велосипед с использованием утилиты chroot — так будет проще понять, как это всё работает.

Если же хотите Docker, можно использовать официальный репозиторий download.docker.com. Например, вот скрипт, который скачивает актуальные пакеты для Bookworm (если используется Trixie — просто поменяйте dist в скрипте).

#build #utils #misc
hedgewars

Пошаговая тактическая игра в стиле Worms: игроки управляют командами забавных ежей, перемещаются по разрушаемым картам и используют большой набор оружия и необычных предметов, чтобы победить соперников. Можно играть одному, по локальной сети или онлайн, настраивать команды, уровни и правила боя. Это полностью свободная игра с открытым исходным кодом, распространяемая по лицензии GPL-2.0-or-later.

Установка:
$ apt-get install -y hedgewars


> GitHub
> Salsa
> Сайт

#games #opensource
В 2025 году я встречался с разработчиками Debian — Debian Developers (DD). Это инженеры, которые кучу лет вносят вклад в Debian, поддерживают пакеты, инфраструктуру, исправляют баги, ну и так далее. Я отношусь к ним с большим уважением.

Мне особенно запомнилась процедура подтверждения GPG-ключа. Она была нужна мне на пути к статусу Debian Maintainer (DM): чтобы публиковать и сопровождать пакеты в Debian, важно не только уметь делать это технически, но и быть известным сообществу как реальный и ответственный человек.

GPG-ключ — это криптографический ключ, который позволяет подтверждать вашу цифровую личность и авторство подписанных действий. В Open Source с его помощью можно подписывать коммиты, теги, пакеты и загрузки в репозитории, связывая эти действия с владельцем ключа.

Новый GPG-ключ сам по себе ничего не говорит окружающим. Он может принадлежать кому угодно: реальному разработчику, случайному человеку или тому, кто просто указал чужое имя и почту. Поэтому важна подпись ключа кем-то другим, более известным и проверенным в сообществе. Так и образуется цепочка доверия между реальными людьми в сообществе.

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

Отпечаток, или fingerprint, — это короткий уникальный идентификатор GPG-ключа. Его можно вывести так:
$ gpg --fingerprint email@example.org


На встрече мы обменялись бумажками с отпечатками наших GPG-ключей и сверили их друг с другом. После проверки личности и совпадения отпечатка разработчик мог подписать мой публичный ключ уже дома, а я - его (взаимная подпись). Технически я уже не помню, как именно мы это делали и какие команды использовали, но суть не в этом, а в том, как выстраивается цепочка инженеров, которым можно доверять.

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

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

Вывод: будьте осторожнее, общаясь со всякими ноунеймами в сети. Особенно — с аккаунтами противоположного пола :D

#thoughts #security #debian
Я увлёкся мангой и комиксами в целом — это хорошо отвлекает от думскроллинга. Мне нравится что-то домашнее, уютное, приключенческое и с лёгкой комедийной ноткой, чтобы можно было расслабиться. Манга — это японские комиксы, которые читаются справа налево.

#thoughts
Недавно я мельком увидел на Хабре интересный термин — Fastfood IT. Нет, это не разработка платформ для фастфуд-индустрии (хотя и такое тоже есть), а кое-что более тревожное.

Так вот:

Fastfood IT — неофициальный термин для быстрого, дешёвого и шаблонного создания IT-продуктов: сайтов, приложений, кода или MVP.

С развитием AI это понятие стало особенно актуальным: нейросети позволяют за минуты генерировать код, дизайн и контент. Но у такой скорости есть обратная сторона.

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

Поэтому я и перестал «писать» новые пет-проекты: ИИ очень помогает, но демотивирует. Проект быстро превращается в типичную ИИ-пустышку. Пока что я не смог разрешить этот внутренний конфликт для себя.

#thoughts #ai
здрясти
Vital Synth (Виталя)

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

Vital можно скачать для Windows, macOS и Linux. Сейчас доступна версия 1.6.4 (Early Access). Я успешно установил его на Debian. И да, для скачивания необходимо зарегистрироваться на сайте.

> Сайт
> GitHub

#software #music
Музыкальные пресеты — это заранее сохраненные наборы настроек и параметров для виртуальных синтезаторов, аудиоэффектов или программ для создания музыки, которые позволяют получить готовый звук в один клик.

Большинство виртуальных синтезаторов идут с заводской библиотекой пресетов: например, Surge XT, Vital, Serum, Pigments, Massive и другие. Обычно там есть басы, лиды, пады, плаки, арпы, клавиши, эффекты и экспериментальные звуки. Помимо встроенных банков, для многих популярных синтезаторов выпускают сторонние пресет-паки — бесплатные и платные.

При этом пресеты не универсальны: патч, созданный для Vital, нельзя просто открыть в Surge XT или Serum. У каждого синтезатора свой формат и своя архитектура звука — осцилляторы, фильтры, модуляции и эффекты работают по-разному. Иногда можно повторить похожий звук вручную, но перенести настройки одним файлом не получится.

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

#music