File salah dianggap sebagai rusak dalam volume ENF

8

Saya menggunakan encfs @1.7.5dan osxfuse @2.6.4menginstal melalui MacPorts 2.2.1 di MacBook Pro Retina saya akhir 2013 yang menjalankan OS X Mavericks 10.9.2. Saat membuka file tertentu (mis. Xlsx, pdf) di encfsvolume saya , saya mendapatkan pesan kesalahan "X rusak dan tidak bisa dibuka." serta saran untuk memindahkannya ke tempat sampah. Namun, ketika saya menyalin file itu di tempat lain (yaitu tidak pada encfsvolume), tampaknya berfungsi dengan baik. Kenapa ini?

EDIT: Saya melihat online dan menemukan sebuah posting yang melibatkan menonaktifkan GateKeeper. Itu berhasil. Intinya, Anda masuk ke "Preferensi Keamanan -> Keamanan & Privasi -> Izinkan aplikasi diunduh dari: Di ​​mana saja".

Saya mengerti bahwa solusinya bekerja, tetapi saya ingin tahu mengapa itu berhasil. Terima kasih sebelumnya.

EDIT 2: Juga, jika seseorang dapat menandai posting saya encfs, itu akan sangat dihargai.

Nicolas De Jay
sumber

Jawaban:

6

Saya menemukan jawabannya di sini (untuk BoxCryptor):

Dalam keadaan khusus, Mac OS X menambahkan atribut diperluas 'com.apple.quarantine' ke file yang misalnya diunduh dari internet. Ini juga dapat terjadi pada file di dalam Folder BoxCryptor. Jika file terenkripsi memiliki set atribut diperluas ini, Anda menerima pesan kesalahan "rusak" ketika mencoba untuk membuka file plaintext di Volume BoxCryptor.

Coba juga ini, solusi yang lebih aman:

x) Buka Terminal (Aplikasi -> Utilitas)

y) Jalankan perintah berikut (gantikan jalurnya):

$ xattr -r -d com.apple.quarantine / path / ke / encfs / mount / point

apmouse
sumber
2

@ apmouse benar: Anda dapat memperbaiki file dengan xattr. Tetapi Anda harus melakukannya berulang kali - setiap kali Anda menyimpan file, bendera karantina akan ditambahkan kembali ke sana.

Seperti yang Anda tunjukkan, ada alternatif yang kurang aman tetapi lebih nyaman: nonaktifkan GateKeeper.

cara menonaktifkan gatekeeper

Saya mengerti bahwa solusinya bekerja, tetapi saya ingin tahu mengapa itu berhasil. Terima kasih sebelumnya.

Hal pertama yang perlu diperhatikan adalah bahwa jika Anda masuk ke Keynote dan memilih File → Open, Anda dapat membuka file "rusak" tanpa masalah. Ini menyiratkan bahwa sebenarnya Finder yang mengintervensi untuk mencegah pembukaan file.

Pesan kesalahan "_____ rusak dan tidak dapat dibuka" sebenarnya adalah kesalahan tanda tangan (lihat di sini - sekitar 3/4 dari jalan ke bawah), yang berarti bahwa GateKeeper tidak dapat memverifikasi tanda tangan yang valid. Verifikasi tanda tangan seharusnya diterapkan pada yang dapat dieksekusi, dan saya masih belum menemukan alasan mengapa hal itu mengganggu dalam situasi ini.

Saya mencoba mengkompilasi sistem file loopback sampel osxfuse dan meletakkan file "rusak" yang sama di sana dan terbuka dengan baik. Jadi saya pikir bug ini khusus untuk encfs - bukan untuk osxfuse secara umum.

Untuk apa nilainya, ada tiket terbuka di proyek osxfuse untuk masalah ini. Jika Anda mengalami masalah ini, kirimkan rincian Anda di tiket itu.

Semoga ini membantu...

