在 openSUSE 下启用指纹认证

“你的爽到,别人不懂”


感谢 3v1n0, nmikhailov 的杰出工作!


近期终于脱离了 2570p 的苦海换到了 T460P,这 T460P 的指纹,可谓非常好用,Windows 用起来那个爽啊,是真爽。但是我不怎么用 windows 啊,所以这个爽,你还只能想想。但是光想那可不行啊,爽不爽还得自己经常用才能体会到。

书接 上文,开启了指纹开机验证后,windows 那边其实已经就是一步到位了(一步登录),而 Linux 这边不是太好搞。相比与 Ubuntu,oS 没有关于指纹相关的预装;相比于 GNOME,KDE 没有内置指纹管理的组件。那只能回到梦开始地方,手动搞这个玩意。

  • 首先,安装 fprintdfprintd-pam,这是基础:
    sudo zypper in fprintd fprintd-pam
  • 然后这回呢你发现,我草怎么用不了,那肯定的,没驱动怎么用。libfprint 官方没有 VFS7500(138a:0090) 的驱动,那么在哪里能找到驱动呢?看 这里:
    //把库拖下来
    Git clone https://github.com/3v1n0/libfprint
    //安装依赖
    sudo zypper in meson ninja gcc-c++ openssl libopenssl-devel\
     libusb-1_0-devel libusb-compat-devel libtool gtk3-devel\
      glib2-devel libXv-devel nss-shared-helper-devel gtk-doc\
       gobject-introspection-devel cmake libgusb-devel
    
  • so far so good, 完成上述步骤其实就可以开始下一步编译了。该项目使用了 meson&ninja 的组合,不同以往的编译,这次这样编译:
    cd libfprint  
    meson . _build && sudo ninja -C _build install
    
  • well done! 看见一长串的编译安装完成后,驱动我们就算装上了,接下来处理一下 pam 模块:
    ln -s /lib64/security/pam_fprintd.so /lib64/security/pam_fprint.so
    
  • 然后不要急,坐和放宽,请重启一下 : )
  • 验证一下看看 fprint 是否检测到了设备:
    fprintd-list <用户名>
  • 如果看到了 found 1 devices 那就说明成功一大半了!马上开始给当前用户录入指纹!录入成功是绿灯,失败或有问题是红灯/黄灯(** 注意 :请为你平时所要用的的用户都 ** 分别录入 ** 一次, 包括 root**):
    for finger in {left,right}-{thumb,{index,middle,ring,little}-finger}; do fprintd-enroll -f "$finger" "$USER"; done
    
  • 最后一步!把 pam 模块接入进系统验证,有两种选择 (** 二选一 **):
    • 手动加 pam 配置文件:
      vi /etc/pam.d/common-auth-pc
      在 auth required pam_env.so 这一行下面加入
      auth sufficient pam_fprint.so
    • 使用 pam-config
      sudo pam-config -a --fprint
  • 这样就完成了,再重启一下,就可以使用了!

再简单讲讲使用方法,现在指纹可以在如下情况使用,:

  • SDDM 登录界面
  • KDE 登录界面
  • sudo
  • su
  • KDE su
    前四种情况,屏幕/终端都会提示Place your finger on the fingerprint reader,这时指纹识别器上方绿灯会亮起,进行识别即可,正常识别后绿灯会闪一下,如果太快会闪一下黄灯,认证失败会让你输入密码。
    后一种情况下,又分两种小情况,多数情况下 KDE su 的认证提示框会出来,但是不会有字面提示,此时指纹灯亮起,直接认证即可;而有些时间 KDE SU 的对话框并不会弹出来,但是指纹指示灯会亮,此时直接完成指纹识别也可以认证。
7赞

你说的我都懂,但是我没有指纹识别模块。

2赞

你的问题我也懂,买

你说的我懂,,但是垃圾顶汇指纹模块不支持 Linux

我之前也试过。更为悲催的是我之前在 windows 系统把它 disable 了。而在 BIOS 开启又没有用。后来我弄了个 windows 虚拟机,把设备挂到虚拟机里启用才成功用上。

不过感觉识别慢,后来还是 disable 了

libfprint 里有 goodix 的东西,如果是新的就等等,或者看看 gayhub,再不行就试试 open-fprintd

还是看厂家吧,我这两个本都是 vfs 的指纹一个滑动一个电容,感觉都挺好的

感谢楼主的信息,ThinkPad + GNOME 试了下用以下两条命令直接就设置成功了,连配置文件都没改。

sudo zypper in fprintd fprintd-pam
fprintd-enroll 用户名

1赞

GNOME 设置里自带了指纹相关的设置,可以在那里进行配置,就没必要用命令了

很奇怪我的 GNOME 3.32 默认没有指纹登陆选项,手动用 printd-enroll 用户名 命令录入指纹后 User 配置页面里指纹登陆选项又神奇地出现了,可能是 GNOME 版本太老的缘故。

羡慕手指头好的人,我的本虽然是 win 但是识别率非常一般(食指),就连以高识别率著称的 touchid(虽然不知道是第几代)都不太行(拇指),经常需要三到四次

别了吧……TouchID 我这识别率也不高啊……右手认左手不认
我这手要是脱起皮来,啥都不认,打卡都打不上那种
不过 sinkpad 这个面积大,的确好一点

1赞

很棒!但我发现,根据我的实验,使用 sudo pam-config -a --fprintd 而不链接 pam 模块是可行的。