|
楼主 |
发表于 2007-2-16 01:18:28| 字数 3,948| - 中国 联通
|
显示全部楼层
指纹识别
12、指纹识别
尽管ibm(其实应该是lenovo吧)并无官方支持,指纹识别却实实在在地与大多数linux发行版和睦相处。在ubuntu下搞定它比较麻烦,不过依然是可行的。简言之,我们需要一个PAM的bioAPI插件。之
后如GDM等PAM相关程序以及gnome屏保就能够自动识别并调用指纹识别器了,很酷呃~
到
http://www.qrivy.net/~michael/temp/
下载最新的bioapi软件包(写此文时为bioapi_1.2.3_i386.deb)。看到火狐的下载提示时,直接选择使用GDebi package installer打开即可。
bioAPI安装完毕。我们现在需要的是指纹设备的驱动(UPEK生产)。到
http://www.upek.com/support/dl_linux_bsp.asp
下载最新版本文件,目前为UPEK_BSP_LIN_1.0.zip。解压,打开终端进入存放解开文件的目录,输入:
$ sudo bash
# sh install.sh /usr/lib
分配权限使非根(non-root)应用程序也可使用驱动:
# addgroup --system bioapi
# addgroup --system usbfs
# adduser yourusername bioapi
# adduser yourusername usbfs
# chown -R root:bioapi /usr/var/bioapi/
# chmod -R 770 /usr/var/bioapi/
# chown -R root:usbfs /proc/bus/usb
# chmod -R g+X /proc/bus/usb
将上面的“yourusername”替换为你的登录名。现在设置usb文件系统(usbfs)以使之可为usbfs组中用户所用
首先应确定usbfs组ID:
# cat /etc/group | grep usbfs | cut -d':' -f 3
我机器上的情况是116,不同机器或许有不同情况。现在,打开/etc/fstab:
#sudo gedit /etc/fstab
加入一行:
none /proc/bus/usb usbfs defaults,devgid=116,devmode=0660,busgid=116,busmode=0770,listgid=116,listmode=0660 0 0
必要的话将116改为cat一步得到的id
最后一件与权限相关的问题,UDEV。打开UDEV权限文件
#sudo gedit /etc/udev/rules.d/40-permissions.rules
找到如下行:
SUBSYSTEM=="usb_device", MODE="0664"
在我的文件中这是第65行。将其改为:
SUBSYSTEM=="usb_device", MODE="0660", GROUP="usbfs"
现在就可以将指纹存入系统了。这需要一个叫Sample的工具。这里有一个编译好的版本:
ftp://linux:Tuc-nak3@delta.upek.com/TFMESS_BSP_LIN_1.0beta2.zip
解压之,同样打开终端进入目录:
# cd NonGUI_sample
# chmod a+x Sample
# ./Sample
按(e)登记一个新用户,输入用户名,要求刷指纹时按(v),刷刷刷。。。 成功了吧~
若Sample无法正常工作,可能是PAM开发模块没有安装,可尝试:
# sudo apt-get install libpam0g-dev
图 8 登记指纹提示
帅呆~!现在,退出程序(q)并在终端使用exit结束此次会话回到普通用户身份。一个以您登录名命名的bir文件已经就绪,将其复制到您的home:
# cp yourusername.bir /home/yourusername/
现在您可以关闭终端窗口了。我们下一步要安装PAM的bioAPI插件,并使其可为程序所用。所以首先下载此插件:
http://www.nax.cz/pub/bioapi/pam_bioapi/pam-bioapi_0.3.0.tar.gz
解压后打开终端,这一步是编译前的准备工作:
$ sudo apt-get install build-essential
$ sudo apt-get install libpam0g-dev
现在就可以进入解压目录并编译安装插件了:
$ cd /解压路径
$ ./configure --libdir=/lib --enable-file-store && make
$ sudo make install
至此插件安装完毕,在终端中:
$ cd ~
$ sudo bash
开启一个跟会话(root session),在我告诉您之前不要关闭此终端窗口。现在,粘贴下面这些唬人的命令行吧 :
SERIAL=`BioAPITest | sed -ne "/Fingerprint/{n;n;s/^.*: \(.\{9\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.*\)/\1-\2-\3-\4-\5/gp}"`
请用以下命令以注册您的bioAPI用户名及序列号:
# mkdir -p /etc/bioapi/pam/$SERIAL
# cp yourusername.bir /etc/bioapi/pam/$SERIAL/
# exit
呼。。。。。。现在,要让程序实实在在地使用指纹识别器,还要在终端里呆一会儿 :
$ sudo gedit /etc/pam.d/common-auth
删除文件中的所有内容,复制/粘贴以下内容:
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/
password sufficient pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/
auth required pam_unix.so nullok_secure
存盘退出。我们刚刚制作了一个让指纹识别通用软件能正常使用指纹识别器的程序。很不幸——这依旧包含着sudo,鉴于sudo是基于命令行的,我们看到的指纹输入提示也是会出现在终端当中,这本身没什么问题。但往下就有了问题:在
ubuntu中许多需要管理员身份验证的程序(比如新立得软件包管理器)使用了gksu来实现一个图形化的sudo前端,它将会在命令行里显示一个您永远无法看到的信息。这样的结果就是:管理员权限的程序无法在gnome中运行。解决的方法是让sudo老老实实的。。。。打开终端:
$ sudo gedit /etc/pam.d/sudo
删除所有内容,复制粘贴以下内容:
#%PAM-1.0
#@include common-auth
auth required pam_unix.so nullok_secure
@include common-account
若您同样希望能在终端中使用指纹识别,还可以使用这一个/etc/pam.d/sudo文件
#%PAM-1.0
#@include common-auth
auth sufficient pam_unix.so nullok_secure
auth required pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/
password required pam_bioapi.so {5550454b-2054-464d-2f45-535320425350} /etc/bioapi/pam/
@include common-account
这样一来,在使用中您会先被要求输入口令,但您可以不必理会,直接回车后我刷刷刷。。。
保存退出重启系统。GDM一如往常要求登录名,然后~~一个漂亮的指纹登录提示就会出现了。在gnome屏保中如果设置了密码功能,同样可以实现指纹登录的效果。区别是有时gnome屏保没有刷指纹的提示,但您一样可以刷指纹返回桌面。
注意
若您的系统是kubuntu,则不会在KDM中看到提示,只要在输入登录密码时直接回车,并等待光标停止闪烁后刷指纹即可登录。
若您使用SSH远程登录您的本本,您需要禁用ssh中的common-auth。否则远程登录时还是需要您去本本那里实实在在地刷那么一下,汗。若需修改,编辑/etc/pam.d/ssh
找到
@include common-auth
改为
#@include common-auth
auth required pam_unix.so nullok_secure
好困。。。。。。。。。。。很快补完。。。。。。。。。。。。。。。。
[ 本帖最后由 wlxwlx 于 2007-2-20 03:06 编辑 ] |
|