Bloquear la pantalla

Dejar el ordenador con la sesión abierta y programas en marcha es algo bastante habitual en mí. Uptimes de varias semanas no son raros.
Ahora bien, dejar X o un terminal abierto mientras no estás puede ser un riesgo de seguridad y privacidad: alguien malintencionado con acceso físico al ordenador puede hacer bastante destrozo si lo encuentra con tu sesión abierta (¡o peor, con la de root!): mirar las contraseñas guardadas en el navegador (¡nunca guardes contraseñas en el navegador!), acceder a archivos confidenciales o simplemente trolearte el Facebook.
Por suerte hay programas justo para eso. En esta entrada comentaré algo sobre ellos y sobre 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 desconocer los sistemas tipo Unix, la mayoría de la gente no sabe manejar mi ordenador ni aunque esté desbloqueado =].
En casa puedo dejar el ordenador arrancado con Awesome, PekWM, Xmonad, DWM o cualquier otro
gestor de ventanas que no se parezca a Windows, y con eso basta para que tarden un buen rato en
entender qué pasa. Es más o menos como abrir Vi y pedirle a un novato que lo use.
Cambiar de tty
La gente puede tardar un poco en manejar un DWM, pero con algo de empeño acaba consiguiéndolo. En
cambio, si cambio de terminal (Ctrl+Alt+F2) aparece una pantalla negra bastante intimidante.
Estos métodos ingenuos pueden colar en casa de tus padres, pero usarlos en un entorno lleno de colegas informáticos y entusiastas de la tecnología es garantía de sorpresas.
Prueba a dejar tu ordenador con la sesión abierta en un laboratorio de la universidad, en un piso de estudiantes o en eventos tecnológicos como el FISL o la Campus Party (en la CP aún estarás a salvo en la zona de gamers y social media…). En un momento estás pidiendo que te cuiden el portátil mientras vas al baño y al siguiente descubres que te has hecho fan de Justin Bieber.
La mejor solución es llevarte siempre el portátil encima. Para cuando eso no es posible, los programas que voy a comentar pueden ser la solución.
Programas
Screen
Screen es el multiplexor de terminales más conocido.
Para instalar Screen en Arch Linux, ejecuta este comando:
julio@julio-acer ~> sudo pacman -S screen
Una de las muchas funciones de screen es precisamente poder
bloquear el terminal con uno de estos atajos: C-a x y C-a C-x
Pero este método también tiene pegas: bloquea solo lo que se ejecute dentro de screen. Si arrancaste X, aunque fuera dentro de screen, seguirá accesible.
Xtrlock
Si usas X y solo necesitas bloquear el teclado y los clics del ratón manteniendo la imagen en pantalla, Xtrlock (disponible en el AUR) es una opción razonable y ligera. Con ejecutar Xtrlock, el cursor se convierte en un candado y no vuelve a la normalidad hasta escribir la contraseña del usuario.
Como sugiere el nombre, este programa bloquea solo X. Si tú o root tenéis sesión abierta en algún
terminal, se podrá matar el proceso con un killall xtrlock.
También conviene no dejar la sesión abierta en el terminal desde el que arrancaste X. Si tras entrar
en el tty1 solo escribes startx, alguien malintencionado podría matar el proceso con CTRL+c. He
encontrado varias formas de evitarlo:
Arrancar X con
nohup startx &; disown; sleep 5; exit.Arrancar X con un
exec startx.Arrancar X con
startx && vlock -a || vlock -a(hablaré devlockmás adelante).Editar el
xorg.confpara desactivarCtrl+Alt+FnyCtrl+Alt+Backspace:Option "DontVTSwitch" "True"yOption "DontZap" "True".Arrancar X dentro de screen y cerrar la sesión en el tty1.
Usar un login gráfico.
También tiene otros fallos, como no bloquear otros dispositivos de entrada aparte del ratón y el teclado.
Slock
Como todos los programas de <suckless.org>, Slock es muy
minimalista. Es incluso más simple que xtrlock.
Ejecuta este comando para instalarlo en Arch Linux:
julio@acer ~> sudo pacman -S slock
slock simplemente deja la pantalla en negro hasta que se escribe la contraseña del usuario que lo
arrancó.
Xscreensaver
Nunca he usado Xscreensaver, porque me parece hinchado. Pero veo que a mucha gente le gusta y lo
recomienda.
Xautolock
slock y xtrlock siguen bien la filosofía Unix, que dice que un programa debe hacer solo una cosa
y hacerla bien. Se limitan a bloquear la pantalla y nada más.
Una función muy útil que he visto en otros bloqueadores de pantalla, como el de Ubuntu, es el auto
locking. Se puede conseguir con xautolock.
xautolock permite ejecutar un programa tras cierto tiempo de inactividad.
Por ejemplo, para ejecutar slock tras 10 minutos de inactividad, añade esta línea al ~/.xinitrc:
xautolock -time 10 -locker slock -nowlocker slock -detectsleep -corners 0+00 -cornerdelay 5 &
Puedes leer más sobre las opciones de xautolock en el manual (man xautolock).
Xautolock y Mplayer
Una pega molesta de tener xautolock configurado para bloquear la pantalla sola es que no siempre que pasamos mucho rato sin mandar algún comando a X (escribir o mover el cursor) estamos realmente inactivos. Ver películas es uno de esos casos.
Menos mal que los desarrolladores de Mplayer ya lo previeron y añadieron el argumento
-stop-xscreensaver:
julio@acer ~> mplayer -stop-xscreensaver video.mkv
El propio man mplayer recomienda -stop-xscreensaver, pero si falla (¡a mí me funcionó muy
bien!), puedes pasarle a mplayer un comando para que lo llame cada 30 segundos con la
opción-heartbeat-cmd:
julio@acer ~> mplayer -heartbeat-cmd="xscreensaver-command -deactivate" video.mkv
El mismo problema pasa con otros reproductores y con vídeos en flash y en YouTube, pero por desgracia las soluciones que encontré para esos casos no son nada buenas:
xautolock -exit-> ves el vídeo -> reinicias xautolockIr moviendo el cursor de vez en cuando.
Vlock
Por último tenemos Vlock, que considero la mejor opción para bloquear los terminales y que además se puede combinar con las otras para mayor protección.
Instala Vlock:
julio@julio-acer ~> sudo pacman -S vlock
Actualización del 16/01/2013: kbd ya trae vlock. Si ya tienes kbd, intentar instalar vlock dará un conflicto.
Bloquea solo el terminal actual
-cjulio@julio-acer ~> vlock -c This TTY is now locked. Please press [ENTER] to unlock. julio's Password:Bloquea todos los terminales
-ajulio@julio-acer ~> vlock -a vlock: this terminal is not a virtual console¡Vaya! 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 queda completamente bloqueado y solo se desbloquea con tu contraseña o la de root.
O casi: mirando el manual vi que vlock tiene una opción (-s) para impedir que la tecla
SysRq mate el programa. No la probé, porque mi
teclado ni siquiera tiene esa tecla, pero el dato fue importante, porque hice algunas pruebas y vi
que de verdad se puede desbloquear el ordenador en remoto:
Con la sesión del usuario ’teste’ abierta, bloqueé todos los terminales:
teste@julio-acer ~> vlock -aEntré al ordenador por SSH y maté el proceso sin problemas:
julio@julio-acer ~> killall vlock-mainTambién lo probé con la opción ‘-s’, que necesita 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 consiga desbloquear el ordenador, tendrá acceso a la cuenta de quien lo bloqueó. A mí no me preocupa, porque soy el único usuario del ordenador. Pero si algún día añado más usuarios (ninguno con sudo), tendré presente que es mejor bloquear el ordenador como root.
Links

Soy un ingeniero informático brasileño radicado en Alemania, apasionado por la tecnología, la ciencia, la fotografía y los idiomas.
Llevo programando cerca de dos décadas, explorando desde apps móviles y desarrollo web hasta aprendizaje automático. Hoy me enfoco en SRE en la nube e ingeniería de datos.
Soy voluntario en las comunidades de open source y Python, ayudando a organizar PyCon DE y PyData Berlin, dando mentorías y contribuyendo con código y traducciones.
En mi blog comparto consejos de Linux, guías de configuración y notas personales que escribí como referencia futura. Espero que también sean útiles para otras personas. El contenido está disponible en varios idiomas.
Visita mi galería para ver algunas de mis fotografías.
Fuera del teclado, me encontrarás en conciertos, tocando el clarinete, en bicicleta, buceando o explorando nuevos lugares, culturas y cocinas.
¡Siempre feliz de conectar! 🙂