Dateien, die fälschlicherweise als im encfs-Volume beschädigt angesehen werden

8

Ich verwende encfs @1.7.5und osxfuse @2.6.4installiere über MacPorts 2.2.1 auf meinem MacBook Pro Retina Ende 2013, auf dem OS X Mavericks 10.9.2 ausgeführt wird. Beim Öffnen bestimmter Dateien (z. B. xlsx, pdf) in meinem encfsVolume wird die Fehlermeldung "X ist beschädigt und kann nicht geöffnet werden." Angezeigt . sowie einen Vorschlag, es in den Papierkorb zu verschieben. Wenn ich diese Datei jedoch an eine andere Stelle kopiere (dh nicht auf das encfsVolume), scheint sie einwandfrei zu funktionieren. Warum ist das?

BEARBEITEN: Ich habe online gesucht und einen Beitrag gefunden, in dem GateKeeper deaktiviert wurde. Es hat den Trick gemacht. Im Wesentlichen gehen Sie zu "Sicherheitseinstellungen -> Sicherheit und Datenschutz -> Anwendungen zulassen, die von: Überall heruntergeladen werden".

Ich verstehe, dass die Lösung funktioniert, aber ich würde gerne wissen, warum sie funktioniert. Danke im Voraus.

EDIT 2: Wenn jemand meinen Beitrag mit einem Tag versehen könnte encfs, wäre er sehr dankbar.

Nicolas De Jay
quelle

Antworten:

6

Ich habe die Antwort hier gefunden (für BoxCryptor):

Unter bestimmten Umständen fügt Mac OS X einer Datei, die z. B. aus dem Internet heruntergeladen wurde, das erweiterte Attribut 'com.apple.quarantine' hinzu. Dies kann auch bei Dateien im BoxCryptor-Ordner der Fall sein. Wenn für eine verschlüsselte Datei dieses erweiterte Attribut festgelegt ist, wird beim Versuch, die Klartextdatei im BoxCryptor-Volume zu öffnen, die Fehlermeldung "ist beschädigt" angezeigt.

Versuchen Sie auch diese sicherere Problemumgehung:

x) Terminal öffnen (Anwendungen -> Dienstprogramme)

y) Führen Sie den folgenden Befehl aus (ersetzen Sie den Pfad):

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

apmouse
quelle
2

@apmouse ist korrekt: Sie können die Datei mit xattr reparieren. Sie müssen dies jedoch wiederholt tun. Jedes Mal, wenn Sie eine Datei speichern, wird das Quarantäne-Flag wieder hinzugefügt.

Wie Sie bereits betont haben, gibt es eine weniger sichere, aber bequemere Alternative: Deaktivieren Sie GateKeeper.

wie man Gatekeeper deaktiviert

Ich verstehe, dass die Lösung funktioniert, aber ich würde gerne wissen, warum sie funktioniert. Danke im Voraus.

Das erste, was Sie beachten müssen, ist, dass Sie die "beschädigte" Datei ohne Probleme öffnen können, wenn Sie in Keynote Datei → Öffnen wählen. Dies bedeutet, dass tatsächlich der Finder eingreift, um das Öffnen der Datei zu verhindern.

Die Fehlermeldung "_____ ist beschädigt und kann nicht geöffnet werden" ist tatsächlich ein Signaturfehler (siehe hier - etwa 3/4 des Weges nach unten), was bedeutet, dass GateKeeper keine gültige Signatur überprüfen kann. Die Signaturüberprüfung soll auf ausführbare Dateien angewendet werden, und ich habe immer noch nicht herausgefunden, warum sie in dieser Situation fehlerhaft ist.

Ich habe versucht, das Beispiel-Loopback-Dateisystem von osxfuse zu kompilieren und dieselbe "beschädigte" Datei dort abzulegen, und es wird einwandfrei geöffnet. Ich denke, dieser Fehler ist spezifisch für encfs - nicht für osxfuse im Allgemeinen.

Für genau das, was es wert ist, gibt es im osxfuse-Projekt ein Ticket für genau dieses Problem. Wenn Sie dieses Problem haben, geben Sie Ihre Daten auf diesem Ticket an.

