Bloquear tela

Deixar o computador logado com programas rodando é algo bastante rotineiro para mim. Uptimes de várias semanas não são incomuns.

No entanto, deixar o X ou um terminal aberto na sua ausência pode representar um risco de segurança e privacidade – alguém mal intencionado com acesso físico ao computador pode fazer um estrago bem grande se o encontrar logado na sua conta (ou pior, no root!), como olhar as senhas salvas no seu browser (nunca salve senhas no browser!), acessar arquivos confidenciais ou apenas trollar seu Facebook.

Por sorte existem alguns programas justamente para essa finalidade. Neste post comentarei um pouco sobre esses programas e algumas técnicas de screen locking.

tl;dr: O vlock -as é a forma mais segura de bloquear o computador.

Métodos ingênuos

Gerenciadores de janelas pouco convencionais

É bastante interessante como, por desconhecimento de sistemas Unix-like, a maioria das pessoas não consegue mexer no meu computador mesmo sem ele estar bloqueado =].

Em casa, eu posso deixar meu computador iniciado com o Awesome, PekWM, Xmonad, DWM ou outro gerenciador de janelas que não seja similar ao Windows que já é o suficiente para demorarem bastante para entender o que está acontecendo. É mais ou menos como abrir o Vi e pedir para um calouro usar.

Alternar tty

As pessoas podem demorar um pouco para usar um DWM, mas com certa determinação elas eventualmente conseguirão. Porém se eu alternar entre terminais (Ctrl+Alt+F2) irá aparecer uma tela preta bastante intimidadora.

Esses métodos ingênuos podem até funcionar na casa dos seus pais, mas saiba que tentar utilizá-los em um ambiente cheio de colegas computeiros e entusiastas de tecnologia é garantia de surpresas.

Experimente deixar seu computador logado em um laboratório da faculdade, república de estudantes ou eventos de tecnologia como o FISL e a Campus Party (na CP você ainda estará seguro na área de gamers e social media…). Num instante você está pedindo para cuidarem do seu notebook enquanto você vai ao banheiro e no outro descobre que virou fã de Justin Bieber.

A melhor solução é sempre carregar seu notebook com você. Para situações em que isso não é possível, os programas que eu citarei podem ser a solução.

Programas

Screen

O Screen é o multiplexador de terminais mais famoso.

Para instalar o Screen no Arch Linux, execute o comando abaixo:

julio@julio-acer ~> sudo pacman -S screen

Um dos vários recursos do screen é justamente a possibilidade de bloquear o terminal utilizando um dos seguintes atalhos: C-a x e C-a C-x

Mas este método também possui alguns problemas, ele bloqueia apenas o que estiver rodando dentro do screen. Porém se você iniciou o X, mesmo dentro do screen, ele continuará acessível.

Xtrlock

Se você estiver usando X e precisar apenas travar teclado e os cliques do mouse mantendo a imagem na tela, o Xtrlock (disponível no AUR) é uma opção razoável e leve. Basta executar o Xtrlock que o cursor se transforma em um cadeado e só volta ao normal após digitar a senha do usuário.

Como o nome sugere, esse programa bloqueia apenas o X. Se você ou o root estiver logado em algum terminal será possível terminar o processo com um killall xtrlock.

Também é importante evitar se manter logado no terminal que foi usado para iniciar o X. Se após fazer login no tty1 você digita apenas startx, alguém mal intencionado poderia simplesmente matar o processo com CTRL+c. Eu encontrei alguns jeitos de se evitar isso:

  1. Iniciar o X com nohup startx &; disown; sleep 5; exit.

  2. Iniciar o X com um exec startx.

  3. Iniciar o X com startx && vlock -a || vlock -a (falarei do vlock depois).

  4. Editar o xorg.conf para desativar Ctrl+Alt+Fn e Ctrl+Alt+Backspace:

    Option "DontVTSwitch" "True" e Option "DontZap" "True".

  5. Iniciar o X dentro do screen e fazer logout no tty1.

  6. Usar um login gráfico.

Ele também possui outras falhas, como não bloquear outros dispositivos de entrada além do mouse e teclado.

Slock

Como todos os programas do <suckless.org>, o Slock é bem minimalista. Ele é ainda mais simples que o xtrlock.

Rode o seguinte comando para instalar no Arch Linux:

julio@acer ~> sudo pacman -S slock

O slock simplesmente deixa a tela preta até que a senha do usuário que o iniciou seja digitada.

Xscreensaver

Nunca usei o Xscreensaver, porque ele parece bloated. Mas vejo que muitas pessoas gostam e recomendam ele.

