LINUX.ORG.RU
ФорумAdmin

ConsoleKit+PolicyKit: проблемы с выключением \ перезагрузкой.


0

1

Машина не желает выключаться \ перезагружаться при использовании связки ConsoleKit+PolicyKit.
=====

Имеется:
1) dbus-daemon, console-kit-daemon, polkitd запущены
2) DM - Slim, WM - OpenBox
3) ck-launch-session и dbus-launch из .xinitrc отрабатывают корректно
4) session optional pam_ck_connector.so прописано в /etc/pam.d/login и в /etc/pam.d/slim
5) В /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
разрешения на вызов всех методов установлены в yes для всех типов сессий

При этом:
1) ck-list-sessions показывает почему-то 2 сессии для пользователя: одна сессия активна и опирается на консоль /dev/tty7, вторая неактивна и не связана с консолью, хотя ck-launch-session вызывается однозначно 1 раз
2) /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy полностью игнорируется; так же полностью игнорируются локальные политики для consolekit, размещаемые в /etc/polkit-1/localauthority/50-local.d/, обрабатываемы pklocalauthority

=====
В общем и целом, складывается ощущение, что либо polkit не может отдать правила consolekit'у, либо consolekit не понимает передаваемые ему правила.

Если кто-то сталкивался с чем-то подобным - пожалуйста, подскажите, надоумьте, куда копать, какие маны читать?

Ответ на: Я сталкивался. от Shtsh

Убери ck-launch-session

Убрал ck-launch-session, перенёс dbus-launch в slim.conf - толку 0, перезагрузка \ выключение всё равно не работают. ck-list-sessions показывает наличие 1 неактивной сессии, не сопоставленной ни с какой консолью - откуда она взялась, я понятия не имею.
======
Я так думаю, все эти метания от того, что я не до конца понимаю, как на принципиальном уровне работает PolicyKit и ConsoleKit.
Например, я с терминала пытаюсь выполнить reboot. Что при этом происходит? По идее, PolicyKit должен перехватить этот запрос посредством pam, проверить по своим политикам и отдать ConsoleKit, а ConsoleKit через dbus-send должен выключить \ перезагрузить машину пользуясь собой как носителем рутовых прав. Я верно понимаю ситуацию или нет?

Galapago
() автор топика
Ответ на: комментарий от Shtsh

Точнее, не команду, а сигнал. Примерно так

dbus-send --system --print-reply --dest=«org.freedesktop.ConsoleKit» /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Взято с арчевики

Да, если послать сигнал напрямую через dbus-send, как в примере, то, при настроенных политиках PolicyKit, срабатывает. Но что это значит? Что ConsoleKit кривой и не может послать сигнал? И что в этом случае делать? Откатываться на старую версию, как было предложено ниже, или это можно как-то обойти? Где в самом ConsoleKit прописываются действия, которые он должен выполнять? Как он вообще настраивается? Из дока на freedesktop.org что-то сложно выудить полезную информацию.

Galapago
() автор топика
Ответ на: комментарий от Shtsh

Подскажи другое решение. Я его искал долго, но потом плюнул и откатился.

Gunnerua
()
Ответ на: комментарий от Shtsh

Посылает сигнал не consolekit, а конкретное приложение. Ты как выключаешь?

Выключаю halt'ом, ребутаю reboot'ом. Было настроено через sudo, сейчас вот PolicyKit мучаю. Я, по скудоумию своему, думал, что PolicyKit \ ConsoleKit работают как перехватчики вызова конкретного приложения с проверкой прав на его исполнение по своим политикам, иными словами, что reboot можно вызывать просто как reboot (а не sudo reboot, pkexec reboot или что-то там еще), а уж PolicyKit \ ConsoleKit разберутся, можно его мне исполнять или нет. Ну вот из того, что было написано выше, я начал понимать, что это не так. Как же всё-таки PolicyKit \ ConsoleKit работают? Я так понимаю, что вызов reboot'а «в лоб» никак не перехватывается и не обрабатывается, поэтому политики polkit'а и молчат. Чтобы происходила обработка, нужно через dbus послать сигнал ConsoleKit'у, который является freedesktop-совместимой обёрткой вокруг halt'а \ reboot'а. Ну а уж тут и вступает PolicyKit и проверяет права доступа по своим политикам. Вот как-то так похоже.

Galapago
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.