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

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

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

11
задан 14 June 2017 в 13:49

9 ответов

Создайте файл внутри /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, и вставьте в него эти строки, а затем сохраните его:

[ f3]

Что он делает?

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

Для последнего шага:

откройте «системные настройки» -> «Яркость и блокировка».

После перезагрузки или выключения вам все равно нужно ввести свой пароль.

5
ответ дан 22 May 2018 в 23:11
  • 1
    Очень приятно +1. Я должен указать, что комментарий #Remove password prompet должен читать #Prompt for password if suspended > 10 minutes – WinEunuuchs2Unix 16 June 2017 в 04:32
  • 2
    @ WinEunuuchs2Unix Спасибо за указание на это, я сначала написал что-то еще, а потом забыл изменить комментарий :-) – Ravexina 16 June 2017 в 11:29

Создайте файл внутри /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», иначе он ничего не сделает.

Для последнего шага:

откройте «системные настройки» -> «Яркость и блокировка».

После перезагрузки или выключения вам все равно нужно ввести свой пароль.

6
ответ дан 18 July 2018 в 14:13

Создайте файл внутри /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», иначе он ничего не сделает.

Для последнего шага:

откройте «системные настройки» -> «Яркость и блокировка».

После перезагрузки или выключения вам все равно нужно ввести свой пароль.

6
ответ дан 24 July 2018 в 20:21

Добавьте сценарий в /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
0
ответ дан 22 May 2018 в 23:11
  • 1
    Первоначально я думал, что ваш путь (активная разблокировка) более изящный, чем один из другого ответа (который активно блокирует). Но потом я заметил, что у вас есть странное свойство: если я активно блокирую свой экран, я хочу, чтобы он был заблокирован до ввода пароля. Однако ваш скрипт разблокирует экран, если компьютер будет временно приостановлен, пока экран уже заблокирован. Вот почему я принял другой ответ. – UTF-8 15 June 2017 в 15:48
  • 2
    Действительно, это была бы проблема =) – lemonsqueeze 15 June 2017 в 16:52

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

Появится выпадающее меню, в котором говорится, что Экран выключается.

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

Brightness_&Lock [!d3 ]

-1
ответ дан 22 May 2018 в 23:11
  • 1
    Это не работает. Я установил время до 30 секунд для тестирования. Как и этот , я должен был ввести пароль даже после приостановки компьютера всего на 5 секунд. Как и этот , я получил право на свой рабочий стол даже после приостановки работы моего компьютера в течение 3 минут. – UTF-8 15 June 2017 в 14:06
  • 2
    Извините, я забыл шаг. – BJsgoodlife 15 June 2017 в 16:58
  • 3
    Это не оставляет компьютер в незаблокированном состоянии в течение заданного количества минут после того, как приостановка будет инициирована как указано OP. Фактически, он блокирует его немедленно, когда приостановка запуска. – b_laoshi 19 June 2017 в 07:30

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

Появится выпадающее меню, в котором говорится, что Экран выключается.

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

Brightness_&Lock [!d3]

-1
ответ дан 18 July 2018 в 14:13

Добавьте сценарий в /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
0
ответ дан 18 July 2018 в 14:13

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

Появится выпадающее меню, в котором говорится, что Экран выключается.

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

Brightness_&Lock [!d3]

-1
ответ дан 24 July 2018 в 20:21
  • 1
    Это не работает. Я установил время до 30 секунд для тестирования. Как и этот , я должен был ввести пароль даже после приостановки компьютера всего на 5 секунд. Как и этот , я получил право на свой рабочий стол даже после приостановки работы моего компьютера в течение 3 минут. – UTF-8 15 June 2017 в 14:06
  • 2
    Извините, я забыл шаг. – BJsgoodlife 15 June 2017 в 16:58
  • 3
    Это не оставляет компьютер в незаблокированном состоянии в течение заданного количества минут после того, как приостановка будет инициирована как указано OP. Фактически, он блокирует его немедленно, когда приостановка запуска. – b_laoshi 19 June 2017 в 07:30

Добавьте сценарий в /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
0
ответ дан 24 July 2018 в 20:21
  • 1
    Первоначально я думал, что ваш путь (активная разблокировка) более изящный, чем один из другого ответа (который активно блокирует). Но потом я заметил, что у вас есть странное свойство: если я активно блокирую свой экран, я хочу, чтобы он был заблокирован до ввода пароля. Однако ваш скрипт разблокирует экран, если компьютер будет временно приостановлен, пока экран уже заблокирован. Вот почему я принял другой ответ. – UTF-8 15 June 2017 в 15:48
  • 2
    Действительно, это была бы проблема =) – lemonsqueeze 15 June 2017 в 16:52

Другие вопросы по тегам:

Похожие вопросы: