Wymagaj tylko hasła po przebudzeniu z zawieszenia po zawieszeniu na 10 minut

11

Zasadniczo chcę, aby mój laptop był zablokowany, gdy jest zawieszony, ale nie, gdy właśnie go zawiesiłem, ponieważ istnieje przypadek użycia, w którym wpisanie hasła po obudzeniu laptopa z zawieszenia jest dość kłopotliwe. Dobrym kompromisem jest wymaganie hasła logowania tylko, jeśli laptop został zawieszony ponad 10 minut temu. Jak mam to zrobic?

Używam Ubuntu 16.04 z Unity.

UTF-8
źródło
Jak funkcja „Zablokuj po x minutach” Androida?
You'reAGitForNotUsingGit
@AndroidDev Prawie tak.
UTF-8

Odpowiedzi:

7

Utwórz plik w /lib/systemd/system-sleep/nazwie o nazwie np . lightdm:

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

uczyń ten plik wykonywalnym:

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

Za każdym razem, gdy „zawieszasz” lub „wznawiasz” swój system Ubuntu, ten skrypt będzie uruchamiany.

Otwórz go za pomocą odpowiedniego edytora tekstu, np .: sudo nano /lib/systemd/system-sleep/lightdmi wklej do niego te linie, a następnie zapisz:

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

Co to robi?

Kiedy wprowadzasz Ubuntu w tryb „uśpienia”, ten skrypt zapisze bieżące znaczniki czasu, a następnie podczas wznawiania systemu sprawdzi stare znaczniki czasu z bieżącym, jeśli inny był dłuższy niż „600” sekund (10 minut) pokaże ekran blokady „lightdm”, w przeciwnym razie nic nie robi.

Na ostatni krok:

otwórz „Ustawienia systemu” -> „Jasność i blokada”. Wyłącz pytanie o hasło po przebudzeniu, ponieważ pozostawiamy obsługę ekranu blokady skryptowi.

wprowadź opis zdjęcia tutaj

Po ponownym uruchomieniu lub zamknięciu nadal musisz wprowadzić hasło.

Ravexina
źródło
1
Bardzo fajnie +1. Powinienem zaznaczyć, że komentarz #Remove password prompetpowinien brzmieć#Prompt for password if suspended > 10 minutes
WinEunuuchs2Unix
@ WinEunuuchs2Unix Dzięki za wskazanie, najpierw napisałem coś innego, a potem zapomniałem zmienić komentarz :-)
Ravexina
0

Dodaj skrypt, /lib/systemd/system-sleep/aby odblokować sesję, jeśli system został zawieszony na krótki czas:

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

Dzięki tej zawartości:

#!/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
lemonsqueeze
źródło
1
Początkowo myślałem, że twoja droga (aktywne odblokowanie) jest bardziej elegancka niż jedna z pozostałych odpowiedzi (która aktywnie blokuje). Ale potem zauważyłem, że twoja ma dziwną właściwość: jeśli aktywnie blokuję ekran, chcę go zablokować, dopóki nie zostanie wprowadzone hasło. Jednak skrypt odblokowałby ekran, gdyby komputer został zawieszony na krótki czas, gdy ekran jest już zablokowany. Dlatego przyjąłem inną odpowiedź.
UTF-8
Rzeczywiście byłby to problem =)
lemonsqueeze
-2

Mogę ci w tym pomóc. Najpierw przejdź do ustawień. Wybierz to ustawienie:

Jasność_ i blokada

Pojawi się menu rozwijane z informacją, że ekran się wyłącza.

Screen_Turns_Off

Po kliknięciu menu rozwijanego zmień oba ustawienia, aby wyglądały tak:

Ekran blokady

BJsgoodlife
źródło
To nie działa. Czas testu ustawiłem na 30 sekund. W ten sposób musiałem wprowadzić hasło nawet po zawieszeniu komputera na zaledwie 5 sekund. W ten sposób wróciłem do pulpitu nawet po zawieszeniu komputera na 3 minuty.
UTF-8
Przepraszam za to, zapomniałem kroku.
BJsgoodlife
Nie pozostawia to komputera w stanie odblokowanym przez określoną liczbę minut po zainicjowaniu zawieszenia zgodnie z określonym OP. W rzeczywistości blokuje go natychmiast po rozpoczęciu zawieszenia.
b_laoshi,