From: Leonid Krivoshein <klark.devel@gmail.com>
To: devel-distro@lists.altlinux.org
Subject: Re: [devel-distro] Интерфейсы для инсталлятора на базе альтератор 2.0
Date: Wed, 16 Oct 2024 02:02:01 +0300
Message-ID: <2b32f130-84c8-4427-92a4-351e98194f30@gmail.com> (raw)
In-Reply-To: <fdba2280-e416-45f4-97b5-e5b0e100b6f7@basealt.ru>
On 10/15/24 08:19, Evgeny Sinelnikov wrote:
> Доброе утро,
>
> ответы на вопросы по теме веба, отправлены в отдельном сообщении:
> -
> https://lists.altlinux.org/pipermail/devel-distro/2024-October/003050.html
>
> Ниже предлагаю продолжить разбор по поводу интерфейсов.
>
>
> 15.10.2024 01:23, Leonid Krivoshein пишет:
>>
>> On 10/14/24 22:57, Evgeny Sinelnikov wrote:
> [...]
>>
>>>
>>> 14.10.2024 11:17, Sergey V Turchin пишет:
>>>> On Thursday, 10 October 2024 00:52:00 MSK Leonid Krivoshein wrote:
>>>>
>>>> [...]
>>>>>> От
>>>>>> механизма, в котором нет, по сути, определенных интерфейсов, к
>>>>>> механизму, где их можно задавать, фиксировать, контролировать доступ
>>>>>> на уровне каждого отдельного метода и получать возможность написания
>>>>>> фронтендов, не требующих выполнения под рутом.
>>>>> При этом установить ОС можно только под рутом. И тогда непонятно,
>>>>> зачем
>>>>> нужны все эти интерфейсы, разделение прав и тому подобные усложнения.
>>>> Если помните, текущий aterator умееет и пользовательские
>>>> настройки(реально
>>>> какой-то модуль был, забыл уже). Не знаю, насколько может быть сейчас
>>>> востребовано.
>>>>
>>>> [...]
>>>
>>> Удивительное дело. Давайте не будем путать. Общая тенденция создания
>>> безопасных систем приводит к очень сложным в сопровождении решениям,
>>> вроде SELinux. Проблема в том, что приложения под рутом невозможно
>>> проконтролировать иначе. Любое приложение под рутом может всё. И
>>> остаётся только доверять коду и надеяться на то, что этого кода
>>> будет немного и в нем не будет критических уязвимостей.
>>>
>>> Текущий Альтератор построен на концепции общего набора механизмов
>>> конфигуратора, как в инсталляторе, так и в установленной системе.
>>> Недоработка текущей реализации в этом плане привела к тому, что
>>> графический интерфейс мы вынуждены запускать под рутом. И это, я
>>> полагаю, напрямую связано с тем, что кем-то тоже было сказано или
>>> подумано нечто подобное:
>>>
>>> "При этом установить ОС можно только под рутом. И тогда непонятно,
>>> зачем
>>> нужны все эти интерфейсы, разделение прав и тому подобные усложнения."
>>>
>>
>> Совершенно верно. Нет нужды разграничивать доступ в установщике. Нет
>> необходимости запускать графическую часть установщика или
>> конфигуратора под root'ом. Но разграничение прав внутри конфигуратора
>> необходимо, и не только в пределах локальных пользователей хоста.
>> Конфигуратор может не ограничиваться одним хостом.
>
> Всё это звучит ("нет нужды разграничивать доступ в установщике"), как
> оторванные от возможной реализации предположения. При этом
> предполагается что-то недостаточно целостное.
>
Нет нужды разграничивать доступ в установщике на множество
пользователей. Установщик запускается под root'ом, и графическая часть,
если запускается на той же машине, м.б. запущена под обычным
пользователем. Я просто не вижу смысла обсуждать традиционную
клиент-серверную архитектуру, это не какое-то делегирование множества
полномочий разным пользователям.
> "Установщик", в этом смысле, как что-то вне графической части - это и
> есть набор бекендов + движок исполнения сценариев.
>
> Давайте рассмотрим несколько принципов:
>
> 0) от графического интерфейса мы не отказываемся, а его мы под рутом
> (даже если бы это был веб-интерфейс) точно запускать не собираемся.
>
Да, это правильный тезис.
> 1) таким образом, графические части и конфигуратора, и инсталлятора не
> должны работать под рутом.
Логично.
> 2) нет смысла писать множество разных реализаций одних и тех же
> отдельных бекендов для конфигуратора и инсталлятора.
>
Очень спорный тезис. Нет у нас "множества в установщике". В этой
переписке уже обсуждались плюсы и минусы.
> 3) часть необходимых dbus-бекендов в рамках systemd и других подсистем
> уже везде используется.
>
> 4) вне этих бекендов современные Linux-дистрибутивы теряют прикладную
> актуальность.
>
А можно чуть подробнее эти два пункта с примерами? Так не очень понятно.
> 5) придумывать свой дополнительный протокол, когда уже придуман
> varlink (посмотрим, как пойдёт переезд на него в systemd) тоже пока не
> имеет смысла.
>
Протокол вообще не нужен, когда в рамках модуля (или кода,
обеспечивающего некую функциональность) выполняется внутреннее
разделение на представление интерфейса, данных и исполнительную часть.
Ты как хочешь, так и организовываешь внутреннее взаимодействие между
своими частями модуля. Никому больше, кроме самого модуля, дёргать эту
функциональность не надо, нет смысла для этого навязывать общий протокол
в обязательном порядке.
> 6) сейчас важнее заниматься бекендами...
>
> Текущие интерфейсы, которые и так есть у всех (с точностью до DE):
>
> $ busctl call org.<TAB><TAB>
> org.blueman.Mechanism
> org.bluez
> org.cinnamon.SettingsDaemon.DateTimeMechanism
> org.freedesktop.Accounts
> org.freedesktop.Avahi
> org.freedesktop.ColorManager
> org.freedesktop.DBus
> org.freedesktop.DisplayManager
> org.freedesktop.Flatpak.SystemHelper
> org.freedesktop.fwupd
> org.freedesktop.GeoClue2
> org.freedesktop.hostname1
> org.freedesktop.locale1
> org.freedesktop.login1
> org.freedesktop.ModemManager1
> org.freedesktop.NetworkManager
> org.freedesktop.oom1
> org.freedesktop.PackageKit
> org.freedesktop.PolicyKit1
> org.freedesktop.realmd
> org.freedesktop.RealtimeKit1
> org.freedesktop.sssd.infopipe
> org.freedesktop.systemd1
> org.freedesktop.timedate1
> org.freedesktop.UDisks2
> org.freedesktop.UPower
> org.gnome.RemoteDesktop.Configuration
> org.kde.drkonqi
> org.kde.fontinst
> org.kde.kcontrol.kcmclock
> org.kde.kcontrol.kcmkwallet5
> org.kde.kcontrol.kcmlightdm
> org.kde.ksysguard.processlisthelper
> org.kde.ktexteditor6.katetextbuffer
> org.kde.ktexteditor.katetextbuffer
> org.kde.powerdevil.backlighthelper
> org.kde.powerdevil.chargethresholdhelper
> org.kde.powerdevil.discretegpuhelper
> org.opensuse.CupsPkHelper.Mechanism
>
В случае d-bus мы можем что-то готовое использовать, чтобы "дёргать", в
том числе "на лету". Но давайте уж тогда сразу оговорим рамки, где это
нам удобно и выполнимо, а где наоборот.
D-bus прекрасен, когда нам нужно запустить трек, узнав, что плеер "на
шине", а он может отправить название трека через тот же d-bus системному
notifyd. Таких задач в конфигураторе нет, но это основное назначение
шины IPC в desktop-среде.
Свой d-bus, отдельный от общесистемного... но зачем? Кто и для чего
будет к этой шине подключаться? В плане безопасности у него и так уже
есть не только системная, но и отдельная для пользовательского сеанса.
Всё ли в наших ОС завязано на d-bus? Нет. А раз нет, то мы не сможем
управлять вообще всем через d-bus. Или конфигуратор будет только для
управления чем-то d-bus'ким? Или мы всё не d-bus'овское будем как-то
сначала оборачивать в d-bus'овское?
Допустим, мы хотим подтянуть функционал настройки сети в свой
конфигуратор и продублировали для этого диалоги NetworkManager (прям как
в установщике Fedora). Мы можем использовать в этом случае d-bus через
org.freedesktop.NetworkManager, это как проводить операцию через одно
место автогеном, ведь есть же простой текстовый файл. Я не ярый
противник d-bus, просто всё, что можно сделать без него, лучше так и
сделать. Например, я бы отдавал предпочтение работе с простыми
конфигурационными файлами, нежели чем дёргать интерфейсы через d-bus.
Ниже предлагается совершенно разумная область использования d-bus: мы
можем взять от системы и сообщества то, что уже готово.
> Нам необходимо определиться:
>
> 1) Какие интерфейсы из системных (доступных в сизифе) мы переиспользуем?
>
> 2) Какие из них мы переписываем?
>
> 3) Какие адаптируем под наш стек (tcb, libnss-role, ...)?
>
> 4) Какие дополняем собственными, поскольку системных (доступных в
> сизифе) пока что не существует?
>
> ______________________
>
> Мешать в одну кучу системные механизмы и удалённый доступ - очень
> странная и непонятная затея.
>
> Что придумано и уже в основных деталях реализовано для удалённого
> доступа?
>
> Реализован механизм (alterator-module-remote), позволяющий
> автоматизировать удалённое подключение по ssh к объектам и интерфейсам
> через:
> -
> https://www.freedesktop.org/software/systemd/man/latest/systemd-stdio-bridge.html
>
> Работает по ключам и krb5-кредам в юзера (если в рута по ключу, так
> ещё проще, но тогда невозможно ограничить доступ), пробрасывает
> запросы polkit'а по сети. В ближайшее время пакеты поедут в сизиф. Так
> что одним хостом оно не ограничивается.
Теперь не ограничивается. Но это значит, что любой изначально не
приспособленный для этого механизм можно как-то приспособить. И всё же
любопытно, чем этот опыт закончится.
> Alterator-browser (а также alteratorctl, др.) можно будет запустить на
> другом узле. Но старые legacy-модули так не получится пробросить.
>
> Реализовано на сессионной шине-dbus, соответственно работает из-под
> кредов доступных пользователю.
>
> В ближайшее время планируется начать отладку удалённого доступа в
> alteratorctl.
>
> Кроме того, cockpit и аналогичные возможности выставления этого же
> набора интерфейсов иным образом никто не отменяет.
>
> PS: Финальные релизы всего в ближайшее время планируется оформить на
> шине, как /org/altlinux/alterator/* объекты и org.altlinux.alterator.*
> интерфейсы.
>
Как уже говорил, труды вокруг d-bus не будут напрасными, просто нужно
ориентироваться на то, чтобы брать от системы по-максимуму готового, а
не заставлять разработчиков бэкендов описывать всё через d-bus, добавляя
к guile ещё один новый барьер сложности. Не нужно стремиться плодить
фронтенды и бэкенды, тогда и единых интерфейсов между ними не потребуется.
--
WBR, Leonid Krivoshein.
next prev parent reply other threads:[~2024-10-15 23:02 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-08 13:43 [devel-distro] Тезисы " Антон Мидюков
2024-10-08 23:13 ` [devel-distro] " Leonid Krivoshein
2024-10-08 23:29 ` [devel-distro] Тезисы для инсталлятора " Leonid Krivoshein
2024-10-09 2:13 ` Evgeny Sinelnikov
2024-10-09 21:52 ` Leonid Krivoshein
2024-10-14 7:17 ` [devel-distro] " Sergey V Turchin
2024-10-14 19:57 ` [devel-distro] Интерфейсы " Evgeny Sinelnikov
2024-10-14 21:23 ` Leonid Krivoshein
2024-10-14 21:57 ` Антон Мидюков
2024-10-15 1:11 ` Leonid Krivoshein
2024-10-15 4:49 ` Anton Farygin
2024-10-15 9:44 ` Michael Shigorin
2024-10-15 15:05 ` Denis Medvedev
2024-10-16 0:25 ` Leonid Krivoshein
2024-10-17 7:22 ` [devel-distro] " Sergey V Turchin
2024-10-15 19:29 ` [devel-distro] " Leonid Krivoshein
2024-10-17 7:27 ` [devel-distro] " Sergey V Turchin
2024-10-18 9:05 ` [devel-distro] [JT] мировоззренческое по путям развития Michael Shigorin
2024-10-15 5:19 ` [devel-distro] Интерфейсы для инсталлятора на базе альтератор 2.0 Evgeny Sinelnikov
2024-10-15 23:02 ` Leonid Krivoshein [this message]
2024-10-15 10:30 ` [devel-distro] инсталятор как краеугольный камень выбора технологического пути Michael Shigorin
2024-10-09 1:40 ` [devel-distro] Installator 2.0: конфигуратор, создающий kickstart-файл Leonid Krivoshein
2024-10-09 9:06 ` [devel-distro] " Sergey V Turchin
2024-10-09 19:46 ` [devel-distro] " Leonid Krivoshein
2024-10-10 19:29 ` [devel-distro] про API и фронтэнды Leonid Krivoshein
2024-10-10 23:27 ` Антон Мидюков
2024-10-11 0:33 ` Leonid Krivoshein
2024-10-14 7:27 ` Sergey V Turchin
2024-10-15 4:59 ` [devel-distro] Веб-браузер в инсталляторе или для инсталлятора? Evgeny Sinelnikov
2024-10-15 5:53 ` Антон Мидюков
2024-10-15 20:53 ` Leonid Krivoshein
2024-10-18 9:25 ` Michael Shigorin
2024-10-14 7:22 ` [devel-distro] Re: Installator 2.0: конфигуратор, создающий kickstart-файл Sergey V Turchin
2024-10-14 19:58 ` [devel-distro] " Leonid Krivoshein
2024-10-15 4:52 ` Anton Farygin
2024-10-15 19:30 ` Leonid Krivoshein
2024-10-15 6:33 ` [devel-distro] " Sergey V Turchin
2024-10-17 7:32 ` [devel-distro] " Sergey V Turchin
2024-10-17 7:49 ` [devel-distro] " Антон Мидюков
2024-10-17 8:44 ` [devel-distro] " Sergey V Turchin
2024-10-18 8:56 ` [devel-distro] qtbrowser vs wasm Michael Shigorin
2024-10-22 9:30 ` Sergey V Turchin
2024-10-22 9:44 ` Michael Shigorin
2024-10-22 10:31 ` Sergey V Turchin
2024-10-15 10:03 ` [devel-distro] [JT] Re: Installator 2.0: конфигуратор, создающий kickstart-файл Michael Shigorin
2024-10-15 23:49 ` Leonid Krivoshein
2024-10-16 8:52 ` Michael Shigorin
2024-10-14 7:43 ` [devel-distro] " Sergey V Turchin
2024-10-14 10:54 ` [devel-distro] " Sergey V Turchin
2024-10-09 9:49 ` [devel-distro] " Alexey Gladkov
2024-10-09 19:54 ` Leonid Krivoshein
2024-10-10 9:10 ` Alexey Gladkov
2024-10-10 12:21 ` Leonid Krivoshein
2024-10-10 14:31 ` Alexey Gladkov
2024-10-09 6:19 ` [devel-distro] Тезисы для инсталлятора на базе альтератор 2.0 Ivan A. Melnikov
2024-10-09 7:21 ` Антон Мидюков
2024-10-09 9:21 ` [devel-distro] " Sergey V Turchin
2024-10-09 13:08 ` [devel-distro] " Leonid Krivoshein
2024-10-09 13:56 ` [devel-distro] о голосовом управлении (was: Тезисы для инст, альтератор 2.0) Arseny Maslennikov
2024-10-10 8:11 ` [devel-distro] о голосовом управлении Антон Мидюков
2024-10-14 7:33 ` [devel-distro] Re: Тезисы для инсталлятора на базе альтератор 2.0 Sergey V Turchin
2024-10-09 22:08 ` [devel-distro] " Leonid Krivoshein
2024-10-10 1:01 ` [devel-distro] Пример файла разметки и описания Leonid Krivoshein
2024-10-10 8:54 ` Антон Мидюков
2024-10-10 5:26 ` [devel-distro] Тезисы для инсталлятора на базе альтератор 2.0 Антон Мидюков
2024-10-10 10:29 ` Leonid Krivoshein
2024-10-14 4:58 ` [devel-distro] Тезисы для инсталлятора на базе альтератор 2.0 (промежуточный итог) Антон Мидюков
2024-10-14 18:59 ` Leonid Krivoshein
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2b32f130-84c8-4427-92a4-351e98194f30@gmail.com \
--to=klark.devel@gmail.com \
--cc=devel-distro@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Distributions development
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-distro/0 devel-distro/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-distro devel-distro/ http://lore.altlinux.org/devel-distro \
devel-distro@lists.altlinux.org devel-distro@lists.altlinux.ru devel-distro@lists.altlinux.com
public-inbox-index devel-distro
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-distro
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git