Ho scoperto che funzionare sudo bash
e poi correre ecryptfs-recover-private
come root (piuttosto che tramite sudo) ha funzionato. Non sono sicuro del perché dovrebbe essere diverso.
Modificare:
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
Non verrà visualizzato un prompt e sarà necessario digitare la password di accesso, cieca, nel comando sopra.
Sostituisci aaaaaaaaaaaaaaaa
e bbbbbbbbbbbbbbbb
sotto con le firme esadecimali tra parentesi dall'output sopra, in ordine:
# 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
Preliminari
Si scopre che funziona solo perché root non ha funzionato in modo affidabile per me; a volte sì, a volte no. Fondamentalmente, ecryptfs sembra difettoso e abbastanza ostile all'utente, spesso confonde le password di accesso e le passphrase di montaggio. Dopo essere sceso in una profonda tana di coniglio scuro, ho alcuni suggerimenti che dovrebbero aiutare. Queste note sono per Ubuntu 17.10, ecryptfs-utils 111-0, e dovresti diventare root prima di iniziare. Presumo che tu voglia montare la tua home directory da /mnt/crypt
(che dovrebbe essere già montata) a /mnt/plain
, e dovresti sostituirla user
con il nome utente.
Inizia facile
La prima cosa da provare è:
# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private
Se funziona, beh, sei fortunato. In caso contrario, potrebbe essere visualizzato un messaggio di errore da mount
circa no such file or directory
. Questo è estremamente fuorviante: ciò che significa veramente è che la passphrase di montaggio è errata o mancante.
Ottieni le firme
Ecco la parte importante: dobbiamo verificare che ecryptfs stia davvero provando le passphrase di mount giuste. Le passphrase devono essere caricate nel kernel Linux prima che ecryptfs possa montare il filesystem. ecryptfs chiede loro il kernel con la loro firma. La firma è un valore esadecimale di 16 byte (e non è crittograficamente sensibile). Puoi trovare le firme della passphrase che ecryptfs si aspetta:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
Ricorda questi. L'obiettivo è ottenere passphrase con queste firme caricate nel kernel e quindi dire a ecryptfs di usarle. La prima firma ( aaaaaaaaaaaaaaaa
) è per i dati e la seconda ( bbbbbbbbbbbbbbbb
) è la chiave di crittografia FileName (FNEK).
Ottieni la passphrase di mount
Questo comando ti chiederà la tua password di accesso (con un prompt fuorviante) e produrrà la tua passphrase di mount :
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
Copia questo ma fai attenzione !! , poiché questo è estremamente crittograficamente sensibile, le chiavi del regno.
Prova un mount interattivo
La prossima cosa da provare è:
# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
La cosa cruciale qui è che mount
richiede la tua passphrase di montaggio (super sensibile) che abbiamo appena copiato (non la tua password di accesso).
Questo ti farà alcune domande e puoi accettare le impostazioni predefinite tranne dire di sì a Enable filename encryption
. Potrebbe darti un avvertimento e chiedere di memorizzare nella cache le firme; puoi dire di sì ad entrambi, ma ricontrolla di avere la passphrase di montaggio corretta.
Vedrai le opzioni che mount
ha deciso di provare per te:
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 le firme sono errate (non corrispondono a ciò che hai ottenuto Private.sig
), la montatura non funzionerà.
... ma riferirà molto inutilmente di averlo fatto. Dovrai fare un ls /mnt/plain
e cat un file per essere sicuro. A questo punto puoi anche cercare /var/log/syslog
e verificare che ecryptfs stia cercando le stesse firme che siamo.
Ci sono chiaramente due seri problemi con ecryptfs qui, e dobbiamo aggirarli.
Carica le chiavi nel kernel
Se il mount interattivo non ha aiutato, dobbiamo caricare noi stessi le chiavi nel kernel e specificarle manualmente nelle opzioni di mount.
# ecryptfs-add-passphrase --fnek
E incolla la tua passphrase di montaggio (super sensibile) copiata dall'alto. Questo dovrebbe produrre:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Montare manualmente
Ora le passphrase sono caricate nel kernel e dobbiamo solo dire a mount di usarle:
# 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
Noterai che le opzioni sono simili a quelle stampate dal mount interattivo, tranne per il fatto che diciamo manualmente a ecryptfs cosa succede.
Speriamo che funzioni. Altrimenti, puoi controllare che le chiavi siano caricate nel kernel con le firme corrette usando keyctl list @u
, che dovrebbe stampare almeno le due firme che ti aspetti.
ecryptfs-recover-private
genera un errore mount (2). provare a eseguiresudo ecryptfs-manager
, premere 4 (esci), quindi eseguire nuovamente l'originaleecryptfs-recover-private
. dovrebbe funzionare ora