众所周知,windows是个出厂完整的操作系统,其中WindowHello人脸解锁非常方便,非常优雅。

但是,Linux也可以添加howdy来添加人脸识别!

安装

需要用到AUR, 我使用的是yay,输入命令安装howdy

yay -S howdy

注意,虽然懒人神器会给你补全依赖,但是也要下载python-opencv!!!

pacman -S python-opencv

下载较慢的可以看往期文章,代理终端来加快下载速度!

配置

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

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

/etc/pam.d 下的文件

ps:修改配置文件不要删除,如果想删除就用#注释掉,以防止发生意外( tty都改不好那种!)

除非你是硬汉,任何问题都重装解决

想人脸sudo就改 /etc/pam.d/sudo

想人脸KDE就改 /etc/pam.d/system-local-login

sudo nano /etc/pam.d/sudo
添加auth sufficient pam_python.so /lib/security/howdy/pam.py
sudo nano /etc/pam.d/system-local-login
添加auth sufficient pam_python.so /lib/security/howdy/pam.py
sudo nano /etc/pam.d/sddm
#添加auth sufficient pam_python.so /lib/security/howdy/pam.py

配置 howdy

首先确定自己的摄像头位置,可以用VLC来逐个尝试,估计一个摄像头有两个路径,但是只有一个可以调用红外摄像头进行人脸识别,逐个尝试吧!

找到之后,输入以下指令打开配置

sudo howdy -U 用户名 config

找到device_path =

添加你的设备路径

(不要照抄我的!!!看自己的)

如果输入设备识别错误

例如 Thinkpad T480 的某些红外传感器需要在配置文件中定义框架高度和宽度:

frame_width = 400
frame_height = 400

获取传感器输出的高度和宽度: v4l2-ctl --list-devices --all

好了,添加自己的人脸模型吧!

sudo howdy -U 用户名 add

要用sudo命令!不然可能会发生意外(比如录不上)。

测试一下吧!

sudo howdy test

正常情况下会有三个warnin,属于正常,如果不想让它显示,可以向全局或者每个用户加入 OPENCV_LOG_LEVEL=ERROR 这个环境变量。

有些版本的 Howdy 会在识别用户时拍照,然后保存到 /lib/security/howdy/snapshots

为了避免这样的攻击,以及突然发现磁盘空间骤减,可以在 /lib/security/howdy/config.ini 中取消拍照:

[snapshots]
capture_failed = false
capture_successful = false

KDE 在登陆时并不会自动调用人脸识别登陆,需要按一下回车才会启动人脸识别

好了,重启开启你的新体验吧!

在下面贴出pam.d的部分文件配置,防止改坏了开不开没法复原

sudo

#%PAM-1.0
auth            include         system-auth
account         include         system-auth
session         include         system-auth

system-local-login

  GNU nano 6.2                    /etc/pam.d/system-local-login                             
#%PAM-1.0
auth      include   system-login
account   include   system-login
password  include   system-login
session   include   system-login

sddm

  GNU nano 6.2                           /etc/pam.d/sddm                                    
#%PAM-1.0
#auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
auth            sufficient      pam_python.so /lib/security/howdy/pam.py
auth            required        pam_unix.so shadow nullok
auth            requiredpam_nologin.so
session         optional        pam_keyinit.so force revoke
session         include         system-login
-session                optional        pam_gnome_keyring.so auto_start
-session  optional  pam_kwallet5.so auto_start
auth required pam_securetty.so
auth requisite pam_noloogin.so
account include system-local-login
session include system-local-login
password include system-local-login

如果出意外了,比如解不开,进不去等,可以进入tty把/etc/pam.d中改过的复原!