¿Cómo configurar pkexec
para evitar errores al ejecutar aplicaciones GUI?
Encontré dos formas posibles:
Como puede ver, usando lo siguiente:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
No te dará ningún error. Y esto es normal porque man pkexec
es muy claro en este asunto:
[...] pkexec will not allow you to run X11 applications
as another user since the $DISPLAY and $XAUTHORITY environment
variables are not set.[...]
Como resultado, puede crear un alias ( permanente ) (esta es la forma más simple):
alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
O, (nuevamente) como man pkexec
dice:
[...] 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.[...]
puede crear un nuevo archivo de política en el /usr/share/polkit-1/actions
llamado com.ubuntu.pkexec.gedit.policy
con el siguiente código XML en el interior, donde lo más importante es la creación org.freedesktop.policykit.exec.allow_gui
de un valor no vacío:
<?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/policyconfig.dtd">
<policyconfig>
<action id="com.ubuntu.pkexec.gedit">
<message gettext-domain="gparted">Authentication is required to run gedit</message>
<icon_name>gedit</icon_name>
<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>
¿Cómo decirle que no solicite una contraseña después de la primera vez que la aplica a un comando?
Por estas tres etiquetas de ajuste: allow_any
, allow_inactive
y allow_active
desde el archivo de política, las siguientes opciones están disponibles:
- no : el usuario no está autorizado para llevar a cabo la acción. Por lo tanto, no hay necesidad de autenticación.
- Sí : el usuario está autorizado para llevar a cabo la acción sin ninguna autenticación.
- auth_self : se requiere autenticación, pero el usuario no necesita ser un usuario administrativo.
- auth_admin : se requiere autenticación como usuario administrativo.
- auth_self_keep : lo mismo que auth_self pero, como
sudo
, la autorización dura unos minutos.
- auth_admin_keep : lo mismo que auth_admin pero, como
sudo
, la autorización dura unos minutos.
Fuente: Polkit - Estructura - Acciones
Por lo tanto, si usa la opción auth_admin_keep (o, según corresponda, auth_self_keep ), pkexec
no volverá a solicitar una contraseña durante algún tiempo (de forma predeterminada, este tiempo se establece en 5 minutos, como marqué). La desventaja aquí es que esto es aplicable solo para un mismo comando / aplicación y válido para todos los usuarios (a menos que se anule en una configuración posterior).
¿Dónde guardar el archivo de configuración si aún no existe?
Los archivos de configuración o las definiciones de polkit se pueden dividir en dos tipos:
Las acciones se definen en archivos XML .policy ubicados en /usr/share/polkit-1/actions
. Cada acción tiene un conjunto de permisos predeterminados adjuntos (por ejemplo, debe identificarse como administrador para usar la acción GParted). Los valores predeterminados se pueden anular, pero editar los archivos de acciones NO es la forma correcta. El nombre de este archivo de política debe tener este formato:
com.ubuntu.pkexec.app_name.policy
Las reglas de autorización se definen en archivos .rules de JavaScript. Se encuentran en dos lugares: los paquetes de terceros pueden usar /usr/share/polkit-1/rules.d
(aunque pocos lo hacen) y /etc/polkit-1/rules.d
es para la configuración local. Los archivos .rules designan un subconjunto de usuarios, hacen referencia a una (o más) de las acciones especificadas en los archivos de acciones y determinan con qué restricciones esas acciones pueden ser realizadas por ese / esos usuario (s). Como ejemplo, un archivo de reglas podría anular el requisito predeterminado para que todos los usuarios se autentiquen como administradores cuando usen GParted, determinando que algún usuario específico no necesita hacerlo. O no está permitido usar GParted en absoluto.
Fuente: Polkit - Estructura
¿Existe una aplicación GUI para configurar el pkexec
uso?
Por lo que sé, hasta ahora (18.01.2014) no existe algo como esto. Si en el futuro encuentro algo, no olvidaré actualizar esta respuesta también.