2016-12-16 2 views
7

私はルート特権を必要とするメソッドを持つpythonアプリケーションを作っています。 https://www.freedesktop.org/software/polkit/docs/0.105/polkit-apps.htmlから例2を探しました。以下のPythonバージョンのD-Busを使って当局にアクセスしました。私はそれを実行しました。私はパスワードを入力した後にroot権限を得ることができると思っていましたが、私のアプリでは依然として "許可が拒否されました"。 Thisは、私はあなたが引用されたPythonコードでdbusとpolicykitを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 

result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id) 

print result 

答えて

0

を接続しようとしている機能である、resultは、成功または失敗を示すのでしょうか?失敗した場合は、最初にbus,proxy,authoritysystem_bus_nameという戻り値が何であるかを調べることでエラーを絞り込む必要があります。成功した場合は、resultの使用状況を確認する必要があります。

+0

まあ、正しいパスワードが入力されていれば成功すると思います。しかし、私は結果をどのように使用するのかわからないので、まだ失われています。私はドキュメントを試しましたが、何か具体的なものを考え出すことはできませんでした。 – answerSeeker

+0

ここに、[aptdaemon docs](https://pythonhosted.org/aptdaemon/dbus.html#policykit-privileges)の例を示します。 –

関連する問題