¿Por qué se prefiere pkexec sobre gksudo para aplicaciones gráficas?

10

Proporcione documentación de Ubuntu que refute esto: https://help.ubuntu.com/community/RootSudo ¿Por qué, en mi sistema 13.04 completamente actualizado, pkexec no funciona?

$ 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
fuente
pkexec no es una caída en reemplazo de gksu. No está destinado a que usted ejecute manualmente de esa manera.
psusi
2
No pregunté ni mencioné gksu.
chili555
Una muy buena respuesta sobre cómo pkexecejecutar la GUI sin configurar: askubuntu.com/a/332847/89385
akostadinov el
Instale policykit-1-gnome. Vea aquí para detalles y explicaciones.
user303371

Respuestas:

7

¿Por qué no funciona?

Por defecto pkexecno le permite ejecutar aplicaciones gráficas (X11). Desde la página del manual:

 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.

Como se indica en la página de manual, puede hacer que funcione, aunque realmente no sé si esto es de alguna manera peligroso o recomendado .

Para habilitar gedit, por ejemplo, puede crear /usr/share/polkit-1/actions/com.ubuntu.gedit.policycon el siguiente contenido:

<?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>

Entonces pkexec geditdebería funcionar como se esperaba:

ingrese la descripción de la imagen aquí

Como puedes adivinar, esto solo hará que geditfuncione. En teoría, si agregó allow_guia "org.freedesktop.policykit.exec" (la acción predeterminada) esto debería funcionar para todas las aplicaciones, pero en mis pruebas obtuve el mismo resultado que el suyo.

¿Por qué se prefiere pkexec?

Aquí puede encontrar una discusión sobre las fortalezas de pkexec.

Salem
fuente
3
Entonces, para aplicaciones gráficas, ¿se prefiere gksudo y NO pkexec?
chili555
1
Supongo que sí. Si gksudoestá disponible, es mucho más fácil usarlo en lugar de crear acciones individuales para cada aplicación que necesite usar (si no hay una forma "global" de hacerlo).
Salem
1
@ Salem- Entonces me pregunto por qué mi respuesta fue editada y aprobada para usar pkexec cuando no está destinada a aplicaciones gráficas y, como pueden leer, no funcionó. askubuntu.com/questions/313619/… Debe haber algo que no entiendo.
chili555
@ chili555 Si esa edición fue lo que motivó tu pregunta, deberías hacerla en Meta. En 13.04 tienes que instalar gksudoo configurar pkexec(también puedes usar, sudo -ipero eso no funcionará con Alt + F2, también conocido como "Ejecutar"). Encuentro el primero MUCHO más fácil. Si alguien piensa bien lo contrario ... A mí me parece incorrecto sugerir algo que no funcionará según lo previsto, pero puede que me falte algo ...
Salem
1
pkexecen realidad puede ejecutar GUI sin configuración: askubuntu.com/a/332847/89385
akostadinov el