如何为我的应用获取root权限?
我的应用需要做一些需要特权的工作。我到处找,但找不到有用的资料。我知道我想用Policykit1和dbus,因为我发现的其他选择都不再使用了。
这是我目前写的代码:
import dbus
import os
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 i
result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id)
os.makedirs('/usr/local/share/somefolder')
我无法创建这个目录,我哪里出错了?
1 个回答
1
文件系统的安全性在阻止你,因为你的用户没有权限在 /usr/local/share/somefolder
这个文件夹里写东西。你可以使用 sudo
来暂时提升权限,这样就能创建这个文件夹了。不过,如果你还需要做更多的操作,可能就不止这些了。
如果你需要写入的内容不在用户空间里,整个程序可能更适合以超级用户的身份运行(当然是通过 sudo
),比如可以这样运行: sudo ./myscript.py
。