Как мне вызвать диалог для аутентификации?

Я пишу программу с графическим интерфейсом, используя модуль wx на python. В программе всякий раз, когда я обращаюсь к папке, которая требует привилегий root, он запрашивает пароль на терминале, но я хочу отобразить диалоговое окно для пользователя, чтобы ввести пароль и аутентифицировать его. Как вызвать этот диалог и аутентифицировать пользователя в Ubuntu?

13
задан 21 May 2012 в 15:52

3 ответа

Хотя я уверен, что есть более интересный питон Решением проблемы является использование gksudo. gksudo делает то же самое, что и sudo, за исключением того, что вместо запроса в командной строке создает диалоговое окно для аутентификации, о котором вы упомянули.

См. https://help.ubuntu.com/community/RootSudo#Graphical_sudo

3
ответ дан 21 May 2012 в 15:52

Вставьте этот скрипт в ваш код:

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))
-1
ответ дан 21 May 2012 в 15:52

Есть два разных вопроса и ответов на stackoverflow, которые отвечают на ваш вопрос: здесь и здесь .

Оба для ответов используйте команду gksudo (уже упомянутая @khamer). Если вы запустите команду gksudo (также без python), она в основном будет делать то же самое, что и sudo , но с графическим интерфейсом, то есть запрашивать пароль у пользователя и затем запускать команду от имени пользователя root. если пользователь находится в файле 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
ответ дан 21 May 2012 в 15:52

Другие вопросы по тегам:

Похожие вопросы: