Разблокировать экран в 14.04 без 'gnome-screensaver-command'

10

Я с радостью использовал blueproximity в 13.10, но с момента обновления до 14.04 он блокируется только тогда, когда мой телефон выходит за пределы диапазона (используя gnome-screensaver-command -l ), но он не разблокируется с gnome-screensaver-command -d .

Теперь причина, по которой gnome-screensaver-command -d не работает, связана с ошибкой .

Однако в этом отчете об ошибке упоминается, что gnome-screensaver больше не используется в режиме надежного, и поэтому ожидается, что gnome-screensaver-command будет отменено, что также может быть связано с тем, почему команда не работает.

Итак, мой вопрос: если заменить gnome-screensaver, то какая новая команда будет разблокировать экран, не полагаясь на gnome-screensaver-command ?

    
задан d_inevitable 26.04.2014 в 17:12
источник

4 ответа

6

Это сработало для меня:

On the command line:

gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true

The on-screen keyboard appears when you first sign-in but you can close it.

После этого gnome-screensaver-command -d работает.

Взято из benshayden на Ссылка

    
ответ дан Toby Abel 23.01.2015 в 12:23
3

Нет никакого способа сделать это, к сожалению: (

Обновление - я нашел способ. Ознакомьтесь с моим новым ответом

Это мое предыдущее решение - Нецелесообразно использовать, оно не разблокируется, если вы потеряете свой телефон; вам нужно перезапустить его, чтобы разблокировать его

В конце концов я придумал решение - не запирайте его в первую очередь. Это может показаться странным - медведь с.

Вместо блокировки я отключил мышь и клавиатуру, скрыл все значки на рабочем столе и затем переключился на рабочий стол. Вы могли бы скрыть больше вещей (например, пусковую установку), но я все равно скрыл.

Эта команда требует немного настройки.

Установить: xdotool - sudo apt-get install xdotool

Введите: xinput --list и отметьте идентификаторы мыши и клавиатуры.

Я предлагаю редактировать эти команды в gedit

Это действует как шкафчик.

xinput set-prop <Keyboard ID> 'Device Enabled' 0 && xinput set-prop <Mouse ID> 'Device Enabled' 0 && gsettings set org.gnome.desktop.background show-desktop-icons false && wmctrl -k on

Это действует как разблокировка.

xinput set-prop <Keyboard ID> 'Device Enabled' 1 && xinput set-prop <Mouse ID> 'Device Enabled' 1 && gsettings set org.gnome.desktop.background show-desktop-icons true && wmctrl -k off

Измените их и их соответствующие номера в обеих командах.

Для этого:

  • Отключает / включает клавиатуру
  • Отключает / включает в себя мышь
  • Скрывает / Показывает все ваши значки на рабочем столе
  • Включает отображение рабочего стола.

Одна важная вещь, которую нужно иметь в виду - это невозможно отменить без вашего устройства Bluetooth. Если по какой-то причине это не удается, вам необходимо перезагрузить компьютер. Из-за этого было бы целесообразно оставить клавиатуру включенной и настроить команду разблокировки на выбранный ярлык.

    
ответ дан Tim 15.05.2014 в 20:12
1

Итак, я решил «лучший» способ сделать это (апокрифический, поскольку мы все еще сохраняем пароль и , приписывая его в вещь ) будет, как я уже отмечал выше, зашифруйте пароль на ключ USB входа. Это немного грязный сценарий, поэтому я объясню, что происходит.

Устройства для текущего пользователя перечисляются путем просмотра /etc/pamusb.conf с помощью xpath; каждый из них затем соединяется с UUID с использованием xpath, а UUID сопоставляется с устройством с использованием blkid.

У вас есть выбор: заблокировать, разблокировать шоу-устройство или настроить свой ключ. Когда вы запустите установку, она создаст ~ / .ssh / pamusb_rsa, если она не существует. Затем вас попросят выбрать устройство (или нет, если есть только одно) и ввести пароль. Ваш PW будет храниться, зашифрован, в {device} / .pamusb / .auth.

При запуске разблокировки устройства перечисляются снова и поочередно проверяются для файла /.pamusb/.auth. Когда будет обнаружено пятно, дешифрование и, в случае успеха, будет использоваться для ввода вашего пароля во все, что происходит, когда вы принимаете текст на данный момент. Это разрешено только только , когда сеанс заблокирован, поэтому, надеюсь, это не будет слишком сильно вызывать вас.

Я назвал это ~ / .bin / unity-lock-control (~ / .bin на моем пути) и имеет «блокировку блокировки блокировки» и «разблокировку блокировки блокировки», так как мои агенты в pam.conf.

#!/bin/bash
PAM_KEY=${HOME}/.ssh/pamusb_rsa
devices() {
    local NAMES NAME UUID DEV
    NAMES=$(xmllint /etc/pamusb.conf --xpath '//user[@id="'$USER'"]/device')
    NAMES=${NAMES//"<device>"/""}
    NAMES=${NAMES//'</device>'/' '}
    for NAME in $NAMES; do
        UUID=$(xmllint /etc/pamusb.conf --xpath '//device[@id="'$NAME'"]/volume_uuid/text()')
        DEV=$(blkid -U $UUID)
        if [[ -n $DEV ]]; then
            echo ${NAME}:${UUID}:${DEV}
        fi
    done
}
locked() {
    LS=$(ps -A -o cmd | grep 'unity-panel-service --lockscreen-mode' | grep -v grep)
    if [[ -z $LS ]]; then
        return -1
    else
        return 0
    fi
}
mounted() {
    MOUNTED=$(grep $1 /proc/mounts)
    if [[ -z $MOUNTED ]]; then
        return -1
    fi
    return 0
}
mount_point() {
    cat /proc/mounts | grep $1 | cut -d \  -f 2
}
case "$1" in
    devices)
        devices
        exit 0
    ;;
    lock)
        setsid paplay /usr/share/sounds/ubuntu/stereo/service-logout.ogg &
        setsid gnome-screensaver-command -l &
        sleep 1
        exit
    ;;
    unlock)
        if ! locked; then
            echo "Screen is not locked" >&2
            exit 1
        fi
        if [[ ! -f $PAM_KEY ]]; then
            echo "${PAM_KEY} does not exist; please run $0 setup." >&2
            exit 1
        fi

        DEVICES=$(devices)
        for device in $DEVICES; do
            NAME=$(echo $device | cut -d : -f 1)
            UUID=$(echo $device | cut -d : -f 2)
            DEV=$(echo $device | cut -d : -f 3)
            mounted $DEV
            MOUNTED=$?
            if [[ $MOUNTED -ne 0 ]]; then
                udisksctl mount -b $DEV
            fi
            AUTH_FILE=$(mount_point $DEV)/.pamusb/.auth
            if [[ -f $AUTH_FILE ]]; then
                PASS=$(openssl rsautl -decrypt -inkey $PAM_KEY -in $AUTH_FILE)
            fi
            if [[ $MOUNTED -ne 0 ]]; then
                udisksctl unmount -b $DEV
            fi
            if [[ -n $PASS ]]; then
                xdotool type --delay 0 "${PASS}" 
                xdotool key Return
                sleep 1
                if locked; then
                    setsid paplay /usr/share/sounds/ubuntu/stereo/service-login.ogg &
                else
                    setsid paplay /usr/share/sounds/ubuntu/stereo/dialog-warning.ogg &
                fi
                exit 0
            fi
        done
        echo "Did not find unlock key" >&2
        exit 1
    ;;
    setup)
        echo "This will set up an OpenSSL key, and encrypt your password to be stored"
        echo "on a pamusb authenticator."
        echo "-----"
        if [[ ! -d ${HOME}/.ecryptfs || ! -d ${HOME}/.Private ]]; then
            echo "Warning: Home folder is NOT encrypted" >&2
            read -p "Continue (y/N):" conf
            if [[ -z $conf ]]; then exit 1; fi
            if [[ $conf == "n" || $conf == "N" ]]; then exit 1; fi
        fi
        mkdir -p $(dirname $PAM_KEY)
        if [[ ! -f $PAM_KEY ]]; then
            openssl genrsa -out $PAM_KEY 1024
        fi
        DEVICES=$(devices)
        if [[ "${#DEVICES[@]}" -eq 1 ]]; then
            device="${DEVICES[0]}"
        else
            echo "Please select the device you would like to contain your encrypted password"       
            for i in "${!DEVICES[@]}"; do
                echo "$i: ${DEVICES[$i]}"
            done
            read selection
            device="${DEVICES[$selection]}"
        fi
        NAME=$(echo $device | cut -d : -f 1)
        UUID=$(echo $device | cut -d : -f 2)
        DEV=$(echo $device | cut -d : -f 3)

        mounted $DEV
        MOUNTED=$?
        if [[ $MOUNTED -ne 0 ]]; then
            echo "${NAME} is not mounted; attempting mount"
            udisksctl mount -b $DEV
        fi
        AUTH_FILE=$(mount_point $DEV)/.pamusb/.auth
        if [[ -f $AUTH_FILE ]]; then
            echo "Storing encrypted password to ${DEVICES[0]}"
            read -sp "Please enter your UNIX password:" PASS
            echo ""
            echo $PASS | openssl rsautl -encrypt -inkey $PAM_KEY -out $AUTH_FILE
        fi
        if [[ $MOUNTED -ne 0 ]]; then
            echo "${NAME} was not mounted; unmounting"
            udisksctl unmount -b $DEV
        fi
        exit 0
    ;;
    *)
        echo "Control for lock screen"
        echo $0 '{start|stop|devices|setup}'
        exit 1
    ;;
