让Linux也拥有Windows Hello
深度更新了Deepin15.5版本之后,增加了面容识别功能。对于其他发行版,有没有可能拥有呢?这就是今天要介绍的开源程序:howdy。
如果你在深度论坛中大概浏览过的话就会发现,有些人认为深度的人脸识别功能就是将howdy内置到系统中实现的。具体怎么做的我在这里就不深究了,不过我们可以通过howdy在其他发行版中增加人脸识别这一功能。
安装在大多数发行版中都是十分简单的,我们可以参照howdy的GitHub介绍来完成:
- 对于Ubuntu系:添加ppa源,然后通过apt安装即可
- 对于Debian系:从GitHub的release界面下载deb包安装即可
- 对于Arch系:通过aur安装即可
- 对于Fedora:启用CPOR源,然后通过dnf安装即可
- 对于openSUSE:通过opi,自动添加OBS源并安装即可
但是在实际安装过程中,我的openSUSE15.3出现了一些依赖问题,所以对于这个系统,需要进行一些额外的补充。
缺少的依赖是python3-opencv3
,我们选择忽略依赖继续,将howdy包先装好。此时,howdy的部分功能是可以使用的,但最核心的识别功能不可用,所以还是需要对依赖进行补全,直接通过opi来安装即可。推荐在查询结果中选择science这个官方性质的OBS源使用,避免后期不必要的问题。
接下来就是对howdy进行配置,让howdy知道这台电脑的人脸识别设备——也就是摄像头——是哪一个。
- 使用文本编辑器打开
/etc/lib64/security/howdy/config.ini
- 查找
device_path
一行,将等号后面的none
更改为摄像头设备的路径
a. 安装v4l-utils
,这个包可以直接安装
b. 使用命令v4l2-ctl --list-devices
查看设备
c. 记录摄像头名称对应的路径,填入配置文件即可 - 保存
现在,就可以尝试添加一个面容数据了。
- 使用命令
sudo howdy add
- 根据提示随便输入一个模型名称(不能超过24个字符)
- 面向摄像头,让它认识你
- 你会看到“Added a new model to 你的用户名”,这就代表完成了
这时,通过sudo howdy list
就可以看到刚刚录入的脸部模型了。当然,howdy也提供一些管理模型的参数,具体可以查询GitHub的介绍。
最后,就是将人脸识别加入到密码认证的步骤当中了。对于openSUSE来说,虽然不是howdy要求的依赖,但必须安装一个叫pam-python
的包才能将howdy与认证联系起来。但在openSUSE15.3中,又不存在这个包,所以需要手工安装一下。
- 进入openSUSE官方的包搜索工具
- 搜索
pam-python
,选择ALL Distributions
- 进入搜索结果中,找到
openSUSE Leap 15.2
,点击official release
中的Expert Download
- 打开的页面中,点击
Grab binary packages directly
,下载不带.src的一项 - 双击下载的文件安装
到此,这个负责认证的包就安装好了。接下来,就是将人脸认证接入。
相关文件全部在/etc/pam.d
中,根据需要增加语句即可。这里以使用sudo命令时进行人脸认证为例。其他命令使用人脸的方法一样,只是调整一下编辑的文件即可
- root权限打开sudu文件
- 在文件最开始增加人脸认证语句
auth sufficient pam_python.so /usr/lib64/security/howdy/pam.py
- 保存
此时,当使用sudo命令时,摄像头便会启动,尝试识别人脸。如认证通过,则正常执行命令,否则弹出密码输入要求,我们可以通过密码来进行认证。
不过对于openSUSE来说,使用sudo时候默认请求的是root账户密码,因此人脸也是请求的root账户的人脸。但刚刚howdy录入的人脸是我们这个账户的人脸,所以我们可以通过howdy指定用户录入功能录入root人脸信息,也可以通过修改sudoer文件,将请求的密码改成当前账户即可。