LINUX.ORG.RU
решено ФорумAdmin

Помогите - KDE systemsettings не дружит с polkit

 , ,


0

1

Запускаю KDE systemsetings, модуль для настройки SDDM. Там как известно, все настройки требуют повышения прав до рута через PolicyKit.

Есть другой модуль - настройка даты/времени. Там смена таймзоны требует запроса рута.

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

Модуль для SDDM не работает наглухо, при сохранении настроек выдает ошибку - permission denied, при этом никакого диалога PolicyKit не вылетает вообще.

В логах видно, что в первом (удачном) случае идет запрос к polkitd, далее к кедовому агенту, и вылетает диалог.

В неудачном случае - запроса к polkitd нет вообще. dbus-daemon сразу пишет: не удалось запустить, permission denied.

Разница, не знаю насколько это может влиять - для настройки времени (что работает) запускается сервис через systemd, для настройки SDDM - просто напрямую приложение.

Также (ВАЖНО!!) есть эталонная система, где все работает. Но я в упор не могу понять в чем разница.

Эталонная система - Arch, сломанная - самосбор.

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

@intelfx

Что конкретно пишет dbus-daemon в неудачном случае? Что именно не удаётся запустить?


Если я правильно тебя понял и permission denied происходит непосредственно при вызове метода (а не уже внутри целевого демона, в котором был вызван метод), то попробуй сравнить политики D-Bus на эталонной и подопытной системах. В них написано, кто какие методы может вызывать.

Повышение привилегий с Polkit работает внутри целевого демона. Он должен принять исходный вызов метода и только потом самостоятельно сделать обращение к polkit (и согласно ответу от polkit либо вернуть изначальному клиенту ошибку, либо выполнить действие и вернуть успех).

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 4)

сломанная - самосбор.

Дядя, дядя, я знаю, что у тебя сломалось: машина.

А вообще посмотри код. Там наверное по разному делается повышение прав. От туда дальше будет понятно куда копать.

ox55ff ★★★★★ ()
Ответ на: комментарий от intelfx

Конкретно вот это

сен 26 09:55:13 angmar dbus-daemon[216]: [system] Activating service name='org.kde.kcontrol.kcmsddm' requested by ':1.31' (uid=1000 pid=518 comm="/usr/bin/systemsettings5 ") (using servicehelper)
сен 26 09:55:13 angmar dbus-daemon[216]: [system] Activated service 'org.kde.kcontrol.kcmsddm' failed: Failed to execute program org.kde.kcontrol.kcmsddm: Permission denied
сен 26 09:57:57 angmar org.kde.kcontrol.kcmsddm[583]: Error registering helper DBus service "org.kde.kcontrol.kcmsddm" "Connection \":1.37\" is not allowed to own the service \"org.kde.kcontrol.kcmsddm\" due to security policies in the configuration file"
сен 26 09:57:57 angmar org.kde.kcontrol.kcmsddm[583]: Helper initialization failed
James_Holden ()
Ответ на: комментарий от James_Holden

Failed to execute program org.kde.kcontrol.kcmsddm: Permission denied

Ну, во-первых, вот это. Я мб сейчас дичь напишу, но org.kde.kcontrol.kcmsddm — это существующий бинарник? Есть ли права на его запуск, не покорраптились ли?

Error registering helper DBus service «org.kde.kcontrol.kcmsddm» «Connection ":1.37" is not allowed to own the service "org.kde.kcontrol.kcmsddm" due to security policies in the configuration file»

Во-вторых, вот это. Тебе не хватает политик D-Bus. Куда смотреть — ну, они наверное должны устанавливаться вместе с хелпером. Или ты не знаешь вообще что это такое и где их искать? Стандартный способ — посмотри в арче, какие ещё файлы принадлежат пакету с этим бинарником.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 4)
Ответ на: комментарий от intelfx

это существующий бинарник? Есть ли права на его запуск, не покорраптились ли?

Это служба dbus, если я правильно называю, она запускает бинарник, его я проверял - все нормально, так же как на эталонной системе.

ну, они наверное должны устанавливаться вместе с хелпером

А в какой каталог они ставятся обычно?

James_Holden ()
Ответ на: комментарий от intelfx

Уфф, починил. Это просто капец.

Оказалось - у dbus-daemon-launch-helper стояла группа root, вместо messagebus. И у него не было прав поэтому. Когда я начал смотреть конфиги dbus и проверять все что там написано, наткнулся на это почти сразу.

Спасибо за наводку!

С самосбором беда с этими правами, постоянно вылезают подобные проблемы.

James_Holden ()