Mark E. Haase
sumber
Saya pikir Gatekeeper hanya memengaruhi aplikasi dan bukan dokumen. Jadi bagaimana pengaruhnya terhadap file .xlsx?
user151019
Dugaan saya adalah bahwa flag diterapkan ke semua dokumen yang diunduh seperti pada jawaban @ apmouse tetapi tidak "diberlakukan" pada non-aplikasi, tetapi dengan perilaku glitchy pada volume yang dienkripsi. Saya perlu menguji perilaku ini sshfsdan filesystem FUSE lainnya untuk memastikan.
Nicolas De Jay
2

Saya tidak tahu mengapa apel tampaknya tidak memiliki cara sederhana untuk mengatakan "volume ini aman", tetapi masalahnya cukup mudah dipecahkan untuk encf. Silakan temukan di bawah ini skrip yang saya gunakan untuk memasang volume encfs; itu secara otomatis memecahkan masalah atribut, dan juga membantu dengan mengingat untuk menutup volume. Itu bisa diperpanjang dengan membaca dir encfs dan mount pointdari baris perintah, tapi saya lebih suka tidak melakukannya karena kesalahan ketik mungkin menimbulkan risiko keamanan. Itu harus relatif mudah disesuaikan dengan mekanisme mount lainnya, seperti boxcryptor. Ini bekerja untuk saya, tetapi Anda mengandalkan keahlian Anda sendiri dalam memutuskan apakah akan menggunakannya untuk diri sendiri. Sangat khusus, saya bukan ahli keamanan, dan saya tidak memenuhi syarat untuk menilai apakah itu membuka lubang keamanan (terutama saat sedang berjalan, dan terutama pada mesin bersama).

#!/bin/bash
# script to mount encrypted volume

ENCFSDIR=<encfs dir>
MOUNTPOINT=<mount point>
SAFELOC=<somewhere outside mounted volume>

encfs $ENCFSDIR $MOUNTPOINT

cd $MOUNTPOINT
xattr -r -d com.apple.quarantine .
MY_PROMPT='SECRET: '
echo 'noscecrets to finish'
while :
do
  echo -n "$MY_PROMPT"
  read line
  if [ 'nosecrets' == "$line" ] ; then
    break
  fi
  eval "$line"
done

\# and clean up
cd $SAFELOC
umount $MOUNTPOINT

exit 0
pengguna308273
sumber
2

Saya pikir saya punya solusi yang lebih gigih untuk ini daripada perintah yang Anda perlu jalankan setiap kali. Seperti yang saya sebutkan di laporan bug di hulu :

Saya berpikir sendiri, OS X menggunakan pengguna sistem dan daemon sistem untuk semua jenis pekerjaan, mungkin kernel berharap dapat melakukan beberapa pekerjaan sebagai pengguna lain, atau sebagai root, untuk file-file ini, dan menandainya sebagai rusak ketika itu tidak bekerja

Jadi saya menandai sshfsbiner saya sebagai setuid, dan saya menambahkan -o allow_otheropsi mount ke sshfsbaris perintah saya , dan ... Saya tampaknya dapat membuka dan mengedit dokumen dengan andal pada volume yang dipasang. Saya akan terus bereksperimen dan menindaklanjuti jika berhenti bekerja.

Saya tentu saja khawatir tentang binary root setuid berbaring, tetapi tampaknya lebih baik daripada opsi menjalankan daemon yang membutuhkan hak root pada sisi server file hal untuk mendapatkan NFS atau SMB. :)

Mengingat itu allow_otheradalah opsi pemasangan SEKERING dan tidak khusus untuk sshfs, saya percaya bahwa solusi ini akan berhasil encfsjuga. Akan sangat menyenangkan mengetahui jika seseorang mencobanya dan berhasil!

Mesin terbang
sumber
1

Terima kasih @Glyph, dari apa yang saya dapat katakan tampaknya berfungsi setelah mengikuti langkah-langkah Anda. Saya mengikuti langkah-langkah ini:

  1. Pertama saya harus menambahkan grup yang saya milik grup admin osxfuse, jika tidak allow_other akan gagal dengan operasi yang tidak didukung.

    sysctl -w osxfuse.tunables.admin_group=12
    
  2. Kemudian gunakan -o allow_other ke encfs

Saya hanya mencobanya sebentar, tetapi kasus kegagalan yang dapat direproduksi tampaknya telah berhasil.

abe
sumber