Was soll ich mit com.apple.quarantine tun?

90

Ich habe einige .jarDateien aus dem Internet heruntergeladen und möchte sie unter Mac OS X verwenden. Das Betriebssystem scheint sie jedoch mit dem erweiterten Attribut com.apple.quarantine gekennzeichnet zu haben (dies wird erst angezeigt, wenn ich das " @" im ls -lund bemerkt habe herausgefunden, wie zu verwenden ls -l@) - anscheinend, weil sie aus dem Internet heruntergeladen wurden. Was ist der richtige Weg, um damit umzugehen?

Jason S
quelle

Antworten:

63

Dieses Attribut wird hinzugefügt, damit der Benutzer beim ersten Start des heruntergeladenen Programms nach einer Bestätigung gefragt werden kann, um Malware zu stoppen. Nach der Bestätigung sollte das Attribut automatisch entfernt werden, und das Programm wird dann normal ausgeführt.

mark4o
quelle
ahhhhhh .... ok das macht sinn. Es ist also ein Vertrag zwischen Browser-Implementierungen, die Dateien speichern, und dem Betriebssystem und / oder Java, wenn es ausführbare Dateien ausführt.
Jason S
außer es wird beim Öffnen nicht entfernt und scheint auf unbestimmte Zeit zu bestehen, auch wenn es nach / Applications gezogen wird
Erik Aigner
83

Du musst dich nicht damit auseinandersetzen. Öffnen Sie es und OS X bittet Sie um Erlaubnis. Oder wie es Richard vorgeschlagen hat, löschen Sie es mit etwas wie:

xattr -d com.apple.quarantine my_jar.jar

Um dies für jede heruntergeladene Datei automatisch zu tun, können Sie eine Ordneraktion an den Downloadordner anhängen, wie unter macosxhints.com in 10.5 beschrieben: Entfernen Sie das Warnflag "Heruntergeladene Datei" .

Und die folgende wurde vor langer Zeit auf macosxhints.com geschrieben, für Safari: 10.5: Deaktivieren Sie die ‚heruntergeladen aus dem Internet‘ Datei Warnung und behauptet , ein entfernen VerifiedDownloadPlugin.pluginaus /Library/Internet Plug-Ins. Das habe ich nicht getestet.

Nebenbei bemerkt: Manchmal muss man ein einzelnes Programm auf einem Mac mehrmals starten. Dies kann mit cd /Applications/some-application/gefolgt von erfolgen open -n "Application Name.app". Dies braucht wirklich das .appSuffix; Laufen kann open -n "Application Name"dazu führen, dass ein GateKeeper den Zugriff stoppt:

"Anwendungsname" kann nicht geöffnet werden, da er von einem unbekannten Entwickler stammt.

Ihre Sicherheitseinstellungen ermöglichen die Installation nur von Apps aus dem Mac App Store und von identifizierten Entwicklern.

Das Entfernen des erweiterten Attributs com.apple.quarantinebehebt das oben nicht, aber die Verwendung des .appSuffix funktioniert einwandfrei.

(Ich rate niemandem, die Sicherheitsmaßnahmen tatsächlich abzuschaffen.)

Arjan
quelle
1
Ich habe eine Reihe von Dateien wie diese und musste das xattr manuell entfernen, da OS X nicht um Erlaubnis
Brian Knoblauch
1
@ Brian, und hat mit der rechten Maustaste, Öffnen nicht aufgefordert, entweder? (Das hilft manchmal, wenn OS X eine Aufforderung ausgibt, aber die Option zum
Arjan
1
Vielen Dank für die xattr-Beschwörung. Sie ist weniger problematisch, als herauszufinden, wie ein unangemessener (IMO-) Dialog auf einem Framework ausgelöst werden kann.
Sue Spence
22
 xattr -d com.apple.quarantine /path/to/file
Richard Hoskins
quelle
3
Nicht verwenden, sudowenn Sie nicht müssen.
s4y
1
Die Antwort wurde bearbeitet, um "sudo" zu entfernen.
Richard Hoskins
1
Wie machst du das rekursiv für alle Dateien in einem Verzeichnis?
Landon Kuhn
1
@ landon9720 - Die (derzeit) folgende Antwort enthält einen Kommentar , mit dem Sie xattr anweisen können, rekursiv über den Inhalt eines angegebenen Verzeichnisses zu arbeiten
user66001
2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
16.
6

Mit können Sie die Warnungen dauerhaft deaktivieren defaults write com.apple.LaunchServices LSQuarantine -bool false. Außerdem werden die Gatekeeper-Dialogfelder deaktiviert, selbst wenn Sie nicht zugelassen haben, dass Anwendungen von einer beliebigen Stelle in den Systemeinstellungen heruntergeladen wurden.

Lri
quelle
4

Ich habe den folgenden Befehl gefunden

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

Sehr hilfreich beim Versuch, das Attribut loszuwerden. Beachten Sie die doppelten Anführungszeichen. $lSie werden benötigt, wenn Ihr Apps-Ordner Dateien enthält, deren Name leer ist.

slhck
quelle
9
Sie könnten auch verwenden xattr -rd com.apple.quarantine Application.app.
Lri
4
Die while ... -Schleife brauchen Sie nicht. find kann alles: "find Application.app -print -exec xattr -d com.apple.quarantine {} \;"
Rivimey
"Option -r nicht erkannt"
Jamie Ivanov
Es ist weder erforderlich, für jede Datei einen neuen Prozess zu erzeugen, noch müssen Sie das xattribute aus der Datei entfernen, wenn es es überhaupt nicht enthält:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland
Alle diese Befehlszeilenbeispiele funktionieren nur, wenn Sie sich in dem Verzeichnis befinden, in dem sich die App befindet. @dland findhat auch eine -execprimäre. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; Sie können durch /Applicationsden vollständigen Pfad ersetzen , z. B. /Users/jdoe/Downloads Wenn Sie sich in dem Verzeichnis befinden, in dem sich die Datei befindet, tun Sie einfach, xattr -d com.apple.quarantine <target>wo <target>sich ein Datei- oder App-Name befindet.
user2531336
0

xattr hat jetzt ein -r-Flag, das rekursiv verwendet werden kann. Sie müssen also nicht diese Suche nach Dingen durchgehen. Außerdem gibt es ein -c, das ALLE Flags löscht (einschließlich FinderInfo). Dies wird nicht immer empfohlen, es sei denn, Sie sind wirklich sauer darauf. :-)

OsamaBinLogin
quelle
äh ... welche Frage beantwortest du?
Jason S
Anscheinend kommentieren Sie eine andere Antwort in dieser Frage ( superuser.com/a/126227/1162 ), anstatt selbst eine Antwort zu geben.
Jason S