復元時の仮想端末のロック

復元時の仮想端末のロック

多くの画面ライブラリ(私のもの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名前の付いたデバイスでキーを無効にしてから有効にすると正常に動作するようです。F1F12xmodmapsystemdsleep.targetresume.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)。

関連情報