mount: nenhum arquivo ou diretório com recuperação criptografada

12

Eu destruí minha instalação do Mint Linux. Eu só queria acesso à minha loja remota. Então, o que aconteceu foi que eu estava tendo problemas com o arquivo ICEauthority no meu diretório pessoal. Então, seguindo instruções diferentes na Internet, cheguei à conclusão de que eu poderia definir o diretório inicial recursivamente para o chmod 755 para permitir que esse arquivo funcionasse ... eventualmente, tive problemas com o carregamento do sistema. Eventualmente, definindo o diretório inicial como permissão executável para root, consegui obter acesso de leitura / gravação ... mas, em seguida, redefini minha máquina oh por que oh por que redefini minha máquina !!! - agora o sistema lança o mesmo erro com o ICEauthority, mas nunca me leva ao sistema operacional porque o disco está criptografado. Nada do que tentei parece funcionar e não tenho a semente de montagem original.

frankenmint@honeybadger /home $ sudo ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

Estou realmente preocupado porque tinha arquivos importantes armazenados em uma máquina virtual ... Se eu pudesse acessar esses arquivos, não teria nenhum problema em desabilitar a instalação e começar de novo.

Frankenmint
fonte

Respostas:

13

Eu descobri que rodar sudo bashe rodar ecryptfs-recover-privatecomo 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 aaaaaaaaaaaaaaaae bbbbbbbbbbbbbbbbabaixo 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/plaine você deve substituir userpelo 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 mountaproximadamente 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ê mountprecisa 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 mountdecidiu 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/plainum arquivo e gato para ter certeza. Nesse ponto, você também pode procurar /var/log/sysloge 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.

Doctor J
fonte
4
existe uma solução alternativa quando ocorre um ecryptfs-recover-privateerro de montagem (2). tente executar sudo ecryptfs-manager, pressione 4 (sair) e execute novamente o original ecryptfs-recover-private. deve funcionar agora
ulkas
1
@ulkas Alguma idéia de por que isso funciona?
precisa
2
@ Turion eu pesquisei a solução, então eu não sou o inventor. meu palpite é que existe um bug no ecryptfsde 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?
ulkas
1
keyctl link @u @sfoi uma solução muito simples para mim. Os créditos estão aqui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=870126
sup
Embora meu problema provavelmente fosse diferente do pôster original.
sup
1

Para futuros espectadores destas perguntas e respostas: o mesmo sintoma aparente pode ser causado por diferentes razões subjacentes. O sintoma se parece com:

INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

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:

session    optional     pam_keyinit.so force revoke

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.

Amir
fonte