esac
    
ответ дан Fordi 18.06.2015 в 07:42
0

Обновление! Существует способ использования обычного экрана блокировки! Ура!

Я не знаю, насколько это безопасно (сохранение вашего пароля в открытом виде), но я думаю, что это возможно.

Это команда блокировки: gnome-screensaver -d

Есть две команды разблокировки:

No1:

Это первая команда разблокировки:

gnome-screensaver -d && xdotool type mypassword12 && xdotool key Return

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

Затем он набирает mypassword123! с вводом, чтобы отправить его, в текстовое поле.

Важно. По какой-то причине - вероятно, из-за того, что xdotool фактически предназначен для использования (сочетания клавиш) - вы не можете вводить двойные буквы. Чтобы обойти это, разделите его на две команды на каждую двойную букву (как указано выше). Кроме того, номера должны иметь свою собственную отдельную команду из букв (также выше). Наконец, модификаторы (например, сдвиг) нуждаются в отдельном, как и ключ Return.

No2:

Это второй. Это немного лучше и менее хакерски, но требует много настроек.

Сначала установите actionaz:

sudo apt-get install actionaz

Откройте новый скрипт и перетащите нужные элементы в поток. (вы можете загрузить завершенный здесь . Если вы решили загрузить это, откройте его, дважды щелкните мышью на «Ввести текст» - здесь пароль и введите ваш пароль).

  1. Пауза: введите 3 секунды.
  2. Нажмите: скопируйте и вставьте 165:555 в поле «Позиция». (В зависимости от стороны экрана это может быть другим. Убедитесь, что он щелкает в поле пароля, иначе это не сработает).
  3. Введите текст: введите свой пароль в поле
  4. Ключ: нажмите в поле и нажмите Return

Сохраните его в своей домашней папке как unlock.ascr (или любое имя - я просто не хотел рекламировать, что в нем был мой пароль)

Настройте свою команду близости:

xdotool mousemove 0 0 && actionaz unlock.ascr -ex

Движение мыши пробуждает его, и параметры подсказывают ему выполнить скрипт, а затем выйти в конце.

Если вы потеряете свое устройство, вы всегда можете просто ввести свой пароль, поэтому он обратим.

    
ответ дан Tim 16.05.2014 в 17:18