WebArt!
Немножко древнего
web2.0 стиля
Немного кода, мыслей,
фото и очарования. История сайта
Линукс
Всё, что так или иначе
касается линукс тематики. Перейти в категорию
Электроника
микроэлектроника
и всяческая электротехника. Перейти в категорию
Фотографии
Из разных категорий. Посмотреть категорию
10/Январь/2026 zero-trustsecurity
Стандартная ситуация, у вас есть основной рабочий компьютер, на котором у вас три разных проекта.
Один проект на nodejs, второй продакшн на python, а третий ваш личный “pet project”, тоже на python.
А ещё у вас в этой же системе личная+рабочая почта, ну и, скажем, браузер и клиент-банк.
И это всё под вашим пользователем.
Ну не под рутом же! ¯\_(ツ)_/¯
Всё вполне обычно. У многих вполне технически грамотных разработчиков таких проектов могут быть десятки и десятки ключей для ssh или git серверов.
Вполне обыденно Вы пишете свой код, время от времени коммитите, и тут в ваш уютный pet-project с AI прилетает обновление torchtriton.
А после этого из вашей системы улетают следующие наборы данных, в соответствии с основной функцией бинарника, которая делает следующее:
nameservers из /etc/resolv.confhostname из gethostname()текущий логин из getlogin()текущая рабочая директория из getcwd()переменные окружения/etc/hosts/etc/passwdПервые 1,000 файлов из $HOME/*$HOME/.gitconfig$HOME/.ssh/*Обновление прилетело, конфедициальные данные - улетели.
Скомпрометировано не только всё под вашей учётной записью (и, возможно, системой), но и по цепочке всё, чем вы управляли, куда коммитили, куда подключались.
Очень, очень часто приходится сталкиваться с необходимостью использования определённой версии Питона, например, для torch, или чего-то специфического.
Использовать conda или Docker в связке с nvidia-container-toolkit и потом настраивать образы вроде nvidia/cuda:13.0.1-runtime-ubuntu22.04 мне ощущается противоестесственно, хотя часто так делал.
Да и в контейнере приходится устанавливать дополнительные пакеты.
Проще и удобней собрать всё на хостовой системе, но при этом не допустить контаминации всей системы посторонними библиотеками и исполняемыми файлами.
Далее приводится пример сборки нескольких версий Python только для группы verpy, что несколько удобнее, чем установка только для одного пользователя.
ai - произвольный пользователь, от которого осуществляется компиляция.verpy - группа, которой будет разрешено исполнение.mkdir /opt/openssl
mkdir /opt/python
groupadd --gid 42398 verpy
usermod -aG verpy ai
25/Ноябрь/2025 kubernetesgitlabagentk
Не вдаваясь в подробности, как именно и почему все организовано, доступ осуществляется по следующей цепочке:
1 | |
Основной фронтенд управляет поддоменом gitlab, который закрыт для внешнего доступа посредством авторизации auth_basic.
21/Ноябрь/2025 kubernetesk8slxc
В данном примере показана установка поверх LXC, тогда как для любого более-менее серьезного применения это совершенно неприемлемо и требует использования KVM с дополнительными мерами безопасности.
И, кроме того, установка на KVM будет намного, намного проще.
LXC не обеспечивает адекватной безопасности, поскольку для правильной работы требуется монтирование разделов /sys и /proc с хоста, которые доступны всем экземплярам LXC.
Кроме того, этот пример требует использования ПРИВИЛЕГИРОВАННОГО контейнера LXC.
Однако LXC позволяет относительно легко настроить тестовую инфраструктуру без накладных расходов, связанных с KVM.
Поэтому некоторые аспекты в этом примере будут связаны исключительно с настройкой в LXC.
Для начала давайте подготовим хост-систему.
nano /etc/modules
nano /etc/sysctl.d/35-lxc-kubernetes.conf
1 2 3 4 5 6 7 8 9 10 11 | |
11/Март/2025 jekyllstructured-datanginx
В этой заметке я не буду приводить полный код для всех компонентов, только дам сниппеты и подсказки, на что стоит обратить внимание при сборке сайта на jekyll.
Каждая страница имеет как минимум три точки отображения временной отметки в разных файлах, элементах страницы или ответе сервера, и все они должны быть одинаковыми.
"dateModified": "2025-03-07T15:43:42+00:00"<lastmod>2025-03-07T15:43:42+00:00</lastmod>last-modified: Fri, 07 Mar 2025 15:43:42 GMT