Ich verwende Trisquel GNU / Linux-Libre, das mit Gnome3 Flashback Desktop Environment geliefert wird .
Ich weiß, dass ich GUI-Anwendungen von sudo
& als Root ausführen kann, gksudo
aber ich möchte wissen, wie ich GUI-Anwendungen mit Hilfe von als Root ausführen kann pkexec
.
Wenn ich versuche zu laufen gedit
(oder eine andere Anwendung wie: nautilus
) durch pkexec gedit
die Authentifizierung Es fragt nach Passwort für: -
Nach Eingabe des Passwortes wird es mit Fehler beendet: -
$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.
(gedit:6135): Gtk-WARNING **: cannot open display:
Es scheint also, dass etwas mit der Anzeigeumgebung nicht stimmt.
Ich habe es auch versucht, DISPLAY=:0 pkexec gedit
aber es funktioniert nicht.
Folgende Informationen erhalten Sie von man pkexec
: -
Die Umgebung, in der PROGRAM sie ausführt, wird auf eine minimale bekannte und sichere Umgebung eingestellt, um das Einfügen von Code über LD_LIBRARY_PATH oder ähnliche Mechanismen zu vermeiden. Zusätzlich wird die Umgebungsvariable PKEXEC_UID auf die Benutzer-ID des Prozesses gesetzt, der pkexec aufruft. Daher können Sie mit pkexec keine X11-Anwendungen als anderer Benutzer ausführen, da die Umgebungsvariablen $ DISPLAY und $ XAUTHORITY nicht festgelegt sind. Diese beiden Variablen bleiben erhalten, wenn die Anmerkung org.freedesktop.policykit.exec.allow_gui zu einer Aktion auf einen nicht leeren Wert gesetzt wird. Dies wird jedoch nicht empfohlen und sollte nur für ältere Programme verwendet werden.
Jetzt weiß ich nicht, was ich tun soll, um dies zu erreichen.
Helfen Sie mir daher, herauszufinden, wie Sie GUI-Anwendungen als Root mithilfe von ausführen pkexec
. Oder ist das möglich oder nicht?
Übrigens, Inspiriert von einem gparted-pkexec
Befehl, der gut funktioniert. Wie gparted
verwenden pkexec
?
quelle
Antworten:
Dies kann durch Hinzufügen von benutzerdefinierten Aktionen zum PolicyKit erfolgen. Wenn Sie gedit als root ausführen möchten,
pkexec
müssen Sie eine neue Datei erstellen,/usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policy
zum Beispiel:Endlich
pkexec gedit
sollte es funktionieren wie erwartet.Besuchen Sie die Manpage oder das Referenzhandbuch, das dies mit BEISPIEL erklärt, wie:
quelle
man pkexec
) gefunden!