Photo by Brandy Vailes on Unsplash
Loguearse Mediante Reconocimiento Facial en Linux
Utiliza Howdy para iniciar sesión con tu usuario en Ubuntu 20.04/22.04 de forma automática.
Windows Hello es la aplicación de seguridad encargada del inicio de sesión mediante PIN, contraseña, y desde Windows 10 nos permite utilizar datos biométricos como rostro o huella digital.
Sin embargo, no hay distribuciones de Linux que actualmente tengan incluida esta función. Para instalar reconocimiento facial, lo cual recomiendo en cuestiones de comodidad, debemos utilizar Howdy.
Howdy provee una autenticación del tipo Windows Hello mediante la emisión de ondas infrarrojas, y se encuentra disponible en Debian/Ubuntu, Arch Linux, Fedora y OpenSUSE.
En esta guía realizaremos la instalación y configuración en Ubuntu 20.04. De requerirse otra distro, se puede consultar el repositorio oficial de Howdy github.com/boltgolt/howdy.
Instalación en Ubuntu
sudo add-apt-repository ppa:boltgolt/howdy
sudo apt update
sudo apt install howdy
Durante la instalación, exactamente al 44% de la misma, se requiere al usuario elegir el algoritmo de inteligencia artificial a usar. Si posees un emisor infrarrojo en tu laptop, puedes optar por un reconocimiento rápido con la opción ‘f’.
Configuración
Lo primero que debemos hacer es elegir qué cámara queremos emplear. Si estamos en una laptop, por razones de seguridad, recomiendo elegir el emisor infrarrojo. Para conocer la ruta de las cámaras disponibles utilizamos el comando
ls /dev | grep “video”
video0
video1
No te asustes si dispones de una única cámara web y aparecen dos en lista, ya que el par corresponde al dispositivo y a metadata que se le provee al kernel de Linux. Por ejemplo, en las laptops es normal que video0
y video2
corresponden a la cámara web y al emisor infrarrojo respectivamente, mientras que video1
y video3
a sus metadatos correspondientes.
sudo howdy config
y en la opción device_path
utilizamos
device_path = /dev/video2
Una vez guardado el archivo, si no estamos seguros de que cámara estamos utilizando, podemos realizar un test utilizando howdy
sudo howdy test
Adicionalmente, se recomienda configurar para mayor discreción y seguridad, no advertir al usuario:
detection_notice = false
no_confirmation = true
En ordenadores con procesamiento de video externo tales como equipos gamers o workstations podemos habilitar la opción, use_cnn
el cual funciona mediante GPU y provee un reconocimiento mucho más preciso que HOG.
Agregar Modelos (Rostros)
Para agregar rostros debemos utilizar el comando
$ sudo howdy add
Adding face model for the user usuario1
Enter a label for this new model [Model #1] (max 24 characters): _
En mi caso tengo varios modelos, de izquierda, derecha, de frente, con lentes, con gorro, y podemos agregar diferentes personas si es necesario.
Desactivar Howdy Para No Malgastar la Batería
Además de utilizar un algoritmo de inteligencia artificial basado en python, cada vez que queremos utilizar el super usuario (sudo) el dispositivo encenderá la cámara y emite ondas infrarrojas.
El CLI de Howdy permite habilitar o deshabilitar mediante el comando
sudo howdy disable 0 # ENABLE
sudo howdy disable 1 # DISABLE
Debido al uso de procesador y gasto de batería que esto conlleva, podemos crear un pequeño script usando el CLI de upower. Para obtener la ruta de la batería:
upower -e
Podemos ver la información de la batería mediante
upower -i /org/freedesktop/upower/devices/battery_BAT1
u opcionalmente
upower - i `upower -e | grep ‘BAT’`
Cuando la batería está desconectada, se encuentra en estado ‘descargando’.
upower -i /org/freedesktop/upower/devices/battery_BAT1 | grep “state
Finalmente, podemos hacer el siguiente script para desactivar Howdy cuando nuestro dispositivo bootea y no está conectado a la alimentación.
#!/bin/bash
state=`upower -i /org/freedesktop/upower/devices/battery_BAT1 | grep “state”`
if [[ $state==*”discharging”* ]]
then
sudo howdy disable 1
else
sudo howdy disable 0
fi
Para que el script se ejecute automáticamente podemos agregar
start on startup
task
exec /ruta/del/script/creado
en el archivo conf
de /etc/init