systemd-homed: Contas Portáteis e Encriptadas no Linux
O systemd-homed é um componente do systemd que gere directórios pessoais encriptados com LUKS associados a cada utilizador. Permite portabilidade entre máquinas, desbloqueio automático no início de sessão e gestão centralizada de contas — relevante para PME com estações de trabalho partilhadas ou BYOD.
Neste artigo
1. Introdução ao systemd-homed
O systemd-homed foi introduzido no systemd 245 (2020) para resolver um problema histórico do Linux: o directório pessoal fica em texto legível no disco, acessível por qualquer administrador com root. Mesmo com encriptação de disco completo no arranque, os dados ficam expostos após o arranque.
O systemd-homed cria uma camada de encriptação por utilizador: cado directório pessoal é um volume LUKS independente, desbloqueado automaticamente no início de sessão e bloqueado ao terminar sessão. A chave LUKS é derivada da palavra-passe de início de sessão — sem gestão manual. A ferramenta principal é o homectl, que substitui o useradd tradicional. Saiba mais na documentação oficial do systemd.
ℹ Encriptação automática
O systemd-homed encripta automaticamente o directório pessoal com LUKS — o utilizador não precisa de saber a palavra-passe do LUKS. O desbloqueio acontece de forma transparente durante o início de sessão.
2. Configuração
Requer kernel Linux 5.6+ com suporte a LUKS ou fscrypt, e systemd 245+. A maioria das distribuições recentes (Fedora 32+, Arch, openSUSE) inclui o serviço, mas pode não estar activo por defeito.
# Activar systemd-homed
sudo systemctl enable --now systemd-homed
# Confirmar que está activo
systemctl is-active systemd-homed
Em algumas distribuições é necessário configurar o PAM com pam_systemd_home em /etc/pam.d/system-auth:
# Adicionar a /etc/pam.d/system-auth
auth sufficient pam_systemd_home.so
account sufficient pam_systemd_home.so
password sufficient pam_systemd_home.so
session sufficient pam_systemd_home.so
Consulte a Arch Wiki sobre systemd-homed para detalhes por distribuição.
3. Criar Utilizadores
O homectl é o comando para criar, listar, inspeccionar e remover utilizadores homed:
# Criar utilizador com home encriptada (LUKS)
sudo homectl create joao --storage=luks --luks-discard=yes
# Listar utilizadores homed
homectl list
# Inspeccionar um utilizador
homectl inspect joao
# Alterar palavra-passe
sudo homectl passwd joao
# Remover utilizador
sudo homectl remove joao
O parâmetro --storage=luks cria um volume LUKS dedicado. Alternativas: --storage=fscrypt (encriptação ao nível do sistema de ficheiros) e --storage=directory (sem encriptação). --luks-discard=yes activa TRIM em SSDs.
4. Encriptação LUKS
Quando o utilizador inicia sessão (consola, SSH ou gestor de sessão gráfica compatível), o PAM desbloqueia o volume LUKS automaticamente. O utilizador não tem conhecimento da chave LUKS — ela é derivada da sua palavra-passe de início de sessão. Ao terminar sessão completo, o volume é bloqueado e os dados ficam inacessíveis.
# Login desbloqueia LUKS automaticamente
# Verificar estado do volume
homectl inspect joao
# Bloquear/desbloquear sessões
loginctl lock-sessions
loginctl unlock-sessions
O volume LUKS é armazenado em /home/$USER.home e montado em /home/$USER quando desbloqueado. Isto significa que mesmo um administrador com acesso físico à máquina não consegue ler os ficheiros do utilizador sem a palavra-passe dele.
⚠️ Estado experimental
O systemd-homed ainda é considerado experimental em muitas distribuições — não usar em produção sem testar exaustivamente. Algumas distribuições (Debian, Ubuntu) não o activam por defeito.
5. Portabilidade
Como o directório pessoal é uma imagem LUKS auto-contida, pode ser transferida entre máquinas com systemd-homed activo — útil para estações de trabalho partilhadas ou BYOD:
# Exportar metadados da conta
sudo homectl inspect joao --export=json > joao.json
# Copiar imagem LUKS para outra máquina
scp /home/joao.home servidor2:/home/joao.home
# Importar na máquina de destino
sudo homectl create joao --import=joao.json
# Verificar
homectl inspect joao
Para recuperação de dados, consulte backups e recuperação em Linux (Dia 14). Para reforço de segurança geral, veja o Linux Server Hardening Checklist 2026.
6. systemd-homed vs Home Tradicional
| Funcionalidade | Home Tradicional | systemd-homed |
|---|---|---|
| Encriptação | Não (manual) | LUKS automático |
| Desbloqueio no início de sessão | Não aplicável | Via PAM |
| Bloqueio ao terminar sessão | Não | Sim, automático |
| Portabilidade | Manual (rsync) | Imagem auto-contida |
| Maturidade | Estável | Experimental |
Para PME com estações de trabalho partilhadas, o systemd-homed oferece uma camada extra: ao fazer logout, os dados ficam encriptados. Isto complementa o firewall e protecção de rede (Dia 9) numa estratégia de reforço de segurança.
7. Erros Comuns e Lista de Verificação
| Problema | Causa | Solução |
|---|---|---|
| Login falha | PAM sem pam_systemd_home | Adicionar módulo ao /etc/pam.d/ |
| Volume não desbloqueia | Display manager incompatível | Usar GDM ou SDDM recente |
| SSH não desbloqueia | sshd sem PAM | Activar UsePAM yes |
| Dados perdidos na migração | Import sem imagem LUKS | Copiar .home com JSON |
Lista de verificação antes de usar em produção:
- Kernel 5.6+ com suporte a LUKS ou fscrypt
- systemd 245+ instalado e actualizado
- Serviço
systemd-homedactivo pam_systemd_homeem todos os ficheiros PAM relevantes- Display manager compatível (GDM 3.36+ ou SDDM recente)
- SSHD com
UsePAM yes - Cópia de segurança testada da imagem LUKS antes de remover contas
- Teste completo: criar conta → login → logout → verificar bloqueio
Artigos relacionados: