「Fprint」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(他言語へのリンクを修正)
 
(5人の利用者による、間の35版が非表示)
1行目: 1行目:
  +
{{Lowercase title}}
 
[[Category:入力デバイス]]
 
[[Category:入力デバイス]]
[[bg:Fprint]]
 
 
[[en:Fprint]]
 
[[en:Fprint]]
[[fa:Fprint]]
+
[[pt:Fprint]]
  +
[[zh-hans:Fprint]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Fingerprint-gui}}
 
{{Related|Fingerprint-gui}}
{{Related4|ThinkFinger}}
+
{{Related|ThinkFinger}}
 
{{Related articles end}}
 
{{Related articles end}}
[http://www.freedesktop.org/wiki/Software/fprint/ fprint のホームページ] より:
+
[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}} パッケージ内で使用できます。
   
 
== インストール ==
 
== インストール ==
   
[[official Repositories|公式リポジトリ]]から {{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]] を使っているなら、ログインメニューで指紋オプションが使えるはずです。このセクションは飛ばして下さい。}}
 
  +
* [[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 を使ったログインを行うというアイデアです。この記事ではバックアップ用にログインで通常のパスワードを使う方法も説明しています (多くの理由により、指紋スキャナーのみの使用は推奨されません)。

要件

ノート: デバイスのリストは不定期更新であり不完全です。リストにデバイスがない場合でも、AUR パッケージを使う前に以下の手順を試す価値があります。

使っている指紋スキャナーがサポートされていることを確認してください。あなたのデバイスがサポートされているかどうかは サポートされているデバイスのリストもしくは、サポートされていないデバイスのリストあなたのデバイスを確認するには、次を入力してください:

$ lsusb

lsusb ツールは、usbutils パッケージ内で使用できます。

インストール

公式リポジトリから fprintd をインストールしてください。imagemagick も必要かもしれません。

デバイスによっては、libfprint の別のフォークが必要で、メインの libfprint とは (まだ?) マージされていないようです:

  • libfprint-tod — タッチベースのセンサー用。
https://gitlab.freedesktop.org/3v1n0/libfprint/-/tree/tod || libfprint-tod-gitAUR
  • libfprint-elanmoc2 — ELANの 04f3:0c4c が待機していて、マージが必要。
https://gitlab.freedesktop.org/Depau/libfprint/-/tree/elanmoc2 || libfprint-elanmoc2-gitAUR
  • libfprint-elanmoc2-newdrvs実験的な 04f3:0c4c または 04f3:0c00 用、マージ待ち。
https://gitlab.freedesktop.org/geodic/libfprint/-/tree/elanmoc2 || libfprint-elanmoc2-newdrvs-gitAUR

設定

ログイン設定

ノート:
  • GDM を使っているなら、ログインメニューで指紋オプションが使えるはずです (使えない場合、ユーザーを input グループに追加してみてください)。このセクションは飛ばして下さい。
  • SDDM を使う場合、SDDM#指紋認証の利用を参照してください。

pam_fprintd.sosufficient として /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.sosufficient として追加すると、指紋署名が登録済みのときにパスワード認証ではなく指紋認証が促されます。パスワード認証と指紋認証を両方使えるようにするには先頭に以下の内容を追加します:

/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/ の設定ファイルはパッケージ更新時に上書きされます。最初に設定ファイルを /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 に指紋ルールを追加した後、指紋認識は SDDMsudo に対してのみ機能しますが、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
翻訳ステータス: このページは en:Fprint の翻訳バージョンです。最後の翻訳日は 2024-02-22 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。