ThinkFinger
関連記事
ThinkFinger は旧式の IBM/Lenovo ThinkPad に搭載されていた SGS Thomson Microelectronics 製の指紋リーダーのドライバーです。
ThinkWiki には ThinkPad に搭載されている 様々な指紋リーダーのリスト があります。新しい機種では別のリーダーを使っているため ThinkFinger では動作させることができません。
目次
インストール
公式リポジトリから thinkfinger をインストールしてください。
設定
TF-Tool
ThinkFinger をテストするには tf-tool を使います。tf-tool は USB デバイスに直接アクセスするため、root で実行する必要があります。tf-tool --acquire
を実行すると /etc/pam_thinkfinger/test.bir
が生成されるので tf-tool --verify
で正しく認証できているか確認してください。tf-tool --add-user <username>
で (pam での認証に必要な) /etc/pam_thinkfinger/username.bir
にあなたの指紋を取得・保存します。
Pam
PAM は Sun によって開発された Pluggable Authentication Module です。
/etc/pam.d/login
ログイン時に指紋をつかって認証したい時は /etc/pam.d/login
ファイルを以下のように変更してください:
#%PAM-1.0 auth sufficient pam_thinkfinger.so auth required pam_unix.so use_first_pass nullok_secure account required pam_unix.so password required pam_unix.so session required pam_unix.so
/etc/pam.d/su
このファイルを変更することで指紋で su
コマンドの認証ができます:
#%PAM-1.0 auth sufficient pam_rootok.so auth sufficient pam_thinkfinger.so auth required pam_unix.so nullok_secure try_first_pass account required pam_unix.so session required pam_unix.so
/etc/pam.d/sudo
このファイルを変更することで指紋で sudo
コマンドの認証ができます:
#%PAM-1.0 auth sufficient pam_thinkfinger.so auth required pam_unix.so nullok_secure try_first_pass auth required pam_nologin.so
/etc/pam.d/xscreensaver
XScreensaver は多少厄介です。まず、/etc/pam.d/xscreensaver
ファイルを以下のように設定してください:
auth sufficient pam_thinkfinger.so auth required pam_unix_auth.so try_first_pass
ただし、これだけでは xscreensaver が /dev/misc/uinput
や /dev/bus/usb*
を読み書きできないため上手く動作しません。新しいグループに読み書き権限を与える udev ルールを設定する必要があります。
まず、新しいグループを作ります。ここでは "fingerprint" を使います:
# groupadd fingerprint
指紋リーダーで Xscreensaver をアンロックしたいユーザーをグループに追加:
# gpasswd -a <user> fingerprint
変更を適用するために一度ログアウトしてログインしなおしてください。
次に udev ルールのディレクトリの中で uinput と bus/usb を検索:
$ grep -in uinput /etc/udev/rules.d/*
/etc/udev/rules.d/udev.rules:222:KERNEL=="uinput", NAME="misc/%k", SYMLINK+="%k" /etc/udev/rules.d/udev.rules:263:KERNEL=="uinput", NAME="input/%k"
$ grep -in "bus/usb" /etc/udev/rules.d/*
/etc/udev/rules.d/udev.rules:318:SUBSYSTEM=="usb_device", ACTION=="add", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev};printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0664" /etc/udev/rules.d/udev.rules:320:SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0664"
grep で見つけた行を新しい udev ルールファイルにコピー:
/etc/udev/rules.d/99fingerprint.rules
KERNEL=="uinput", NAME="misc/%k", SYMLINK+="%k", MODE="0660", GROUP="fingerprint" SUBSYSTEM=="usb_device", ACTION=="add", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev};printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0664", GROUP="fingerprint" SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0664", GROUP="fingerprint"
/etc/udev/rules.d/99fingreprint.rules
のルールと /etc/udev/rules.d/udev.rules
のルールの違いは末尾に MODE="0664", GROUP="fingerprint"
または MODE="0660", GROUP="fingerprint"
が追加されているかどうかだけです。
カスタム udev ルールを追加したら、指紋ファイルにアクセスできるようにユーザーに権限を与えてください:
$ chown $USERNAME:root /etc/pam_thinkfinger/$USERNAME.bir $ chmod 400 /etc/pam_thinkfinger/$USERNAME.bir $ chmod o+x /etc/pam_thinkfinger
最後に、/usr/bin/xscreensaver
から root の setuid を削除してください。削除しないと Xscreensaver を指紋リーダーでアンロックできません:
# chmod -s /usr/bin/xscreensaver
/etc/pam.d/gdm
/etc/pam.d/gdm
を編集して一番上に以下の行を追加:
/etc/pam.d/gdm
auth sufficient pam_thinkfinger.so
そして auth required pam_unix.so
を以下のように修正:
/etc/pam.d/gdm
auth required pam_unix.so use_first_pass nullok_secure
/etc/pam.d/xdm
/etc/pam.d/xdm
を以下のように編集してください:
/etc/pam.d/xdm
#%PAM-1.0 auth sufficient pam_thinkfinger.so auth required pam_unix.so use_first_pass nullok_secure auth required pam_nologin.so auth required pam_env.so account required pam_unix.so password required pam_unix.so session required pam_unix.so session required pam_limits.so
SLiM
SLiM ログインマネージャから thinkfinger を使うには、PAM のサポートを有効にする必要があります。
ABS から slim パッケージのソースを取得して、PKGBUILD を編集して make
コマンドで PAM を有効にした SLiM をビルドします:
SLiM PKGBUILD
make USE_PAM=1
パッケージをビルドしたらインストールしてください。
そして /etc/pam.d/slim
を作成:
/etc/pam.d/slim
#%PAM-1.0 auth sufficient pam_thinkfinger.so auth requisite pam_nologin.so auth required pam_env.so auth required pam_unix.so account required pam_unix.so session required pam_limits.so session required pam_unix.so password required pam_unix.so
SLiM を再起動したら指紋認証でログインができるようになります。
他の指紋リーダーソフトウェア
別の指紋リーダーソフトウェアとして Fprint が存在し、新しい ThinkPad の指紋リーダーを使うことができる場合があります。
参照
- https://www.thinkwiki.org/wiki/Talk:How_to_enable_the_fingerprint_reader
- http://thinkfinger.sourceforge.net/
- https://bbs.archlinux.org/viewtopic.php?id=36134
- https://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger
- https://www.thinkwiki.org/index.php?title=Installing_Ubuntu_6.06_on_a_ThinkPad_T43#Fingerprint_Reader