mount: Brak takiego pliku lub katalogu z zaszyfrowanym odzyskiem

12

Zniszczyłem moją instalację Mint Linux. Chciałem tylko uzyskać dostęp do mojego zdalnego sklepu. Więc tak się stało, że miałem problem z plikiem ICEauthority w moim katalogu domowym. Postępując zgodnie z różnymi wskazówkami w Internecie, doszedłem do wniosku, że rekursywnie mogę ustawić katalog domowy na chmod 755, aby umożliwić działanie tego pliku… w końcu miałem problemy z ładowaniem systemu. W końcu, ustawiając katalog domowy na uprawnienia do wykonywania dla roota, mogłem uzyskać dostęp do odczytu / zapisu… ale potem zresetowałem komputer, och, dlaczego och, zresetowałem komputer !!! - teraz system zgłasza ten sam błąd z ICEauthority, ale nigdy nie wprowadza mnie do systemu operacyjnego, ponieważ dysk jest zaszyfrowany. Wydaje mi się, że nic, co próbowałem, nie działa i nie mam oryginalnego materiału montażowego.

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].

Jestem naprawdę zmartwiony, ponieważ miałem tam ważne pliki, które były przechowywane na maszynie wirtualnej… Gdybym mógł po prostu dostać się do tych plików, nie miałbym żadnych skrupułów, nie przejmując się instalacją i zaczynając od nowa

Frankenmint
źródło

Odpowiedzi:

13

Przekonałem się, że działało, sudo basha następnie działało ecryptfs-recover-privatejako root (zamiast przez sudo). Nie jestem pewien, dlaczego powinno być inaczej.

Edytować:

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

Nie zobaczysz monitu i musisz wpisać swoje hasło do logowania, w ciemno, w powyższym poleceniu.

Zamień aaaaaaaaaaaaaaaai bbbbbbbbbbbbbbbbponiżej podpisami szesnastkowymi między nawiasami z powyższego wyjścia, w kolejności:

# 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

Czynności wstępne

Okazuje się, że po prostu działa, ponieważ root nie działał dla mnie niezawodnie; czasami tak było, czasem nie. Zasadniczo ecryptfs wydaje się błędny i dość nieprzyjazny dla użytkownika, często mylący hasła logowania i hasła montowania. Po zejściu do głębokiej, ciemnej nory królika mam kilka wskazówek, które powinny pomóc. Te uwagi dotyczą Ubuntu 17.10, ecryptfs-utils 111-0 i powinieneś zostać rootem przed uruchomieniem. Zakładam, że chcesz zamontować swój katalog domowy z /mnt/crypt(który powinien być już zamontowany) do /mnt/plain, i powinieneś zastąpić usernazwą użytkownika.

Zacznij łatwo

Pierwszą rzeczą do wypróbowania jest:

# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private

Jeśli to zadziała, to masz szczęście. Jeśli nie, może pojawić się komunikat o błędzie z mountokoło no such file or directory. Jest to bardzo mylące: to, co tak naprawdę oznacza, to że twoje hasło montowania jest błędne lub go brakuje.

Zdobądź podpisy

Oto ważna część: musimy sprawdzić, czy ecryptfs naprawdę próbuje właściwych haseł montowania. Hasła muszą zostać załadowane do jądra Linuksa, zanim ecryptfs będzie mógł zamontować system plików. ecryptfs prosi jądro o ich podpis. Podpis jest 16-bajtową wartością szesnastkową (i nie jest wrażliwy na kryptografię). Możesz znaleźć sygnatury hasła, których oczekuje ecryptfs:

# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb

Zapamiętaj to. Celem jest pobranie haseł z tymi sygnaturami załadowanymi do jądra, a następnie poinformowanie ecryptfs o ich użyciu. Pierwszy podpis ( aaaaaaaaaaaaaaaa) dotyczy danych, a drugi ( bbbbbbbbbbbbbbbb) to klucz szyfrowania nazwy pliku (FNEK).

Uzyskaj hasło montowania

To polecenie poprosi o podanie hasła logowania (z wprowadzającym w błąd pytaniem ) i wyświetli hasło montowania :

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase

Skopiuj to, ale bądź ostrożny !! , ponieważ jest to niezwykle wrażliwa kryptograficznie, klucze do królestwa.

