Richiede password solo al risveglio dalla sospensione se sospeso per 10 minuti


11

In genere desidero che il mio laptop sia bloccato quando è sospeso, ma non quando l'ho appena sospeso perché esiste un caso d'uso in cui inserire la mia password dopo che il mio laptop si è svegliato dalla sospensione è piuttosto ingombrante. Un buon compromesso è richiedere la password di accesso solo se il laptop è stato sospeso più di 10 minuti fa. Come faccio a fare questo?

Uso Ubuntu 16.04 con Unity.


Ti piace la funzione "Blocca dopo x minuti" di Android?
SeiAGitForNotUsingGit il

@AndroidDev Praticamente sì.
UTF-8

Risposte:


7

Crea un file all'interno /lib/systemd/system-sleep/, chiamato ad esempio lightdm::

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

rendere eseguibile questo file:

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

Ogni volta che "sospendi" o "riprendi" Ubuntu, questo script verrà eseguito.

Aprilo usando l'editor di testo desiderato, ad esempio sudo nano /lib/systemd/system-sleep/lightdm:, e incolla queste righe e salvalo:

#!/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

Cosa fa?

Quando stai mettendo Ubuntu in modalità "sleep" questo script salverà i timestamp correnti, quindi riprendendo il sistema controllerà i vecchi timestamp con quello attuale, se il diverso fosse più di "600" secondo (10 Minuetti) mostrerà schermata di blocco "lightdm" altrimenti non fa nulla.

Per l'ultimo passaggio:

apri "impostazioni di sistema" -> "Luminosità e blocco". Disabilita la richiesta di password dopo il risveglio dalla sospensione, perché lasciamo la gestione della schermata di blocco allo script.

inserisci qui la descrizione dell'immagine

Dopo il riavvio o l'arresto è ancora necessario inserire la password.


1
+1 molto bello. Vorrei sottolineare che il commento #Remove password prompetdovrebbe essere letto#Prompt for password if suspended > 10 minutes
WinEunuuchs2Unix il

@ WinEunuuchs2Unix Grazie per averlo sottolineato, ho prima scritto qualcos'altro, poi ho dimenticato di cambiare il commento :-)
Ravexina,

0

Aggiungi uno script /lib/systemd/system-sleep/per sbloccare la sessione se il sistema è stato sospeso per un breve periodo:

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

Con questo contenuto:

#!/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

1
Inizialmente ho pensato che il tuo modo (sbloccare attivamente) sia più elegante di quello dell'altra risposta (che si blocca attivamente). Ma poi ho notato che la tua ha una strana proprietà: se blocco attivamente il mio schermo, voglio che sia bloccato fino all'inserimento della password. Tuttavia, lo script potrebbe sbloccare lo schermo se il computer è stato sospeso per un breve periodo di tempo mentre lo schermo è già bloccato. Ecco perché ho accettato l'altra risposta.
UTF-8

In effetti sarebbe un problema =)
lemonsqueeze,

-2

Posso aiutarti con questo. Innanzitutto, vai alle impostazioni. Seleziona questa impostazione:

Brightness_ & Lock

Ci sarà un menu a discesa che dice Lo schermo si spegne.

Screen_Turns_Off

Dopo aver fatto clic sul menu a discesa, modifica entrambe le impostazioni in modo che appaiano così:

Blocca schermo


Questo non funziona. Ho impostato il tempo a 30 secondi per il test. In questo modo , ho dovuto inserire la mia password anche dopo aver sospeso il computer per soli 5 secondi. In questo modo , sono arrivato sul mio desktop anche dopo aver sospeso il mio computer per 3 minuti.
UTF-8

Mi dispiace, ho dimenticato un passaggio.
BJsgoodlife,

Ciò non lascia il computer in uno stato sbloccato per un numero predeterminato di minuti dopo l'avvio della sospensione come specificato dall'OP. In effetti, lo blocca immediatamente all'avvio della sospensione.
b_laoshi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.