ある時点で、私のアプリケーションは、/ etcにファイルを作成したり、ルート権限でコマンドを実行したりするなどの管理タスクを実行する必要があります。
私はQ&Dを行うことができることを知っています:
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
result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id)
print result
承認後、いくつかのos.popen()コマンドを使用してスクリプトを続行できると私は非常に世間知らずでした。今私はよく知っています:(
上記の例でタプルの結果を確認できますが、以降のドキュメントでは、この時点で機能するコードを見つけることができませんでした。
この結果をどうすればよいですか?どうすれば必要なタスクを実行できますか?使用可能なメソッドを提供する例のPythonリファレンスはありますか?
私はdir()を使用して認証の方法を一覧表示しようとしましたが、続行するための手掛かりを見つけることができませんでした。
フォールバックの使用は避けたいのですが、それが最後の手段です。正しい方法で私を助けてください:)
よろしくお願いします
アンドレ
編集:
私はこれを機能させなかったため、gksuでプログラムを開始することによる以前の解決策は/ opt /で機能しません。少なくとも、プログラムの基本的な作業を行うために、パスワードを要求する1000の要求をあきらめて実装する必要がありました。アプリの対決のTシャツ。
最初にすばやく共有したため、問題に気づきませんでした。すべてが正しく機能しました。最初にパスワードを要求する。私は今完全にダウンしています。AppShowdownに対する私の貢献はhttps://launchpad.net/armorforgeでした。;-(