Pourquoi pkexec est-il préféré à gksudo pour les applications graphiques?

10

Veuillez fournir une documentation Ubuntu qui réfute cela: https://help.ubuntu.com/community/RootSudo Pourquoi, sur mon système 13.04 entièrement mis à jour, pkexec ne fonctionne-t-il pas?

$ pkexec gedit somefile.txt
No protocol specified

** (gedit:13135): WARNING **: Could not open X display
Cannot open display: 
Run '/usr/bin/gedit --help' to see a full list of available command line options
chili555
la source
pkexec ne remplace pas gksu. Il n'est pas prévu pour vous d'exécuter manuellement comme ça.
psusi
2
Je n'ai pas demandé ni mentionné gksu.
chili555
Une très bonne réponse sur la création d' pkexecune interface graphique sans configuration: askubuntu.com/a/332847/89385
akostadinov
Installez policykit-1-gnome. Voir ici pour les détails et l'explication.
user303371

Réponses:

7

Pourquoi ça ne marche pas?

Par défaut, pkexecne vous permet pas d'exécuter des applications graphiques (X11). Depuis la page de manuel:

 The environment that PROGRAM will run it, will be set to a minimal
 known and safe environment in order to avoid injecting code through
 LD_LIBRARY_PATH or similar mechanisms. In addition the PKEXEC_UID
 environment variable is set to the user id of the process invoking
 pkexec.
     As a result, pkexec will not allow you to run X11 applications
     as another user since the $DISPLAY and $XAUTHORITY environment
     variables are not set.
 These two variables will be retained if the
 org.freedesktop.policykit.exec.allow_gui annotation on an action is set
 to a nonempty value; this is discouraged, though, and should only be
 used for legacy programs.

Comme indiqué dans la page de manuel, vous pouvez le faire fonctionner même si je ne sais vraiment pas si cela est dangereux ou recommandé .

Pour activer gedit par exemple, vous pouvez créer /usr/share/polkit-1/actions/com.ubuntu.gedit.policyavec le contenu suivant:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
  <vendor>gedit</vendor>
  <vendor_url>gedit</vendor_url>
  <icon_name>accessories-text-editor</icon_name>
  <action id="org.freedesktop.policykit.pkexec.gedit">
   <description>Run "gedit"</description>
   <message>Authentication is required to run Text Editor</message>
   <defaults>
     <allow_any>auth_admin</allow_any>
     <allow_inactive>auth_admin</allow_inactive>
     <allow_active>auth_admin</allow_active>
   </defaults>
     <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
     <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
   </action>  
</policyconfig>

Ensuite, pkexec geditdevrait fonctionner comme prévu:

entrez la description de l'image ici

Comme vous pouvez le deviner, cela ne fera que geditfonctionner. En théorie, si vous avez ajouté allow_guià "org.freedesktop.policykit.exec" (l'action par défaut), cela devrait fonctionner pour toutes les applications, mais dans mes tests, j'ai obtenu le même résultat que le vôtre.

Pourquoi pkexec est-il préféré?

Ici vous pouvez trouver une discussion sur les points forts de pkexec.

Salem
la source
3
Donc, pour les applications graphiques, gksudo est-il préféré et non pkexec?
chili555
1
Je suppose. S'il gksudoest disponible, il est beaucoup plus facile de l'utiliser au lieu de créer des actions uniques pour chaque application que vous devez utiliser (s'il n'y a pas de manière "globale" de le faire).
Salem
1
@ Salem - Je me demande alors pourquoi ma réponse a été modifiée et approuvée pour utiliser pkexec alors qu'elle n'est pas destinée à être utilisée pour des applications graphiques et, comme vous pouvez le lire, n'a pas fonctionné. askubuntu.com/questions/313619/… Il doit y avoir quelque chose que je ne comprends pas.
chili555
@ chili555 Si cette modification a motivé votre question, vous devriez la poser à Meta. En 13.04, vous devez soit installer, gksudosoit configurer pkexec(vous pouvez également utiliser sudo -imais cela ne fonctionnera pas avec Alt + F2 aka "Run"). Je trouve le premier BEAUCOUP plus facile. Si quelqu'un pense autrement bien ... Il me semble erroné de suggérer quelque chose qui ne fonctionnera pas comme prévu, mais il se peut que je manque quelque chose ...
Salem
1
pkexecpeut réellement exécuter l'interface graphique sans configuration: askubuntu.com/a/332847/89385
akostadinov