簡體   English   中英

如何在ubuntu / linux中添加基於面部識別的登錄?

[英]How to add facial recognition based login in ubuntu/linux?

我已經用python編寫了代碼來檢測我的臉。 現在,我想添加此功能以在我的Ubuntu系統中登錄。 我通過互聯網搜索,但找不到合適的答案。

我想顯示一個選項/圖標以選擇面部識別,然后單擊它,我的面部識別代碼開始在后台運行。 我該如何實現? 請確切說明我需要在ubuntu系統中進行哪些更改才能啟用和使用該選項?

您將要使用Linux-PAM允許您使用面部識別來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,以告知腳本腳本是否通過或失敗。 找到這一行:

python3 /path/to/susentry.py -l

並將/path/to/susentry.py更改為python腳本的完整路徑。 然后,將此文件放在/ usr / local / bin文件夾中。

接下來,我們修改PAM common-auth文件:

gksudo gedit /etc/pam.d/common-auth

在您的common-auth文件中找到以下行:

auth [success=1 default=ignore]     pam_unix.so nullok_secure

該行調用要求用戶輸入密碼的模塊。 如果模塊返回成功(密碼正確),則跳過下一行(成功= 1表示跳過一行)。 目標是如果身份驗證成功,則跳過以下行:

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

確保將/path/to/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特權打開一個新終端,以便可以還原所做的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM