
多くの画面ライブラリ(私のものi3ロック) は他の仮想端末へのアクセスをブロックしません。つまり、VTでセッションを開くと、デスクトップがロックされていても(復元したときなど)、悪意のある人がVTに切り替えてすべての操作を実行できることを意味します。
時にはVTに切り替えてからグラフィック環境に戻り、VTからログアウトするのを忘れてしまうので、これは私にとって本当の問題です。
質問は次のとおりです。既存の画面ロックにVTロックを追加するには?
Arch Linux wikiでは、以下をお勧めします。XorgでVTを無効にする、Xサーバーの次の構成を使用します。
Section "ServerFlags"
# disable VT switching:
Option "DontVTSwitch" "True"
# disable “zapping”, ie. killing the X server with Ctrl-Alt-Bksp:
Option "DontZap" "True"
EndSection
上記のように、私はVTを使用しているので、これはオプションではありません。おそらく1つの解決策はこれらのオプションを動的に設定してリセットすることですが、少なくとも通常(setxkbmap
キーボードレイアウトなどxset
)実行時にXサーバーオプションを変更する方法が見つかりませんでした。可能ですか?
私はまた、このコマンドがvlock -a
テキストベースのVTから呼び出されたときにセッションをロックし、VT遷移を無効にすることを発見しました。ただし、グラフィック環境では機能しませんが、とにかくグラフィック画面ライブラリには重複します。
この問題をどのように解決できますか?
答え1
私はあまりエレガントな方法でこれを行いました。まず、最初の端末chvt
(マイロッカーが実行される場所)に変更し、slock
名前の付いたデバイスでキーを無効にしてから有効にすると正常に動作するようです。F1F12xmodmap
systemd
sleep.target
resume.target
systemd
単位:[Unit] Description=Disable Switching VTS when locked Before=sleep.target [Service] User=root Type=forking Environment=DISPLAY=:0 ExecStartPre=chvt 1 ExecStart=/path/to/disableVTS.sh [Install] WantedBy=sleep.target
disableVTS.sh
スクリプト:#!/bin/sh xmodmap -e 'keycode 67 =' xmodmap -e 'keycode 68 = '
答え2
vlock
遅延使用は私にとって効果的です。
Ctrl私のXサーバーはすでに実行中であり、Alt-を使用してVT-1に切り替え、実行し、次にF1-sleep 3; vlock -a
を使用してVT-7に戻しました。AltF7
最初はVT-7にすばやく切り替えることができず、ロックを解除して再試行する必要がありました。 2回目の試みではうまくいき、Xが現れてうまくいきました。 VT-1に戻すと、ロックを解除しないと切り替えられない端末がロックされます。
バックグラウンドで作業しないでくださいvlock
。セッションが終了するまで、メッセージは無限ループになります。
vlock -a
たぶんstartx
カスタムスクリプトを挿入して実行することで/usr/bin/startx
自動化することができます。スクリプトに遅延を含めることは、並列に実行することも、バックグラウンドで実行できない場合は役に立ちません(もう一度試したいかどうかはわかりませんvlock
)。