Hoffe das hilft...

Mark E. Haase
quelle
Ich dachte, Gatekeeper betrifft nur Apps und keine Dokumente. Wie wirkt es sich auf XLSX-Dateien aus?
user151019
Ich vermute, dass das Flag auf alle heruntergeladenen Dokumente angewendet wird, wie in der Antwort von @ apmouse, jedoch nicht auf Nicht-Apps "erzwungen", sondern auf verschlüsselten Volumes fehlerhaft. Ich muss dieses Verhalten auf sshfsund anderen FUSE-Dateisystemen testen , um sicherzugehen.
Nicolas De Jay
2

Ich weiß nicht, warum Apple anscheinend keine einfache Möglichkeit hat, "dieses Volume ist sicher" zu sagen, aber das Problem ist für encfs ziemlich einfach zu lösen. Nachfolgend finden Sie ein Skript, das ich zum Mounten von encfs-Volumes verwende. Es löst automatisch das Attributproblem und hilft auch beim Erinnern daran, Volumes zu schließen. Es kann durch Lesen von encfs dir und mount point erweitert werdenüber die Befehlszeile, aber ich bevorzuge es nicht, da Tippfehler Sicherheitsrisiken verursachen können. Es sollte relativ einfach an andere Mount-Mechanismen wie Boxcryptor angepasst werden können. Es funktioniert für mich, aber Sie verlassen sich auf Ihr eigenes Fachwissen, um zu entscheiden, ob Sie es für sich selbst verwenden möchten. Insbesondere bin ich kein Sicherheitsexperte und nicht qualifiziert zu beurteilen, ob Sicherheitslücken geöffnet werden (insbesondere während der Ausführung und insbesondere auf gemeinsam genutzten Computern).

#!/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
user308273
quelle
2

Ich glaube, ich habe dafür eine dauerhaftere Problemumgehung als einen Befehl, den Sie jedes Mal ausführen müssen. Wie ich gerade im vorgelagerten Fehlerbericht erwähnt habe :

Ich dachte mir, OS X verwendet Systembenutzer und Systemdämonen für alle Arten von Jobs. Vielleicht erwartet der Kernel, dass er diese Dateien als anderer Benutzer oder als Root ausführen und sie dann als beschädigt markieren kann funktioniert nicht

Also habe ich meine sshfsBinärdatei als markiert setuidund die -o allow_otherMount-Option zu meiner sshfsBefehlszeile hinzugefügt und ... Ich scheine in der Lage zu sein, Dokumente auf dem gemounteten Volume zuverlässig zu öffnen und zu bearbeiten. Ich werde weiter experimentieren und nachverfolgen, wenn es nicht mehr funktioniert.

Ich bin natürlich besorgt über eine setuid root binäre herumliegen, aber es scheint besser als die Option , einen Daemon laufen , die Root - Rechte auf die Datei erfordert Server - Seite der Dinge NFS oder SMB zu bekommen. :) :)

Angesichts der Tatsache, dass allow_otheres sich um eine FUSE-Mount-Option handelt, die nicht spezifisch ist sshfs, glaube ich, dass diese Problemumgehung auch funktionieren würde encfs. Es wäre toll zu wissen, ob jemand es versucht hat und es funktioniert hat!

Glyphe
quelle
1

Danke @Glyph, soweit ich das beurteilen kann, scheint es zu funktionieren, nachdem Sie Ihre Schritte befolgt haben. Ich habe diese Schritte befolgt:

  1. Zuerst musste ich eine Gruppe hinzufügen, die zur osxfuse-Administratorgruppe gehört, sonst würde die allow_other fehlschlagen, wenn der Vorgang nicht unterstützt wird.

    sysctl -w osxfuse.tunables.admin_group=12
    
  2. Verwenden Sie dann das -o allow_other für encfs

Ich habe es nur ein bisschen versucht, aber der reproduzierbare Fehlerfall, den ich hatte, scheint jetzt zu funktionieren.

abe
quelle