9 votes

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

J'utilise encfs @1.7.5 y osxfuse @2.6.4 installé via MacPorts 2.2.1 sur mon MacBook Pro Retina Late 2013 qui fonctionne sous OS X Mavericks 10.9.2. Lors de l'ouverture de certains fichiers (par exemple, xlsx, pdf) dans mon ordinateur, j'ai eu l'impression de ne pas pouvoir les ouvrir. encfs Je reçois un message d'erreur "X est endommagé et ne peut pas être ouvert" ainsi qu'une suggestion de le mettre à la corbeille. Toutefois, lorsque je copie ce fichier ailleurs (c'est-à-dire pas sur le volume encfs ), cela semble fonctionner parfaitement. Comment cela se fait-il ?

EDIT : J'ai regardé en ligne et j'ai trouvé un poste impliquant la désactivation de GateKeeper. Cela a fonctionné. En gros, vous allez dans "Préférences de sécurité -> Sécurité et confidentialité -> Autoriser les applications téléchargées depuis : N'importe où".

Je comprends que la solution fonctionne, mais je voudrais savoir pourquoi ça marche. Merci d'avance.

EDIT 2 : Aussi, si quelqu'un pouvait taguer mon post avec encfs ce serait très apprécié.

6voto

apmouse Points 176

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

Dans certaines circonstances, Mac OS X ajoute l'attribut étendu "com.apple.quarantine" à un fichier qui a été, par exemple, téléchargé sur Internet. Cela peut également se produire pour les fichiers dans le dossier BoxCryptor. Si un fichier crypté a cet attribut étendu, vous recevez le message d'erreur "est endommagé" lorsque vous essayez d'ouvrir le fichier en clair dans le volume BoxCryptor.

Essayez aussi cette solution de rechange, plus sûre :

x) Ouvrir le terminal (Applications -> Utilitaires)

y) Exécutez la commande suivante (remplacez le chemin) :

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

2voto

Max Points 21

@apmouse a raison : 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 est ajouté au fichier.

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

how to disable gatekeeper

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 Ouvrir le fichier, vous pouvez ouvrir le fichier "endommagé" sans aucun problème. Cela signifie que le fichier est en fait Finder qui intervient pour empêcher l'ouverture du fichier.

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

J'ai essayé de compiler le fichier de osxfuse exemple de système de fichiers en boucle et en y mettant le même fichier "endommagé", il s'ouvre très bien. Je pense donc que ce bug est spécifique à encfs - et non à osxfuse en général.

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

J'espère que cela vous aidera...

2voto

Gerry Points 3954

Je ne sais pas. pourquoi apple ne semble pas avoir de moyen simple de dire "ce volume est sûr", mais le problème est assez facile à résoudre pour les 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 les volumes. Il pourrait être étendu en lisant encfs dir y point de montage à partir de la ligne de commande, mais je préfère ne pas le faire car les fautes de frappe peuvent créer des risques de sécurité. Il devrait être relativement facile à adapter à d'autres mécanismes de montage, comme boxcryptor. Cela fonctionne pour moi, mais vous comptez sur votre propre expertise pour décider de l'utiliser 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 si cela ouvre des failles de sécurité (en particulier lorsqu'il est en cours d'exécution, et surtout sur des 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

2voto

Logicalmind Points 1260

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

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

J'ai donc marqué mon sshfs binaire comme setuid et j'ai ajouté le -o allow_other option de montage à mon sshfs ligne de commande, et ... [...] être en mesure d'ouvrir et de modifier des documents de manière fiable sur le volume monté. Je vais continuer à expérimenter et à suivre si cela ne fonctionne plus.

Je suis bien sûr préoccupé par la présence d'un binaire Root setuid, mais mais cela semble mieux que l'option consistant à lancer un démon qui nécessite des des privilèges Root sur le fichier serveur des choses à géométrie variable :)

Étant donné que allow_other est une option de montage de FUSE et n'est pas spécifique à sshfs Je pense que cette solution de contournement pourrait fonctionner pour encfs également. Ce serait génial de savoir si quelqu'un l'a essayé et que ça a marché !

1voto

abe Points 11

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

  1. Tout d'abord, j'ai dû ajouter un groupe auquel j'appartiens au groupe administrateur de osxfuse, sinon l'opération allow_other échouerait avec le message operation not supported.

    sysctl -w osxfuse.tunables.admin_group=12
  2. Puis j'ai utilisé l'option -o allow_other pour les encfs

Je ne l'ai essayé que brièvement, mais le cas d'échec reproductible que j'avais semble maintenant fonctionner.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X