mount: Tidak ada file atau direktori dengan pemulihan terenkripsi

12

Saya telah menghancurkan instalasi Mint Linux saya. Saya hanya ingin akses ke etalase terpencil saya. Jadi yang terjadi adalah saya mengalami masalah dengan file ICEauthority di direktori home saya. Jadi mengikuti berbagai arah di internet saya sampai pada kesimpulan bahwa saya dapat mengatur direktori home secara rekursif ke chmod 755 untuk memungkinkan file itu bekerja ... akhirnya saya mengalami masalah dengan pemuatan sistem. Akhirnya dengan mengatur direktori home ke izin yang dapat dieksekusi untuk root adalah saya bisa mendapatkan akses baca / tulis ... tapi kemudian saya mereset mesin saya oh mengapa oh mengapa saya mereset mesin saya !!! - sekarang sistem membuat saya kesalahan yang sama dengan ICEauthority tetapi tidak pernah membawa saya ke OS karena disk dienkripsi. Tidak ada yang saya coba tampaknya berhasil dan saya tidak memiliki benih pemasangan asli.

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

Saya benar-benar khawatir karena saya memiliki file penting di sana yang disimpan di mesin virtual ... Jika saya bisa mendapatkan file-file itu maka saya tidak akan ragu untuk menginstal dan memulai lagi dari awal.

Frankenmint
sumber

Jawaban:

13

Saya menemukan bahwa menjalankan sudo bashdan kemudian menjalankan ecryptfs-recover-privatesebagai root (bukan melalui sudo) berhasil. Tidak yakin mengapa harus berbeda.

Edit:

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

Anda tidak akan melihat prompt dan harus mengetikkan kata sandi login Anda, blind, ke dalam perintah di atas.

Ganti aaaaaaaaaaaaaaaadan di bbbbbbbbbbbbbbbbbawah ini dengan tanda tangan hex antara tanda kurung dari output di atas, dalam urutan:

# 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

Persiapan

Ternyata hanya berjalan karena root tidak bekerja dengan baik untuk saya; terkadang itu terjadi, kadang tidak. Pada dasarnya, ecryptfs tampaknya buggy dan sangat tidak ramah pengguna, seringkali membingungkan kata sandi login dan me-mount frasa sandi. Setelah menuruni lubang kelinci yang dalam dan gelap, saya punya beberapa tips yang bisa membantu. Catatan ini untuk Ubuntu 17.10, ecryptfs-utils 111-0, dan Anda harus menjadi root sebelum memulai. Saya berasumsi Anda ingin me-mount direktori home Anda dari /mnt/crypt(yang seharusnya sudah di-mount) ke /mnt/plain, dan Anda harus mengganti userdengan nama pengguna.

Mulai dengan Mudah

Hal pertama yang harus dicoba adalah:

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

Jika ini berhasil, Anda beruntung. Jika tidak, mungkin memberikan pesan kesalahan dari mountsekitar no such file or directory. Ini sangat menyesatkan: artinya adalah kata sandi mount Anda salah atau hilang.

Dapatkan Tanda Tangan

Inilah bagian yang penting: kita perlu memverifikasi ecryptfs benar-benar mencoba kata sandi pemasangan yang tepat. Frasa sandi harus dimuat ke dalam kernel Linux sebelum ecryptfs dapat me-mount sistem file Anda. ecryptfs meminta kernel dengan tanda tangan mereka. Tanda tangan adalah nilai hex 16-byte (dan tidak sensitif secara kriptografi). Anda dapat menemukan tanda tangan frasa sandi yang diharapkan ecryptfs:

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

Ingat ini. Tujuannya adalah untuk mendapatkan frasa sandi dengan tanda tangan ini dimuat ke dalam kernel dan kemudian memberitahu ecryptfs untuk menggunakannya. Tanda tangan pertama ( aaaaaaaaaaaaaaaa) adalah untuk data, dan yang kedua ( bbbbbbbbbbbbbbbb) adalah Kunci Enkripsi FileName (FNEK).

Dapatkan frasa sandi pemasangan

Perintah ini akan meminta Anda untuk memasukkan kata sandi login Anda (dengan prompt yang menyesatkan), dan mengeluarkan frasa sandi mount Anda :

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

Salin ini tapi hati-hati !! , karena ini sangat sensitif secara kriptografis, kunci menuju kerajaan.

