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
に依存せずに画面のロックを解除する新しいコマンドはどうなるかということです。
これは私のために働いた:
コマンドラインで:
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
最初にサインインすると画面キーボードが表示されますが、閉じることができます。
この後gnome-screensaver-command -d
は機能します。
https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/130716 でbenshaydenから取得
残念ながらこれを行う方法はありません:(
更新-方法を見つけました。私の 新しい回答をチェックしてください
これは私の以前の解決策です-使用することはお勧めできません。携帯電話を紛失してもロック解除できません。ロックを解除するには再起動する必要があります
私は最終的に解決策を思い付きました-そもそもそれをロックしないでください。これは奇妙に聞こえるかもしれません-耐えてください。
ロックする代わりに、マウスとキーボードを無効にし、すべてのデスクトップアイコンを非表示にして、デスクトップに切り替えました。 (ランチャーなど)より多くのものを非表示にすることもできますが、とにかく非表示にします。
このコマンドには少しセットアップが必要です。
インストール: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デバイスがないと元に戻せないことです。何らかの理由で失敗した場合は、再起動する必要があります。そのため、キーボードを有効にして、選択したショートカットにロック解除コマンドを設定することをお勧めします。
したがって、私はこれを行うための「最良の」方法を考え出しました(私はまだパスワードを保存しているので、暗号化されていませんものに入力することを偽装します)、上記でコメントしたように、パスワードを暗号化しますtoエントリUSBキー。スクリプトは少し複雑なので、何が起こっているのかを説明します。
現在のユーザーのデバイスは、xpathで/etc/pamusb.confを調べることにより列挙されます。次に、それぞれがxpathを使用してUUIDと結合され、Ukidがblkidを使用してデバイスにマップされます。
ロック、ショーデバイスのロック解除、またはキーのセットアップを選択できます。セットアップを実行すると、〜/ .ssh/pamusb_rsaが存在しない場合は作成されます。次に、デバイスを選択する(または、デバイスが1つしかない場合は選択しない)ように求められ、パスワードを入力します。 PWは{device} /。pamusb/.authに暗号化されて保存されます。
ロック解除を実行すると、デバイスが再度列挙され、/。pamusb/.authファイルを1つずつ確認します。発見された場合、復号化が試みられ、成功した場合、その時点でテキストを受け入れるものにパスワードを入力するために使用されます。 のみセッションがロックされているときに実行を許可します。
これに〜/ .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
更新!通常のロック画面を使用する方法があります!イェーイ!
パスワードの安全性(パスワードをプレーンテキストで保存すること)はわかりませんが、可能な限り最高だと思います。
これはロックコマンドです:gnome-screensaver -d
2つのロック解除コマンドがあります:
No1:
これは最初のロック解除コマンドです。
gnome-screensaver -d && xdotool type mypassword12 && xdotool key Return
クリックすると、スリープが解除され(マウスの動きによりログインボックス内をクリックする)、「スリープ」状態の黒い画面ではなく、ニースの新しいロック画面が表示されます。
次に、mypassword123!
を入力して入力し、送信するためにテキストボックスに入力します。
重要。何らかの理由で-おそらくxdotoolの実際の使用目的(キーボードショートカット)のために-2文字を入力することはできません。これを回避するには、2文字ごとに2つのコマンドに分割します(上記を参照)。また、数字には文字とは別の独自のコマンドが必要です(上記も同様)。最後に、Returnキーと同様に、修飾子(Shiftなど)には別の修飾子が必要です。
No2:
これは2番目です。それは少し良くてハックが少ないですが、多くの設定が必要です。
最初にactionazをインストールします:
Sudo apt-get install actionaz
新しいスクリプトを開き、正しいアイテムをフローにドラッグします。 (完成したものをダウンロードできます here 。これをダウンロードすることを選択した場合は、それを開き、[テキストの書き込み-ここにパスワード]をダブルクリックし、パスワードを入力します)。
165:555
をコピーして[位置]ボックスに貼り付けます。 (画面側に応じて、これは異なる場合があります。パスワードボックスをクリックするようにしてください。クリックしないと機能しません)。Unlock.ascr(または任意の名前-パスワードが入っていることを宣伝したくなかった)としてホームフォルダーに保存します。
近接コマンドを次のように設定します。
xdotool mousemove 0 0 && actionaz unlock.ascr -ex
マウスを動かすと目が覚め、オプションによってスクリプトが実行され、最後に終了するように指示されます。
デバイスを紛失した場合は、いつでもパスワードを入力できるため、元に戻すことができます。