Howdy
Howdy 是一个在 Linux 上模仿 Windows Hello 的程序。它使用电脑的红外传感器和摄像头来验证用户的面部。
安装
配置
设置 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 添加到 /etc/pam.d/
中的任何配置文件将仅提示进行面部验证。如果您无法 Ctrl+c
面部验证(由于缺少 shell),这将阻止使用密码。为了在图形界面中使用密码或面部,请将以下行添加到任何所需文件的顶部
auth sufficient pam_unix.so try_first_pass likeauth nullok
添加正确的红外传感器
确定连接到红外传感器的正确 /dev/videoX
文件。这可以通过各种程序完成,例如 cheese、fswebcamAUR 或 v4l-utils。
以下是使用 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
可能会随着时间的推移变得不稳定,因为它在某些设备拔出并重新插入后可能会更改路径。在这种情况下,可以考虑使用 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
路径是否不会更改。
找到正确的文件名后,使用您喜欢的编辑器或 howdy config
(以 root 用户身份运行)编辑 /lib/security/howdy/config.ini
。将 device_path = null
更改为 device_path = path_to_device
/lib/security/howdy/config.ini
# The path of the device to capture frames from # Should be set automatically by an installer if your distro has one device_path = path_to_device
要自定义 howdy config
使用的编辑器,请设置 EDITOR
变量
# EDITOR=editor howdy config
向 Howdy 添加面容
为了向 Howdy 添加面部模型,以 root 用户身份运行 howdy add
。
保护安装安全
某些版本的 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 中的说明启用红外发射器。安装 linux-enable-ir-emitterAUR 软件包。
3.2.0-2
版本为止,该软件包都带有 systemd 服务,因此您可能需要选择适合您的版本。测试红外摄像头
首先验证您的红外摄像头是否正常工作可能很有用。可以使用 gstreamer 软件包通过以下命令拍摄一组 10 张 jpg 照片来测试您的设备
gst-launch-1.0 v4l2src device=path_to_device num-buffers=10 ! image/jpeg ! multifilesink location="frame-%02d.jpg"
Howdy 似乎不工作
通过以 root 身份运行 howdy test
来验证 Howdy 是否正常工作。如果看起来工作正常,请检查任何 PAM 配置文件并验证它们是否正在工作。某些程序(例如 SDDM [1])与 PAM 不能正常工作,这可能会导致意外结果。
识别输入设备时出错
某些红外传感器(例如 Thinkpad T480 的红外传感器)需要在配置文件中定义帧宽度和高度
frame_width = 400 frame_height = 400
您的传感器输出的宽度和高度:v4l2-ctl --list-devices --all
。