Coba pemasangan interaktif

Hal selanjutnya yang harus dicoba adalah:

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

Yang penting di sini adalah yang mountmembutuhkan frasa sandi pemasangan Anda (sangat sensitif) yang baru saja kami salin (bukan kata sandi login Anda).

Ini akan menanyakan beberapa pertanyaan kepada Anda, dan Anda dapat menerima default kecuali mengatakan ya untuk Enable filename encryption. Ini mungkin memberi Anda peringatan dan meminta untuk menyimpan tanda tangan; Anda bisa mengatakan ya untuk keduanya, tetapi periksa kembali apakah Anda sudah mendapatkan kata sandi pemasangan yang benar.

Anda akan melihat opsi yang mounttelah memutuskan untuk mencoba untuk Anda:

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

Jika tanda tangan salah (tidak cocok dengan yang Anda dapatkan Private.sig), mount tidak akan berfungsi.

... tapi itu akan sangat membantu melaporkan itu. Anda harus melakukan ls /mnt/plaindan cat file untuk memastikan. Pada titik ini Anda juga dapat melihat /var/log/syslogdan memverifikasi bahwa ecryptf sedang mencari tanda tangan yang sama dengan kami.

Jelas ada dua masalah serius dengan ecryptfs di sini, dan kami harus mengatasinya.

Masukkan kunci ke dalam kernel

Jika pemasangan interaktif tidak membantu, kami harus memuat sendiri kunci ke kernel dan menentukannya secara manual dalam opsi pemasangan.

# ecryptfs-add-passphrase --fnek

Dan rekatkan frasa sandi pemasangan Anda (super-senstive) yang disalin dari atas. Ini akan menghasilkan:

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

Pasang secara manual

Sekarang frasa sandi dimuat ke dalam kernel, dan kita hanya perlu memberi tahu mount untuk menggunakannya:

# 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

Anda akan melihat opsinya mirip dengan apa yang dipasang oleh pemasangan interaktif, kecuali kami memberi tahu ecryptf secara manual apa yang terjadi.

Semoga ini berhasil. Jika tidak, Anda dapat memeriksa apakah kunci-kunci tersebut dimuat ke dalam kernel dengan menggunakan tanda tangan yang benar keyctl list @u, yang akan mencetak setidaknya dua tanda tangan yang Anda harapkan.

Dokter J
sumber
4
ada solusi saat ecryptfs-recover-privateoutput kesalahan mount (2). coba jalankan sudo ecryptfs-manager, tekan 4 (keluar), lalu jalankan lagi yang asli ecryptfs-recover-private. harus bekerja sekarang
ulkas
1
@ulkas Ada ide mengapa ini berhasil?
Turion
2
@ Turion saya mencari solusi di Google, jadi saya bukan penemunya. Dugaan saya adalah ada bug dalam ecryptfsdari beberapa versi dan memanggil manajer cukup menetapkan beberapa variabel yang kemudian digunakan kembali oleh mount.any ide bagaimana mengotomatisasi ini sehingga saya dapat me-mount folder saya setelah setiap reboot?
ulkas
1
keyctl link @u @sadalah solusi yang sangat sederhana bagi saya. Penghargaan ada di sini: bugs.debian.org/cgi-bin/bugreport.cgi?bug=870126
sup
Padahal masalah saya mungkin berbeda dari poster aslinya.
sup
1

Bagi pemirsa yang akan datang dari T&J ini: gejala nyata yang sama mungkin disebabkan oleh berbagai alasan mendasar. Gejalanya seperti:

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

Dalam kasus saya, jawaban ini memegang kunci solusi. Masalahnya adalah saya mencoba melakukan semuanya dari jarak jauh melalui SSH dalam sesi Tmux, yang dibatasi oleh baris berikut di /etc/pam.d/sshd:

session    optional     pam_keyinit.so force revoke

Jawaban yang disebutkan di atas menyarankan untuk mengomentari garis yang keluar dan coba lagi dalam sesi baru.

Solusi sederhana yang berhasil dalam kasus saya adalah melakukannya di lokasi, menghindari SSH dan Tmux sama sekali. Solusi yang lebih rumit (yang belum saya verifikasi) adalah menggunakan sesuatu seperti conspy untuk mendapatkan akses ke terminal tak terbatas dari jarak jauh.

Amir
sumber