Configuración PAM optimizada para sistemas Arch Linux con Hyprland que permite autenticación mediante contraseña O huella dactilar de forma flexible, sin bloqueos artificiales ni limitaciones innecesarias.
- Características
- Requisitos Previos
- Instalación
- Uso
- Comportamiento Detallado
- Archivos Incluidos
- Configuración PAM Explicada
- Solución de Problemas
- Restaurar Configuración Original
- Seguridad
- Contribuciones
- Licencia
- ✅ Autenticación dual flexible: Usa contraseña O huella dactilar según prefieras
- ✅ Sin bloqueos artificiales: No necesitas fallar 3 veces con la huella para usar contraseña
- ✅ Huella disponible desde el inicio: La huella funciona correctamente en hyprlock, sudo y ly
- ✅ Contraseña con intentos normales: 3 intentos estándar cuando usas contraseña
- ✅ Backups automáticos: El script crea backups antes de aplicar cambios
- ✅ Consistencia total: Mismo comportamiento en todos los servicios (sudo, hyprlock, ly)
- ✅ Fácil de revertir: Restauración simple de la configuración original
Asegúrate de tener instalados los siguientes paquetes:
# Instalar fprintd y el módulo PAM para huellas dactilares
sudo pacman -S fprintd libpam-fprintd
# Verificar que el servicio fprintd esté activo
sudo systemctl enable --now fprintdAntes de usar la autenticación por huella, debes registrar tus huellas:
# Registrar una nueva huella
fprintd-enroll
# Verificar huellas registradas
fprintd-list $USER
# Eliminar una huella (si es necesario)
fprintd-delete $USER <finger>Consulta la lista de dispositivos compatibles en la ArchWiki para asegurarte de que tu lector de huellas es compatible con fprintd.
# Clonar el repositorio
git clone https://github.com/l0rdbarcsacs/pam_config_backup.git
cd pam_config_backup
# Aplicar la configuración
sudo bash apply_pam_fix.sh# Crear directorio
mkdir -p ~/pam_config_backup
cd ~/pam_config_backup
# Descargar archivos (reemplaza con los URLs reales cuando subas a GitHub)
# wget https://raw.githubusercontent.com/l0rdbarcsacs/pam_config_backup/main/apply_pam_fix.sh
# wget https://raw.githubusercontent.com/l0rdbarcsacs/pam_config_backup/main/hyprlock_pam_new
# wget https://raw.githubusercontent.com/l0rdbarcsacs/pam_config_backup/main/sudo_pam_new
# wget https://raw.githubusercontent.com/l0rdbarcsacs/pam_config_backup/main/ly_pam_new
# Aplicar la configuración
sudo bash apply_pam_fix.shSimplemente ejecuta el script de instalación:
sudo bash ~/pam_config_backup/apply_pam_fix.shEl script:
- ✅ Crea backups automáticos de tus configuraciones actuales
- ✅ Aplica las nuevas configuraciones PAM
- ✅ Muestra instrucciones para restaurar si es necesario
Si prefieres aplicar los cambios manualmente:
# Crear backups primero
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.backup.${BACKUP_DATE}
sudo cp /etc/pam.d/hyprlock /etc/pam.d/hyprlock.backup.${BACKUP_DATE}
# Si usas ly como display manager
if [ -f /etc/pam.d/ly ]; then
sudo cp /etc/pam.d/ly /etc/pam.d/ly.backup.${BACKUP_DATE}
fi
# Aplicar nuevas configuraciones
sudo cp ~/pam_config_backup/sudo_pam_new /etc/pam.d/sudo
sudo cp ~/pam_config_backup/hyprlock_pam_new /etc/pam.d/hyprlock
# Si usas ly
if [ -f ~/pam_config_backup/ly_pam_new ]; then
sudo cp ~/pam_config_backup/ly_pam_new /etc/pam.d/ly
fiEsta configuración permite que ambos métodos de autenticación estén disponibles desde el inicio:
- Huella dactilar primero: PAM intenta la huella primero. Si la usas, autentica inmediatamente.
- Contraseña como alternativa: Si no usas la huella o falla, puedes escribir tu contraseña directamente.
- Sin bloqueos: No necesitas fallar múltiples veces con un método para usar el otro.
- Huella disponible desde el inicio: Puedes usar tu huella inmediatamente al ejecutar
sudo - Contraseña directa: Si prefieres usar contraseña, simplemente escríbela (3 intentos normales)
- Sin esperas: No necesitas fallar con la huella para poder usar la contraseña
Ejemplo de uso:
# Opción 1: Usar huella
sudo ls
# [Toca el lector de huellas]
# Opción 2: Usar contraseña
sudo ls
# [Escribe tu contraseña]- Huella funcional: La huella ahora funciona correctamente en hyprlock
- Contraseña disponible: Puedes escribir tu contraseña directamente en el campo de entrada
- Flexibilidad total: Elige el método que prefieras en cada momento
Ejemplo de uso:
- Bloquea tu pantalla con
hyprlock - Usa tu huella directamente O escribe tu contraseña en el campo
- Mismo comportamiento: Consistente con sudo y hyprlock
- Ambos métodos disponibles: Huella o contraseña desde el inicio del login
hyprlock_pam_new: Configuración PAM para hyprlock (lockscreen de Hyprland)sudo_pam_new: Configuración PAM para sudo (elevación de privilegios)ly_pam_new: Configuración PAM para ly (display manager, opcional)
apply_pam_fix.sh: Script automatizado para aplicar todas las configuraciones- Crea backups automáticos con timestamp
- Aplica cambios de forma segura
- Proporciona instrucciones de restauración
Cada archivo de configuración PAM sigue esta estructura:
#%PAM-1.0
# Huella dactilar primero: disponible desde el inicio
auth sufficient pam_fprintd.so
# Contraseña como alternativa, con 3 intentos normales
auth sufficient pam_unix.so try_first_pass nullok
# Si ambas fallan, denegar acceso
auth required pam_deny.so
- Control:
sufficient- Si tiene éxito, la autenticación es exitosa y no se evalúan más módulos - Función: Autentica usando huella dactilar
- Comportamiento: Disponible desde el inicio, sin límites artificiales de intentos
- Control:
sufficient- Si tiene éxito, la autenticación es exitosa - Opciones:
try_first_pass: Intenta usar la contraseña proporcionada por módulos anterioresnullok: Permite que la autenticación continúe si no se proporciona contraseña
- Función: Autentica usando contraseña del sistema
- Comportamiento: Permite 3 intentos normales antes de fallar
- Control:
required- Siempre falla, denegando acceso - Función: Bloquea el acceso si ningún método anterior tuvo éxito
- Comportamiento: Garantiza que si ambos métodos fallan, el acceso es denegado
PAM procesa los módulos en orden:
-
Primero:
pam_fprintd.so- Intenta autenticación por huella- Si la huella es exitosa → Autenticación exitosa ✅
- Si la huella falla o no se usa → Continúa al siguiente módulo
-
Segundo:
pam_unix.so- Intenta autenticación por contraseña- Si la contraseña es correcta → Autenticación exitosa ✅
- Si la contraseña falla (3 intentos) → Continúa al siguiente módulo
-
Tercero:
pam_deny.so- Deniega el acceso- Solo se alcanza si ambos métodos anteriores fallaron ❌
- Huella primero: Permite que la huella esté disponible desde el inicio, resolviendo el problema donde la huella no funcionaba en hyprlock
- Contraseña segundo: Si prefieres usar contraseña, puedes escribirla directamente sin esperar
- Ambos
sufficient: Cualquiera de los dos puede autenticar exitosamente
-
Verificar que fprintd esté corriendo:
systemctl status fprintd
-
Verificar que tu huella esté registrada:
fprintd-list $USER -
Re-registrar tu huella:
fprintd-enroll
-
Verificar compatibilidad del dispositivo:
- Consulta la ArchWiki sobre Fprint
-
Verificar que la configuración se aplicó correctamente:
cat /etc/pam.d/sudo cat /etc/pam.d/hyprlock
-
Verificar que tu contraseña sea correcta:
# Probar login normal su - $USER
-
Verificar que el archivo PAM de hyprlock existe:
ls -la /etc/pam.d/hyprlock
-
Verificar el contenido:
cat /etc/pam.d/hyprlock
Debe contener
pam_fprintd.socomo primer módulo de autenticación. -
Reiniciar hyprlock:
# Cierra hyprlock si está corriendo y vuelve a iniciarlo pkill hyprlock
Esto indica que la configuración no se aplicó correctamente. Verifica:
# Verificar el contenido de /etc/pam.d/sudo
cat /etc/pam.d/sudo
# Debe tener pam_fprintd.so ANTES de pam_unix.so
# Si no, re-aplica la configuración:
sudo bash ~/pam_config_backup/apply_pam_fix.shSi ly no acepta huella:
-
Verificar que ly esté instalado:
which ly
-
Verificar que el archivo PAM existe:
ls -la /etc/pam.d/ly
-
Aplicar manualmente si el script no lo detectó:
sudo cp ~/pam_config_backup/ly_pam_new /etc/pam.d/ly
Si necesitas restaurar la configuración original:
El script crea backups con timestamp. Para restaurar:
# Listar backups disponibles
ls -la /etc/pam.d/*.backup.*
# Restaurar (reemplaza YYYYMMDD_HHMMSS con la fecha real)
sudo cp /etc/pam.d/sudo.backup.YYYYMMDD_HHMMSS /etc/pam.d/sudo
sudo cp /etc/pam.d/hyprlock.backup.YYYYMMDD_HHMMSS /etc/pam.d/hyprlock
sudo cp /etc/pam.d/ly.backup.YYYYMMDD_HHMMSS /etc/pam.d/lySi no tienes backups, puedes restaurar las configuraciones por defecto:
# Para sudo (configuración mínima por defecto)
sudo tee /etc/pam.d/sudo > /dev/null <<EOF
#%PAM-1.0
auth include system-auth
account include system-auth
session include system-auth
EOF
# Para hyprlock (configuración por defecto que incluye login)
sudo tee /etc/pam.d/hyprlock > /dev/null <<EOF
# PAM configuration file for hyprlock
# the 'login' configuration file (see /etc/pam.d/login)
auth include login
EOF
# Para ly (si existe, restaurar desde paquete)
sudo pacman -S --overwrite /etc/pam.d/ly ly- Backups automáticos: El script siempre crea backups antes de modificar archivos críticos
- Permisos correctos: Los archivos PAM deben tener permisos 644 y pertenecer a root
- Verificación: Siempre verifica los cambios antes de cerrar sesión
# Los archivos PAM deben tener estos permisos:
ls -l /etc/pam.d/sudo /etc/pam.d/hyprlock
# Deben mostrar:
# -rw-r--r-- 1 root root ...- ✅ Siempre prueba en una sesión de terminal abierta antes de cerrar sesión
- ✅ Mantén backups de tus configuraciones
- ✅ Verifica que fprintd esté funcionando antes de depender de la huella
- ✅ Ten una contraseña fuerte como respaldo
- PAM es un sistema serializado: procesa métodos uno a la vez, no simultáneamente
- La huella puede no funcionar si el lector no está correctamente configurado
- Algunos lectores de huellas pueden requerir configuración adicional del driver
Las contribuciones son bienvenidas! Si encuentras un problema o tienes una mejora:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- 📝 Mejoras en la documentación
- 🐛 Reportes de bugs
- ✨ Nuevas características
- 🌍 Traducciones
- 📊 Soporte para otros display managers
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
- Arch Linux - La distribución Linux que hace esto posible
- Hyprland - El compositor Wayland moderno
- fprintd - El daemon de gestión de huellas dactilares
- PAM Documentation - Documentación oficial de PAM
Si tienes problemas o preguntas:
- Revisa la sección de Solución de Problemas
- Abre un Issue en GitHub
- Consulta la ArchWiki sobre Fprint
- ArchWiki: Fprint - Guía completa sobre autenticación por huella en Arch
- PAM Configuration Guide - Guía oficial de configuración PAM
- Hyprland Wiki - Documentación de Hyprland
- fprintd Documentation - Documentación de fprintd
⭐ Si este proyecto te ha sido útil, considera darle una estrella en GitHub!