Python ne parvient pas à exécuter à partir d'un navigateur Web Firefox script exécuté racine avec une chute des privilèges

StackOverflow https://stackoverflow.com/questions/1139835

  •  16-09-2019
  •  | 
  •  

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top