Isso funcionou para mim:
% bl0ck_qu0te% Depois disso, gnome-screensaver-command -d
funciona.
Extraído de benshayden no link
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
?
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:
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.
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
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).
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). 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.