J'utilise Trisquel GNU / Linux-Libre fourni avec l' environnement de bureau Gnome3 Flashback .
Je sais que je peux exécuter l'application GUI en tant que root par sudo
& gksudo
mais je veux savoir que comment exécuter les applications GUI en tant que root à l'aide de pkexec
?
Lorsque j'essaie d'exécuter gedit
(ou toute autre application comme:) d' nautilus
ici pkexec gedit
là, il demande un mot de passe pour l'authentification: -
Après avoir entré le mot de passe, il quitte avec erreur: -
$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.
(gedit:6135): Gtk-WARNING **: cannot open display:
Il semble donc que quelque chose ne va pas avec l'environnement d'affichage.
J'ai aussi essayé DISPLAY=:0 pkexec gedit
mais ça ne marche pas.
Les informations suivantes sont disponibles auprès de man pkexec
: -
L'environnement que PROGRAM exécutera, sera défini sur un environnement minimal connu et sûr afin d'éviter d'injecter du code via LD_LIBRARY_PATH ou des mécanismes similaires. De plus, la variable d'environnement PKEXEC_UID est définie sur l'ID utilisateur du processus appelant pkexec. Par conséquent, pkexec ne vous permettra pas d'exécuter des applications X11 en tant qu'autre utilisateur car les variables d'environnement $ DISPLAY et $ XAUTHORITY ne sont pas définies. Ces deux variables seront conservées si l'annotation org.freedesktop.policykit.exec.allow_gui sur une action est définie sur une valeur non vide; ceci est cependant découragé et ne devrait être utilisé que pour les programmes existants.
Maintenant, je ne sais pas quoi faire pour y parvenir.
Ainsi, aidez-moi à découvrir comment exécuter des applications GUI en tant que root au moyen de pkexec
. Ou est-ce possible ou non?
BTW, inspiré par la gparted-pkexec
commande qui fonctionne bien. Comment gparted
utiliser pkexec
?
Réponses:
Cela peut être fait en ajoutant des actions personnalisées à policykit. Si vous souhaitez exécuter gedit en tant que root avec
pkexec
vous devez créer un nouveau fichier/usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policy
par exemple:Enfin
pkexec gedit
devrait fonctionner comme prévu.Visitez la page de manuel ou le manuel de référence qui l'explique avec un EXEMPLE comme: -
la source
man pkexec
) aussi!