Я пишу программу с графическим интерфейсом, используя модуль wx на python. В программе всякий раз, когда я обращаюсь к папке, которая требует привилегий root, он запрашивает пароль на терминале, но я хочу отобразить диалоговое окно для пользователя, чтобы ввести пароль и аутентифицировать его. Как вызвать этот диалог и аутентифицировать пользователя в Ubuntu?
Хотя я уверен, что есть более интересный питон Решением проблемы является использование 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))
Есть два разных вопроса и ответов на 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
, он будет принадлежать вам (файл не должен существовать до запуска скрипта).