J'écris un programme gui en utilisant le module wx en python. Dans le programme chaque fois que j'accède à un dossier qui nécessite le privilège root, il demande un mot de passe au terminal mais je veux afficher la boîte de dialogue pour que l'utilisateur saisisse le mot de passe et l'authentifie. Comment appeler cette boîte de dialogue et authentifier l'utilisateur dans Ubuntu?
13
sudo
, mais je n'ai pas suffisamment de connaissances sur Python ou PolicyKit pour écrire une bonne réponse expliquant comment. Peut-être que quelqu'un d'autre peut le faire.Réponses:
Il y a deux questions et réponses différentes à stackoverflow répondant à votre question: ici et ici .
Les deux réponses utilisent la commande
gksudo
(déjà mentionnée par @khamer). Si vous exécutezgksudo command
(également sans python), il fera essentiellement ce qu'ilsudo
fait, mais avec une interface graphique - c'est-à-dire demander à l'utilisateur un mot de passe, puis exécuter la commande en tant que root si l'utilisateur est dans le fichier sudoers.Pour implémenter la solution suggérée à partir des réponses liées en python, vous pouvez utiliser quelque chose comme indiqué dans l'exemple suivant:
Créez un fichier
run.py
:Et un fichier
create.py
:Ensuite, exécutez
python run.py
et après avoir entré votre mot de passe, un fichier appartenant à root sera créé. Si vous l'exécutez,python create.py
il vous appartiendra (le fichier ne devrait pas exister avant d'exécuter le script).la source
Bien que je sois sûr qu'il existe une solution python plus sophistiquée, la version bas et sale est d'utiliser gksudo. gksudo fait la même chose que sudo, sauf qu'il crée cette boîte de dialogue pour l'authentification que vous avez mentionnée au lieu de demander sur la ligne de commande.
Voir https://help.ubuntu.com/community/RootSudo#Graphical_sudo
la source
gksu
/gksudo
dans un programme Python?Insérez ce script dans votre code:
la source