3

開発中の Python GUI アプリ内で特権をエスカレートする方法を探しています。希望モデルはGUFWです。メイン プログラムを root として実行する必要がない点が気に入っていますが、「rooty」な操作を行う場合は、それを「ロック解除」する必要があります。

ユーザーのホーム ディレクトリ ツリーまたは /usr のディレクトリ (ルートの昇格が必要) に保存する必要があるテキスト ファイルを開発しているプログラムがあります。

プログラムをルートとして実行したくありませんが、プログラムを実行しているユーザーとは異なるユーザー (この場合はルート) にファイルを保存する必要がある場合は、ルート アクセスを呼び出します。

一時的な場所に保存して、次のような (ba)sh 呼び出しに戻したくありません。

os.system('gksu cp /tmp/myfile /usr/systemdir/myfile')

可能であれば、すべて Python 内でプログラムで実行したいと考えています。将来的には、単にファイルを作成するだけでなく、ファイルの途中で何らかの追加が必要になる操作が必要になる可能性があります。

また、その保存操作が完了した後、私は権限をエスカレーション解除したいと考えています。

誰かがこの試みのチュートリアルやサンプルコードを教えてくれませんか?

よろしく、

ナルニー

4

1 に答える 1

1

あなたが望むのはPolicyKitです- FreeDesktop の仕様であり、まさにこれを行うためのソフトウェアです。http://ubuntuforums.org/showthread.php?t=1359397は、これを Python で使用するためのチュートリアルとサンプル コードです (個人的に PolicyKit を使用したことはありませんが、それがどれほど優れているかどうかはわかりません)。新しい dbus と glib の場合from gi.repository import DBus、古いpython-dbusバインディングの代わりに GObject イントロスペクション ( ) を使用する必要があることに注意してください。これには、サンプル コードと比較して、ほぼ確実に流れに沿った変更が加えられます。

于 2012-03-10T14:04:33.063 に答える