34 votos

¿Cómo configurar Pkexec?

Leyendo estas preguntas y respuestas:

me trajo otro que creará problemas a los nuevos usuarios de ese comando:

  • Cómo configurar pkexec para que sea fácil de usar?

Por ejemplo, cuando se hace lo siguiente:

(Abriendo un archivo en la terminal)

pkexec nano /etc/mysql/my.cnf  

(Abriendo un archivo en el GUI)

pkexec gedit /etc/mysql/my.cnf  

El último tiene el siguiente error:

 pkexec must be setuid root

Esto me trajo las siguientes preguntas:

  1. Cómo configurar pkexec para evitar conseguir esto? Similar a como sudo / gksu se comportan cuando hacen lo mismo (sólo piden la contraseña).

  2. Si corresponde, ¿cómo decirle que no pida una contraseña después de haberla aplicado por primera vez a un comando (o incluyendo el primer comando si es configurable)?

  3. ¿Dónde guardar el archivo de configuración si aún no existe?

  4. ¿Hay alguna aplicación GUI para configurar pkexec uso (Policy Kit)?

47voto

Radu Rădeanu Puntos 62671

Cómo configurar pkexec para evitar que se produzcan errores cuando se ejecutan aplicaciones con interfaz gráfica de usuario?

Encontré dos maneras posibles:

  1. Como pueden 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 se puede crear un ( permanente ) alias (esta es la forma más simple):

    alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
  2. O, (de nuevo) 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.[...]

    puedes crear un nuevo archivo de políticas en /usr/share/polkit-1/actions llamado com.ubuntu.pkexec.gedit.policy con el siguiente código xml dentro donde lo más importante es establecer org.freedesktop.policykit.exec.allow_gui a 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 pida una contraseña después de aplicarla por primera vez a un comando?

Para estas tres etiquetas de ajuste: allow_any , allow_inactive y allow_active del archivo de la política, las siguientes opciones están disponibles:

  • no : El usuario no está autorizado a realizar la acción. Por lo tanto, no es necesario autenticarse.
  • : El usuario está autorizado a realizar la acción sin ninguna autenticación.
  • se autorealiza. : Se requiere autenticación, pero el usuario no tiene que ser un usuario administrativo.
  • auth_admin : Se requiere la autentificación como usuario administrativo.
  • auth_self_keep : Lo mismo que se autorealiza. 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

Así que, si usas auth_admin_keep (o, según proceda, auth_self_keep ), pkexec no volverá a pedir una contraseña durante algún tiempo (por defecto este tiempo está establecido en 5 minutos como he comprobado). La desventaja aquí es que esta cosa es aplicable sólo para un - el mismo - comando / aplicación y es válido para todos los usuarios (a menos que sea anulado 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 pueden dividirse en dos tipos:

  • Acciones están definidos en archivos XML .policy localizados en /usr/share/polkit-1/actions . Cada acción tiene un conjunto de permisos predeterminados adjuntos (por ejemplo, necesitas identificarte como administrador para usar la acción GParted). Los valores predeterminados pueden ser anulados, pero editar los archivos de las acciones NO es la forma correcta. El nombre de este archivo de política debería tener este formato:

    com.ubuntu.pkexec.app_name.policy
  • Reglas de autorización están definidos en los archivos JavaScript .rules. Se encuentran en dos lugares: Los paquetes de terceros pueden usar /usr/share/polkit-1/rules.d (aunque pocos o ninguno 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 pueden realizarse esas acciones por ese o esos usuarios. Como ejemplo, un archivo de reglas podría anular el requisito predeterminado de que todos los usuarios se autentifiquen como administradores al utilizar GParted, determinando que algún usuario específico no necesita hacerlo. O no se le permite usar GParted en absoluto.

      Fuente: Polkit - Estructura

¿Hay alguna aplicación GUI para configurar pkexec ¿Utilización?

Por lo que sé, hasta ahora (18.01.2014) no existe algo así. Si en el futuro encuentro algo, no olvidaré actualizar esta respuesta también.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: