Descobri que executar sudo bash
e, em seguida, executar ecryptfs-recover-private
como raiz (em vez de via sudo) funcionou. Não tenho certeza por que deveria ser diferente.
Editar:
TL; DR:
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase - | ecryptfs-add-passphrase --fnek -
< Type your login password here >
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Você não verá um prompt e deverá digitar sua senha de login, blind, no comando acima.
Substitua os aaaaaaaaaaaaaaaa
e bbbbbbbbbbbbbbbb
abaixo pelas assinaturas hexadecimais entre parênteses da saída acima, por ordem:
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
Preliminares
Acontece que apenas executando como root não funcionou de forma confiável para mim; às vezes, às vezes não. Basicamente, o ecryptfs parece cheio de bugs e bastante hostil ao usuário, muitas vezes confundindo senhas de login e senhas de montagem. Depois de descer um buraco de coelho escuro e profundo, tenho algumas dicas que devem ajudar. Estas notas são para o Ubuntu 17.10, ecryptfs-utils 111-0, e você deve se tornar root antes de começar. Suponho que você queira montar seu diretório pessoal de /mnt/crypt
(que já deve estar montado) para /mnt/plain
e você deve substituir user
pelo nome de usuário.
Comece fácil
A primeira coisa a tentar é:
# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private
Se isso funcionar, bem, você tem sorte. Caso contrário, poderá fornecer uma mensagem de erro de mount
sobre no such file or directory
. Isso é extremamente enganador: o que realmente significa é que sua senha de montagem está errada ou faltando.
Obtenha as assinaturas
Aqui está a parte importante: precisamos verificar se o ecryptfs está realmente tentando a (s) senha (s) de montagem correta (s). As passphrases devem ser carregadas no kernel do Linux antes que o ecryptfs possa montar seu sistema de arquivos. O ecryptfs pede o kernel para eles por sua assinatura. A assinatura é um valor hexadecimal de 16 bytes (e não é criptograficamente sensível). Você pode encontrar as assinaturas de frase secreta que o ecryptfs está esperando:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
Lembre-se disso. O objetivo é obter senhas com essas assinaturas carregadas no kernel e, então, dizer ao ecryptfs para usá-las. A primeira assinatura ( aaaaaaaaaaaaaaaa
) é para os dados e a segunda ( bbbbbbbbbbbbbbbb
) é a Chave de Criptografia do Nome de Arquivo (FNEK).
Obter a frase secreta de montagem
Este comando irá pedir-lhe a palavra-passe login (com um aviso enganador) e produzirá a sua senha mount :
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
Copie isso, mas tenha cuidado !! , pois isso é extremamente sensível a criptografia, as chaves do reino.
Experimente uma montagem interativa
A próxima coisa a tentar é:
# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
O ponto crucial aqui é que mount
precisa de sua (super-sensível) frase secreta de montagem que acabamos de copiar (não sua senha de login).
Isso fará algumas perguntas, e você poderá aceitar os padrões exceto dizer sim para Enable filename encryption
. Pode lhe dar um aviso e pedir para armazenar as assinaturas em cache; você pode dizer sim a ambos, mas verifique se você tem a senha de montagem correta.
Você verá as opções que mount
decidiu experimentar para você:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=aaaaaaaaaaaaaaaa
Mounted eCryptfs
Se as assinaturas estiverem erradas (não coincide com o que você obteve em Private.sig
), a montagem não funcionará.
... mas será muito inútil informar que aconteceu. Você terá que fazer um ls /mnt/plain
e catar um arquivo para ter certeza. Neste ponto, você também pode procurar em /var/log/syslog
e verificar se o ecryptfs está procurando as mesmas assinaturas que nós.
Existem claramente dois problemas sérios com ecryptfs aqui, e temos que contorná-los.
Carregue as chaves no kernel
Se a montagem interativa não ajudar, temos que carregar as chaves no kernel e especificá-las manualmente nas opções de montagem.
# ecryptfs-add-passphrase --fnek
E cole na (super senstive) frase de montagem copiada acima. Isso deve resultar:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Montar manualmente
Agora os códigos de acesso são carregados no kernel e só precisamos informar ao mount para usá-los:
# umount /mnt/plain
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
Você notará que as opções são semelhantes ao que a montagem interativa imprimiu, exceto que estamos informando manualmente ao ecryptfs o que está acontecendo.
Espero que isso funcione. Caso contrário, você pode verificar se as chaves estão carregadas no kernel com as assinaturas corretas usando keyctl list @u
, que deve imprimir pelo menos as duas assinaturas que você espera.