「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が置き換えられた場合、依存せずに画面のロックを解除するための新しいコマンドは何でしょうgnome-screensaver-commandか?


@Braiamこの質問は14.04以降に固有です。なぜタグを削除したのですか?gnome-screensaver-command以前のバージョンでの使用を避ける理由はありません!
d_inevitable 2014年

あなた自身が答えました:14.04 以降。14.04は、それが影響を受ける唯一のバージョンである場合にのみ使用する必要があります。これは、14.10には該当しないためです。ところで、バグについて質問しないでください。
Braiam 2014年

@ブライアム1.私は後で知りません!どうやって?それ以降のバージョンはまだありません。現在、たったの14.04です。そして、私はバグについて尋ねませんでした。よろしければ、編集内容を元に戻します。
d_inevitable 2014年

マジ?cdimage.ubuntu.com/daily-live/currentを試してみてください。
Braiam 2014年

1
リリースではない@Braiam。
d_inevitable 2014年

回答:


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、2015年

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

両方のコマンドで、およびをそれぞれの番号に変更します。

これのために:

  • キーボードを無効/有効にします
  • マウスを無効/有効にします
  • すべてのデスクトップアイコンを非表示/表示します
  • デスクトップの表示を切り替えます。

覚えておかなければならない重要なことの1つは、Bluetoothデバイスなしでは元に戻すことはできません。何らかの理由で失敗した場合は、再起動する必要があります。そのため、キーボードを有効のままにして、選択したショートカットにロック解除コマンドを設定することをお勧めします。


ちょっといいアイデア!すべてのキーボード入力を無視する代わりに、キーボード入力が画面をロックする(Bluetoothデバイスなしで画面ロックを解除する機会を与える)ように変更できますか?
d_inevitable 2014年

それはさらに良いです!別のアイデアを投稿しようとしていましたが、これから作業します!
Tim

@d_inevitable私の新しい答えを見てください、それはすっきりしています(特に2番目の方法)。私はそれがうまくいくと確信しています。
Tim

1

(我々はまだ、パスワードを保存していることから、作り話だから、私はこれを行うための「最良」の方法を考え出した事にそれを入力して偽造になります)私は上記のコメントのように、パスワードの暗号化、エントリーUSBキーを。少し面倒なスクリプトなので、何が起こっているのかを説明します。

現在のユーザーのデバイスは、xpathを使用して/etc/pamusb.confを調べることによって列挙されます。次に、それぞれがxpathを使用してUUIDと結合され、UUIDがblkidを使用してデバイスにマップされます。

ショーデバイスのロック、ロック解除、またはキーのセットアップを選択できます。セットアップを実行すると、〜/ .ssh / pamusb_rsaが存在しない場合は作成されます。次に、デバイスを選択し(デバイスが1つしかない場合は選択しないで)、パスワードを入力するように求められます。PWは{device} /。pamusb / .authに暗号化されて保存されます。

ロック解除を実行すると、デバイスが再び列挙され、1つずつ/.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つあります。

いいえ1:

これは最初のロック解除コマンドです:

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

クリックすると、スリープ状態が解除され(マウスが移動するため、ログインボックス内をクリックする必要があります)、「スリープ中」の黒い画面ではなく、新しいロック画面が表示されます。

次にmypassword123!、Enterキーを押して入力し、テキストボックスに送信します。

重要。何らかの理由で-おそらくxdotoolが実際に使用されることを意図しているため(キーボードショートカット)-二重文字を入力することはできません。これを回避するには、(上記のように)各二重文字で2つのコマンドに分割します。また、数字には文字とは別の独自のコマンドが必要です(上記も同様)。最後に、修飾子(shiftなど)には、Returnキーと同様に、別の修飾子が必要です。


いいえ2:

これは2番目です。それは少し良く、ハックが少ないですが、多くの設定が必要です。

最初に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リストに載っているのと同じくらい、ルートですべてを実行するのは悪いことです。しかし、私はあなたの2つの答えの組み合わせがうまくいくと思います。なるべく早く試します。基本的に、マウスが移動するか、キーが押されるか、Bluetoothデバイスが範囲内に戻るまで、画面を暗くします。マウスが動くかキーが押された場合は、画面をオンにして実行gnome-screensaver-command -lし、Bluetoothデバイスが存在しないときにパスワードを入力できるようにします。なんとかなると思います。
d_inevitable 2014年

私はすぐに「マウス移動」オプションを見ました... xevがそれを実行できるかもしれないと思っていましたか?マウスがxevウィンドウ上を移動するように設定でき、出力が変化した場合、何かがわかっています起こりました。
ティム

そうですね、プレーンテキストでパスワードを保存するのはかなり悪いです。あなたのホームディレクトリを暗号化する-私は今Ubuntuのデフォルトだと思う-それでも少し悪くはないでしょう。私は少し遊んでみましたが、実際には解決策#1の方がはるかに簡単であり、それほどハックだとは考えていません。ただし、小さな変更を加えました。マウスムーブの代わりに、gnome-screensaver -d画面をウェイクアップし、ずっと短くできるようにしたのでsleep(これを0.1に設定しましたが、まったく必要かどうか疑問に思います)
Wouter Van Vliet 14

パスワードを使用してキーにファイルを書き込み、.ssh / id_rsaのキーを使用して暗号化し、それを復号化してログイン用に入力するスクリプトを作成できると考えていました。成功した場合はお知らせします。
Fordi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.