在 Arch Linux 上使用人脸识别(howdy)来登陆和认证

41 篇文章 1 订阅

干啥

是这样子的,我的笔记本使用的键盘是蓝牙的,然后无论是 win 还是 arch,蓝牙功能都是在登陆进系统之后才开启,这样每次输入密码我就得把身子往前靠、双手伸向笔记本输入密码。。。而 win 提供了一种优雅的方式登陆进入系统:Windows Hello - 人脸识别

这么便捷的方式 Linux 大法没有的话,咋说的过去呢?于是在一番搜索之下发现了 howdy,而且也支持我当前使用的 Arch Linux,废话不多说,开始捣鼓。

相关信息

  • OS: Linux arch 5.11.6
  • Laptop: Lenovo XiaoXin Pro 13 AMD 2020

动手

安装

AUR

由于 howdy 的官方发行安装包只有 deb,懒人大法已经准备好在 AUR 中了,需要一个 AUR 下载助手,我这里用的是 yay,以下以 yay 为例,还没有安装 yay 的可以参考Arch Linux yay - Kearney 2021-03-17进行安装

howdy

yay -S howdy

21:53 -
第一次下载了二十多分钟下载出错。。
22:16 -
23:04在下face_recognition_models-0.3.0.tar.gz剩下4.5h。。
11:56 -
shape_predictor_5_face_landmarks下载出错
12:19 - 12:30
安装完成

配置

配置 PAM

Howdy - ArchWiki中是这么说的:你想用 howdy 通过 pam 来认证啥就在哪一个配置文件里的首行加入这行配置。

auth sufficient pam_python.so /lib/security/howdy/pam.py

看了一下 /etc/pam.d 下有39个配置文件,想认证 sudo 就改 /etc/pam.d/sudo,想做人脸图像识别登陆(KDE, GNOME)就改 /etc/pam.d/system-local-login

sudo nano /etc/pam.d/sudo
# 在首行加入上面那行配置, Ctrl + S 保存, Ctrl + X 退出。

sudo nano /etc/pam.d/system-local-login
# 同上
sudo nano /etc/pam.d/sddm
# 同上

配置 howdy

主要是配置摄像头和录入人脸,我用 VLC 中的 媒体 - 打开捕获设备 - 高级选项(advance options), 里面的视频捕获设备是 /dev/video0, 确定 - 播放 之后确实显示的摄像头的画面,因此确定了摄像头标识就是 /dev/video0

# kearney 是我的用户名,请注意修改
# 补上摄像头标识
sudo howdy -U kearney config
# 找到并补全 device_path = /dev/video0

# 添加人脸模型
sudo howdy -U kearney add

# 这里发生了一个错误。。。
Traceback (most recent call last):
  File "/usr/bin/howdy", line 95, in <module>
    import cli.add
  File "/usr/lib/security/howdy/cli/add.py", line 11, in <module>
    from recorders.video_capture import VideoCapture
  File "/usr/lib/security/howdy/recorders/video_capture.py", line 6, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'

这个错误是缺少opencv.。。但是用pacman -Qi howdypacman -Qi opencv发现两者已经安装上了。。到AUR - howdy下的 Comments 发现缺少的不是一个依赖。。。

补上依赖

pacman -S python-opencv
# 继续添加我的面子
sudo howdy -U kearney add

测试

重启一下先

sudo howdy test

如果出现 3 个 WARN 是正常的,是 GStreamer 的 warning 597、1034、2056,至于为什么可以看Howdy - ArchWiki中的 Troubleshooting,暂时的解决办法看 wiki,添加一个环境变量 OPENCV_LOG_LEVEL=ERROR (会的盆友教一下我)。

根据 Howdy - LinuxReviews 中的描述,KDE 在登陆时并不会自动调用人脸识别登陆,需要点击一下登陆按钮才会启动 howdy(不需要输入密码哈)

总结

看了好几个不同的软件,大体上都是用的 PAM,只是实现方式上有所不同。目前我这里可以用人脸替代密码的情况有sudo、人脸识别登陆,其ta用途暂未想到。

参考

WSL Hello sudo brings Windows Hello authentication to Linux on WSL:可惜的是这个插件是用在 WSL 里的

boltgolt/howdy - Windows Hello™ style facial authentication for Linux :已支持 Debian/Ubuntu, Arch Linux, Fedora and openSUSE

Howdy - ArchWiki

Howdy - Linux 的人脸识别

face authentication for linux:2009 年谷歌出品,网络卡我还没看到

rushabh-v/linux_face_unlock: Ubuntu 人脸认证

saanuregh/hola:Windows Hello™ style facial authentication for Linux written in Rust

AUR - howdy

Howdy - LinuxReviews:sudo nano /etc/pam.d/sddm

Note that ssdm will not not activate the web camera and try to identify the user in front of it before a user account is selected and the > button to login is pressed.

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值