Piszę program GUI za pomocą modułu wx w Pythonie. W programie za każdym razem, gdy uzyskuję dostęp do folderu wymagającego uprawnień administratora, pyta on o hasło na terminalu, ale chcę wyświetlić okno dialogowe dla użytkownika, aby wprowadzić hasło i uwierzytelnić go. Jak wywołać to okno dialogowe i uwierzytelnić użytkownika w Ubuntu?
13
sudo
, ale nie mam wystarczającej wiedzy na temat Python lub PolicyKit, aby napisać dobrą odpowiedź wyjaśniającą, w jaki sposób. Być może ktoś inny może.Odpowiedzi:
Istnieją dwa różne pytania i odpowiedzi dotyczące przepływu stosu odpowiadające na twoje pytanie: tutaj i tutaj .
Obie odpowiedzi używają polecenia
gksudo
(wspomnianego już przez @khamer). Jeśli uruchomiszgksudo command
(także bez Pythona), to po prostu zrobi tosudo
, co robi, ale z interfejsem graficznym - tj. Poprosi użytkownika o hasło, a następnie uruchom polecenie jako root, jeśli użytkownik znajduje się w pliku sudoers.Aby zaimplementować sugerowane rozwiązanie z połączonych odpowiedzi w pythonie, możesz użyć czegoś, jak pokazano w poniższym przykładzie:
Utwórz plik
run.py
:I plik
create.py
:Następnie uruchom
python run.py
i po wprowadzeniu hasła zostanie utworzony plik należący do roota. Jeślipython create.py
go uruchomisz , będzie on twoją własnością (plik nie powinien istnieć przed uruchomieniem skryptu).źródło
Chociaż jestem pewien, że istnieje bardziej wyszukane rozwiązanie Pythona, wersja brudna i brudna używa gksudo. gksudo robi to samo, co sudo, z wyjątkiem tego, że tworzy okno dialogowe uwierzytelnienia, o którym wspomniałeś, zamiast pytać w wierszu poleceń.
Zobacz https://help.ubuntu.com/community/RootSudo#Graphical_sudo
źródło
gksu
/gksudo
w programie Python?Wstaw ten skrypt do swojego kodu:
źródło