ThinkFinger

提供: ArchWiki
2015年10月13日 (火) 19:48時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:入力デバイス Category:Lenovo en:ThinkFinger es:ThinkFinger {{Related articles start}} {{Related|Fingerprint-gui}} {{Related|Fprint}} {{Rela...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

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 を実行すると 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

Add the user you want to be able to unlock xscreensaver with the fingerprint reader to the group:

# gpasswd -a <user> fingerprint

Don't forget to logout and login again!

Search for "uinput" and "bus/usb" in your udev rules directory :

$ 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"

Now copy the previous lines (222, 318 and 320 from /etc/udev/rules.d/udev.rules) to a new udev rules file. I suggest /etc/udev/rules.d/99my.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"

The difference between the rules in /etc/udev/rules.d/99my.rules and those in /etc/udev/rules.d/udev.rules should only be the addition of MODE="0664", GROUP="fingerprint" or MODE="0660", GROUP="fingerprint" at the end of the lines.

After this you must actually give your user permissions to access his own fingerprint file, this can be done as in the following:

# chown $USERNAME:root /etc/pam_thinkfinger/$USERNAME.bir
# chmod 400 /etc/pam_thinkfinger/$USERNAME.bir
# chmod o+x /etc/pam_thinkfinger

Yes that last one is opening up a directory for execution to everyone so if you are super paranoid you might consider that a security flaw, just putting the warning out there.

The last part is about xscreensaver. If you check xscreensaver file, you will see it is setuid to root :

$ ls -l /usr/bin/xscreensaver
-rwsr-sr-x 1 root root 217K aoû  2 20:47 /usr/bin/xscreensaver

Because of this, xscreensaver wont be able to unlock with the fingerprint reader. You need to remove the setuid root with :

# chmod -s /usr/bin/xscreensaver
$ ls -l /usr/bin/xscreensaver
-rwxr-xr-x 1 root root 217K aoû  2 20:47 /usr/bin/xscreensaver

That's it!

/etc/pam.d/gdm

[I am not an expert in PAMs but this works, This section may need corrections]

/etc/pam.d/login/etc/pam.d/su と同じように /etc/pam.d/gdm を編集します:

ファイルの先頭に以下を追加:

auth		sufficient 	pam_thinkfinger.so

以下の行を:

auth		required	pam_unix.so

次のように変更:

auth		required	pam_unix.so use_first_pass nullok_secure

/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

To have thinkfinger support for the SLiM Login Manager you need to activate PAM support:

Get the package source of the slim package from ABS and change the "make" line in the PKGBUILD:

make USE_PAM=1 || return 1

Rebuild the package and install it.

Then create a file /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

Now restart slim and swipe your finger.

他の指紋リーダーソフトウェア

別の指紋リーダーソフトウェアとして Fprint が存在し、新しい ThinkPad の指紋リーダーを使うことができる場合があります。

参照