ALT Linux Distributions development
 help / color / mirror / Atom feed
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.



  reply	other threads:[~2024-10-15 23:02 UTC|newest]

Thread overview: 65+ 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-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