Howdy
Howdy 是 Linux 上一个类似 Windows Hello,通过电脑的红外传感器识别人脸,解锁电脑的程序。
安装[编辑 | 编辑源代码]
安装 howdyAUR 软件包。或者您也可以从archlinuxcn仓库安装howdyCNRepo。
配置[编辑 | 编辑源代码]
把 Howdy 设置为当需要时才使用[编辑 | 编辑源代码]
为了让 Howdy 能够对用户进行身份验证,您需要在使用了 Howdy 的 PAM 配置文件中做一些小改动。请把以下内容添加到对应的配置文件中:
auth sufficient pam_python.so /lib/security/howdy/pam.py
注意:当使用 Howdy 3.0.0 BETA 及以上版本时(howdy-beta-gitAUR),这一行应该为:
auth sufficient /lib/security/pam_howdy.so
为 howdy/pam.py
(或 pam_howdy.so
) 添加 sufficient 的控制标记后,将只提示进行人脸身份验证。如果您无法中断(Ctrl+C
)面部识别过程(比如在解锁屏幕和Polkit验证窗口中),那您将无法使用密码进行验证。想要既能人脸识别,又能用密码验证,请把以下内容添加到 /etc/pam.d/
下对应的 PAM 配置文件的最顶部。
auth sufficient pam_unix.so try_first_pass likeauth nullok
添加正确的红外传感器[编辑 | 编辑源代码]
可以在诸如 cheese包、fswebcamAUR 或者 v4l-utils包 的程序里找到并确定能连接到红外传感器的正确 /dev/videoX
文件,
以内置于 v4l-utils包 软件包的工具为例:
$ v4l2-ctl --list-devices Integrated_Webcam_HD: Integrate (usb-0000:00:14.0-11): /dev/video0 /dev/video1 EyeChip: Tobii Video (usb-0000:00:14.0-3.4.3): /dev/video4 /dev/video5 HD Webcam C525 (usb-0000:00:14.0-3.4.4): /dev/video2 /dev/video3
在上述例子中,有不止一个网络摄像头,而且每一个摄像头都有好几个不同的 /dev/videoX
路径,一般来说选第一或第二个路径会比较好。
如果摄像头或红外传感器不止一个,使用 /dev/videoX
可能会随着时间的推移而变得不稳定,因为它们的路径可能会随着某些设备的拆卸和装入而改变。这时可以用由 Video 4 Linuxwikipedia:Video4Linux 提供的,更加稳定的 /dev/v4l/by-id/
路径。
$ ls -l /dev/v4l/by-id total 0 lrwxrwxrwx 1 root root 12 Dec 3 15:01 usb-046d_HD_Webcam_C525_BE4703F0-video-index0 -> ../../video2 lrwxrwxrwx 1 root root 12 Dec 3 15:01 usb-046d_HD_Webcam_C525_BE4703F0-video-index1 -> ../../video3 lrwxrwxrwx 1 root root 12 Dec 3 14:47 usb-CNFGH19N306021000582_Integrated_Webcam_HD-video-index0 -> ../../video0 lrwxrwxrwx 1 root root 12 Dec 3 14:47 usb-CNFGH19N306021000582_Integrated_Webcam_HD-video-index1 -> ../../video1 lrwxrwxrwx 1 root root 12 Dec 3 14:47 usb-Tobii_Technology_AB_EyeChip_IS404-100109244721-video-index0 -> ../../video4 lrwxrwxrwx 1 root root 12 Dec 3 14:47 usb-Tobii_Technology_AB_EyeChip_IS404-100109244721-video-index1 -> ../../video5
先验证这些 v4l
路径不随设备的拆卸和装入而改变,然后重列设备目录(re-listing the directory)。
找到正确的文件名后,您就可以用自己喜欢的编辑器编辑 /lib/security/howdy/config.ini
文件,也可以以 root 用户权限使用 howdy config
命令来编辑。
设定 EDITOR
变量来自定义 howdy config
使用的编辑器:
# EDITOR=editor howdy config
向 Howdy 添加面部数据[编辑 | 编辑源代码]
要想添加面部模型,运行 sudo howdy add
。
加固 Howdy[编辑 | 编辑源代码]
有些版本的 Howdy 会在识别用户时拍照,然后保存到 /lib/security/howdy/snapshots
。这某种程度来说是一个安全漏洞。攻击者能够轻易找到某次成功登录的照片并用它来冒充您进行登录,从而达到提权的目的。当然,攻击者还可以使用目标用户的任何其他照片,但是 Howdy 简化了该过程。
为了避免这样的攻击,以及突然发现磁盘空间骤减,可以在 /lib/security/howdy/config.ini
中取消拍照:
[snapshots] capture_failed = false capture_successful = false
疑难杂症[编辑 | 编辑源代码]
红外发射器不工作[编辑 | 编辑源代码]
已启用红外摄像头而红外发射器不工作,没准是因为你选错了文件。打个比方,可能 /dev/video0
和 /dev/video2
都能识别你的脸部,但是只有 /dev/video2
会启用红外发射器,所以要试试所有的 /dev/videoX
路径,看看有没有哪个能正常工作。
如果还不行,试着跟从 linux-enable-ir-emitter 的指导启用红外发射器。
3.2.0-2
之前,该软件包都带有 Systemd 服务文件,所以您可能需要选择适合自己的版本。测试红外摄像头[编辑 | 编辑源代码]
提前确认红外摄像头能正常运作是个挺不错的主意,用 gstreamer包 软件包的以下命令十连拍来测试设备(别忘了用你的红外摄像机的位置替代下面的 IR camera
):
gst-launch-1.0 v4l2src device=IR camera num-buffers=10 ! image/jpeg ! multifilesink location="frame-%02d.jpg"
Howdy 无法正常运转[编辑 | 编辑源代码]
用 root 权限运行 howdy test
来确保 Howdy 正常工作,如果看起来一切正常,就检查 PAM 配置并确认其正在工作。例如 SDDM [1] 的某些程序不能在 PAM 下正常工作,会造成一些出乎意料的结果。
如果您安装的是2.x版本,您也可以尝试使用beta版本howdy-beta-gitAUR,参见[2][3]。
输入设备识别错误[编辑 | 编辑源代码]
例如 Thinkpad T480 的某些红外传感器需要在配置文件中定义框架高度和宽度:
frame_width = 400 frame_height = 400
获取传感器输出的高度和宽度: v4l2-ctl --list-devices --all