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