この記事は、Zennにも投稿しています。
Linuxで、Windows Helloのように色々な所で顔認証を使う方法
1. Howdyをインストール
基本的にLinuxで顔認証したい場合はhowdyを使う。これをまずはインストールする。ただし、リリース版は非常に古いため、git版を使うことを前提にする。
ArchであればAURにパッケージがあるため、
などとしてインストールできる
2. howdyの設定
まずは目的のカメラを探そう。例えば
mpv
がインストールされていればなどとしてカメラ映像を見ることができる。
video0
の数字部分を変えながらどれが正解か試して探す。目的のカメラのパスが分かったら
で設定ファイルを開き(nanoがインストールされている必要がある)、
`
`
の行に先程の
/dev/video0
などを書き足す。次に、
を実行し、顔を登録する。登録し終わったら
で、きちんと顔が認識されていることを確認する。
3. PAMの設定
ここまででHowdy自体の設定は終わったが、次にどこでHowdyを使うか決めるため、PAMの設定をいじる。まず、
を実行してみると、様々なファイルが見えるはず。例えば
sudo
というファイルがあるはずで、これはsudo
を使う際にどのような認証方法を使うかの設定を記述している。sudo
ではまずsudoの挙動を設定するために好きなエディタで
sudo
ファイルを開いてみようすると、
このようなファイルとなっているはずだ。この
#%PAM
の行の後にを追加して保存する。なお、日本語版Arch Wikiでは若干違う記述になっているが、それは古いものなので注意。
これで
sudo
を実行すると、顔認証によって認証がされるはず。GUI特権ダイアログ
次に、ファイラーなどで特権操作を行う場合などに表示されるGUIのダイアログで顔認証を使えるようにする。自分はKDEでしか確認していないが恐らく他のDEでも動くはず。このためにはpolkitの設定を変更する。
ただ、自分の場合はpolkitのPAM設定ファイルが無かったが、このissue
Does not work with GNOME GUI password popups · Issue #623 · boltgolt/howdy
When I try to enter any application using the GNOME PolKit window (vscode, systemctl), the camera LED flashes, the popup doesn't appear until I re-enable howdy. sudo -i works fine with same setup a...
github.com
を見ると、
/usr/lib/pam.d/polkit-1
をコピーしてくればいいようだ。この
polkit-1
ファイルを編集し、先と同じようにHowdyの設定を追加する。これで、GUIでの特権認証時に顔認証できるようになる。
KDE(ロック解除)
次に、KDEのロック解除を設定する。これはKDEから明示的にロックした場合に用いられるものであり、SDDMなどのディスプレイマネージャによって行われる初回ロック解除時とは違うものであることに注意。
これも先程と同様に
これも先程と同様に
pam.d
フォルダにkde
というファイルがあるはずなのでそれを同じく編集するだけ。SDDM(非推奨)
KDEのデフォルトディスプレイマネージャであるSDDMは起動直後やスリープ解除後のログインなどを司り、これについても先程と同様に
sddm
というファイルを編集することで顔認証による解除ができるようになる…のだが、これはおすすめしない。というのも、SDDMを顔認証で解除するとKWalletのロックが解除されず、パスワードを求められるからである。KWalletとは資格情報を安全に保管しておくためのシステムで、git-credential-managerなどで内部的に使われている。
KWalletのパスワードはユーザーパスワードと基本的に同じため、SDDMで直接パスワードが入力された場合自動でKWalletのロックを解除できる。しかし、Howdyではパスワードを入力しないためそうはいかない。これを実現するためにはHowdyにパスワードを保管しておく必要があり、セキュリティ上よろしくないため実装されていない。詳しくは↓
Integration with KWallet · Issue #56 · boltgolt/howdy
Just installed Howdy on Manjaro, and was able to setup everything fairly easily by following the ArchWiki instructions. My use case is to just use howdy at the graphical login screen. So, I've modi...
github.com
今回はKDE(KWallet)の話だが、Gnome Keyringなどでも同じ問題が起きると考えられる。