Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/10/2008, à 13:20

lau-frenssss

Python & root

Bonjour,

Je développe une application, certaines fois j'ai besoin d'être root pour exécuter une commande, par exemple:

import os
os.system("sudo fdisk -l")

Je n'ai pas envie que l'utilisateur doivent sans cesse entrez son mot de passe root. Comment dois-je procéder pour que l'utilisateur entre une fois son mot de passe au lancement, comme quand on ouvre, par exemple, le gestionnaire de paquets Synaptic?

Dernière modification par lau-frenssss (Le 22/10/2008, à 13:24)

Hors ligne

#2 Le 22/10/2008, à 13:47

Link31

Re : Python & root

Il faut lancer ton application en root grâce à la commande gksudo ton_programme.py (avec demande du mot de passe, comme Synaptic), puis prendre l'UID effectif d'un utilisateur non privilégié. Ton programme ayant été lancé par root, il est libre de reprendre temporairement ces droits au moment où il en a besoin.

Enfin, c'est la théorie, et c'est comme ça que ça se passe en programmation système. Je ne saurais pas te dire comment implémenter ça en Python (mais ça doit être possible).

Tu peux aussi, évidemment, lancer ton application en root et te contenter de ça, mais c'est un peu moins sécurisé.

Dernière modification par Link31 (Le 22/10/2008, à 13:52)

Hors ligne

#3 Le 22/10/2008, à 14:25

lau-frenssss

Re : Python & root

gksudo mon_prog.py
M'a demander mon mot de passe mais ca n'as pas lancer le programme.

Et si je veux rendre le programme executable sans la console?

Dernière modification par lau-frenssss (Le 22/10/2008, à 14:33)

Hors ligne

#4 Le 22/10/2008, à 19:27

Link31

Re : Python & root

Essaie gksudo python mon_prog.py

Si tu veux qu'il te demande directement le mot de passe, sans passer par la console, il faut créer un script qui lance la comande gksudo ..., et appeler ce script pour lancer le programme.

Hors ligne