Exigir senha somente ao acordar da suspensão quando suspenso por 10 minutos

11

Geralmente, quero que meu laptop seja bloqueado quando suspenso, mas não quando acabei de suspendê-lo, porque há um caso de uso em que digitar minha senha depois que meu laptop acordou de suspender é bastante complicado. Um bom compromisso é exigir apenas a senha de login se o laptop tiver sido suspenso há mais de 10 minutos. Como eu faço isso?

Eu uso o Ubuntu 16.04 com Unity.

UTF-8
fonte
Como o recurso "Bloquear após x minutos" do Android?
You'reAGitForNotUsingGit
@AndroidDev Praticamente sim.
UTF-8

Respostas:

7

Crie um arquivo dentro /lib/systemd/system-sleep/, nomeado por exemplo lightdm::

sudo touch /lib/systemd/system-sleep/lightdm

torne este arquivo executável:

sudo chmod +x /lib/systemd/system-sleep/lightdm

Toda vez que você "suspender" ou "reiniciar" seu Ubuntu, esse script será executado.

Abra-o usando o editor de texto desejado, por exemplo: sudo nano /lib/systemd/system-sleep/lightdme cole estas linhas nele e salve-o:

#!/bin/sh
set -e

case "$1" in
   pre)

    #Store current timestamp (while suspending)
    /bin/echo "$(date +%s)" > /tmp/_suspend 
    ;;

   post)
      #Compute old and current timestamp
      oldts="$(cat /tmp/_suspend)"
      ts="$(date +%s)"

      #Prompt for password if suspended > 10 minutes
      if [ $((ts-oldts)) -ge 600 ];
       then
         export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
         /usr/bin/dm-tool lock
      fi

      /bin/rm /tmp/_suspend
   ;;
esac

O que faz?

Quando você está colocando o Ubuntu no modo "inativo", esse script salva os carimbos de data / hora atuais e, ao reiniciar o sistema, verifica os carimbos de data / hora antigos com o atual, se o diferente for superior a "600" segundo (10 minutos), será exibido você "lightdm" tela de bloqueio caso contrário, ele não faz nada.

Para o último passo:

abra "configurações do sistema" -> "Brilho e bloqueio". Desative a solicitação de senha após acordar da suspensão, pois deixamos de manipular a tela de bloqueio para o script.

insira a descrição da imagem aqui

Após a reinicialização ou desligamento, você ainda precisará digitar sua senha.

Ravexina
fonte
1
Muito bom +1. Gostaria de salientar comentário #Remove password prompetdeve ler#Prompt for password if suspended > 10 minutes
WinEunuuchs2Unix
@ WinEunuuchs2Unix Obrigado por apontar isso, primeiro eu escrevi alguma coisa, então eu esqueci de mudar o comentário :-)
Ravexina
0

Adicione um script /lib/systemd/system-sleep/para desbloquear sua sessão se o sistema for suspenso por um curto período de tempo:

cd /lib/systemd/system-sleep/
sudo touch     unlock_early_suspend
sudo chmod 755 unlock_early_suspend
sudo -H gedit     unlock_early_suspend

Com este conteúdo:

#!/bin/bash
# Don't ask for password on resume if computer has been suspended for a short time

# Max duration of unlocked suspend (seconds)
SUSPEND_GRACE_TIME=600

file_time()      {  stat --format="%Y" "$1";  }

unlock_session()
{
    # Ubuntu 16.04
    sleep 1; loginctl unlock-sessions
}

# Only interested in suspend/resume events here. For hibernate etc tweak this
if [ "$2" != "suspend" ]; then  exit 0;  fi

# Suspend
if [ "$1" = "pre" ]; then  touch /tmp/last_suspend;  fi

# Resume
if [ "$1" = "post" ]; then
    touch /tmp/last_resume
    last_suspend=`file_time /tmp/last_suspend`
    last_resume=`file_time /tmp/last_resume`
    suspend_time=$[$last_resume - $last_suspend]

    if [ "$suspend_time" -le $SUSPEND_GRACE_TIME ]; then
        unlock_session
    fi
fi
limões
fonte
1
Inicialmente, pensei que seu caminho (desbloqueio ativo) é mais elegante do que o da outra resposta (que bloqueia ativamente). Mas notei que a sua possui uma propriedade estranha: se eu bloquear minha tela ativamente, quero que ela seja bloqueada até que a senha seja digitada. No entanto, seu script desbloqueia a tela se o computador for suspenso por um curto período de tempo enquanto a tela já estiver bloqueada. Por isso aceitei a outra resposta.
UTF-8
Na verdade isso seria um problema =)
lemonsqueeze
-2

Eu posso ajudá-lo com isso. Primeiro, vá para configurações. Selecione esta configuração:

Brightness_ & Lock

Haverá um menu suspenso que diz que a tela desliga.

Screen_Turns_Off

Depois de clicar no menu suspenso, altere as duas configurações para que fiquem assim:

Tela de bloqueio

BJsgoodlife
fonte
Isso não funciona. Defino o tempo para 30 segundos para o teste. Assim , tive que digitar minha senha mesmo depois de suspender o computador por apenas 5 segundos. Assim , cheguei ao meu desktop mesmo depois de suspender meu computador por 3 minutos.
UTF-8
Desculpe por isso, eu esqueci um passo.
BJsgoodlife
Isso não deixa o computador em um estado desbloqueado por um número predeterminado de minutos após a suspensão ser iniciada como o OP especificado. De fato, ele bloqueia imediatamente quando a suspensão é iniciada.
b_laoshi