使用dbus和policykit的根任务
在某些时候,我的应用程序需要执行管理任务,例如在/ etc中创建文件或以root特权运行命令。 我知道可以做一个问答: os.popen("pkexec foo bar") 但是我也知道,这不是可以预见的干净方法。由于用户总是需要重新输入密码而不是像会话一样进行处理,因此会给用户带来某种烦恼。 当我找到用于身份验证的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 …