ThinkFinger

提供: ArchWiki
移動先: 案内検索

関連記事

ThinkFinger は旧式の IBM/Lenovo ThinkPad に搭載されていた SGS Thomson Microelectronics 製の指紋リーダーのドライバーです。

ThinkWiki には ThinkPad に搭載されている 様々な指紋リーダーのリスト があります。新しい機種では別のリーダーを使っているため ThinkFinger では動作させることができません。

警告: ThinkFinger-svn の rev 72 以上では uinput モジュールをロードする必要があります。

インストール

公式リポジトリから 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
ヒント: この機能を使う時はかならず tf-tool --add-user root を実行してください。

/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 ルールのディレクトリの中で uinputbus/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
ノート: The last command is opening up a directory for execution to everyone, beware of the security implications this might have.

最後に、/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 の指紋リーダーを使うことができる場合があります。

参照