domingo, 22 de junio de 2014

Permitir que un usuario regular apague o reinicie la computadora aun si alguien más está autenticado

Como el computista de la casa, la administración de las computadoras domésticas recae sobre mí. Esta responsabilidad es exclusiva y excluyente para evitar que otros miembros del hogar desconfiguren el equipo o instalen algún software indeseable.

El problema es que a veces abro la sesión en Ubuntu (12.04 LTS) y dejo algo descargando o algo instalando toda la noche y se me olvida cerrar mi sesión. No ha pasado que requiera que mi sesión sobreviva más de una noche. Entonces llega otra persona en el hogar, se autentica con su cuenta hace que lo vaya a hacer y desea apagar el equipo (sobre todo cuando me voy de viaje) y no puede porque el sistema le indica que debe introducir una contraseña de administrador para poder apagar o reiniciar la computadora porque alguien más está autenticado.

Algunas opciones que descarté:
  • Aunque utilizo TeamViewer para dar soporte remoto cuando estoy de viaje, no me atrae el prospecto de tener que conectarme para algo tan sencillo como apagar un equipo.
  • Si bien apagar o reiniciar el equipo físicamente es una opción, no es una buena práctica, por lo tanto no me parece conveniente crear ese hábito entre los miembros de la casa que no son computistas.
  • Programar la desautenticación automática de mi usuario le permitiría a los otros miembros del hogar apagar el equipo una vez mi sesión halla expirado. Pero esto me quitaría la flexibilidad de dejar la computadora haciendo alguna operación que se demore mucho, que de otra sólo requeriría avisarle a los demás que no la apaguen y ya.
La solución que apliqué y me funcionó , la encontré en un hilo sobre este problema en Launchpad.
Primero, hay que editar, con permisos de administrador, el archivo /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
Para que los usuarios puedan apagar el equipo, cambiar la siguiente sección en el archivo
 <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
a
<action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
Para que los usuarios puedan reiniciar el equipo, cambiar la siguiente sección en el archivo:
<action id="org.
freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
a
  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
Listo!

Aunque a mí me funcionó, aparentemente hay una mejor forma de hacerlo, la cual probablemente ponga en práctica cuando deba instalar Ubuntu 14.04 LTS en la casa.

La solución correcta (que no he aplicado todavía) para que todos los usuarios puedan apagar el equipo, según AskUbuntu sería crear, con permiso de administrador, un archivo en la ruta /etc/polkit-1/localauthority/50-local.d/ con extensión .pkla (por ejemplo allow_all_users_to_shutdown.pkla) cuyo contenido sea:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
La solución correcta, según la misma fuente, para que todos los usuarios puedan reiniciar el equipo sería crear, con permiso  de administrador, un archivo llamado /etc/polkit-1/localauthority/50-local.d/ con extensión .pkla (por ejemplo allow_all_users_to_restart.pkla) cuyo contenido sea:
[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

No hay comentarios:

Publicar un comentario