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

时间:2016-12-16 05:35:10

标签: python python-2.7 dbus debian-based polkit

我正在创建一个具有需要root权限的方法的python应用程序。从https://www.freedesktop.org/software/polkit/docs/0.105/polkit-apps.html开始,我找到了示例2.通过D-Bus访问权限,这是下面代码的python版本,我执行了它,我以为我能够输入我的密码后获得root权限,但我仍然得到"权限被拒绝"在我的应用程序上This是我尝试连接的功能

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

1 个答案:

答案 0 :(得分:0)

在你引用的python代码中,result是否表示成功或失败?如果失败,您需要首先找出busproxyauthoritysystem_bus_name的返回值,以缩小错误范围。如果成功,则需要检查您使用result的方式。