Ich schreibe ein GUI-Programm mit WX-Modul in Python. Wenn ich in einem Programm auf einen Ordner zugreife, für den Root-Rechte erforderlich sind, wird am Terminal ein Kennwort abgefragt, aber ich möchte dem Benutzer den Dialog anzeigen, in dem er das Kennwort eingeben und ihn authentifizieren kann. Wie rufe ich diesen Dialog auf und authentifiziere den Benutzer in Ubuntu?
13
sudo
, aber ich habe nicht genügend Kenntnisse über Python oder PolicyKit, um eine gute Antwort zu schreiben, in der erläutert wird, wie. Vielleicht kann jemand anderes.Antworten:
Es gibt zwei verschiedene Fragen und Antworten bei stackoverflow, die Ihre Frage beantworten: hier und hier .
Beide Antworten verwenden den Befehl
gksudo
(bereits von @khamer erwähnt). Wenn Sie es ausführengksudo command
(auch ohne Python), wird es im Grunde genommen das tun, was essudo
tut, aber mit einer grafischen Oberfläche - dh fragen Sie den Benutzer nach einem Kennwort und führen Sie den Befehl als root aus, wenn sich der Benutzer in der sudoers-Datei befindet.Um die vorgeschlagene Lösung aus den verknüpften Antworten in Python zu implementieren, können Sie Folgendes verwenden:
Erstellen Sie eine Datei
run.py
:Und eine Datei
create.py
:Führen
python run.py
Sie dann aus, und nachdem Sie Ihr Kennwort eingegeben haben, wird eine Datei im Besitz von root erstellt. Wenn Sie es ausführen, gehörtpython create.py
es Ihnen (die Datei sollte vor dem Ausführen des Skripts nicht vorhanden sein).quelle
Während ich sicher bin, dass es eine schickere Python-Lösung gibt, besteht die Down- und Dirty-Version darin, gksudo zu verwenden. gksudo macht dasselbe wie sudo, außer dass es das von Ihnen erwähnte Dialogfeld für die Authentifizierung erstellt, anstatt in der Befehlszeile nachzufragen.
Siehe https://help.ubuntu.com/community/RootSudo#Graphical_sudo
quelle
gksu
/gksudo
in einem Python-Programm verwendet wird?Fügen Sie dieses Skript in Ihren Code ein:
quelle