`gnome-screensaver-command '없이 14.04에서 화면 잠금 해제


10

나는 13.10에서 행복하게 blueproximity를 사용하고 있지만 14.04로 업그레이드 한 후 휴대 전화가 범위를 벗어날 때만 사용 gnome-screensaver-command -l하지만 (사용 중 )로 잠금을 해제하지는 않습니다 gnome-screensaver-command -d.

이제 gnome-screensaver-command -d작동하지 않는 이유 는 버그 때문입니다 .

그러나 그 버그 보고서에서 gnome-screensaver는 더 이상 신뢰할 수있게 사용되지 않으므로 gnome-screensaver-command단계적으로 제거 될 것으로 예상되는데, 이는 명령이 작동하지 않는 이유와 관련이있을 수도 있습니다.

그래서 내 질문은 그놈 스크린 세이버가 교체되면 의존하지 않고 화면 잠금을 해제하는 새로운 명령은 gnome-screensaver-command무엇입니까?


@Braiam이 질문은 14.04 이상에만 해당됩니다. 왜 태그를 제거 했습니까? gnome-screensaver-command이전 버전에서 사용하지 않는 이유는 없습니다 !
d_inevitable

스스로 대답 : 14.04 이상 . 14.04는 영향을받는 유일한 버전 인 경우에만 사용해야합니다. 14.10 이후 버전이 아닙니다. BTW, 버그에 대해 묻지 마십시오.
Braiam

@Braiam 1. 나는 나중에 모른다!! 내가 어떻게 할 수있는? 이후 버전은 아직 없습니다. 현재로서는 14.04입니다. 그리고 버그에 대해서는 묻지 않았습니다. 마음에 들지 않으면 편집 내용을 되돌립니다.
d_inevitable

진심이야? cdimage.ubuntu.com/daily-live/current 사용해보십시오.
Braiam

1
@Braiam은 릴리스가 아닙니다.
d_inevitable

답변:


6

이것은 나를 위해 일했다 :

명령 행에서 :

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

처음 로그인하면 온 스크린 키보드가 나타나지만 닫을 수 있습니다.

gnome-screensaver-command -d작동 후 .

https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/1307163 에서 benshayden에서 가져옴


이것은 다른 답변보다 훨씬 높은 등급이어야합니다. 이 스크립트에 비밀번호를 입력하면 안됩니다.
Patrick Cornelissen 2016 년

3

불행히도 이것을 할 수있는 방법은 없습니다 :(

업데이트-방법을 찾았습니다. 최신 답변 확인

이것은 나의 이전 해결책입니다- 사용하는 것은 바람직하지 않습니다. 전화를 잃어버린 경우에는 잠금을 해제 할 수 없습니다. 잠금을 해제하려면 다시 시작해야합니다

나는 결국 해결책을 찾았습니다. 처음에 그것을 잠그지 마십시오. 이상하게 들릴 수도 있습니다.

잠그는 대신 마우스와 키보드를 비활성화하고 모든 바탕 화면 아이콘을 숨긴 다음 바탕 화면으로 전환했습니다. 런처와 같이 더 많은 것을 숨길 수는 있지만 어쨌든 숨겨져 있습니다.

이 명령에는 약간의 설정이 필요합니다.

설치 : xdotool- sudo apt-get install xdotool

:을 입력 xinput --list하고 마우스 및 키보드 ID를 메모하십시오.

이 명령을 편집하는 것이 좋습니다. 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

두 명령에서 및를 각각의 숫자로 변경하십시오.

이를 위해 :

  • 키보드 비활성화 / 활성화
  • 마우스 비활성화 / 활성화
  • 모든 바탕 화면 아이콘을 숨기거나 표시합니다
  • 바탕 화면 표시를 토글합니다.

명심해야 할 한 가지 중요한 사항은 블루투스 장치 없이는 취소 할 수 없습니다. 어떤 이유로 실패하면 다시 시작해야합니다. 따라서 키보드를 활성화 한 상태에서 잠금 해제 명령을 선택한 바로 가기로 설정하는 것이 좋습니다.


좋은 생각이야! 모든 키보드 입력을 무시하는 대신 키보드 입력이 화면을 잠그도록 (블루투스 장치없이 잠금 해제 할 수있는 기회를 주도록) 변경할 수 있습니까?
d_inevitable

더 좋습니다! 방금 다른 아이디어를 게시하려고했지만 그 작업을 시작하겠습니다!
Tim

@d_inevitable 내 새로운 답변을 살펴보면 더 깔끔합니다 (특히 두 번째 방법). 나는 그것이 작동한다고 확신합니다.
Tim

1

따라서이 작업을 수행하는 가장 좋은 방법은 알았습니다 (아포 크립 탈, 우리는 여전히 암호를 저장 하고 무언가에 입력하는 것을 가짜이기 때문에 ). 위에서 언급했듯이 암호 항목 USB 키로 암호화합니다 . 스크립트가 약간 지저분하므로 진행 상황을 설명하겠습니다.

현재 사용자의 장치는 xpath로 /etc/pamusb.conf를 통해 열거됩니다. 그런 다음 각각 xpath를 사용하여 UUID와 메이트되고 UUID가 blkid를 사용하여 장치에 매핑됩니다.

쇼 장치를 잠 그거나 잠금 해제하거나 키를 설정할 수 있습니다. ~ / .ssh / pamusb_rsa가 없으면 설치 프로그램을 실행할 때 생성됩니다. 그런 다음 장치를 선택하거나 하나만있는 경우 암호를 입력하라는 메시지가 표시됩니다. 귀하의 비밀번호는 {device} /. pamusb / .auth에 암호화되어 저장됩니다.

unlock을 실행하면 장치가 다시 열거되고 /.pamusb/.auth 파일을 하나씩 확인합니다. 발견되면 해독이 시도되고 성공하면 현재 텍스트를 받아들이는 모든 일에 암호를 입력하는 데 사용됩니다. 세션이 잠겨있 을 때만 실행을 허용하므로 너무 나쁘게 노출되지는 않습니다.

이 이름을 ~ / .bin / unity-lock-control (~ / .bin이 내 경로에 있음)로 지정하고 pam.conf의 에이전트로 "unity-lock-control lock"및 "unity-lock-control unlock"이 있습니다. .

#!/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

0

최신 정보! 일반 잠금 화면을 사용하는 방법이 있습니다! 예이!

암호의 보안 수준을 모르지만 (암호를 일반 텍스트로 저장) 최선의 방법이라고 생각합니다.

이것은 잠금 명령입니다. gnome-screensaver -d

2 개의 잠금 해제 명령이 있습니다.

No1 :

이것은 첫 번째 잠금 해제 명령입니다.

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

클릭하면 깨우고 (마우스 이동으로 인해 로그인 상자 내부를 클릭해야 함) "잠자기"검은 색 화면 대신 새 잠금 화면이 표시됩니다.

그런 다음 mypassword123!텍스트 상자에 입력하여 제출하십시오.

중대한. 어떤 이유로-아마도 xdotool이 실제로 사용되는 것 (키보드 단축키) 때문에 이중 문자를 입력 할 수 없습니다. 이 문제를 해결하려면 각 이중 문자에서 위와 같이 두 개의 명령으로 분할하십시오. 또한 숫자는 글자와는 별도로 별도의 명령을 가져야합니다. 마지막으로, Shift 키와 같은 수정 자에는 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

마우스 이동으로 깨우고 옵션은 스크립트를 실행 한 다음 종료하도록 지시합니다.


기기를 분실 한 경우 언제든지 비밀번호를 입력하기 만하면 되돌릴 수 있습니다.


2
이봐, 이것은 꽤 좋아 보이지만 불행히도 깨끗한 텍스트로 암호를 저장하는 것은 옵션이 아닙니다. 내 사용자가 sudoers 목록에있는 것처럼 루트에서 모든 것을 실행하는 것은 거의 나쁩니다. 그러나 두 가지 답변을 조합하면 효과가 있다고 생각합니다. 나는 가능한 빨리 무언가를 시험해 볼 것이다. 기본적으로 마우스가 움직이거나 키를 누르거나 Bluetooth 장치가 범위 내로 돌아올 때까지 화면을 어둡게합니다. 마우스가 움직이거나 키를 누르면 gnome-screensaver-command -lBluetooth 장치가없는 동안 암호를 입력 할 수 있도록 화면을 다시 켜고 실행 하십시오. 나는 그것이 가능해야한다고 생각합니다.
d_inevitable

나는 '마우스 이동'옵션을 빨리 보았습니다 ... xev가 그렇게 할 수 있다고 생각했습니다. 마우스가 xev 창 위로 이동하도록 설정할 수 있으며 출력이 변경되면 무언가가 있음을 알고 있습니다 일어난.
Tim

일반 텍스트로 암호를 저장하는 것은 꽤 나쁘다. 홈 디렉토리를 암호화하면 우분투에서 기본값으로 생각하지만 조금 덜 나쁩니다. 나는 그것에 대해 조금 놀아 보았고 실제로 솔루션 # 1을 훨씬 쉽게 발견했으며 실제로 해킹을 고려하지는 않습니다. 그래도 약간 변경되었습니다. mousemove 대신에, gnome-screensaver -d여전히 화면을 깨우고 훨씬 더 짧게 만들 수 있습니다. sleep(현재 0.1로 설정했지만 필요한지 궁금합니다)
Wouter Van Vliet

암호로 키에 파일을 작성하고 .ssh / id_rsa의 키를 사용하여 암호화 한 다음 암호를 해독하고 로그인을 위해 입력하는 스크립트를 작성할 수 있다고 생각했습니다. 성공하면 알려 드리겠습니다.
Fordi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.