私はPythonでwxモジュールを使用してguiプログラムを書いています。プログラムでは、ルート権限が必要なフォルダにアクセスするたびに、ターミナルでパスワードを要求しますが、パスワードを入力して認証するためのダイアログをユーザーに表示したいです。そのダイアログを呼び出してubuntuでユーザーを認証する方法は?
Stackoverflowには、質問に答える2つの異なるQ&Aがあります: here と here 。
両方の答えは、コマンドgksudo
(@khamerによって既に言及されています)を使用します。 gksudo command
(Pythonなしでも)を実行すると、基本的にSudo
が行うことを行いますが、グラフィカルインターフェイスを使用します。つまり、ユーザーにパスワードを要求し、ユーザーがsudoersファイル。
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 を参照してください
このスクリプトをコードに挿入します。
import os
Password = raw_input('Please enter your root password!')
Sudo_command = '<your command>'
execute = os.system('echo %s|Sudo -S %s' % (Password, Sudo_command))