Criptografei um USB externo com cryptsetup usando ambos, uma senha e um keyfile, no Kubuntu 24.04 e adicionei uma entrada correspondente ao crypttab, mas ao montar via GUI ainda me pedem uma senha. Como posso consertar isso?
A unidade foi criptografada usando os seguintes comandos:
# Preconditions:
# - USB is available as /dev/sda
# - Folder ~/.keyfiles exists
sudo cryptsetup luksFormat /dev/sda
sudo dd if=/dev/urandom of=~/.keyfiles/setup_32g.dat bs=512 count=294
sudo chmod 0400 ~/.keyfiles/setup_32g.dat
sudo chown root:root ~/.keyfiles/setup_32g.dat
sudo cryptsetup luksAddKey /dev/sda ~/.keyfiles/setup_32g.dat
sudo cryptsetup config /dev/sda --label sandisk_32g
sudo cryptsetup luksOpen /dev/sda sandisk_32g
sudo mkfs.ext4 /dev/mapper/sandisk_32g
sudo e2label /dev/mapper/sandisk_32g sandisk_32g
sudo mount /dev/mapper/sandisk_32g /media/$USER/sandisk_32g
sudo chmod 777 /media/$USER/sandisk_32g/.
sudo umount /media/$USER/sandisk_32g
Depois disso, tenho uma senha (keyslot 0) e um arquivo de chave ~/.keyfiles/setup_32g.dat
(keyslot 1). luksDump mostra:
$ sudo cryptsetup luksDump /dev/sda
LUKS header information
Version: 2
Epoch: 5
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: 172ea93c-7383-44da-8255-ce7d46856dc8
Label: sandisk_32g
Subsystem: (no subsystem)
Flags: (no flags)
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]
Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2id
Time cost: 6
Memory: 1048576
Threads: 4
Salt: d6 0f b7 bc 68 c5 fc 65 14 56 16 b7 3f e8 f2 f6
91 eb d6 ff bf b8 6d eb de bb e9 59 2f 65 35 be
AF stripes: 4000
AF hash: sha256
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
1: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2id
Time cost: 6
Memory: 1048576
Threads: 4
Salt: ea 01 89 dd 26 ea 45 3b c5 20 90 c9 01 d9 9d 65
3e 56 df e4 28 b4 81 ce ea e0 6e ae f4 0b c1 50
AF stripes: 4000
AF hash: sha256
Area offset:290816 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
Digests:
0: pbkdf2
Hash: sha256
Iterations: 260321
Salt: b9 cf bc 7b da 79 0d a3 5a d8 e2 ea 45 32 c1 7a
75 18 a6 2e 66 28 7c 49 c3 10 99 e8 84 05 b2 2f
Digest: b6 7b 7d 94 78 19 41 6c 2a 6c b4 9c e9 e5 47 26
cb ee 19 1d 95 7c d2 d1 97 f6 1f 77 ae 63 38 59
O arquivo de chave tem as seguintes permissões:
-r-------- 1 root root 150528 Dez 29 16:16 setup_32g.dat
Depois disso, adicionei a seguinte entrada no crypttab:
sandisk_32g UUID=<removed> /home/<myname>/.keyfiles/setup_32g.dat luks,noauto
Não adicionei nenhuma entrada relacionada no fstab até agora.
Posso executar sudo cryptdisks_start sandisk_32g
sem nenhuma senha (já que tenho direitos sudo) e a unidade fica disponível no gerenciador de arquivos (KDE dolphin), então presumo que o arquivo de chave esteja sendo usado corretamente.
No entanto, quando tento acessar a unidade a partir do gerenciador de arquivos (KDE dolphin) ou do ícone "Discos e Dispositivos" na barra de tarefas diretamente (ou seja, sem chamar cryptdisks_start
primeiro), sou inesperadamente solicitado a fornecer uma senha. Se eu digitar a senha, ele abre corretamente.
Como posso fazer com que o processo de montagem da GUI use o arquivo-chave do crypttab em vez de solicitar a senha?
Tentativa: permissões do arquivo-chave
A princípio, suspeitei que faltavam permissões para o arquivo-chave, mas mesmo atribuindo 777 não mudou nada.
Tentativa: fstab
/dev/mapper/sandisk_32g /media/<myname>/sandisk_32g auto noatime,users,nofail 0 0
ou
/dev/mapper/sandisk_32g /media/<myname>/sandisk_32g ext4 noatime,users,nofail,x-systemd.device-timeout=100ms,x-systemd.automount,x-systemd.idle-timeout=20min 0 0
Se eu adicionar uma das entradas acima ao fstab, o comportamento é inconsistente e irritante. Depois de conectar a unidade USB, ainda sou solicitado a digitar uma senha em cada primeira tentativa no gerenciador de arquivos KDE dolphin. Às vezes, quando cancelo o diálogo e acesso a unidade novamente, ela abre sem nenhum outro prompt (usando o arquivo de chave!). Às vezes, não funciona e o diálogo de senha continua aparecendo. Além disso, a opção "Montar e abrir" da barra de tarefas que aparece sempre pede a senha. Quando tento desmontar a unidade por meio do ícone da barra de tarefas "Discos e unidades", sou solicitado a digitar uma senha de administrador devido à falta de permissões para desmontar. Desmontar via KDE dolphin parece funcionar às vezes, mas continua aparecendo como montado na barra de tarefas, onde o botão "Remover com segurança" parece não responder mais, então nunca posso ter certeza se é seguro desconectar agora.
Tentativa: análise de log
PRECISO DE CONSELHOS AQUI !
Eu esperava encontrar algo relacionado ao uso de sudo journalctl --since "1min ago"
or sudo dmesg
, mas não encontrei.
Eu ficaria muito grato se alguém pudesse me indicar registros mais relevantes!
Solução alternativa
Curiosamente, sempre que eu digito a senha, não importa se eu usei a barra de tarefas ou o KDE dolphin, tudo funciona perfeitamente, incluindo permissões de desmontagem. Eu me pergunto por que há alguma diferença? Eu poderia ativar a carteira KDE, então selecionar "Lembrar senha" quando solicitado e pular toda a coisa do arquivo de chaves. Quando eu testei isso, ele continuou pedindo a senha. Eu também gostaria de evitar usar a carteira KDE e gerenciar todas as minhas senhas no Keepass.