私はPythonでwxモジュールを使用してguiプログラムを書いています。プログラムでは、ルート権限が必要なフォルダにアクセスするたびに、ターミナルでパスワードを要求しますが、パスワードを入力して認証するためのダイアログをユーザーに表示したいです。そのダイアログを呼び出してubuntuでユーザーを認証する方法は?
sudo
が、私はPythonまたはPolicyKitの知識がなく、その方法を説明する良い答えを書くことができません。おそらく他の誰かができます。
私はPythonでwxモジュールを使用してguiプログラムを書いています。プログラムでは、ルート権限が必要なフォルダにアクセスするたびに、ターミナルでパスワードを要求しますが、パスワードを入力して認証するためのダイアログをユーザーに表示したいです。そのダイアログを呼び出してubuntuでユーザーを認証する方法は?
sudo
が、私はPythonまたはPolicyKitの知識がなく、その方法を説明する良い答えを書くことができません。おそらく他の誰かができます。
回答:
stackoverflowには、質問に答える2つの異なるQ&Aがあります:hereとhereです。
どちらの答えもコマンドを使用していますgksudo
(@khamerが既に言及しています)。gksudo command
(Pythonなしでも)実行すると、基本的には何をsudo
しますが、グラフィカルインターフェイスを使用します。つまり、ユーザーにパスワードを要求し、ユーザーがsudoersファイルにいる場合はrootとしてコマンドを実行します。
pythonでリンクされた回答から提案されたソリューションを実装するには、次の例に示すようなものを使用できます。
ファイルを作成しますrun.py
。
#!/usr/bin/python
import subprocess
subprocess.call(['gksudo','python create.py'])
そしてファイルcreate.py
:
#!/usr/bin/python
# Create test file..
f = file("mytestfile", "w")
次に実行python run.py
し、パスワードを入力すると、rootが所有するファイルが作成されます。実行するpython create.py
場合は、所有者になります(スクリプトを実行する前にファイルが存在してはなりません)。
より洗練されたPythonソリューションがあると確信していますが、ダウンして汚いバージョンはgksudoを使用することです。gksudoはsudoと同じことを行いますが、コマンドラインで尋ねる代わりに、指定した認証用のダイアログを作成します。
https://help.ubuntu.com/community/RootSudo#Graphical_sudoを参照してください
gksu
/ を使用する方法を示すコード例を教えてgksudo
ください。