ThinkFinger
ThinkFinger 是用于老式 IBM/Lenovo ThinkPad 中 SGS Thomson Microelectronics 指纹读取器的驱动程序。
ThinkWiki 有一个ThinkPad 中各种指纹读取器的列表。使用不同读取器的新型号可能无法与 ThinkFinger 配合使用。
安装
安装 thinkfingerAUR 软件包。
配置
需要加载 uinput
模块。
TF-Tool
使用 tf-tool
测试 ThinkFinger。您必须以 root 身份运行此命令,因为需要直接访问 USB 设备。运行 tf-tool --acquire
以在 /etc/pam_thinkfinger/test.bir
生成文件,并运行 tf-tool --verify
以查看它是否能正确识别您。tf-tool --add-user <username>
获取您的指纹并将其存储在 /etc/pam_thinkfinger/<username>.bir
中,这是使用 PAM 进行身份验证所必需的。
PAM
参见 PAM。
/etc/pam.d/login
如果您想使用指纹在登录时进行身份验证,请更改 /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
命令
/etc/pam.d/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
命令
/etc/pam.d/su
#%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
配置 PAM
/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
/etc/pam.d/slim
追加 以下内容到 /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
- https://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