Wypróbuj interaktywne mocowanie

Następną rzeczą do wypróbowania jest:

# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

Kluczową rzeczą jest to, że mountpotrzebuje twojego (bardzo wrażliwego) hasła montowania , które właśnie skopiowaliśmy (nie twojego hasła logowania).

To zadaje ci kilka pytań i możesz zaakceptować wartości domyślne, z wyjątkiem powiedzenia „tak” Enable filename encryption. Może dać ostrzeżenie i poprosić o buforowanie podpisów; możesz powiedzieć tak obu, ale sprawdź dokładnie, czy masz odpowiednie hasło montowania.

Zobaczysz opcje, które mountzdecydowały się wypróbować dla Ciebie:

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

Jeśli podpisy są błędne (nie pasują do tego, co otrzymałeś Private.sig), mount nie będzie działać.

... ale bardzo niepomyślnie zgłosi to. Będziesz musiał zrobić ls /mnt/plaini cat plik, aby się upewnić. W tym momencie możesz również sprawdzić /var/log/syslogi sprawdzić, czy ecryptfs szuka tych samych podpisów, co my.

Są wyraźnie dwa poważne problemy z ecryptfami i musimy je obejść.

Załaduj klucze do jądra

Jeśli interaktywne montowanie nie pomogło, musimy sami załadować klucze do jądra i ręcznie określić je w opcjach montowania.

# ecryptfs-add-passphrase --fnek

I wklej swoje (supersensowne) hasło montowane skopiowane z góry. To powinno wygenerować:

Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring

Zamontuj ręcznie

Teraz hasła są ładowane do jądra i musimy tylko powiedzieć mountowi, aby ich używał:

# 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

Zauważysz, że opcje są podobne do wydrukowanych przez interaktywne mocowanie, z tym wyjątkiem, że ręcznie informujemy ecryptfs, co jest grane.

Mam nadzieję, że to działa. Jeśli nie, możesz sprawdzić, czy klucze są załadowane do jądra przy użyciu prawidłowych podpisów keyctl list @u, które powinny wydrukować co najmniej dwa oczekiwane podpisy.

Doktor J
źródło
4
pojawia się obejście, które powoduje ecryptfs-recover-privatewyjście błędu montowania (2). spróbuj uruchomić sudo ecryptfs-manager, naciśnij 4 (wyjście), a następnie uruchom ponownie oryginał ecryptfs-recover-private. powinien działać teraz
ulkas
1
@ulkas Wiesz, dlaczego to działa?
Turion
2
@Turion I googlowałem rozwiązanie, więc nie jestem wynalazcą. zgaduję, że jest jakiś błąd w ecryptfsniektórych wersjach, a wywoływanie menedżera po prostu ustawia zmienne, które później są ponownie używane przez mounta. jakiś pomysł, jak to zautomatyzować, aby móc montować moje foldery po każdym ponownym uruchomieniu?
ulkas
1
keyctl link @u @sbyło dla mnie bardzo prostym rozwiązaniem. Kredyty są dostępne tutaj: bugs.debian.org/cgi-bin/bugreport.cgi?bug=870126
sup
Chociaż mój problem prawdopodobnie różnił się od oryginalnego plakatu.
sup
1

Dla przyszłych widzów tego pytania i odpowiedzi: ten sam widoczny objaw może być spowodowany różnymi podstawowymi przyczynami. Objaw wygląda następująco:

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].

W moim przypadku ta odpowiedź była kluczem do rozwiązania. Problem polegał na tym, że próbowałem zrobić wszystko zdalnie przez SSH w sesji Tmux, co było ograniczone przez następujący wiersz /etc/pam.d/sshd:

session    optional     pam_keyinit.so force revoke

Wspomniana odpowiedź sugeruje skomentowanie tej linii i ponowienie próby w nowej sesji.

Prostym obejściem, które zadziałało w moim przypadku, było zrobienie tego na miejscu, całkowicie unikając SSH i Tmux. Bardziej skomplikowanym obejściem (którego nie zweryfikowałem) jest użycie czegoś takiego jak spisek, aby uzyskać zdalny dostęp do nieograniczonej liczby terminali.

Amir
źródło