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

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

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

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

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

10
задан 19 May 2014 в 01:52

4 ответа

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

На командной строке:

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

экранная клавиатура появляется, когда Вы сначала входите в систему, но можно закрыть ее.

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

Взятый от benshayden на https://bugs.launchpad.net/ubuntu / + source/gnome-screensaver / + ошибка/1307163

0
ответ дан 19 May 2014 в 01:52

<забастовка> Там не является никаким способом сделать это, к сожалению: (

Обновление - я нашел путь. Проверьте мой более новый ответ

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

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

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

Эта команда требует небольшого количества установки.

Установка: 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-устройства. Если по некоторым причинам это перестало работать, необходимо перезапустить. Из-за этого могло бы быть желательно уехать, клавиатура включила и настроила разблокировать команду к выбранному ярлыку.

0
ответ дан 19 May 2014 в 01:52

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

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

У Вас есть выбор заблокировать, разблокировать выставочное устройство или настроить Ваш ключ. При выполнении установки она создаст ~/.ssh/pamusb_rsa, если она не будет существовать. Вас затем попросят выбрать устройство (или нет, если будет только один), и вводить Ваш пароль. Ваш PW будет сохранен, зашифрован в {устройстве}/.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
1
ответ дан 19 May 2014 в 01:52

Обновление! Существует способ использовать нормальный экран блокировки! Yay!

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

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

существуют 2, разблокировали команды:

No1:

Это является 1-м, разблокировали команду:

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

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

Тогда это вводит mypassword123! с введением, для представления его, в текстовое поле.

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

<час>

No2:

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

Первая установка actionaz:

sudo apt-get install actionaz

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

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

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

Настроенный Ваша команда близости, чтобы быть:

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

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

<час>

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

0
ответ дан 19 May 2014 в 01:52

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

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