Howdy

出自 Arch Linux 中文维基

Howdy 是 Linux 上一個類似 Windows Hello,通過電腦的紅外傳感器識別人臉,解鎖電腦的程序。

安裝[編輯 | 編輯原始碼]

安裝 howdyAUR 軟件包。或者您也可以從archlinuxcn倉庫安裝howdyCNRepo

注意: 在該軟件包的使用過程中會從 GitHub 的 raw 伺服器下載文件,而中國大陸用户連接該伺服器網絡不通暢,請確保你的網絡能正常連接。

配置[編輯 | 編輯原始碼]

把 Howdy 設置為當需要時才使用[編輯 | 編輯原始碼]

為了讓 Howdy 能夠對用户進行身份驗證,您需要在使用了 Howdy 的 PAM 配置文件中做一些小改動。請把以下內容添加到對應的配置文件中:

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

注意:當使用 Howdy 3.0.0 BETA 及以上版本時(howdy-beta-gitAUR),這一行應該為:

auth sufficient /lib/security/pam_howdy.so

howdy/pam.py (或 pam_howdy.so) 添加 sufficient 的控制標記後,將只提示進行人臉身份驗證。如果您無法中斷(Ctrl+C)面部識別過程(比如在解鎖屏幕和Polkit驗證窗口中),那您將無法使用密碼進行驗證。想要既能人臉識別,又能用密碼驗證,請把以下內容添加到 /etc/pam.d/ 下對應的 PAM 配置文件的最頂部

auth sufficient pam_unix.so try_first_pass likeauth nullok

添加正確的紅外傳感器[編輯 | 編輯原始碼]

可以在諸如 cheesefswebcamAUR 或者 v4l-utils 的程序裡找到並確定能連接到紅外傳感器的正確 /dev/videoX 文件,

以內置於 v4l-utils 軟件包的工具為例:

$ v4l2-ctl --list-devices
Integrated_Webcam_HD: Integrate (usb-0000:00:14.0-11):
        /dev/video0
        /dev/video1

EyeChip: Tobii Video (usb-0000:00:14.0-3.4.3):
        /dev/video4
        /dev/video5

HD Webcam C525 (usb-0000:00:14.0-3.4.4):
        /dev/video2
        /dev/video3

在上述例子中,有不止一個網絡攝像頭,而且每一個攝像頭都有好幾個不同的 /dev/videoX 路徑,一般來説選第一或第二個路徑會比較好。

如果攝像頭或紅外傳感器不止一個,使用 /dev/videoX 可能會隨着時間的推移而變得不穩定,因為它們的路徑可能會隨着某些設備的拆卸和裝入而改變。這時可以用由 Video 4 Linuxwikipedia:Video4Linux 提供的,更加穩定的 /dev/v4l/by-id/ 路徑。

$ ls -l /dev/v4l/by-id
total 0
lrwxrwxrwx 1 root root 12 Dec  3 15:01 usb-046d_HD_Webcam_C525_BE4703F0-video-index0 -> ../../video2
lrwxrwxrwx 1 root root 12 Dec  3 15:01 usb-046d_HD_Webcam_C525_BE4703F0-video-index1 -> ../../video3
lrwxrwxrwx 1 root root 12 Dec  3 14:47 usb-CNFGH19N306021000582_Integrated_Webcam_HD-video-index0 -> ../../video0
lrwxrwxrwx 1 root root 12 Dec  3 14:47 usb-CNFGH19N306021000582_Integrated_Webcam_HD-video-index1 -> ../../video1
lrwxrwxrwx 1 root root 12 Dec  3 14:47 usb-Tobii_Technology_AB_EyeChip_IS404-100109244721-video-index0 -> ../../video4
lrwxrwxrwx 1 root root 12 Dec  3 14:47 usb-Tobii_Technology_AB_EyeChip_IS404-100109244721-video-index1 -> ../../video5

先驗證這些 v4l 路徑不隨設備的拆卸和裝入而改變,然後重列設備目錄(re-listing the directory)。

找到正確的文件名後,您就可以用自己喜歡的編輯器編輯 /lib/security/howdy/config.ini 文件,也可以以 root 用户權限使用 howdy config 命令來編輯。

設定 EDITOR 變量來自定義 howdy config 使用的編輯器:

# EDITOR=editor howdy config

向 Howdy 添加面部數據[編輯 | 編輯原始碼]

要想添加面部模型,運行 sudo howdy add

加固 Howdy[編輯 | 編輯原始碼]

有些版本的 Howdy 會在識別用户時拍照,然後保存到 /lib/security/howdy/snapshots。這某種程度來説是一個安全漏洞。攻擊者能夠輕易找到某次成功登錄的照片並用它來冒充您進行登錄,從而達到提權的目的。當然,攻擊者還可以使用目標用户的任何其他照片,但是 Howdy 簡化了該過程。

為了避免這樣的攻擊,以及突然發現磁盤空間驟減,可以在 /lib/security/howdy/config.ini 中取消拍照:

[snapshots]
capture_failed = false
capture_successful = false

疑難雜症[編輯 | 編輯原始碼]

紅外發射器不工作[編輯 | 編輯原始碼]

已啟用紅外攝像頭而紅外發射器不工作,沒準是因為你選錯了文件。打個比方,可能 /dev/video0/dev/video2 都能識別你的臉部,但是只有 /dev/video2 會啟用紅外發射器,所以要試試所有的 /dev/videoX 路徑,看看有沒有哪個能正常工作。

如果還不行,試着跟從 linux-enable-ir-emitter 的指導啟用紅外發射器。

注意: 由於上游代碼的原因,linux-able-ir-emitterAUR包的最新版本通過在安裝完成後會運行自己的腳本來生成 Systemd 服務文件。這種行為可能不是您想要的,因為它的自定義腳本會修改文件系統根目錄。目前已知在版本 3.2.0-2 之前,該軟件包都帶有 Systemd 服務文件,所以您可能需要選擇適合自己的版本。

測試紅外攝像頭[編輯 | 編輯原始碼]

提前確認紅外攝像頭能正常運作是個挺不錯的主意,用 gstreamer 軟件包的以下命令十連拍來測試設備(別忘了用你的紅外攝像機的位置替代下面的 IR camera ):

gst-launch-1.0 v4l2src device=IR camera num-buffers=10 ! image/jpeg ! multifilesink location="frame-%02d.jpg"

Howdy 無法正常運轉[編輯 | 編輯原始碼]

用 root 權限運行 howdy test 來確保 Howdy 正常工作,如果看起來一切正常,就檢查 PAM 配置並確認其正在工作。例如 SDDM [1] 的某些程序不能在 PAM 下正常工作,會造成一些出乎意料的結果。

如果您安裝的是2.x版本,您也可以嘗試使用beta版本howdy-beta-gitAUR,參見[2][3]

輸入設備識別錯誤[編輯 | 編輯原始碼]

例如 Thinkpad T480 的某些紅外傳感器需要在配置文件中定義框架高度和寬度:

frame_width = 400
frame_height = 400

獲取傳感器輸出的高度和寬度: v4l2-ctl --list-devices --all