2016-12-16 2 views
7

Я делаю приложение python, у которого есть метод, требующий прав root. От https://www.freedesktop.org/software/polkit/docs/0.105/polkit-apps.html, я нашел Пример 2. Доступ к полномочию через D-Bus, который является версией кода ниже, я выполнил его, и я подумал, что после ввода пароля я получаю права root все еще получая «разрешение отклонено» в моем приложении. This это функция, которую я пытаюсь подключитьКак подключить dbus и policykit к моей функции в python?

import dbus 

bus = dbus.SystemBus() 
proxy = bus.get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority') 
authority = dbus.Interface(proxy, dbus_interface='org.freedesktop.PolicyKit1.Authority') 

system_bus_name = bus.get_unique_name() 

subject = ('system-bus-name', {'name' : system_bus_name}) 
action_id = 'org.freedesktop.policykit.exec' 
details = {} 
flags = 1   # AllowUserInteraction flag 
cancellation_id = '' # No cancellation id 

result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id) 

print result 

ответ

0

В питона коде вы цитируемое это result показывает успех или неудачу? Если это не удается, вам необходимо сузить ошибку, прежде всего выяснив, что значения возврата bus, proxy, authority и system_bus_name есть. Если это удастся, вам нужно проверить, как вы используете result.

+0

Ну, я думаю, что это удастся, пока введен правильный пароль. Тем не менее, я все еще теряюсь, так как не знаю, как использовать результат. Я пробовал документы, но не мог придумать ничего конкретного. – answerSeeker

+0

Вот пример из документов [aptdaemon docs] (https://pythonhosted.org/aptdaemon/dbus.html#policykit-privileges) –

Смежные вопросы