Bloquear pantalla

Dejar el ordenador logueado con programas corriendo es algo bastante rutinario para mí. Los uptimes de varias semanas no son raros.
Sin embargo, dejar el X o una terminal abierta en tu ausencia puede representar un riesgo de seguridad y privacidad — alguien malintencionado con acceso físico al equipo puede hacer un buen estropeo si lo encuentra logueado en tu cuenta (o peor, ¡en root!), como mirar las contraseñas almacenadas en tu navegador (¡nunca guardes contraseñas en el navegador!), acceder a archivos confidenciales o simplemente trolear tu Facebook.
Por suerte existen programas justamente para esa finalidad. En este post comentaré un poco sobre esos programas y algunas técnicas de screen locking.
tl;dr: vlock -as es la forma más segura de bloquear el ordenador.
Métodos ingenuos
Gestores de ventanas poco convencionales
Es curioso cómo, por desconocimiento de sistemas Unix-like, la mayoría de las personas no consigue usar mi equipo incluso sin estar bloqueado =].
En casa, puedo dejar el equipo iniciado con Awesome, PekWM, Xmonad, DWM u otro gestor de
ventanas que no sea similar a Windows y ya es suficiente para que tarden bastante en entender qué
está pasando. Es más o menos como abrir Vi y pedirle a un novato que lo use.
Alternar tty
Las personas pueden tardar en usar un DWM, pero con cierta determinación al final lo conseguirán.
Pero si alterno entre terminales (Ctrl+Alt+F2) aparecerá una pantalla negra bastante intimidante.
Estos métodos ingenuos pueden funcionar en casa de tus padres, pero intentar usarlos en un ambiente lleno de colegas informáticos y entusiastas de tecnología es garantía de sorpresas.
Prueba a dejar el ordenador logueado en un laboratorio de la facultad, república de estudiantes o en eventos como FISL o Campus Party (en la CP aún estarás a salvo en el área de gamers y social media…). En un instante pides que cuiden tu portátil mientras vas al baño y al siguiente descubres que te hiciste fan de Justin Bieber.
La mejor solución es siempre llevar el portátil contigo. Para situaciones en que eso no es posible, los programas que citaré pueden ser la solución.
Programas
Screen
Screen es el multiplexor de terminales más famoso.
Para instalar Screen en Arch Linux, ejecuta:
julio@julio-acer ~> sudo pacman -S screen
Uno de los varios recursos de screen es la posibilidad de
bloquear el terminal usando uno de los atajos: C-a x y C-a C-x.
Pero este método tiene problemas: bloquea solo lo que esté corriendo dentro de screen. Si iniciaste X, aunque sea dentro de screen, seguirá accesible.
Xtrlock
Si usas X y necesitas solo bloquear teclado y clics del ratón manteniendo la imagen en pantalla, Xtrlock (disponible en AUR) es una opción razonable y ligera. Basta con ejecutar Xtrlock y el cursor se transforma en un candado y solo vuelve a la normalidad tras escribir la contraseña del usuario.
Como su nombre sugiere, este programa bloquea solo X. Si tú o root estáis logueados en algún
terminal será posible terminar el proceso con killall xtrlock.
También es importante evitar mantenerse logueado en el terminal usado para iniciar X. Si tras hacer
login en tty1 escribes solo startx, alguien malintencionado podría simplemente matar el proceso
con CTRL+c. Encontré algunas maneras de evitarlo:
Iniciar X con
nohup startx &; disown; sleep 5; exit.Iniciar X con
exec startx.Iniciar X con
startx && vlock -a || vlock -a(hablaré devlockluego).Editar
xorg.confpara desactivarCtrl+Alt+FnyCtrl+Alt+Backspace:Option "DontVTSwitch" "True"yOption "DontZap" "True".Iniciar X dentro de screen y hacer logout en tty1.
Usar un login gráfico.
También tiene otras fallas, como no bloquear otros dispositivos de entrada además de mouse y teclado.
Slock
Como todos los programas de <suckless.org>, Slock es minimalista.
Es todavía más simple que xtrlock.
Instálalo en Arch Linux con:
julio@acer ~> sudo pacman -S slock
slock simplemente deja la pantalla negra hasta que se escriba la contraseña del usuario que lo
inició.
Xscreensaver
Nunca usé Xscreensaver, porque me parece pesado. Pero mucha gente lo usa y lo recomienda.
Xautolock
slock y xtrlock siguen bien la filosofía Unix de “hacer una sola cosa y hacerla bien”. Ellos
simplemente bloquean la pantalla y no hacen más nada.
Una función útil que vi en otros bloqueadores (como el de Ubuntu) es el auto locking. Esto puede
lograrse con xautolock.
xautolock permite ejecutar un programa tras un tiempo de inactividad.
Por ejemplo, para ejecutar slock tras 10 minutos inactivo, añade al ~/.xinitrc:
xautolock -time 10 -locker slock -nowlocker slock -detectsleep -corners 0+00 -cornerdelay 5 &
Lee más sobre las opciones en man xautolock.
Xautolock y Mplayer
Una consecuencia molesta del auto-bloqueo es que a veces estamos sin enviar eventos al X (teclear o mover el cursor) pero no estamos inactivos. Ver películas es un ejemplo.
Por suerte los desarrolladores de Mplayer lo previeron y añadieron -stop-xscreensaver:
julio@acer ~> mplayer -stop-xscreensaver video.mkv
El propio man mplayer recomienda -stop-xscreensaver, pero si falla (aquí funcionó muy bien),
puedes pasar un comando para ejecutar cada 30 segundos con -heartbeat-cmd:
julio@acer ~> mplayer -heartbeat-cmd="xscreensaver-command -deactivate" video.mkv
Lo mismo ocurre con otros players y con vídeos en Flash y YouTube, pero las soluciones que encontré para esos casos no son buenas:
xautolock -exit-> ver el vídeo -> reiniciar xautolockMover el cursor de vez en cuando.
Vlock
Por fin, Vlock, que considero la mejor opción para bloquear los terminales y puede usarse junto con las otras opciones para mayor protección.
Instala Vlock:
julio@julio-acer ~> sudo pacman -S vlock
Update 16/01/2013: kbd ya provee vlock. Si ya tienes kbd, intentar instalar vlock causará conflicto.
Bloquea solo la terminal actual
-cjulio@julio-acer ~> vlock -c This TTY is now locked. Please press [ENTER] to unlock. julio's Password:Bloquea todas las terminales
-ajulio@julio-acer ~> vlock -a vlock: this terminal is not a virtual console¡Oops! Este error ocurre si intentas ejecutar
vlock -aenurxvt,xterm, etc. PulsaCtrl+Alt+F1para ir al TTY1 y repite el comando:julio@julio-acer ~> vlock -a The entire console display is now completely locked. You will not be able to switch to another virtual console. Please press [ENTER] to unlock. julio's Password:
Listo, el sistema está completamente bloqueado y solo se desbloqueará con tu contraseña o la de
root. O casi: leyendo el manual, vi que vlock tiene la opción (-s) para evitar que la tecla
SysRq pueda matar el programa. No lo probé (mi
teclado ni la tiene), pero fue importante porque probé y vi que se puede desbloquear el equipo
remotamente:
Logueado como usuario ’teste’, bloqueé todas las terminales:
teste@julio-acer ~> vlock -aAccedí al equipo por SSH y maté el proceso sin problemas:
julio@julio-acer ~> killall vlock-mainTambién probé con la opción ‘-s’ (requiere permisos de superusuario):
[root@julio-acer ~]# vlock -asY solo pude matar el proceso usando sudo, como era de esperar.
julio@julio-acer ~> killall vlock-main vlock-main(26420): Operation not permitted vlock-main: no process foundjulio@julio-acer ~> sudo killall vlock-main
El único problema es que cuando ese usuario logre desbloquear, tendrá acceso a la cuenta de quien lo bloqueó. Para mí no es preocupante (soy el único usuario del equipo). Si algún día añado más usuarios (ninguno con sudo), tendré en mente que es mejor bloquear el equipo como root.