Ubuntu 20.04でThinkPad X1 Carbon 2017の指紋認証を使う方法
広告
ThinkPad X1 Carbon 2017の指紋ハードウェアIDは138a:0097なんだが、残念ながらLinuxの公式指紋管理モジュールはこれに対応していない。ネット上にはこれをリバースエンジニアリングしてLinuxで使えるようにしてる猛者がたくさんいるけど、さんざんやってみた感じ、やっぱり微妙だなあという印象だった。
昔あったのがlibfprintをパッチする方法。ただそれも半年くらいしか動かなくて、ほどなくlibfprintが2.0を出したせいで元のパッチはあっさり死んだ。
広告
ところが最近、別の方法でこれを解決した人が出てきた。Pythonで指紋管理とドライバを直接書いて、例のクソみたいなlibfprintを置き換えるってやり方で、これなら動く。uunicornやMarcoなど裏方の人たちの仕事に感謝。

$ sudo apt remove fprintd
$ sudo add-apt-repository ppa:uunicorn/open-fprintd
$ sudo apt-get update
$ sudo apt install open-fprintd fprintd-clients python3-validity
$ fprintd-enroll
元のfprintdを消して新しいopen-fprintを入れて、バックエンド管理を差し替えて、自分で指紋を登録すれば完了。
指紋認証デバイスに以前指紋を登録したことがあると起動時にエラーが出ることがあるので、リセットが必要:
$ sudo systemctl stop python3-validity
$ sudo validity-sensors-firmware
$ sudo python3 /usr/share/python-validity/playground/factory-reset.py
$ sudo systemctl start python3-validity
$ fprintd-enroll
最後にpamで指紋ログインとロック解除を有効にする:
sudo pam-auth-update
スペースで指紋にチェックを入れるだけ。
これで指紋を使ってノートPCのロック解除とログインができるようになった。
もちろんこれには問題があって、sudoなんかのコマンドでも指紋を要求されるようになることがある。さすがにそれはアホらしいので、関連ポリシーをいじっておく:
ファイルを編集:
sudo vim /etc/pam.d/sudo
追記:
auth sufficient pam_unix.so try_first_pass likeauth nullok
これで基本的にPCのロック解除時にしか指紋は使われなくなる。以前の顔認証も同じ感じ。
リンク:
コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。