Xautolock

O slock e o xtrlock seguem bem a filosofia do Unix, que diz que um programa deve fazer apenas uma coisa e fazer bem. Eles simplesmente bloqueiam a tela e não fazem mais nada.

Uma função bastante útil que já vi em outros bloqueadores de tela, como o do Ubuntu, é a de auto locking. Essa função pode ser obtida com o xautolock.

O xautolock permite executar um programa após determinado tempo de inatividade.

Por exemplo, para executar o slock após 10 minutos de inatividade, adicione a seguinte linha ao ~/.xinitrc:

xautolock -time 10 -locker slock -nowlocker slock -detectsleep -corners 0+00 -cornerdelay 5 &

Leia mais sobre as opções que podem ser passadas para o xautolock no manual (man xautolock).

Xautolock e Mplayer

Uma consequência chata de ter o xautolock configurado para bloquear a tela automaticamente é que nem sempre que ficamos muito tempo sem enviar algum comando para o X (digitar ou mexer o cursor) estamos realmente inativos. Assistir filmes é uma dessas situações.

Mas ainda bem que os desenvolvedores do Mplayer já previram isso e acrescentaram o argumento -stop-xscreensaver:

julio@acer ~> mplayer -stop-xscreensaver video.mkv

O próprio man mplayer recomenda o -stop-xscreensaver, mas caso ele falhe (aqui funcionou muito bem!), você pode passar um comando para o mplayer chamar de 30 em 30 segundos usando a opção-heartbeat-cmd:

julio@acer ~> mplayer -heartbeat-cmd="xscreensaver-command -deactivate" video.mkv

O mesmo problema acontece com outros players e com vídeos em flash e no YouTube, mas infelizmente as soluções que encontrei para esses casos não são nada boas:

  1. xautolock -exit -> assista ao vídeo -> reinicia o xautolock

  2. Ficar mexendo o cursor de tempos em tempos.

Vlock

Por fim temos o Vlock, que eu considero a melhor opção para bloquear os terminais e pode ser utilizada em conjunto com as outras opções também, para maior proteção.

  1. Instale o Vlock:

    julio@julio-acer ~> sudo pacman -S vlock
    

Update de 16/01/2013: O kbd já fornece o vlock. Se você já tem o kbd, tentar instalar o vlock causará um conflito.

  1. Bloqueie apenas o terminal atual -c

    julio@julio-acer ~> vlock -c
    This TTY is now locked.
    
    Please press [ENTER] to unlock.
    julio's Password:
    
  2. Bloqueie todos os terminais -a

    julio@julio-acer ~> vlock -a
    vlock: this terminal is not a virtual console
    

    Oops! Esse erro vai ocorrer se você tentar rodar o vlock -a no urxvt, xterm, etc. Pressione Ctrl+Alt+F1 para ir ao TTY1 e repita o 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:
    

Pronto, o sistema está completamente trancado e só será desbloqueado com a sua senha ou a do root. Ou quase isso, olhando o manual, vi que o vlock tem uma opção (-s) para prevenir que a tecla SysRq possa matar o programa. Não testei, pois meu teclado nem possui esta tecla, mas essa informação foi importante, pois fiz alguns testes e percebi que realmente da para desbloquear o computador remotamente:

  1. Logado como o usuário ’teste’, bloqueei todos terminais:

    teste@julio-acer ~> vlock -a
    
  2. Acessei o computador por SSH e matei o processo sem problemas:

    julio@julio-acer ~> killall vlock-main
    
  3. Também testei com a opção ‘-s’, que precisa de permissão de superuser:

    [root@julio-acer ~]# vlock -as
    
  4. E só consegui matar o processo usando sudo. O que já era esperado.

    julio@julio-acer ~> killall vlock-main
    vlock-main(26420): Operation not permitted
    vlock-main: no process found
    
    julio@julio-acer ~> sudo killall vlock-main
    

O único problema disso é que quando esse usuário conseguir desbloquear o computador, ele terá acesso à conta de quem bloqueou. Para mim isso não é algo preocupante, pois sou o único usuário do computador. Mas se algum dia eu adicionar mais usuários (nenhum com direito a sudo), terei em mente que é melhor bloquear o computador como root.


Julio Batista Silva
Julio Batista Silva
Engenheiro de Dados

Eu sou um engenheiro de computação apaixonado por ciência, tecnologia, fotografia e idiomas. Atualmente trabalhando como Engenheiro de Dados na Alemanha.

comments powered by Disqus