File erroneamente considerati danneggiati nel volume encfs


8

Sto usando encfs @1.7.5e osxfuse @2.6.4installando tramite MacPorts 2.2.1 sul mio MacBook Pro Retina Late 2013 che esegue OS X Mavericks 10.9.2. Quando apro alcuni file (ad esempio xlsx, pdf) nel mio encfsvolume, viene visualizzato un messaggio di errore "X è danneggiata e non può essere aperta". oltre a un suggerimento per spostarlo nel cestino. Tuttavia, quando copio quel file altrove (cioè non sul encfsvolume), sembra funzionare bene. Perchè è questo?

EDIT: ho cercato online e ho trovato un post che prevedeva la disabilitazione di GateKeeper. Ha fatto il trucco. In sostanza, vai in "Preferenze di sicurezza -> Sicurezza e privacy -> Consenti applicazioni scaricate da: Ovunque".

Capisco che la soluzione funziona, ma vorrei sapere perché funziona. Grazie in anticipo.

EDIT 2: Inoltre, se qualcuno potesse taggare il mio post encfs, sarebbe molto apprezzato.

Risposte:


6

Ho trovato la risposta qui (per BoxCryptor):

In circostanze speciali, Mac OS X aggiunge l'attributo esteso "com.apple.quarantine" a un file che è stato scaricato ad esempio da Internet. Questo può accadere anche ai file all'interno della cartella BoxCryptor. Se un file crittografato ha questo set di attributi estesi, viene visualizzato il messaggio di errore "danneggiato" quando si tenta di aprire il file di testo normale nel volume BoxCryptor.

Prova anche questo, soluzione più sicura:

x) Apri terminale (Applicazioni -> Utilità)

y) Esegui il seguente comando (sostituisci il percorso):

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


2

@apmouse è corretto: è possibile riparare il file con xattr. Ma devi farlo ripetutamente: ogni volta che salvi un file verrà aggiunto il flag di quarantena.

Come hai sottolineato, c'è un'alternativa meno sicura ma più conveniente: disabilitare GateKeeper.

come disabilitare gatekeeper

Capisco che la soluzione funziona, ma vorrei sapere perché funziona. Grazie in anticipo.

La prima cosa da notare è che se vai in Keynote e scegli File → Apri, puoi aprire il file "danneggiato" senza problemi. Ciò implica che è effettivamente il Finder a intervenire per impedire l'apertura del file.

Il messaggio di errore "_____ è danneggiato e non può essere aperto" è in realtà un errore di firma (vedere qui - circa 3 / 4s della discesa), il che significa che GateKeeper non può verificare una firma valida. La verifica della firma dovrebbe essere applicata agli eseguibili, e non ho ancora capito perché si stacchi in questa situazione.

Ho provato a compilare il file system di loopback di esempio di osxfuse e a inserire lo stesso file "danneggiato" e si apre bene. Quindi penso che questo bug sia specifico per encfs, non per osxfuse in generale.

Per quello che vale, c'è un ticket aperto sul progetto osxfuse per questo esatto problema. Se riscontri questo problema, pubblica i tuoi dati su quel biglietto.

Spero che sia di aiuto...


Pensavo che Gatekeeper riguardasse solo le app e non i documenti. In che modo influisce sui file .xlsx?
user151019

La mia ipotesi è che il flag sia applicato a tutti i documenti scaricati come nella risposta di @ apmouse ma non "imposto" su non app, ma con comportamento glitch su volumi crittografati. Devo testare questo comportamento su sshfse altri filesystem FUSE per essere sicuro.
Nicolas De Jay,

2

Non so perché Apple non sembri avere un modo semplice per dire "questo volume è sicuro", ma il problema è abbastanza facile da risolvere per encfs. Di seguito trovi uno script che uso per montare i volumi encfs; risolve automaticamente il problema dell'attributo e aiuta anche a ricordare di chiudere i volumi. Potrebbe essere esteso leggendo la directory encfs e il mount pointdalla riga di comando, ma preferisco non farlo perché i refusi potrebbero creare rischi per la sicurezza. Dovrebbe essere relativamente facilmente adattato ad altri meccanismi di innesto, come boxcryptor. Funziona per me, ma fai affidamento sulla tua esperienza nel decidere se usarlo per te stesso. In particolare, non sono un esperto di sicurezza e non sono qualificato per giudicare se apre eventuali falle di sicurezza (specialmente mentre è in esecuzione e specialmente su macchine condivise).

#!/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

2

Penso di avere una soluzione più persistente per questo piuttosto che un comando che devi eseguire ogni volta. Come ho appena menzionato nella segnalazione di bug a monte :

Pensavo tra me, OS X utilizza utenti di sistema e demoni di sistema per tutti i tipi di lavori, forse il kernel si aspetta di essere in grado di fare un po 'di lavoro come un altro utente, o come root, su questi file, e di contrassegnarli come danneggiati quando non funziona

Quindi ho contrassegnato il mio sshfsbinario come setuid, e ho aggiunto l' -o allow_otheropzione mount alla mia sshfsriga di comando e ... Mi sembra di essere in grado di aprire e modificare documenti in modo affidabile sul volume montato. Continuerò a sperimentare e dare seguito se smette di funzionare.

Sono ovviamente preoccupato per un binario root setuid in giro, ma sembra meglio dell'opzione di eseguire un demone che richiede i privilegi di root sul lato file server per ottenere NFS o SMB. :)

Dato che allow_otherè un'opzione di montaggio FUSE e non specifica per sshfs, credo che questa soluzione alternativa funzionerebbe anche per encfs. Sarebbe bello sapere se qualcuno l'ha provato e ha funzionato!


1

Grazie @Glyph, da quello che posso dire sembra funzionare dopo aver seguito i tuoi passaggi. Ho seguito questi passaggi:

  1. Per prima cosa ho dovuto aggiungere un gruppo a cui appartengo al gruppo admin osxfuse, altrimenti allow_other fallirebbe con un'operazione non supportata.

    sysctl -w osxfuse.tunables.admin_group=12
    
  2. Quindi ha usato -o allow_other per encfs

L'ho provato solo per un po ', ma il caso di errore riproducibile che avevo ora sembra funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.