3

私のアプリは、いくつかの特権的な作業を行う必要があります。私はいたるところを見てきましたが、役に立つものは何も見つかりません。私が見つけた他のすべての代替手段はもう使用されていないため、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')

ディレクトリを作成できません。何が間違っていますか?

4

1 に答える 1

1

ユーザーが への書き込み権限を持っていないため、ファイル システムのセキュリティによって停止されています/usr/local/share/somefoldersudoそのディレクトリ作成のアクセス許可を一時的にエスカレートするために使用できます。ただし、スーパーユーザーとしてさらに操作を実行する必要がある場合は、それだけではありません。

ユーザー空間にないものに書き込む必要がある場合は、sudo ./myscript.py.

于 2010-07-10T01:29:05.970 に答える