Я пишу программу с графическим интерфейсом, используя модуль wx в Python. В программе всякий раз, когда я обращаюсь к папке, для которой требуются права суперпользователя, он запрашивает пароль на терминале, но я хочу отобразить диалоговое окно для пользователя, чтобы ввести пароль и аутентифицировать его. Как вызвать этот диалог и аутентифицировать пользователя в Ubuntu?
13
sudo
, но у меня недостаточно знаний Python или PolicyKit, чтобы написать хороший ответ, объясняющий как. Возможно, кто-то еще может.Ответы:
Есть два разных вопроса и ответов в stackoverflow, отвечающих на ваш вопрос: здесь и здесь .
Оба ответа используют команду
gksudo
(уже упоминавшуюся @khamer). Если вы запуститеgksudo command
(также без python), он будет делать тоsudo
, что делает, но с графическим интерфейсом - то есть попросить пользователя ввести пароль, а затем выполнить команду от имени пользователя root, если пользователь находится в файле sudoers.Чтобы реализовать предложенное решение из связанных ответов в python, вы можете использовать что-то, как показано в следующем примере:
Создать файл
run.py
:И файл
create.py
:Затем запустите
python run.py
и после ввода пароля будет создан файл, принадлежащий пользователю root. Если вы запуститеpython create.py
его, он будет принадлежать вам (файл не должен существовать до запуска скрипта).источник
Хотя я уверен, что есть более удачное решение для Python, грязная и грязная версия заключается в использовании gksudo. gksudo делает то же самое, что и sudo, за исключением того, что создает диалог аутентификации, который вы упомянули, вместо того, чтобы спрашивать в командной строке.
См. Https://help.ubuntu.com/community/RootSudo#Graphical_sudo.
источник
gksu
/gksudo
в программе на Python?Вставьте этот скрипт в ваш код:
источник