在Surface Pro3 上安装完FedoraOS后,因为习惯了SurfaceGo上的WindowsHello登录,因此我开始寻找Linux上人脸识别登录的解决方法,然后我就找到了Howdy。
Howdy提供了和Windows Hello相似的校验方式,通过将人脸录入后Howdy将自身的鉴权模块注入到Linux的Central Authentication System中,这样就可以在需要输入密码的大部分地方直接使用人脸识别登入系统、锁屏登入、使用sudo等,相对来说还是比较方便的。
本文仅在FedoraWorkStation上进行安装,但其他系统的安装流程应该相差不大。
安装流程
Step1.查看Video设备
首先使用以下指令查看当前设备上可用的摄像头设备:(Linux 哲学:一切皆文件)
cat /dev | grep video
我这里最开始有4个可用的video设备,video0 video1是前置摄像头,video2 video3是后置摄像头,但我在驱动里面把后置摄像头关了,因此只显示了前置摄像头设备video0 video1。
然后我们需要测试video0 video1哪个是我们需要的摄像头。
Step2. 使用ffplay确定设备
我们需要检查哪个摄像头是我们需要的,这里需要安装ffmpeg包来检查:
sudo dnf install ffmpeg
然后使用ffplay加设备路径尝试拉起摄像头,我就不解释ffplay的用法了,直接贴一个manual:
我的video0设备成功打开摄像头界面,而video1则无法打开,因此我们确定了 /dev/video0
是我们需要的摄像头设备。
Step3. 安装howdy
在Fedora上安装howdy非常简单,只需要加一下仓库安装就行:
# 将howdy仓库加入dnf中 sudo dnf copr enable principis/howdy # 安装howdy sudo dnf --refresh install howdy
Step4. 设置Howdy
在安装好howdy后首先我们要将上面得到的设备路径加入配置文件中,这里有一点不好的地方,这条命令默认使用Nano Editor打开,不是使用系统默认的editor。在修改完后可以摁 Ctrl+X (^G键)然后摁 Y(Save modified buffer)保存并退出。
sudo howdy config
找到 device_path
配置项,然后值更改为正确的摄像头设备路径:
在设置好Howdy后,推荐先使用sudo howdy test
测试一下howdy:
sudo howdy enable sudo howdy test
如果设置正常,则应该会打开一个HowdyTest窗口。这里直接点叉是没法关的,需要在命令行里Ctrl-C终止命令。
Step5. 添加人脸模型
在配置好howdy后就可以开始添加人脸模型了,使用 sudo howdy add
添加人脸模型:
这里推荐在不同环境下录入多个人脸模型,比如佩戴眼镜和不佩戴眼镜、白天高亮度条件和夜晚低亮度条件。推荐至少录入四个环境下的人脸,提高人脸识别率。
Step6. 测试
登入测试
首先我们重启一下电脑(我感觉logout不保险,还不如重启一次)。然后看是否在登入的时候密码框下方出现 Attempting face detection。如果出现了则说明howdy 配置正常,然后调整角度等待识别,在接入电源的情况下我的SP3需要3~5s登入,但在不接入电源的情况下我设置了tlp和upower省电识别需要8~10s左右。
根据你启动时的配置不同,可能在登入时需要输入一次密码,这个是没法避免的,因为Linux使用Keyring保证用户密码的安全,而这里需要手动输入一次密码最大程度的保证了系统的安全性。但在输入一次密码后锁屏再登入时就不需要输入密码了,只有在系统启动、重启、注销后需要输入一次密码,总体来说是可以接受的。
root权限测试
这里我就不放gnome terminal的测试了,直接放第三方的Kitty:
Step7. 限制Howdy适用范围
我没有设置Howdy的限制使用,因为对于家用设备来说我得目标是便捷性,对于一些重要办公设备简易还是关闭sudo的howdy鉴权方式。
这里贴一下 限制Howdy适用范围 链接。
Howdy 常见问题
Github上有关于Howdy的常见问题,有问题可以去查Issue或者这个页面。
v1.0 编写基本内容 2022-04-10