












我的笔记本是联想小新,在用Windows的时候,是可以通过摄像头的认证登录,省事了不少,前几天把亮度随着环境的亮度而适应这方面弄好了。这又想着能不能像 Windows Hello 那样刷脸登录。搜了一圈,发现 Howdy 这个开源项目正是干这个的——号称"Linux 版 Windows Hello"。折腾了一晚上,踩了不少坑,把过程记录下来。
Howdy 是一个 Linux 下的人脸识别认证工具,通过摄像头(最好是 IR 红外摄像头)捕捉面部特征,然后集成到 PAM 认证框架里。换句话说,它能让 sudo、锁屏、登录界面都支持"刷脸"。
AUR 上有三个版本可选:howdy(稳定版 2.6.1)、howdy-next(C++ 重写版 3.3.1,更新更快)、howdy-git(最新开发版)。我先装了稳定版,后来因为摄像头兼容性问题换成了 howdy-next。
Arch 系安装直接走 yay:
安装过程比较顺利,但依赖比较多,需要编译 python-dlib 等包,耗时较长。第一次安装被中断了,重新跑了一次才装好。
装完第一件事是录入人脸:
结果直接报错:Camera path is not configured correctly, please edit the 'device_path' config value.
Howdy 的配置文件不在 /etc/howdy/config.ini,而是在 /usr/lib/security/howdy/config.ini。这个路径需要 root 权限才能查看和编辑,普通用户连 cat 都看不了。
打开配置文件,找到 [video] 段,发现 device_path = none——默认没有设置摄像头路径。
我的 Lenovo 82NC 笔记本有两个摄像头:一个是 RGB 摄像头(MJPG 格式,1280×720),一个是 IR 红外摄像头(GREY 格式,640×360)。用 v4l2-ctl 确认一下:
| |
输出结果显示:/dev/video0 是 RGB 摄像头,/dev/video2 是 IR 红外摄像头。把配置改成 IR 摄像头的路径:
| |
改完重新 sudo howdy add,这次摄像头能打开了,但识别失败——IR 摄像头在 Linux 下似乎没有正常工作,拍出来的都是黑帧。
试了各种方法激活 IR 摄像头:
| |
都没有效果。Linux 下的 IR 摄像头驱动支持确实不如 Windows,很多笔记本的红外灯需要通过厂商专有驱动才能激活,而这些驱动通常只在 Windows 下有。
最后的解决方案:改用 RGB 摄像头:
| |
用 RGB 摄像头也能识别,只是不如 IR 摄像头精准(没有结构光辅助),但日常使用够了。
Howdy 安装好、人脸录入好之后,还需要配置 PAM(Pluggable Authentication Modules)让系统在认证时调用 Howdy。
Arch 系不像 Debian/Ubuntu 那样有 pam-auth-update 命令,需要手动编辑 PAM 配置文件。以 sudo 为例:
| |
在 auth include system-auth 这行之前加一行:
| |
加完保存。关键点:sufficient 表示如果 Howdy 识别成功就直接放行,不再要求密码;如果识别失败,继续走后面的密码认证。这样既方便又安全。
同样,如果想让锁屏(GDM)也支持人脸识别,编辑 /etc/pam.d/gdm-password,同样加一行。
配置完成后测试一下:
| |
实测效果:RGB 摄像头识别速度还行,大概 1-2 秒内完成,和在Windows下几乎没有什么区别,唯一不太爽的是红外摄像头不能用。识别成功后 sudo 直接放行,认不出再输密码。
折腾了一晚上,主要收获:
/usr/lib/security/howdy/config.ini,不是 /etc/howdy/pam-auth-update,需要编辑 /etc/pam.d/sudo整体体验:虽然 IR 摄像头没能用上有点遗憾,但 RGB 摄像头的人脸识别已经够日常使用了。下次输入 sudo 密码时,对着摄像头看一眼就行——这种科技感确实让人上瘾。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。