dm-crypt (Español)/Mounting at login (Español)

From ArchWiki

Estado de la traducción: esta traducción de Dm-crypt/Mounting at login fue revisada el 2018-11-22. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Es posible configurar PAM y systemd (Español) para montar automáticamente una partición «home» cifrada con dm-crypt cuando su propietario inicie sesión y desmontarla cuando la cierre.

Este tutorial supone que ya ha creado su partición cifrada, como se describe en Dm-crypt/Encrypting a non-root file system (Español).

Nota:
  • Debe usar la misma contraseña para su cuenta de usuario y para LUKS.
  • En todos los ejemplos, reemplace SUNOMBRE con su nombre de usuario, 1000 con su ID de usuario y PARTICIÓN con el nombre del dispositivo de la partición cifrada.

Montar al iniciar sesión

pam_exec se puede usar para desbloquear el dispositivo al iniciar sesión. Edite /etc/pam.d/system-login y añada la línea siguiente resaltada en negrita después de auth include system-auth:

Nota: GDM, LightDM, y tal vez otros administradores de inicio de sesión podrían requerir pam_exec para session también, vea Talk:Dm-crypt/Mounting at login#pam_exec required for session & using script.
/etc/pam.d/system-login
...

auth       include    system-auth
auth       optional   pam_exec.so expose_authtok quiet /usr/bin/cryptsetup open /dev/PARTICIÓN home-SUNOMBRE

...

Ahora edite /etc/fstab para montar el dispositivo desbloqueado utilizando systemd.automount:

/etc/fstab
...

/dev/mapper/home-SUNOMBRE  /home/SUNOMBRE     ext4            rw,noatime,noauto,x-systemd.automount 0 2

...

Su directorio «home» se montará automáticamente en el primer acceso realizado por su entorno de escritorio o intérprete de órdenes.

Desmontar al cerrar sesión

Después de cerrar todas sus sesiones, systemd-logind cierra automáticamente user@1000.service. Por lo tanto, puede especificar qué punto de montaje se requerirá y systemd lo desmontará automáticamente:

/etc/systemd/system/home-SUNOMBRE.mount.d/logout.conf
[Unit]
Requires=user@1000.service

Sin embargo, esto creará un bucle de dependencia circular que no puede resolverse automáticamente por systemd , por lo que debe describir las dependencias y ordenarlas de forma explícita:

/etc/systemd/system/user@1000.service.d/homedir.conf
[Unit]
Requires=home-SUNOMBRE.mount
After=home-SUNOMBRE.mount
Nota: Si su entorno de escritorio o alguna otra aplicación no cancela todos sus procesos al cerrar la sesión, es posible que deba establecer KillUserProcesses=yes en /etc/systemd/logind.conf.

Bloquear

Después de desmontar, el dispositivo seguirá desbloqueado, y será posible montarlo sin volver a ingresar la contraseña. Puede configurar y activar un servicio que se inicie cuando el dispositivo se desbloquea (BindsTo=dev-mapper-home\x2dSUNOMBRE.device) y expire después de que el dispositivo se desmonta (Requires,Before=home-SUNOMBRE.mount), bloqueando el dispositivo en el proceso (ExecStop=cryptsetup close):

/etc/systemd/system/cryptsetup-SUNOMBRE.service
[Unit]
DefaultDependencies=no
BindsTo=dev-PARTICIÓN.device
After=dev-PARTICIÓN.device
BindsTo=dev-mapper-home\x2dSUNOMBRE.device
Requires=home-SUNOMBRE.mount
Before=home-SUNOMBRE.mount
Conflicts=umount.target
Before=umount.target

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStop=/usr/bin/cryptsetup close home-SUNOMBRE

[Install]
RequiredBy=dev-mapper-home\x2dSUNOMBRE.device
Nota: dev-PARTICIÓN es el resultado de systemd-escape -p /dev/PARTICIÓN