「ThinkFinger」の版間の差分
(ページの作成:「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 |
||
− | + | /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 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 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 == |
||
+ | [[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 をインストールしてください。
設定
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 の指紋リーダーを使うことができる場合があります。
参照
- http://www.thinkwiki.org/wiki/Talk:How_to_enable_the_fingerprint_reader
- http://thinkfinger.sourceforge.net/
- https://bbs.archlinux.org/viewtopic.php?id=36134
- http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger
- http://www.thinkwiki.org/index.php?title=Installing_Ubuntu_6.06_on_a_ThinkPad_T43#Fingerprint_Reader