Python ne parvient pas à exécuter à partir d'un navigateur Web Firefox script exécuté racine avec une chute des privilèges
Question
Je ne peux pas exécuter Firefox à partir d'un script python sudoed qui laisse tomber les privilèges à l'utilisateur normal. Si j'écris
$ sudo python >>> import os >>> import pwd, grp >>> uid = pwd.getpwnam('norby')[2] >>> gid = grp.getgrnam('norby')[2] >>> os.setegid(gid) >>> os.seteuid(uid) >>> import webbrowser >>> webbrowser.get('firefox').open('www.google.it') True >>> # It returns true but doesn't work >>> from subprocess import Popen,PIPE >>> p = Popen('firefox www.google.it', shell=True,stdout=PIPE,stderr=PIPE) >>> # Doesn't execute the command >>> You shouldn't really run Iceweasel through sudo WITHOUT the -H option. Continuing as if you used the -H option. No protocol specified Error: cannot open display: :0
Je pense que ce n'est pas un problème de python, mais le problème firefox / iceweasel / configuration debian. Peut-être Firefox en lecture seule UID et non EUID, et n'exécute pas processus, car UID est égale à 0. Que pensez-vous?
La solution
Cela pourrait être votre environnement. La modification des autorisations sera toujours laisser des variables d'environnement comme $ HOME pointage au répertoire de l'utilisateur root, qui sera inaccessible. Il peut être intéressant d'essayer de modifier ces variables en changeant os.environ
avant de lancer le navigateur. Il peut aussi y avoir d'autres variables qui valent le détour.