Fichiers à tort considérés comme endommagés dans le volume encfs

8

J'utilise encfs @1.7.5et osxfuse @2.6.4installe via MacPorts 2.2.1 sur mon MacBook Pro Retina fin 2013 qui exécute OS X Mavericks 10.9.2. Lors de l'ouverture de certains fichiers (par exemple xlsx, pdf) dans mon encfsvolume, j'obtiens une erreur "X est endommagé et ne peut pas être ouvert." ainsi qu'une suggestion pour le déplacer dans la corbeille. Cependant, lorsque je copie ce fichier ailleurs (c'est-à-dire pas sur le encfsvolume), il semble fonctionner très bien. Pourquoi est-ce?

EDIT: J'ai regardé en ligne et j'ai trouvé un article impliquant la désactivation de GateKeeper. Ça a fait l'affaire. En substance, vous allez dans "Préférences de sécurité -> Sécurité et confidentialité -> Autoriser le téléchargement des applications depuis: N'importe où".

Je comprends que la solution fonctionne, mais j'aimerais savoir pourquoi elle fonctionne. Merci d'avance.

EDIT 2: De plus, si quelqu'un pouvait taguer mon message encfs, ce serait très apprécié.

Nicolas De Jay
la source

Réponses:

6

J'ai trouvé la réponse ici (pour BoxCryptor):

Dans des circonstances particulières, Mac OS X ajoute l'attribut étendu «com.apple.quarantine» à un fichier qui a par exemple été téléchargé sur Internet. Cela peut également arriver aux fichiers du dossier BoxCryptor. Si un fichier chiffré a cet ensemble d'attributs étendu, vous recevez le message d'erreur «est endommagé» lorsque vous essayez d'ouvrir le fichier en clair dans le volume BoxCryptor.

Essayez également cette solution de contournement plus sécurisée:

x) Terminal ouvert (Applications -> Utilitaires)

y) Exécutez la commande suivante (remplacez le chemin d'accès):

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

apmouse
la source
2

@apmouse est correct: vous pouvez réparer le fichier avec xattr. Mais vous devez le faire à plusieurs reprises - chaque fois que vous enregistrez un fichier, l'indicateur de quarantaine y est ajouté.

Comme vous l'avez souligné, il existe une alternative moins sûre mais plus pratique: désactivez GateKeeper.

comment désactiver le contrôleur d'accès

Je comprends que la solution fonctionne, mais j'aimerais savoir pourquoi elle fonctionne. Merci d'avance.

La première chose à noter est que si vous allez dans Keynote et choisissez Fichier → Ouvrir, vous pouvez ouvrir le fichier "endommagé" sans aucun problème. Cela implique que c'est réellement le Finder qui intervient pour empêcher l'ouverture du fichier.

Le message d'erreur "_____ est endommagé et ne peut pas être ouvert" est en fait une erreur de signature (voir ici - environ 3 / 4ème de la descente), ce qui signifie que GateKeeper ne peut pas vérifier une signature valide. La vérification de signature est censée être appliquée aux exécutables, et je n'ai toujours pas compris pourquoi cela bogue dans cette situation.

J'ai essayé de compiler l' exemple de système de fichiers de bouclage d' osxfuse et d'y mettre le même fichier "endommagé" et il s'ouvre très bien. Je pense donc que ce bogue est spécifique à encfs - pas à osxfuse en général.

Pour ce que ça vaut, il y a un ticket ouvert sur le projet osxfuse pour ce problème exact. Si vous rencontrez ce problème, affichez vos coordonnées sur ce ticket.

J'espère que cela t'aides...

Mark E. Haase
la source
Je pensais que Gatekeeper affecte uniquement les applications et non les documents. Comment cela affecte-t-il les fichiers .xlsx?
user151019
Je suppose que le drapeau est appliqué à tous les documents téléchargés comme dans la réponse de @ apmouse mais pas "appliqué" sur les applications non, mais avec un comportement glitch sur les volumes chiffrés. J'ai besoin de tester ce comportement sur sshfset d'autres systèmes de fichiers FUSE pour être sûr.
Nicolas De Jay
2

Je ne sais pas pourquoi apple ne semble pas avoir un moyen simple de dire "ce volume est sûr", mais le problème est assez facile à résoudre pour encfs. Veuillez trouver ci-dessous un script que j'utilise pour monter des volumes encfs; il résout automatiquement le problème d'attribut et aide également à se souvenir de fermer des volumes. Il peut être étendu en lisant le répertoire encfs et le point de montagedepuis la ligne de commande, mais je préfère ne pas le faire car les fautes de frappe peuvent créer des risques pour la sécurité. Il devrait être relativement facilement adapté à d'autres mécanismes de montage, tels que boxcryptor. Cela fonctionne pour moi, mais vous comptez sur votre propre expertise pour décider de l'utiliser ou non pour vous-même. Plus précisément, je ne suis pas un expert en sécurité, et je ne suis pas qualifié pour juger s'il ouvre des failles de sécurité (en particulier lorsqu'il est en cours d'exécution, et en particulier sur les machines partagées).

#!/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
la source
2

Je pense avoir une solution de contournement plus persistante pour cela plutôt qu'une commande que vous devez exécuter à chaque fois. Comme je viens de le mentionner sur le rapport de bug en amont :

Je me suis dit, OS X utilise des utilisateurs système et des démons système pour toutes sortes de tâches, peut-être que le noyau s'attend à pouvoir faire un travail en tant qu'autre utilisateur, ou en tant que root, sur ces fichiers, et les marquer comme endommagés lorsque cela ne fonctionne pas.

J'ai donc marqué mon sshfsbinaire comme setuid, et j'ai ajouté l' -o allow_otheroption de montage à ma sshfsligne de commande, et ... Je semble pouvoir ouvrir et modifier des documents de manière fiable sur le volume monté. Je continuerai d'expérimenter et de suivre si cela cesse de fonctionner.

Je suis bien sûr préoccupé par un binaire racine setuid qui traîne, mais cela semble mieux que l'option d'exécuter un démon qui nécessite des privilèges root côté serveur de fichiers pour obtenir NFS ou SMB. :)

Étant donné qu'il allow_others'agit d'une option de montage FUSE et non spécifique à sshfs, je pense que cette solution de contournement fonctionnerait encfségalement. Ce serait formidable de savoir si quelqu'un l'a essayé et cela a fonctionné!

Glyphe
la source
1

Merci @Glyph, d'après ce que je peux dire, il semble fonctionner après avoir suivi vos étapes. J'ai suivi ces étapes:

  1. J'ai d'abord dû ajouter un groupe auquel j'appartiens au groupe d'administration osxfuse, sinon allow_other échouerait avec une opération non prise en charge.

    sysctl -w osxfuse.tunables.admin_group=12
    
  2. Puis utilisé le -o allow_other pour encfs

Je ne l'ai essayé que pendant un peu, mais le cas d'échec reproductible que j'avais semble maintenant fonctionner.

abe
la source