如何将dbus和policykit连接到我在python中的函数中?

如何将dbus和policykit连接到我在python中的函数中?

问题描述:

我正在制作一个需要root权限的方法的python应用程序。从https://www.freedesktop.org/software/polkit/docs/0.105/polkit-apps.html,我发现示例2.通过D-Bus访问权限,这是以下代码的Python版本,我执行了它,并且我认为在输入密码后我能够获得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 

在你引用的Python代码,并result指示成功或失败?如果失败,首先需要找出返回值为bus,proxy,authoritysystem_bus_name的范围。如果成功,您需要检查您使用result的方式。

+0

嗯,只要输入正确的密码,我认为它会成功。然而,我仍然迷失了,因为我不知道如何使用结果。我试过了文档,但没有具体的东西。 – answerSeeker

+0

下面是[aptdaemon文档](https://pythonhosted.org/aptdaemon/dbus.html#policykit-privileges)的示例 –