「ThinkFinger」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:入力デバイス Category:Lenovo en:ThinkFinger es:ThinkFinger {{Related articles start}} {{Related|Fingerprint-gui}} {{Related|Fprint}} {{Rela...」)
 
(同期)
20行目: 20行目:
 
=== TF-Tool ===
 
=== TF-Tool ===
   
ThinkFinger をテストするには ''tf-tool'' を使います。''tf-tool'' は USB デバイスに直接アクセスするため、root で実行する必要があります。{{ic|tf-tool --acquire}} を実行すると {{ic|test.bir}} が生成されるので {{ic|tf-tool --verify}} で正しく認証できているか確認してください。{{ic|tf-tool --add-user <username>}} で (pam での認証に必要な) {{ic|/etc/pam_thinkfinger/username.bir}} にあなたの指紋を取得・保存します。
+
ThinkFinger をテストするには ''tf-tool'' を使います。''tf-tool'' は USB デバイスに直接アクセスするため、root で実行する必要があります。{{ic|tf-tool --acquire}} を実行すると {{ic|/etc/pam_thinkfinger/test.bir}} が生成されるので {{ic|tf-tool --verify}} で正しく認証できているか確認してください。{{ic|tf-tool --add-user <username>}} で (pam での認証に必要な) {{ic|/etc/pam_thinkfinger/username.bir}} にあなたの指紋を取得・保存します。
   
 
== Pam ==
 
== Pam ==
PAM は Sun によって開発された Pluggable Authentication Module です。
+
[[PAM]] は Sun によって開発された Pluggable Authentication Module です。
   
 
=== /etc/pam.d/login ===
 
=== /etc/pam.d/login ===
61行目: 61行目:
 
まず、新しいグループを作ります。ここでは "fingerprint" を使います:
 
まず、新しいグループを作ります。ここでは "fingerprint" を使います:
 
# groupadd fingerprint
 
# groupadd fingerprint
  +
Add the user you want to be able to unlock xscreensaver with the fingerprint reader to the group:
 
  +
指紋リーダーで Xscreensaver をアンロックしたいユーザーをグループに追加:
  +
 
# gpasswd -a <user> fingerprint
 
# 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"
 
   
  +
次に udev ルールのディレクトリの中で ''uinput'' と ''bus/usb'' を検索:
$ 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"
 
   
  +
{{hc|$ grep -in uinput /etc/udev/rules.d/*|<nowiki>
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"
+
/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"
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"
 
  +
</nowiki>}}
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.
 
   
  +
{{hc|$ grep -in "bus/usb" /etc/udev/rules.d/*|<nowiki>
After this you must actually give your user permissions to access his own fingerprint file, this can be done as in the following:
 
  +
/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"
# chown $USERNAME:root /etc/pam_thinkfinger/$USERNAME.bir
 
  +
/etc/udev/rules.d/udev.rules:320:SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0664"
# chmod 400 /etc/pam_thinkfinger/$USERNAME.bir
 
  +
</nowiki>}}
# 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.
 
   
  +
grep で見つけた行を新しい udev ルールファイルにコピー:
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
 
   
  +
{{hc|head=/etc/udev/rules.d/99fingerprint.rules|output=
That's it!
 
  +
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"}}
  +
  +
{{ic|/etc/udev/rules.d/99fingreprint.rules}} のルールと {{ic|/etc/udev/rules.d/udev.rules}} のルールの違いは末尾に {{ic|1=MODE="0664", GROUP="fingerprint"}} または {{ic|1=MODE="0660", GROUP="fingerprint"}} が追加されているかどうかだけです。
  +
  +
カスタム udev ルールを追加したら、指紋ファイルにアクセスできるようにユーザーに権限を与えてください:
  +
  +
{{bc|1=
  +
$ chown $USERNAME:root /etc/pam_thinkfinger/$USERNAME.bir
  +
$ chmod 400 /etc/pam_thinkfinger/$USERNAME.bir
  +
$ chmod o+x /etc/pam_thinkfinger
  +
}}
  +
  +
{{Note|The last command is opening up a directory for execution to everyone, beware of the security implications this might have.}}
  +
  +
最後に、{{ic|/usr/bin/xscreensaver}} から root の setuid を削除してください。削除しないと Xscreensaver を指紋リーダーでアンロックできません:
  +
  +
# chmod -s /usr/bin/xscreensaver
   
 
=== /etc/pam.d/gdm ===
 
=== /etc/pam.d/gdm ===
  +
{{ic|/etc/pam.d/gdm}} を編集して一番上に以下の行を追加:
[I am not an expert in PAMs but this works, This section may need corrections]
 
   
  +
{{hc|/etc/pam.d/gdm|
[[#/etc/pam.d/login|/etc/pam.d/login]] や [[#/etc/pam.d/su|/etc/pam.d/su]] と同じように {{ic|/etc/pam.d/gdm}} を編集します:
 
  +
auth sufficient pam_thinkfinger.so
  +
}}
   
  +
そして {{ic|auth required pam_unix.so}} を以下のように修正:
ファイルの先頭に以下を追加:
 
auth sufficient pam_thinkfinger.so
 
   
  +
{{hc|/etc/pam.d/gdm|
以下の行を:
 
auth required pam_unix.so
+
auth required pam_unix.so use_first_pass nullok_secure
  +
}}
次のように変更:
 
auth required pam_unix.so use_first_pass nullok_secure
 
   
 
=== /etc/pam.d/xdm ===
 
=== /etc/pam.d/xdm ===
113行目: 120行目:
 
{{ic|/etc/pam.d/xdm}} を以下のように編集してください:
 
{{ic|/etc/pam.d/xdm}} を以下のように編集してください:
   
  +
{{hc|/etc/pam.d/xdm|
#%PAM-1.0
 
  +
#%PAM-1.0
auth sufficient pam_thinkfinger.so
 
auth required pam_unix.so use_first_pass nullok_secure
+
auth sufficient pam_thinkfinger.so
auth required pam_nologin.so
+
auth required pam_unix.so use_first_pass nullok_secure
auth required pam_env.so
+
auth required pam_nologin.so
account required pam_unix.so
+
auth required pam_env.so
password required pam_unix.so
+
account required pam_unix.so
session required pam_unix.so
+
password required pam_unix.so
session required pam_limits.so
+
session required pam_unix.so
  +
session required pam_limits.so
  +
}}
   
 
== SLiM ==
 
== SLiM ==
   
  +
[[SLiM|SLiM ログインマネージャ]]から thinkfinger を使うには、PAM のサポートを有効にする必要があります。
To have thinkfinger support for the SLiM Login Manager you need to activate PAM support:
 
   
  +
[[ABS]] から slim パッケージのソースを取得して、[[PKGBUILD]] を編集して {{ic|make}} コマンドで PAM を有効にした SLiM をビルドします:
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.
 
   
  +
{{hc|head=SLiM PKGBUILD|output=
Then create a file /etc/pam.d/slim:
 
  +
make USE_PAM=1
#%PAM-1.0
 
  +
}}
auth sufficient pam_thinkfinger.so
 
  +
auth requisite pam_nologin.so
 
  +
パッケージをビルドしたらインストールしてください。
auth required pam_env.so
 
  +
auth required pam_unix.so
 
  +
そして {{ic|/etc/pam.d/slim}} を作成:
account required pam_unix.so
 
  +
session required pam_limits.so
 
  +
{{hc|/etc/pam.d/slim|
session required pam_unix.so
 
  +
#%PAM-1.0
password required pam_unix.so
 
  +
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 を再起動したら指紋認証でログインができるようになります。
Now restart slim and swipe your finger.
 
   
 
== 他の指紋リーダーソフトウェア ==
 
== 他の指紋リーダーソフトウェア ==

2017年8月1日 (火) 21:52時点における版

関連記事

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

参照