Howdy

来自 Arch Linux 中文维基

Howdy 是 Linux 上一个类似 Windows Hello,通过电脑的红外传感器识别人脸,解锁电脑的程序。

安装[编辑 | 编辑源代码]

安装 howdyAUR 软件包。或者您也可以从archlinuxcn仓库安装howdyCNRepo

注意: 在该软件包的使用过程中会从 GitHub 的 raw 服务器下载文件,而中国大陆用户连接该服务器网络不通畅,请确保你的网络能正常连接。

配置[编辑 | 编辑源代码]

把 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

添加正确的红外传感器[编辑 | 编辑源代码]

可以在诸如 cheesefswebcamAUR 或者 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 的指导启用红外发射器。

注意: 由于上游代码的原因,linux-able-ir-emitterAUR包的最新版本通过在安装完成后会运行自己的脚本来生成 Systemd 服务文件。这种行为可能不是您想要的,因为它的自定义脚本会修改文件系统根目录。目前已知在版本 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