¿Qué debo hacer con com.apple.quarantine?


90

He descargado algunos .jararchivos de Internet y quiero usarlos en Mac OS X. Pero el sistema operativo parece haberlos etiquetado con el atributo extendido com.apple.quarantine (no hay indicación de esto hasta que noté el " @" en el ls -ly descubrí cómo usarlo ls -l@), aparentemente porque se han descargado de Internet. ¿Cuál es la forma correcta de lidiar con esto?

Respuestas:


63

Este atributo se agrega para que pueda solicitar la confirmación del usuario la primera vez que se ejecuta el programa descargado, para ayudar a detener el malware. Tras la confirmación, el atributo debe eliminarse automáticamente, y luego el programa se ejecutará normalmente.


ahhhhhh .... ok eso tiene sentido. Por lo tanto, es un contrato entre implementaciones de navegador que guardan archivos y el sistema operativo y / o Java cuando ejecuta ejecutables.
Jason S el

excepto que no se elimina en abierto y parece persistir indefinidamente, incluso cuando se arrastra a / Aplicaciones
Erik Aigner

83

No tienes que lidiar con eso. Ábrelo y OS X te pedirá tu permiso. O como sugirió Richard, elimínelo usando algo como:

xattr -d com.apple.quarantine my_jar.jar

Para hacer esto automáticamente para cualquier archivo descargado, puede adjuntar una acción de carpeta a la carpeta de descarga, como se describe en macosxhints.com en 10.5: Elimine el indicador de advertencia de "archivo descargado" .

Y lo siguiente fue publicada el macosxhints.com hace mucho tiempo, para Safari: 10,5: Desactivar la 'descargado de Internet' advertencia de archivo , alegando que uno puede extraer VerifiedDownloadPlugin.pluginde /Library/Internet Plug-Ins. No probé eso.

Como un aparte: a veces uno necesita iniciar un solo programa varias veces en una Mac. Eso se puede hacer usando cd /Applications/some-application/seguido de open -n "Application Name.app". Esto realmente necesita el .appsufijo; la ejecución open -n "Application Name"puede obtener un GateKeeper que detiene el acceso:

El "Nombre de la aplicación" no se puede abrir porque es de un desarrollador no identificado.

Sus preferencias de seguridad le permiten instalar solo aplicaciones de Mac App Store y desarrolladores identificados.

Arriba, incluso eliminar el atributo extendido com.apple.quarantineno soluciona eso, pero usar el .appsufijo funciona bien.

(No estoy aconsejando a nadie que se deshaga de las medidas de seguridad).


1
Tengo varios archivos como este y he tenido que eliminar manualmente el xattr ya que OS X no solicitó permiso ...
Brian Knoblauch

1
@Brian, y hice clic con el botón derecho, ¿Abrir tampoco se abre? (Eso a veces ayuda si OS X solicita uno, pero no muestra la opción de continuar.)
Arjan

1
Gracias por el encantamiento xattr, menos molesto que descubrir cómo desencadenar un diálogo inapropiado (IMO) en un marco.
Sue Spence el

22
 xattr -d com.apple.quarantine /path/to/file

3
No lo use sudocuando no tenga que hacerlo.
s4y

1
Editó la respuesta para eliminar 'sudo'.
Richard Hoskins el

1
¿Cómo se hace esto recursivamente a todos los archivos en un directorio?
Landon Kuhn

1
@ landon9720 - La respuesta (actualmente) a continuación tiene un comentario que le permite indicar a xattr que trabaje recursivamente sobre el contenido de un directorio suministrado
usuario66001

2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
sepehr

6

Puede deshabilitar las advertencias permanentemente con defaults write com.apple.LaunchServices LSQuarantine -bool false. También deshabilita los cuadros de diálogo de Gatekeeper, incluso si no ha permitido que se descarguen aplicaciones desde cualquier lugar en Preferencias del sistema.


4

Encontré el siguiente comando

find Application.app | while read l; do echo $l; xattr -d com.apple.quarantine "$l"; done

Muy útil cuando se trata de deshacerse del atributo. Tenga en cuenta las comillas dobles $l: las necesita si su carpeta de aplicaciones contiene archivos con un espacio en blanco en su nombre.


99
También podrías usar xattr -rd com.apple.quarantine Application.app.
Lri

44
No necesitas el tiempo ... bucle. find puede hacerlo todo: "find Application.app -print -exec xattr -d com.apple.quarantine {} \;"
rivimey

"opción -r no reconocida"
Jamie Ivanov

No hay necesidad de generar un nuevo proceso para cada archivo, ni usted tiene que quitar la xattribute del archivo si no lo tiene, en primer lugar:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
Dland

Todos estos ejemplos de línea de comandos solo funcionan cuando se encuentra en el directorio que contiene la aplicación. @dland findtambién tiene una -execprimaria. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; Puede reemplazar /Applicationscon la ruta completa que desee, por ejemplo, /Users/jdoe/Downloads si está en el directorio donde está el archivo, simplemente haga xattr -d com.apple.quarantine <target>donde <target>está el nombre de un archivo o aplicación.
user2531336

0

xattr ahora tiene una bandera -r para repetir. Así que no tienes que pasar por eso para encontrar cosas. También tiene un -c que borrará TODAS las banderas (incluido FinderInfo), no siempre recomendado a menos que estés realmente enojado con eso. :-)


eh ... ¿qué pregunta estás respondiendo?
Jason S

Parece que está comentando otra respuesta en esta pregunta ( superuser.com/a/126227/1162 ) en lugar de proporcionar una respuesta por su cuenta.
Jason S
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.