Que dois-je faire à propos de com.apple.quarantine?

90

J'ai téléchargé des .jarfichiers sur Internet et que vous souhaitez les utiliser sous Mac OS X. Mais le système d' exploitation semble avoir les taggés avec l'com.apple.quarantine d'attribut étendu (pas d'indication de ce que j'ai remarqué le « @» dans le ls -let compris comment utiliser ls -l@) - apparemment parce qu’ils ont été téléchargés à partir d’Internet. Quelle est la bonne façon de gérer cela?

Jason S
la source

Réponses:

63

Cet attribut est ajouté pour qu'il puisse demander à l'utilisateur de confirmer la première exécution du programme téléchargé, afin d'aider à stopper les programmes malveillants. Après confirmation, l'attribut doit être supprimé automatiquement, puis le programme s'exécutera normalement.

mark4o
la source
ahhhhhh .... ok c'est logique. Il s’agit donc d’un contrat entre les implémentations de navigateurs qui sauvegardent des fichiers et le système d’exploitation et / ou Java lorsqu’il exécute des exécutables.
Jason S
sauf qu'il n'est pas supprimé à l'ouverture et semble persister indéfiniment, même après avoir été déplacé vers / Applications
Erik Aigner
83

Vous n'avez pas à vous en occuper. Ouvrez-le et OS X vous demandera votre permission. Ou comme suggéré par Richard, supprimez-le en utilisant quelque chose comme:

xattr -d com.apple.quarantine my_jar.jar

Pour le faire automatiquement pour tout fichier téléchargé, vous pouvez associer une action de dossier au dossier de téléchargement, comme décrit sur macosxhints.com à la section 10.5: Supprimez l'indicateur d'avertissement 'fichier téléchargé' .

Et ce qui suit a été publié le macosxhints.com il y a longtemps, pour Safari: 10.5: Désactiver l'avertissement de fichier « téléchargé à partir d' Internet » , affirmant qu'on peut retirer VerifiedDownloadPlugin.pluginde /Library/Internet Plug-Ins. Je n'ai pas testé ça.

En passant: il est parfois nécessaire de démarrer plusieurs fois un même programme sur un Mac. Cela peut être fait en utilisant cd /Applications/some-application/suivi de open -n "Application Name.app". Cela nécessite vraiment le .appsuffixe; en cours d'exécution open -n "Application Name"peut obtenir un GateKeeper bloquant l'accès:

"Nom de l'application" ne peut pas être ouvert car il provient d'un développeur non identifié.

Vos préférences de sécurité ne permettent l'installation que des applications à partir du Mac App Store et des développeurs identifiés.

Ci-dessus, même la suppression de l'attribut étendu com.apple.quarantinene résout pas le problème, mais l'utilisation du .appsuffixe fonctionne parfaitement.

(Je ne conseille à personne de se débarrasser des mesures de sécurité.)

Arjan
la source
1
J'ai un certain nombre de fichiers comme celui-ci et j'ai dû supprimer manuellement le xattr car OS X ne demandait pas la permission ...
Brian Knoblauch
1
@Brian, et avez-vous cliqué avec le bouton droit de la souris, Ouvrir ne demande pas non plus? (Cela aide parfois si OS X en invite une, mais n'indique pas l'option de continuer.)
Arjan
1
Merci pour l'incantation de xattr, moins dérangé que de savoir comment déclencher un dialogue inapproprié (IMO) sur un cadre.
Sue Spence
22
 xattr -d com.apple.quarantine /path/to/file
Richard Hoskins
la source
3
Ne pas utiliser sudoquand vous ne devez pas.
S4y
1
Edité la réponse pour supprimer 'sudo'.
Richard Hoskins
1
Comment faites-vous cela récursivement pour tous les fichiers d'un répertoire?
Landon Kuhn
1
@ landon9720 - La réponse (actuellement) ci-dessous a un commentaire qui vous permet de demander à xattr de travailler de manière récursive sur le contenu d'un répertoire fourni
user66001 le
2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
dimanche
6

Vous pouvez désactiver les avertissements de façon permanente avec defaults write com.apple.LaunchServices LSQuarantine -bool false. Il désactive également les boîtes de dialogue de Gatekeeper même si vous n'avez pas autorisé les applications téléchargées à partir de n'importe où dans les Préférences Système.

Lri
la source
4

J'ai trouvé la commande suivante

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

très utile lorsque vous essayez de vous débarrasser de l'attribut. Notez les guillemets autour $l: vous en aurez besoin si votre dossier d'applications contient des fichiers vierges.

slhck
la source
9
Vous pouvez également utiliser xattr -rd com.apple.quarantine Application.app.
Lri
4
Vous n'avez pas besoin de la boucle ... momentanée. find peut tout faire: "trouver Application.app -print -exec xattr -d com.apple.quarantine {} \;"
rivimey
"option -r non reconnu"
Jamie Ivanov
Il n'est pas nécessaire de générer un nouveau processus pour chaque fichier, ni de supprimer le xattribute du fichier s'il ne l'a pas déjà:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland
Tous ces exemples de ligne de commande ne fonctionnent que lorsque vous vous trouvez dans le répertoire contenant l'application. @dland a findaussi un -execprimaire. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; Vous pouvez remplacer /Applicationspar le chemin complet de votre choix, par exemple /Users/jdoe/Downloads Si vous êtes dans le répertoire où se trouve le fichier, indiquez simplement xattr -d com.apple.quarantine <target>où se <target>trouve un nom de fichier ou d'application.
user2531336
0

xattr a maintenant un drapeau -r à recurse. Donc, vous n'avez pas à passer par cette recherche. De plus, il a un -c qui effacera TOUS les drapeaux (y compris FinderInfo), ce qui n’est pas toujours recommandé sauf si vous en voulez vraiment. :-)

OsamaBinLogin
la source
euh ... à quelle question répondez-vous?
Jason S
Il semble que vous commentiez une autre réponse à cette question ( superuser.com/a/126227/1162 ) plutôt que de fournir une réponse par vous-même.
Jason S