Потрібен пароль лише під час пробудження з призупинення, коли його призупинено на 10 хвилин


11

Я, як правило, хочу, щоб мій ноутбук був заблокований, коли його призупинено, але не тоді, коли я його просто призупинив, тому що є випадок використання, коли введення мого пароля після того, як мій ноутбук прокинувся з призупинення, досить громіздкий. Хороший компроміс - вимагати лише пароль для входу, якщо ноутбук було призупинено більше 10 хвилин тому. Як це зробити?

Я використовую Ubuntu 16.04 з Unity.


Як функція Android "Блокування через х хвилин"?
YouAGitForNotUsingGit

@AndroidDev Насправді так.
UTF-8

Відповіді:


7

Створіть файл у /lib/systemd/system-sleep/назві, наприклад lightdm:

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

зробіть цей файл виконуваним:

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

Кожен раз, коли ви "призупиняєте" або "поновлюєте" Ubuntu, цей сценарій буде запущений.

Відкрийте його за допомогою потрібного текстового редактора, наприклад: sudo nano /lib/systemd/system-sleep/lightdmі вставте в нього ці рядки, а потім збережіть:

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

Що це робить?

Коли ви переводите Ubuntu в режим "сну", цей скрипт збереже поточні часові позначки, тоді при відновленні системи він перевірятиме старі часові позначки з поточним, якщо інше було більше, ніж "600" секунд (10 хвилин), це буде показано ви "lightdm" заблокований екран інакше нічого не робить.

Останній крок:

відкрийте "Налаштування системи" -> "Яскравість і блокування". Вимкнути запитування пароля після пробудження від призупинення, оскільки ми залишаємо обробку екрана блокування сценарієм.

введіть тут опис зображення

Після перезавантаження або відключення все одно потрібно ввести свій пароль.


1
Дуже приємно +1. Слід зазначити, що коментар #Remove password prompetслід читати#Prompt for password if suspended > 10 minutes
WinEunuuchs2Unix

@ WinEunuuchs2Unix Дякую за те, що я це вказав, спершу я написав щось інше, а потім забув змінити коментар :-)
Ravexina

0

Додайте сценарій, /lib/systemd/system-sleep/щоб розблокувати сеанс, якщо система була призупинена на короткий час:

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

З цим вмістом:

#!/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
Спочатку я думав, що ваш спосіб (активно розблокується) є більш елегантним, ніж той, що відповідає на інший (який активно блокується). Але потім я помітив, що у вас є дивна властивість: Якщо я активно блокую екран, я хочу його заблокувати до введення пароля. Однак ваш сценарій розблокує екран, якщо комп'ютер призупинено на короткий проміжок часу, поки екран уже заблокований. Тому я прийняв іншу відповідь.
UTF-8

Дійсно, що це буде проблема =)
lemonsqueeze

-2

Я можу вам у цьому допомогти. Спочатку перейдіть до налаштувань. Виберіть цей параметр:

Яскравість_ та блокування

З'явиться випадаюче меню, де написано, що екран вимикається.

Screen_Turns_Off

Після натискання на спадне меню змініть обидва налаштування, щоб вони виглядали приблизно так:

Екран блокування


Це не працює. Я встановив час на 30 секунд для тестування. Так , мені довелося ввести свій пароль навіть після призупинення роботи комп’ютера всього на 5 секунд. Так , я потрапив прямо на робочий стіл навіть після того, як призупинив роботу комп'ютера на 3 хвилини.
UTF-8,

Пробачте про це, я забув крок.
BJsgoodlife

Це не залишає комп'ютер у розблокованому стані протягом заздалегідь визначеної кількості хвилин після ініціювання призупинення, як зазначено в ОП. Фактично, він блокує його негайно, коли запускається призупинення.
b_laoshi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.