fprint
fprint のホームページ より:
- fprint プロジェクトは商用の指紋認証デバイスのサポートという Linux デスクトップの隙間を埋めることを目指しています。
ノートパソコンに内蔵されている指紋リーダーを使用して PAM を使ったログインを行うというアイデアです。この記事ではバックアップ用にログインで通常のパスワードを使う方法も説明しています (多くの理由により、指紋スキャナーのみの使用は推奨されません)。
目次
要件
使っている指紋スキャナーがサポートされていることを確認してください。あなたのデバイスがサポートされているかどうかは この サポートされているデバイスのリストで確認できます。あなたのデバイスを確認するには、次を入力してください:
$ lsusb
インストール
公式リポジトリから fprintd をインストールしてください。imagemagick も必要かもしれません。
デバイスによっては、libfprint の別のフォークが必要で、メインの libfprint とは (まだ?) マージされていないようです:
- libfprint-tod — タッチベースのセンサー用。
- libfprint-elanmoc2 — ELANの
04f3:0c4c
が待機していて、マージが必要。
- libfprint-elanmoc2-newdrvs — 実験的な
04f3:0c4c
または04f3:0c00
用、マージ待ち。
- https://gitlab.freedesktop.org/geodic/libfprint/-/tree/elanmoc2 || libfprint-elanmoc2-newdrvs-gitAUR
設定
ログイン設定
pam_fprintd.so
を sufficient として /etc/pam.d/system-local-login
の auth セクションの一番上に追加してください:
/etc/pam.d/system-local-login
auth sufficient pam_fprintd.so auth include system-login ...
これで最初に指紋によるログインが試行され、それが失敗したりユーザーのホームディレクトリに指紋署名がない場合、パスワードによるログインになります。
同じように /etc/pam.d/{login,su,sudo,gdm,lightdm}
内の他のファイルを修正することもできます。例えば GNOME の polkit 認証なら /etc/pam.d/polkit-1
です。
pam_fprintd.so
を sufficient として追加すると、指紋署名が登録済みのときにパスワード認証ではなく指紋認証が促されます。パスワード認証と指紋認証を両方使えるようにするには先頭に以下の内容を追加します:
/etc/pam.d/sudo
auth sufficient pam_unix.so try_first_pass likeauth nullok auth sufficient pam_fprintd.so ...
最初にパスワードを促され、入力せずに Enter
キーを押すと指紋認証が行われます。
指紋とパスワードの入力を同時に促したい場合は、pam-fprint-grosshackAUR を使用することができます。これは、Gnome の組み込み polkit エージェントのような、空白のパスワード入力を許さないグラフィカルなプログラムで必要になることがあります。このパッケージを使用するには、必要なファイルの先頭に次の行を追加します:
auth sufficient pam_fprintd_grosshack.so auth sufficient pam_unix.so try_first_pass nullok ...
指紋署名の作成
登録するには、認証エージェントを実行する必要があります。
指の署名を追加するには、次を実行してください:
$ fprintd-enroll
または、5 本の指全ての署名を新しく作成するには:
$ fprintd-delete "$USER" $ for finger in {left,right}-{thumb,{index,middle,ring,little}-finger}; do fprintd-enroll -f "$finger" "$USER"; done
指定された指をスキャンするように指示されます。右手の人差し指を 5回スワイプしてください。その後、/var/lib/fprint/
に署名が作成されます。
また、認証エージェントなしで登録することもできます。
# fprintd-enroll user
新しく作成されたフィンガープリントを確認するには、次のようにします:
$ fprintd-verify
詳しくは、fprintd(1) を見て下さい。
登録の制限
デフォルトでは新しい指紋を登録するのにパスワードを入力する必要はありません。Polkit ルールを使うことでこの動作を変更することができます。
polkit の設定ファイルは、次の2つの場所に保存されています。
/etc/polkit-1/rules.d/
/usr/share/polkit-1/rules.d/
以下の例ではスーパーユーザーだけが指紋を登録できるようになります:
/etc/polkit-1/rules.d/50-net.reactivated.fprint.device.enroll.rules
polkit.addRule(function (action, subject) { if (action.id == "net.reactivated.fprint.device.enroll") { return subject.user == "root" ? polkit.Result.YES : polkit.result.NO } })
トラブルシューティング
利用可能なデバイスがない
サポートされているデバイス が見つからない、または既に開いている(使用中)と言われる場合は、fprintd
のログを journal で確認してください:
次のようなログエントリが見つかるかもしれません:
fprintd[2936592]: Corrupted message received fprintd[2936592]: Ignoring device due to initialization error: unsupported firmware version
Fwupd でデバイスのファームウェアを最新の状態にしてください。
サスペンド後のログインプロンプト表示時に gdm がハングする
この問題は libfprint repositoryで説明されています。開発者の答えは以下の通りです:
- 現時点では、BT USBドングルが初期化されている最中に切断されてしまっているのではないかと推測しています。その結果、btusbがファイルウェアをロードしようとして全てがスタックされてしまっている(これには10秒のタイムアウトが設定されており、ちょうど10秒未満のハングが発生している原因を説明しています)。rfkillスイッチが切り替えられた時には、このようにbluetoothドングルが切断されることが想定されていますので、それ自体は正常です。ただし、デバイスが突然切断されるケースが適切に処理されず、タイムアウトするようです。
提案されている修正方法は、以下のように作成することです:
/etc/modprobe.d/bluetooth-blacklist.conf
blacklist btusb
または、すぐに以下のコマンドを実行します:
# rmmod btusb
その後、デバイスの初期化を試みることはなくなります。
デバイスをサスペンド中に予期しないエラーが発生
この問題は libfprint repositoryで説明されています:
- RAM へのサスペンドではなく、s2idle を行うようにノートパソコンの設定を変更する必要があります。BIOS を "Windowsモード" に切り替える必要があるかもしれません。
指紋認証が Polkit エージェントで有効にならない
Linux PAM に指紋ルールを追加した後、指紋認識は SDDM と sudo に対してのみ機能しますが、polkit に対しては機能しません。
50-default.rules
ファイルを /etc/
にコピーし、グループ名 wheel
をユーザーグループに変更します。
# cp /usr/share/polkit-1/rules.d/50-default.rules /etc/polkit-1/rules.d/
/etc/polkit-1/rules.d/50-default.rules
polkit.addAdminRule(function(action, subject) { return ["unix-group:wheel"]; });
デバッグ
次の環境変数とコマンドラインフラグを使用します:
# G_MESSAGES_DEBUG=all /usr/lib/fprintd -t