Eu descobri que rodar sudo bash
e rodar ecryptfs-recover-private
como root (em vez de via sudo) funcionava. Não sei 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 deve digitar sua senha de login, cega, no comando acima.
Substituir o aaaaaaaaaaaaaaaa
e bbbbbbbbbbbbbbbb
abaixo com as assinaturas hex entre parêntesis a partir do resultado acima, em 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 rodar como root não funcionou de maneira confiável para mim; às vezes sim, às vezes não. Basicamente, o ecryptfs parece com erros e bastante hostil ao usuário, geralmente confunde senhas de login e monta frases. Depois de descer por uma toca de coelho escura e profunda, tenho algumas dicas que devem ajudar. Essas notas são para o Ubuntu 17.10, ecryptfs-utils 111-0, e você deve se tornar root antes de iniciar. Suponho que você deseja 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, pode dar uma mensagem de erro de mount
aproximadamente no such file or directory
. Isso é extremamente enganador: o que realmente significa é que sua frase secreta de montagem está errada ou ausente.
Obter as assinaturas
Aqui está a parte importante: precisamos verificar se o ecryptfs está realmente tentando a (s) senha (s) de montagem correta (s). As senhas devem ser carregadas no kernel do Linux antes que o ecryptfs possa montar seu sistema de arquivos. O ecryptfs pede ao kernel por sua assinatura. A assinatura é um valor hexadecimal de 16 bytes (e não é criptograficamente sensível). Você pode encontrar as assinaturas de senha que o ecryptfs está esperando:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
Lembre-se destes. O objetivo é obter frases secretas com essas assinaturas carregadas no kernel e, em seguida, instruir o ecryptfs a usá-las. A primeira assinatura ( aaaaaaaaaaaaaaaa
) é para os dados e a segunda ( bbbbbbbbbbbbbbbb
) é a Chave de Criptografia de Nome de Arquivo (FNEK).
Obter a senha da montagem
Este comando solicitará sua senha de login (com um prompt enganoso) e emitirá sua senha de montagem :
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
Copie isso, mas tenha cuidado! , como isso é extremamente criptograficamente sensível, 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 importante aqui é que você mount
precisa da sua senha de montagem (super sensível) que acabamos de copiar (não da sua senha de login).
Isso fará algumas perguntas e você pode aceitar os padrões, exceto dizer sim para Enable filename encryption
. Isso pode lhe dar um aviso e solicitar que as assinaturas sejam armazenadas em cache; você pode dizer sim a ambos, mas verifique novamente se possui a senha de montagem correta.
Você verá as opções que mount
decidiu tentar por 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 correspondem ao que você obteve Private.sig
), a montagem não funcionará.
... mas informará muito inútil que sim. Você terá que fazer ls /mnt/plain
um arquivo e gato para ter certeza. Nesse ponto, você também pode procurar /var/log/syslog
e verificar se ecryptfs está procurando as mesmas assinaturas que nós.
Claramente, existem dois problemas sérios com o ecryptfs aqui, e precisamos contorná-los.
Carregue as chaves no kernel
Se a montagem interativa não ajudou, precisamos carregar as chaves no kernel e especificá-las manualmente nas opções de montagem.
# ecryptfs-add-passphrase --fnek
E cole sua senha de montagem (super sensível) copiada de cima. Isso deve gerar:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Monte manualmente
Agora as senhas estão carregadas no kernel, e só precisamos dizer ao mount para usá-las:
# 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 às que a montagem interativa imprimiu, exceto que estamos dizendo manualmente aos 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 keyctl list @u
, o que deve imprimir pelo menos as duas assinaturas que você espera.
ecryptfs-recover-private
erro de montagem (2). tente executarsudo ecryptfs-manager
, pressione 4 (sair) e execute novamente o originalecryptfs-recover-private
. deve funcionar agoraecryptfs
de alguma versão e chamar o gerente simplesmente define algumas variáveis que são posteriormente reutilizadas pelo mount.any idéia como automatizar isso para que eu possa montar minhas pastas após cada reinicialização?keyctl link @u @s
foi uma solução muito simples para mim. Os créditos estão aqui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=870126Para futuros espectadores destas perguntas e respostas: o mesmo sintoma aparente pode ser causado por diferentes razões subjacentes. O sintoma se parece com:
No meu caso, esta resposta foi a chave da solução. O problema era que eu estava tentando fazer tudo remotamente através do SSH em uma sessão do Tmux, limitada pela seguinte linha
/etc/pam.d/sshd
:A resposta acima mencionada sugere comentar essa linha e tentar novamente em uma nova sessão.
A solução simples que funcionou no meu caso foi fazê-lo no local, evitando o SSH e o Tmux por completo. Uma solução alternativa mais complicada (que eu não verifiquei) é usar algo como conspy para obter acesso a um terminal ilimitado remotamente.
fonte