Пароль требуется только при пробуждении из режима ожидания при приостановке на 10 минут


11

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

Я использую Ubuntu 16.04 с Unity.


Нравится функция Android «Блокировка через x минут»?
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

Я могу помочь вам с этим. Сначала зайдите в настройки. Выберите этот параметр:

Brightness_ и блокировки

Появится выпадающее меню с надписью «Отключение экрана».

Screen_Turns_Off

После нажатия на выпадающее меню измените обе настройки, чтобы они выглядели так:

Экран блокировки


Это не работает. Я установил время на 30 секунд для тестирования. Таким образом , мне пришлось вводить пароль даже после приостановки работы компьютера всего на 5 секунд. Таким образом , я получил право на свой рабочий стол даже после приостановки работы компьютера на 3 минуты.
UTF-8

Извините, я забыл шаг.
BJsgoodlife

Это не оставляет компьютер в разблокированном состоянии в течение предварительно определенного количества минут после того, как приостановка инициируется, как указано OP. Фактически, это блокирует это немедленно, когда приостановка запущена.
b_laoshi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.