Ich hatte die gleiche Frage wie Sie, aber für einen normalen Benutzer. Angenommen, ich möchte Firefox mit dem Benutzerkonto foo starten. Ich bin als Bar angemeldet:
[bar@localhost ~]$ sudo -u foo -H firefox
Leider ist dieser Befehl mit demselben Fehler wie in der Frage fehlgeschlagen (dh es wurde kein Protokoll angegeben und das Display kann nicht geöffnet werden).
Meine Lösung bestand darin, den Benutzer foo einfach zur Liste der autorisierten Zugriffe auf den X-Server hinzuzufügen.
xhost si:localuser:foo
Und das war es dann, ich war in der Lage, Firefox (und andere X-Anwendung) mit sudo
und dem Benutzer foo zu starten .
Hintergrund : In X Window gibt es eine Client / Server-Architektur. Wenn Sie eine Anwendung starten, fordern Sie die X-Server-Berechtigung an, diese anzuzeigen. Sobald Sie eine Sitzung öffnen (Sie melden sich grafisch an), dürfen Sie (Ihr Benutzer) standardmäßig mit dem Server kommunizieren und Anwendungen anzeigen. Andere Benutzer haben diese Berechtigung nur, wenn Sie sie angeben. xhost
ist ein Tool zum Bearbeiten der Liste der Berechtigungen. Das si
bedeutet, dass die Regel serverseitig ist und den lokalen Benutzer foo
zum Anzeigen von Anwendungen berechtigt . X Window ist in dieser Hinsicht sehr leistungsfähig und Sie können Remoteanwendungen lokal anzeigen, indem Sie mit der DISPLAY
Umgebungsvariablen und xhost
(aber nicht darauf beschränkt) spielen. In früheren Zeiten, als Menschen tipptenxhost +
und implizit erlaubt, dass jeder seine X - Sitzung verwendet, war es heutzutage möglich, eine Anwendung auf dem Bildschirm anzuzeigen, um Streiche zu spielen ;-) letzten 10 Jahre).
PS: Ich habe dies getan, um Firefox in einer Art "Gefängnis" zu starten (um in Zukunft eine Sicherheitsanfälligkeit wie bei pdf.js zu vermeiden ). Aber ich habe schnell herausgefunden, dass das Aufrufen von Firefox über sudo weder den Zugriff auf Audio- noch auf Video-Hardware zulässt. Aber es gibt jemanden, der klar erklärt, wie man die Videohardwarebeschleunigung und das Audio aktiviert, wenn man Firefox über sudo aufruft . YMMV mit diesen Anweisungen, z. B. ich habe noch eine Berechtigung mit Audio verweigert, aber Video ist in Ordnung (getestet auf Fedora 22 mit SELinux ON).