linux面部识别,如何在ubuntu/linux中添加基于面部识别的登录?

您将希望使用LinuxPAM来允许您使用面部识别进行Su/Sudo。我用python+bash脚本完成了这项工作:https://github.com/lambrou/susentry

我已经完成了自述的一部分,并将结合你的问题向你解释。在

您需要做的第一件事是制作一个bash脚本来调用python脚本。在#!/bin/bash

# You must change the value /path/to/susentry.py to the path of your

# python file.

export DISPLAY=:0.0

xhost +local:

python3 /path/to/susentry.py -l # run the python script for facial recognition

exit_status=$? # This grabs the exit status of the python script we just ran

if [ "${exit_status}" -ne 0 ]; # checks to see if exit status is anything other than 0

then

echo "exit ${exit_status}"

exit 1 # exit status 1 on python script fail (exit 1)

fi

echo "EXIT 0"

exit 0 # exit 0 if we get to this line

这个脚本的作用是将显示设置为您的显示,因为PAM模块将从不同的用户空间调用脚本,我们需要告诉它您的显示在哪里,以及您使用的xhost是什么。然后,它获取python脚本的退出状态(确保在面部识别失败时退出1,通过退出0),并将其传递给PAM,让PAM知道脚本是否通过或失败。

查找此行:

Python3/路径/目的地/suentry.py-我

改变/路径/到/suentry.py到python脚本的完整路径。然后,将这个文件放在/usr/local/bin文件夹中。在

接下来,我们修改PAM common auth文件:

^{pr2}$

在公共身份验证文件中查找以下行:auth [success=1 default=ignore] pam_unix.so nullok_secure

这一行调用向用户请求密码的模块。如果成功,则跳过下一行(如果成功,则跳过一行)。如果验证成功,目标是跳过以下行:auth requisite pam_deny.so

因为这一行拒绝用户访问权限。

因此,如果您想使用su/sudo,但您不需要输入密码而是使用面部比较,请在上面的一行中添加以下内容:auth [success=2 default=ignore] pam_exec.so debug log=/path/to/pamlogs.txt /usr/local/bin/susentry

确保更改/路径/到/pamlogs.txt保存PAM输出的位置。(这个输出是来自PAM、bash脚本和python脚本的错误输出和stdin输出)

让我们把它分解。在

auth [success=2 default=ignore]

意思是“如果这个程序返回成功(退出0),则跳过接下来的2行。(密码提示行、验证失败行)

pam_exec.so debug log=/path/to/pamlogs.txt

这部分说“使用pam_exec来执行bash脚本,并将所有错误日志/stdin日志发送到/path/to/pamlogs.txt在

/usr/local/bin/susentry

这部分是bash脚本的位置。这就是PAM exec运行并等待退出代码的原因。在

如果面部识别脚本失败,则应返回请求密码。

请注意,编辑/etc/pam.d/common-auth时需要小心,因为这样会破坏sudo。您可能希望在处理这些内容时使用root权限打开一个新的终端,以便恢复更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值