如何将 dbus 和 policykit 连接到我在 python 中的函数?
Posted
技术标签:
【中文标题】如何将 dbus 和 policykit 连接到我在 python 中的函数?【英文标题】:How do I connect dbus and policykit to my function in python? 【发布时间】:2017-05-01 20:46:05 【问题描述】:我正在制作一个 python 应用程序,它有一个需要 root 权限的方法。从https://www.freedesktop.org/software/polkit/docs/0.105/polkit-apps.html,我找到了Example 2. Accessing the authority via 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】:在你引用的python代码中,result
表示成功还是失败?如果失败,您需要首先找出bus
、proxy
、authority
和system_bus_name
的返回值是什么来缩小错误范围。如果成功,你需要检查你是如何使用result
的。
【讨论】:
嗯,我认为只要输入正确的密码就可以成功。但是,我仍然不知所措,因为我不知道如何使用结果。我已经尝试过文档,但无法提出任何具体的建议。 这是来自aptdaemon docs的示例以上是关于如何将 dbus 和 policykit 连接到我在 python 中的函数?的主要内容,如果未能解决你的问题,请参考以下文章