ノートブックカバーが閉じているときに指紋認識を無効にする方法は?

ノートブックカバーが閉じているときに指紋認識を無効にする方法は?

最近、ノートパソコンで指紋認証に成功しました。Goodix Linuxの開発DiscordコミュニティとgithubユーザーInfinytumとMichael Teuscherのdriver/538dフォークhttps://github.com/infinytum/libfprint/tree/driver/538d

ただし、指紋のログインfprintd-enrollsudoアクセスを有効にした後にsudo pam-auth-update問題が検出されました。

外部モニタで作業するたびに、カバーが閉じているときにパスワードを入力する前に指紋の確認がタイムアウトするまで待つ必要があるため、sudo数秒の遅延が発生します。

username@host:~/ron/libfprint$ sudo ls
Place your finger on the fingerprint reader
Place your finger on the reader again
Place your finger on the reader again
Place your finger on the reader again
Verification timed out
[sudo] password for username:

sudoパスワードを入力する前に指紋がタイムアウトするのを待つ必要がないように、ノートブックカバーが閉じているときに指紋の確認を無効にするにはどうすればよいですか。

ベストアンサー1

ラップトップのカバーを閉じるときに指紋認証を無効にし、再度開いたときに再度有効にするために、カバーを閉じるときにサービスを停止してブロックし、カバーを閉じるときにキャンセルするカスタムスクリプトにacpidイベントバインディングを使用します。サービスカバーを開いて起動します。button/lid.*fprintdfprintd

コンテンツテストでHDMIケーブルが接続されていることも確認しました/sys/class/drm/card0-HDMI-A-1/status

次の手順に従ってください。

  1. /etc/acpi/laptop-lid.sh次の内容でファイルを作成します。

    #!/bin/bash
    
    lock=$HOME/fprint-disabled
    
    if grep -Fq closed /proc/acpi/button/lid/LID0/state &&
       grep -Fxq connected /sys/class/drm/card0-HDMI-A-1/status
    then
      touch "$lock"
      systemctl stop fprintd
      systemctl mask fprintd
    elif [ -f "$lock" ]
    then
      systemctl unmask fprintd
      systemctl start fprintd
      rm "$lock"
    fi
    
    
  2. ファイルを実行可能にする

    chmod +x /etc/acpi/laptop-lid.sh
    
  3. /etc/acpi/events/laptop-lid次の内容でファイルを作成します。

    event=button/lid.*
    action=/etc/acpi/laptop-lid.sh
    
  4. acpid次のコマンドを使用してサービスを再起動します。

    sudo service acpid restart
    

指紋は、ふたが開いているときにのみ使用されます。

fprintdラップトップがシャットダウンした状態で接続を切断して再接続したときにサービスの正しい状態を復元するには、systemdinitファイルで上記のスクリプトを呼び出すだけです。これを行う手順は次のとおりです。

  1. /etc/systemd/system/laptop-lid.service次の内容でファイルを作成します。

    [Unit]
    Description=Laptop Lid
    After=suspend.target
    
    [Service]
    ExecStart=/etc/acpi/laptop-lid.sh
    
    [Install]
    WantedBy=multi-user.target
    WantedBy=suspend.target
    
  2. システム構成ファイルの再ロード

    sudo systemctl daemon-reload
    
  3. サービス開始

    sudo systemctl start laptop-lid.service
    
  4. 起動時に自動的に起動するようにサービスを有効にします。

    sudo systemctl enable laptop-lid.service
    

これで、コンピュータの電源が切れているときに接続/接続を解除しても、ステータスが正しくなければなりません。

答えからコードを生成するために使用された参照:

おすすめ記事