Skip to content

l0rdbarcsacs/pam_config_backup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Configuración PAM para Autenticación Dual: Contraseña y Huella Dactilar

License: MIT Arch Linux Hyprland

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.

📋 Tabla de Contenidos

✨ Características

  • 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

🔧 Requisitos Previos

Paquetes Necesarios

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 fprintd

Registrar Tu Huella Dactilar

Antes 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>

Verificar Compatibilidad del Lector

Consulta la lista de dispositivos compatibles en la ArchWiki para asegurarte de que tu lector de huellas es compatible con fprintd.

📦 Instalación

Método 1: Clonar el Repositorio (Recomendado)

# 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

Método 2: Descargar Manualmente

# 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.sh

🚀 Uso

Aplicar la Configuración

Simplemente ejecuta el script de instalación:

sudo bash ~/pam_config_backup/apply_pam_fix.sh

El script:

  1. ✅ Crea backups automáticos de tus configuraciones actuales
  2. ✅ Aplica las nuevas configuraciones PAM
  3. ✅ Muestra instrucciones para restaurar si es necesario

Aplicación Manual (Alternativa)

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
fi

📖 Comportamiento Detallado

Comportamiento General

Esta configuración permite que ambos métodos de autenticación estén disponibles desde el inicio:

  1. Huella dactilar primero: PAM intenta la huella primero. Si la usas, autentica inmediatamente.
  2. Contraseña como alternativa: Si no usas la huella o falla, puedes escribir tu contraseña directamente.
  3. Sin bloqueos: No necesitas fallar múltiples veces con un método para usar el otro.

Configuraciones Específicas por Servicio

🔒 sudo

  • 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]

🖥️ hyprlock (Lockscreen de Hyprland)

  • 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

🎨 ly (Display Manager)

  • Mismo comportamiento: Consistente con sudo y hyprlock
  • Ambos métodos disponibles: Huella o contraseña desde el inicio del login

📁 Archivos Incluidos

Archivos de Configuración PAM

  • 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)

Scripts

  • 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

🔍 Configuración PAM Explicada

Estructura de la Configuració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

Explicación de los Módulos PAM

pam_fprintd.so (sufficient)

  • 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

pam_unix.so (sufficient)

  • Control: sufficient - Si tiene éxito, la autenticación es exitosa
  • Opciones:
    • try_first_pass: Intenta usar la contraseña proporcionada por módulos anteriores
    • nullok: 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

pam_deny.so (required)

  • 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

Orden de Procesamiento

PAM procesa los módulos en orden:

  1. 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
  2. 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
  3. Tercero: pam_deny.so - Deniega el acceso

    • Solo se alcanza si ambos métodos anteriores fallaron ❌

¿Por qué este orden?

  • 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

🐛 Solución de Problemas

La huella no funciona

  1. Verificar que fprintd esté corriendo:

    systemctl status fprintd
  2. Verificar que tu huella esté registrada:

    fprintd-list $USER
  3. Re-registrar tu huella:

    fprintd-enroll
  4. Verificar compatibilidad del dispositivo:

La contraseña no funciona

  1. Verificar que la configuración se aplicó correctamente:

    cat /etc/pam.d/sudo
    cat /etc/pam.d/hyprlock
  2. Verificar que tu contraseña sea correcta:

    # Probar login normal
    su - $USER

hyprlock no acepta huella

  1. Verificar que el archivo PAM de hyprlock existe:

    ls -la /etc/pam.d/hyprlock
  2. Verificar el contenido:

    cat /etc/pam.d/hyprlock

    Debe contener pam_fprintd.so como primer módulo de autenticación.

  3. Reiniciar hyprlock:

    # Cierra hyprlock si está corriendo y vuelve a iniciarlo
    pkill hyprlock

sudo solo permite huella después de fallar con contraseña

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.sh

Problemas con ly (Display Manager)

Si ly no acepta huella:

  1. Verificar que ly esté instalado:

    which ly
  2. Verificar que el archivo PAM existe:

    ls -la /etc/pam.d/ly
  3. Aplicar manualmente si el script no lo detectó:

    sudo cp ~/pam_config_backup/ly_pam_new /etc/pam.d/ly

↩️ Restaurar Configuración Original

Si necesitas restaurar la configuración original:

Método 1: Usar los Backups del Script

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/ly

Método 2: Restaurar desde Arch Linux Defaults

Si 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

🔒 Seguridad

Consideraciones de Seguridad

  1. Backups automáticos: El script siempre crea backups antes de modificar archivos críticos
  2. Permisos correctos: Los archivos PAM deben tener permisos 644 y pertenecer a root
  3. Verificación: Siempre verifica los cambios antes de cerrar sesión

Verificar Permisos

# 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 ...

Mejores Prácticas

  • 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

Limitaciones Conocidas

  • 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

🤝 Contribuciones

Las contribuciones son bienvenidas! Si encuentras un problema o tienes una mejora:

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Áreas donde se necesitan contribuciones

  • 📝 Mejoras en la documentación
  • 🐛 Reportes de bugs
  • ✨ Nuevas características
  • 🌍 Traducciones
  • 📊 Soporte para otros display managers

📝 Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

🙏 Agradecimientos

📞 Soporte

Si tienes problemas o preguntas:

  1. Revisa la sección de Solución de Problemas
  2. Abre un Issue en GitHub
  3. Consulta la ArchWiki sobre Fprint

📚 Referencias y Recursos Adicionales


⭐ Si este proyecto te ha sido útil, considera darle una estrella en GitHub!

About

PAM configuration for dual authentication (password and fingerprint) on Arch Linux with Hyprland

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages