web-dev-qa-db-ja.com

認証のためにダイアログを呼び出すにはどうすればよいですか?

私はPythonでwxモジュールを使用してguiプログラムを書いています。プログラムでは、ルート権限が必要なフォルダにアクセスするたびに、ターミナルでパスワードを要求しますが、パスワードを入力して認証するためのダイアログをユーザーに表示したいです。そのダイアログを呼び出してubuntuでユーザーを認証する方法は?

13
rupali

Stackoverflowには、質問に答える2つの異なるQ&Aがあります: herehere

両方の答えは、コマンド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を実行すると、所有者になります(スクリプトを実行する前にファイルが存在してはなりません)。

9
lumbric

pythonのより洗練されたソリューションがあると確信していますが、ダウンしてダーティなバージョンはgksudoを使用することです。 gksudoはSudoと同じことを行いますが、コマンドラインで尋ねる代わりに、指定した認証用のダイアログを作成する点が異なります。

https://help.ubuntu.com/community/RootSudo#Graphical_Sudo を参照してください

3
khamer

このスクリプトをコードに挿入します。

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))
0
upapilot