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

domingo, 1 de junio de 2014

Conectarse a una VPN Microsoft desde Ubuntu

El otro día tenía que hacer unas cosas del trabajo desde la casa, para lo cual hacía falta conectarme a mi estación de trabajo por Red Privada Virtual (VPN).

Ingenuamente pensé que iba ser un proceso del tipo "siguiente, siguiente, siguiente" como cuando uno configura una conexión con OpenVPN. No fue así.

Traduciendo los pasos delineados en otro blog, esto fue lo que hice:
  • Clic en el ícono de red en la esquina superior derecha del escritorio
  • Ir al menú de Conexiones VPN
  • Seleccionar Configurar VPN
  • Agregar una nueva conexión de tipo PPTP
  • Configurar en la pestaña de VPN:
    • Nombre de la Conexión (al gusto)
    • Deseleccionar Conectar automáticamente (se puede cambiar luego)
    • Pasarela (dirección del servidor VPN)
    • Usuario (en caso de pertenecer a un dominio, escribirlo como dominio\usuario)
    • NO fijar la Contraseña; SI cambiar el valor del menú desplegable a Preguntar Siempre
    • NO fijar el Dominio NT
    • Deseleccionar Disponible para todos los usuarios (no es obligatorio pero es buena práctica)
  • En el botón Avanzado de la pestaña VPN
    • Deseleccionar todos los métodos de autenticación excepto MSCHAPv2
    • Seleccionar Usar cifrado punto a punto (MPPE)
    • Dejar el valor del menú desplegable Seguridad en Todas las disponibles (predeterminado).
    • Seleccionar Permitir cifrado de estado completo
    • Deseleccionar Permitir compresión de datos BSD
    • Deseleccionar Permitir compresión de datos Deflate
    • Deseleccionar Usar compresión de cabeceras TCP
    • Deseleccionar Mandar paquetes eco PPP (funciona de ambas maneras, seleccionarlo para depuración de errores)