Archivos incorrectamente considerados como dañados en el volumen encfs

8

Estoy usando encfs @1.7.5e osxfuse @2.6.4instalado a través de MacPorts 2.2.1 en mi MacBook Pro Retina finales de 2013 que ejecuta OS X Mavericks 10.9.2. Al abrir ciertos archivos (por ejemplo, xlsx, pdf) en mi encfsvolumen, aparece el error "X está dañado y no se puede abrir". así como una sugerencia para moverlo a la basura. Sin embargo, cuando copio ese archivo en otro lugar (es decir, no en el encfsvolumen), parece funcionar bien. ¿Por qué es esto?

EDITAR: Busqué en línea y encontré una publicación que implica deshabilitar GateKeeper. Hizo el truco. En esencia, vaya a "Preferencias de seguridad -> Seguridad y privacidad -> Permitir aplicaciones descargadas desde: En cualquier lugar".

Entiendo que la solución funciona, pero me gustaría saber por qué funciona. Gracias por adelantado.

EDIT 2: Además, si alguien pudiera etiquetar mi publicación encfs, sería muy apreciada.

Nicolas De Jay
fuente

Respuestas:

6

He encontrado la respuesta aquí (para BoxCryptor):

En circunstancias especiales, Mac OS X agrega el atributo extendido 'com.apple.quarantine' a un archivo, por ejemplo, descargado de Internet. Esto también puede suceder con los archivos dentro de la carpeta BoxCryptor. Si un archivo cifrado tiene este conjunto de atributos extendido, recibirá el mensaje de error "está dañado" cuando intente abrir el archivo de texto sin formato en el Volumen de BoxCryptor.

Pruebe también esto, una solución más segura:

x) Abrir terminal (Aplicaciones -> Utilidades)

y) Ejecute el siguiente comando (sustituya la ruta):

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

aplauso
fuente
2

@apmouse es correcto: puede reparar el archivo con xattr. Pero debe hacerlo repetidamente: cada vez que guarde un archivo, se le agregará el indicador de cuarentena.

Como señaló, hay una alternativa menos segura pero más conveniente: deshabilitar GateKeeper.

cómo deshabilitar gatekeeper

Entiendo que la solución funciona, pero me gustaría saber por qué funciona. Gracias por adelantado.

Lo primero que debe tener en cuenta es que si ingresa a Keynote y elige Archivo → Abrir, puede abrir el archivo "dañado" sin ningún problema. Esto implica que en realidad Finder está interviniendo para evitar abrir el archivo.

El mensaje de error "_____ está dañado y no se puede abrir" es en realidad un error de firma (vea aquí , aproximadamente 3/4 del camino hacia abajo), lo que significa que GateKeeper no puede verificar una firma válida. Se supone que la verificación de firma se aplica a los ejecutables, y todavía no he descubierto por qué está fallando en esta situación.

Intenté compilar el sistema de archivos loopback de muestra de osxfuse y poner el mismo archivo "dañado" allí y se abre muy bien. Así que creo que este error es específico de encfs, no de osxfuse en general.

Para lo que vale, hay un ticket abierto en el proyecto osxfuse para este problema exacto. Si tiene este problema, publique sus datos en ese boleto.

Espero que esto ayude...

Mark E. Haase
fuente
Pensé que Gatekeeper solo afecta a las aplicaciones y no a los documentos. Entonces, ¿cómo afecta a los archivos .xlsx?
user151019
Supongo que la bandera se aplica a todos los documentos descargados como en la respuesta de @ apmouse, pero no se "aplica" en aplicaciones que no son, pero con un comportamiento defectuoso en volúmenes cifrados. Necesito probar este comportamiento en sshfsy otros sistemas de archivos FUSE para estar seguro.
Nicolas De Jay
2

No sé por qué Apple no parece tener una manera simple de decir "este volumen es seguro", pero el problema es bastante fácil de resolver para encfs. A continuación encontrará un script que uso para montar volúmenes encfs; resuelve automáticamente el problema del atributo y también ayuda a recordar cerrar volúmenes. Podría ampliarse leyendo el directorio encfs y el punto de montajedesde la línea de comandos, pero prefiero no hacerlo porque los errores tipográficos pueden crear riesgos de seguridad. Debe adaptarse con relativa facilidad a otros mecanismos de montaje, como boxcryptor. A mí me funciona, pero confías en tu propia experiencia para decidir si la usas por ti mismo. Muy específicamente, no soy un experto en seguridad, y no estoy calificado para juzgar si abre algún agujero de seguridad (especialmente mientras se está ejecutando, y especialmente en máquinas compartidas).

#!/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
usuario308273
fuente
2

Creo que tengo una solución más persistente para esto en lugar de un comando que necesita ejecutar cada vez. Como acabo de mencionar en el informe de error aguas arriba :

Pensé para mí mismo, OS X utiliza usuarios del sistema y demonios del sistema para todo tipo de trabajos, tal vez el núcleo espera poder hacer algún trabajo como otro usuario, o como root, en estos archivos, y marcarlos como dañados cuando eso no funciona

Así que marqué mi sshfsbinario como setuid, y agregué la -o allow_otheropción de montaje a mi sshfslínea de comando, y ... parece que puedo abrir y editar documentos de manera confiable en el volumen montado. Seguiré experimentando y haciendo un seguimiento si deja de funcionar.

Por supuesto, estoy preocupado por un binario raíz setuid, pero parece mejor que la opción de ejecutar un demonio que requiere privilegios de root en el lado del servidor de archivos para obtener NFS o SMB. :)

Dado que allow_otheres una opción de montaje FUSE y no específica para sshfs, creo que esta solución también funcionaría encfs. ¡Sería genial saber si alguien lo intentó y funcionó!

Glifo
fuente
1

Gracias @Glyph, por lo que puedo decir, parece estar funcionando después de seguir tus pasos. Seguí estos pasos:

  1. Primero tuve que agregar un grupo al que pertenezco al grupo de administración osxfuse, de lo contrario, allow_other fallaría con la operación no admitida.

    sysctl -w osxfuse.tunables.admin_group=12
    
  2. Luego usé -o allow_other para encfs

Solo lo he intentado un poco, pero el caso de falla reproducible que tenía ahora parece estar funcionando.

abe
fuente