Introdução
A criptografia de disco inteiro (
LUKS) é excelente, mas às vezes você não quer (ou não pode) formatar o disco inteiro. Talvez você já tenha seu
Arch Linux ou
CachyOS rodando liso em um sistema de arquivos Btrfs e queira apenas proteger seus dados pessoais — suas chaves SSH, senhas salvas no navegador, fotos e documentos. É aqui que entra a criptografia de diretório.
Por muito tempo usei o
eCryptfs, que é até opção no instalador do Linux Mint. Mas aparentemente existe algo mais moderno. Hoje, vamos conversar sobre o
Gocryptfs, uma solução mais nova, segura e, de acordo com minha amiga Gemnini, mais rápida.
Por que abandonar o eCryptfs e adotar o Gocryptfs?
De acordo com a Gemini, eis os motivos:
1.
Segurança Autenticada (AES-GCM): O eCryptfs usa criptografia legada que protege contra leitura, mas não contra
modificação. O Gocryptfs usa AES-GCM (Galois/Counter Mode), que é criptografia
autenticada. Se um único bit do arquivo cifrado for alterado fora do sistema, o Gocryptfs bloqueia a leitura.
2.
Arquitetura FUSE vs. Kernel: O eCryptfs roda no espaço do kernel. Um bug lá pode causar um
Kernel Panic. O Gocryptfs roda em espaço de usuário (FUSE).
3.
Desempenho Bruto: Em processadores modernos com instruções AES-NI nativas (como a linha AMD Ryzen ou Intel Core), a aceleração por hardware anula o gargalo do FUSE. O Gocryptfs voa.
4.
Amigável ao Btrfs: Diferente do LUKS, o Gocryptfs encripta arquivo por arquivo. Isso permite que seus snapshots do Btrfs continuem funcionando perfeitamente, fazendo o backup da versão cifrada dos arquivos.
Explicando o funcionamento do Gocryptfs
Para o
Gocryptfs funcionar, precisamos lidar com duas pastas:
- O Cipherdir (Diretório Cifrado): onde seus dados ficarão fisicamente de forma ilegível.
- O Mountpoint (Ponto de Montagem): a "lente" pela qual você acessa seus dados normalmente.
Aviso de Segurança Crítico: não realize este processo logado na interface gráfica com o usuário em questão. Faremos tudo via terminal TTY como
root.
Passo a Passo
Avisos: artigo testado com
Arch Linux, porém facilmente adaptável para outras distros. Considere que seu usuário se chama
xerxes. Substitua pelo seu nome real. E, por fim, antes de realizar o procedimento realize cópia de segurança dos seus arquivos, pois se algo der errado o estrago não será grande.
Passo 1: Instalação e Preparação do FUSE
Instale as ferramentas e prepare o sistema para permitir que o gerenciador de login (LightDM/GDM) acesse a pasta criptografada.
sudo pacman -S gocryptfs pam_mount rsync --noconfirm
Liberar acesso global ao FUSE (importante para evitar loop de login, que eu tive):
sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
Passo 2: Dropando para o TTY
Pressione
Ctrl + Alt + F3 e logue como
root.
Passo 3: Preparando o Terreno
Faça da sua home o seu backup e ajuste as permissões:
cd /home
mv xerxes xerxes.backup
mkdir xerxes.cipher xerxes
chown xerxes:xerxes xerxes.cipher xerxes
chmod 700 xerxes.cipher xerxes
Passo 4: Inicializando o Cofre
Execute o comando
gocrypts como se fosse seu usuário:
su -c "gocryptfs -init /home/xerxes.cipher" xerxes
Use a mesma senha do seu login. Salve a
Master Key em papel.
Passo 5: Montagem Manual e Migração
O FUSE bloqueia o root por padrão. Para que o processo ocorra sem erros de permissão e faça a cópia excluindo a lixeira:
su -c "gocryptfs -allow_other /home/xerxes.cipher /home/xerxes" xerxes
su -c "rsync -aP --exclude='.local/share/Trash/' /home/xerxes.backup/ /home/xerxes/" xerxes
Passo 6: Retorno Seguro à Interface Gráfica
Para evitar o erro "directory not empty" e o "login loop" no LightDM:
1. Saia do diretório home para não travar a desmontagem:
cd /
2. Desmonte a home:
su -c "fusermount -u /home/xerxes" xerxes
3. Limpe arquivos e resquícios criados pelo login no TTY:
rm -rf /home/xerxes/.* /home/xerxes/* 2>/dev/null
4. Monte novamente com permissão para outros usuários (essencial para o LightDM gravar o
.Xauthority):
su -c "gocryptfs -allow_other /home/xerxes.cipher /home/xerxes" xerxes
5. Volte para a interface gráfica (
Ctrl + Alt + F7) e logue normalmente.
Passo 7: Automação com PAM (Login Único)
Agora no ambiente gráfico, abra o terminal e automatize a montagem para não digitar a senha duas vezes (pelo menos foi o que a Gemini disse. Não cheguei a testar digitar duas vezes. Fiz logo a configuração com medo de quebrar o sistema). O comando a seguir já faz as edições necessárias. Copie e dê
Enter:
sudo tee /etc/security/pam_mount.conf.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<debug enable="0" />
<volume user="xerxes" fstype="fuse" options="nodev,nosuid,quiet,allow_other,config=/home/%(USER).cipher/gocryptfs.conf" path="gocryptfs#/home/%(USER).cipher" mountpoint="/home/%(USER)" />
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_other" />
<mntoptions require="nosuid,nodev" />
<logout wait="0" hup="0" term="0" kill="0" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>
EOF
Habilite o módulo no sistema (mesma coisa, copie e dê
Enter):
sudo tee -a /etc/pam.d/system-login << 'EOF'
auth optional pam_mount.so
session optional pam_mount.so
EOF
Conclusão e Limpeza
Reinicie e logue. Se tudo estiver lá, confirme a montagem com:
mount | grep gocryptfs
Saída exemplo:
/home/xerxes.cipher on /home/xerxes type fuse.gocryptfs (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,default_permissions,allow_other,max_read=1048576)
Por fim, remova o backup inseguro:
sudo rm -rf /home/xerxes.backup
Obs.: criptografia não substitui backup. Mantenha seus dados seguros em uma unidade externa!
1. Introdução
Nenhum comentário foi encontrado.