Desbloquear tela em 14.04 sem 'gnome-screensaver-command'

10

Estou feliz em usar a proximidade do azul em 13.10, mas desde a atualização para o 14.04 ela só é bloqueada quando meu telefone fica fora do intervalo (usando gnome-screensaver-command -l ), mas não é desbloqueada com gnome-screensaver-command -d .

Agora, o motivo pelo qual gnome-screensaver-command -d não funciona é por causa de um erro .

No entanto, no relatório de bug, é mencionado que o gnome-screensaver não é mais usado em trusty e, portanto, espera-se que o gnome-screensaver-command seja eliminado, o que também pode estar relacionado ao motivo pelo qual o comando não funciona. / p>

Então, minha pergunta é: se o gnome-screensaver for substituído, qual seria o novo comando para desbloquear a tela sem depender de gnome-screensaver-command ?

    
por d_inevitable 26.04.2014 / 19:12

4 respostas

6

Isso funcionou para mim:

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.

Depois disso, gnome-screensaver-command -d funciona.

Extraído de benshayden no link

    
por Toby Abel 23.01.2015 / 13:23
3

Não há como fazer isso infelizmente: (

Atualização - encontrei um caminho. Confira minha resposta mais recente

Esta é a minha solução anterior - É desaconselhável usar, não é destravável se você perder seu telefone; você tem que reiniciar para desbloqueá-lo

Eu finalmente encontrei uma solução - não bloqueie isso em primeiro lugar. Isso pode soar estranho - suportar com.

Em vez de bloqueá-lo, desativei o mouse e o teclado, ocultei todos os ícones da área de trabalho e mudei para a área de trabalho. Você poderia esconder mais coisas (como o lançador), mas eu tenho isso escondido de qualquer maneira.

Este comando requer um pouco de configuração.

Instale: xdotool - sudo apt-get install xdotool

Digite: xinput --list e anote seus IDs de mouse e teclado.

Sugiro que você edite esses comandos em gedit

Este aqui atua como o armário.

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

Isso funciona como o desbloqueio.

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

Altere o e para seus respectivos números, em ambos os comandos.

Para isso:

  • Desativa / ativa o teclado
  • Desativa / ativa o mouse
  • Oculta / mostra todos os seus ícones da área de trabalho
  • Alterna a exibição da sua área de trabalho.

Uma coisa importante a ter em conta - isto não pode ser desfeito sem o seu dispositivo bluetooth. Se por algum motivo falhar, você terá que reiniciar. Por causa disso, pode ser aconselhável deixar o teclado ativado e configurar o comando de desbloqueio para um atalho escolhido.

    
por Tim 15.05.2014 / 22:12
1

Então, imaginei que a "melhor" maneira de fazer isso (apócrifa, já que ainda estamos armazenando uma senha e fingindo digitá-la em uma coisa ) seria, como comentei acima, criptografar a senha para a chave USB de entrada. É um pouco confuso de um script, então vou explicar o que está acontecendo.

Os dispositivos para o usuário atual são enumerados olhando /etc/pamusb.conf com xpath; cada um é combinado com seu UUID usando xpath e o UUID mapeado para um dispositivo usando blkid.

Você tem a opção de bloquear, desbloquear o dispositivo de exibição ou configurar sua chave. Quando você executa o setup, ele cria ~ / .ssh / pamusb_rsa se ele não existir. Você será solicitado a escolher um dispositivo (ou não, se houver apenas um) e digitar sua senha. Seu PW será armazenado, criptografado, em {device} /. Pamusb / .auth.

Quando você executa o desbloqueio, os dispositivos são enumerados novamente e verificados um por um para um arquivo /.pamusb/.auth. Quando alguém for descoberto, a decodificação será tentada e, se for bem-sucedida, será usada para digitar sua senha no que estiver aceitando o texto no momento. Ele permitirá que somente seja executado quando a sessão estiver bloqueada, portanto, isso não exporá você a uma situação ruim.

Eu nomeei este ~ / .bin / unity-lock-control (~ / .bin está no meu caminho), e tenho "bloqueio de bloqueio de bloqueio de unidade" e "desbloqueio de bloqueio de unidade-lock" como meus agentes em 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
    
por Fordi 18.06.2015 / 09:42
0

Atualização! Existe uma maneira de usar a tela de bloqueio normal! Yay!

Eu não sei o quão seguro é (armazenar sua senha em texto simples), mas acho que é o melhor possível.

Este é o comando de bloqueio: gnome-screensaver -d

Existem dois comandos de desbloqueio:

No1:

Este é o primeiro comando de desbloqueio:

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

O clique é para ativá-lo (ele deve clicar dentro da caixa de login, por causa do movimento do mouse), e mostrar a bela tela de bloqueio nova, em vez da tela preta "dormir".

Em seguida, ele digita mypassword123! com uma entrada, para enviá-lo para a caixa de texto.

Importante. Por alguma razão - provavelmente por causa do que o xdotool é realmente usado (atalhos de teclado) - você não pode digitar letras duplas. Para contornar isso, divida-o em 2 comandos em cada letra dupla (como acima). Além disso, os números precisam ter seu próprio comando separado das letras (também acima). Finalmente, modificadores (como shift) precisam de um separado, assim como a tecla Return.

No2:

Este é o segundo. É um pouco melhor e menos agressivo, mas requer muita configuração.

Primeiro instale o actionaz:

sudo apt-get install actionaz

Abra um novo script e arraste os itens corretos para o seu fluxo. (você pode baixar o aqui aqui . Se você escolher fazer o download, abra-o, clique duas vezes em Escrever texto - Senha aqui e digite sua senha).

  1. Pausa: insira 3 segundos.
  2. Clique: copie e cole 165:555 na caixa Posição. (Dependendo do lado da tela, isso pode ser diferente. Verifique se ele está clicando na caixa de senha, caso contrário, não funciona).
  3. Escrever texto: insira sua senha na caixa
  4. Tecla
  5. : Clique na caixa e pressione Retornar

Salve-o em sua pasta pessoal como unlock.ascr (ou qualquer outro nome - eu não queria anunciar que tinha minha senha)

Configure o seu comando de proximidade para:

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

A movimentação do mouse ativa, e as opções dizem para executar o script e, em seguida, sair no final.

Se você perder seu dispositivo, poderá sempre digitar sua senha, por isso é reversível.

    
por Tim 16.05.2014 / 19:18