如何为我的应用获取root权限?

3 投票
1 回答
791 浏览
提问于 2025-04-16 01:04

我的应用需要做一些需要特权的工作。我到处找,但找不到有用的资料。我知道我想用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

撰写回答