Python nicht mit Privilegien Drop Firefox Web-Browser von einem Root-Verzeichnis ausgeführt Skript auszuführen

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

  •  16-09-2019
  •  | 
  •  

Frage

Ich kann nicht firefox von einem sudoed Python-Skript ausführen, die Privilegien in dem normalen Benutzer fällt. Wenn ich schreibe

$ 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

Ich denke, dass nicht ein Python-Problem, aber firefox / iceweasel / debian Konfigurationsproblem. Vielleicht lesen firefox nur UID und nicht EUID und führen nicht Prozess, weil UID gleich 0. Was denken Sie da?

War es hilfreich?

Lösung

Dies könnte Ihre Umgebung sein. die Berechtigungen ändern, werden nach wie vor Umgebungsvariablen wie $ HOME zeigt auf das Verzeichnis des Root-Benutzer verlassen, die nicht zugänglich sind. Es kann sein, ein Versuch wert, diese Variablen zu verändern, indem os.environ ändern, bevor Sie den Browser starten. Es können auch andere Variablen sein kann wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top