dm-crypt (Português)/Mounting at login (Português)
É possível configurar o PAM e o systemd para montar automaticamente uma partição dm-crypt criptografada do diretório pessoal (home) quando o usuário fizer login, e desmontá-la quando ele fizer logout.
Este tutorial assume que você já criou sua partição criptografada, conforme descrito em Dm-crypt/Encrypting a non-root file system.
- Você precisa usar a mesma senha para sua conta de usuário e para o LUKS.
- Em todos os exemplos, substitua
usernamepelo seu nome de usuário,1000pelo seu ID de usuário ePARTITIONpelo nome do dispositivo da sua partição criptografada.
Desbloqueando no login
O pam_exec pode ser usado para desbloquear o dispositivo no momento do login. Edite /etc/pam.d/system-login e adicione a linha abaixo (em negrito) após auth include system-auth:
/etc/pam.d/system-login
... auth include system-auth auth optional pam_exec.so expose_authtok /etc/pam_cryptsetup.sh ...
Em seguida, crie o script mencionado.
/etc/pam_cryptsetup.sh
#!/bin/sh
CRYPT_USER="username"
PARTITION="/dev/sdXY"
NAME="home-$CRYPT_USER"
if [ "$PAM_USER" = "$CRYPT_USER" ] && ! [ -e "/dev/mapper/$NAME" ]; then
/usr/bin/cryptsetup open "$PARTITION" "$NAME"
fi
Torne o script executável.
Montagem e desmontagem automáticas
O systemd-logind mantém o serviço user@1000.service ativo enquanto houver ao menos uma sessão ativa do usuário. Ele é iniciado automaticamente após o primeiro login bem-sucedido e finalizado após o logout da última sessão.
Portanto, podemos criar e habilitar uma unidade systemd.mount(5) para o volume mapeado e conectá-la a user@1000.service para que seja montada e desmontada automaticamente:
/etc/systemd/system/home-username.mount
[Unit] Requires=user@1000.service Before=user@1000.service [Mount] Where=/home/username What=/dev/mapper/home-username Type=btrfs Options=defaults,relatime,compress=zstd [Install] RequiredBy=user@1000.service
Bloqueio após desmontar
Após desmontar, o dispositivo ainda permanecerá desbloqueado, permitindo montá-lo novamente sem digitar a senha. (Ao desligar ou reiniciar, a partição será bloqueada porque a chave é removida da RAM, mas apenas desmontar não a bloqueará.)
Você pode criar e habilitar um serviço que é iniciado quando o dispositivo é desbloqueado (BindsTo=dev-mapper-home\x2dusername.device) e é encerrado após o dispositivo ser desmontado (Requires,Before=home-username.mount), bloqueando o dispositivo no processo (ExecStop=cryptsetup close):
/etc/systemd/system/cryptsetup-username.service
[Unit] DefaultDependencies=no BindsTo=dev-PARTITION.device After=dev-PARTITION.device BindsTo=dev-mapper-home\x2dusername.device Requires=home-username.mount Before=home-username.mount Conflicts=umount.target Before=umount.target [Service] Type=oneshot RemainAfterExit=yes TimeoutSec=0 ExecStop=/usr/bin/cryptsetup close home-username [Install] RequiredBy=dev-mapper-home\x2dusername.device
dev-PARTITION é o resultado de systemd-escape -p /dev/PARTITION