com.apple.quarantine

Jeder Mac OS ≥ 10.5.x Benutzer kennt das lästige Nachfragen des Finders, wenn eine aus dem Internet geladene Datei geöffnet wird:

Verantwortlich hierfür ist das Attribut com.apple.quarantine. Für PowerUser eine lästige Angelegenheit, zumal etliche Pakete existieren, wo nicht nur das Paket als solches, quasi der Container, damit getaggt ist, sondern uU auch noch alle darin befindlichen Dateien. Aber die Attribute lassen sich anzeigen, setzen oder auch entfernen.

Dieser Artikel beschreibt das Entfernen dieser Nachfrage. Für weitere Informationen bzgl. der erweiterten Attribute lesen Sie bitte den Artikel: -> HFS+ und die erweiterten Attribute

Das Vorhandensein von erweiterten Attributen lässt sich beim Aufruf des Befehlszeilenkommandos ls -l in einem Terminal überprüfen. Sind einer bestimmten Datei erweiterte Attribute zugewiesen, so wird dies durch ein @-Zeichen nach den Berechtigungen angezeigt (hier im Beispiel -rw-r–r–@):

$ ls -l Parachute.zip 
-rw-r--r--@ 1 dtp  staff  3603691 25 Nov 15:30 Parachute.zip

Mit den ls-Optionen -l@ werden die zugewiesenen Attribute zusätzlich auch angezeigt:

$ ls -l@ Parachute.zip 
-rw-r--r--@ 1 dtp  staff  3603691 25 Nov 15:30 Parachute.zip
	com.apple.quarantine	     42

Mit dem Befehlszeilenkommando xattr lassen sich nun diese Attribute weiter bearbeiten. Die Option -l zeigt den Inhalt der Attribute an:

$ xattr -l Parachute.zip 
com.apple.quarantine: 0000;4b0d3f7c;Firefox;|org.mozilla.firefox 

Die Option -d löscht das angegebene Attribut der angegebenen Datei:

$ xattr -d com.apple.quarantine Parachute.zip 

Noch die Kontrolle:

 $ ls -l@ Parachute.zip 
-rw-r--r--  1 dtp  staff  3603691 25 Nov 15:30 Parachute.zip

Eine Manpage (Hilfeseite) zu xattr existiert leider nicht aber über die Option --help, lässt sich zumindest eine Kurzreferenz aufrufen:

$ xattr --help 
usage: xattr [-l] [-r] [-v] [-x] file [file ...]
       xattr -p [-l] [-r] [-v] [-x] attr_name file [file ...]
       xattr -w [-r] [-v] [-x] attr_name attr_value file [file ...]
       xattr -d [-r] [-v] attr_name file [file ...]

The first form lists the names of all xattrs on the given file(s).
The second form (-p) prints the value of the xattr attr_name.
The third form (-w) sets the value of the xattr attr_name to the string attr_value.
The fourth form (-d) deletes the xattr attr_name.

options:
  -h: print this help
  -r: act recursively
  -l: print long format (attr_name: attr_value and hex output has offsets and
      ascii representation)
  -v: also print filename (automatic with -r and with multiple files)
  -x: attr_value is represented as a hex string for input and output
dtps-Mac-mini:Desktop dtp$ 

Das Entfernen automatisieren

Der ganze Terminal Zenober ist natürlich für den Alltag wenig praktikabel; das ganze sollte auch nur zur Veranschaulichung dienen und ein tieferes Verständnis dafür entwickeln, wie solche Aktionen vom Betriebssystem geregelt und abgehandelt werden. Der og Prozess lässt sich mit Apple Script und Ordneraktionen natürlich auch automatisieren.

Legen Sie dazu in »/Users/[Benutzer]/Library« das Verzeichnis »Scripts« und darin das Verzeichnis»Folder Action Scripts« an:

$ mkdir -p ~/Library/Scripts/Folder\ Action\ Scripts/ 

Des Weiteren starten wir den AppleScript Editor (Programme → Dienstprogramme) und geben dort folgenden Code ein:

Remove Quarantine Flag

on adding folder items to thisFolder after receiving addedItems
 
  repeat with anItem in addedItems
    set anItem's contents to (quoted form of POSIX path of (anItem as alias))
  end repeat
 
  set AppleScript's text item delimiters to " "
  do shell script "xattr -d com.apple.quarantine " & (addedItems as text)
 
end adding folder items to

Speichern Sie dieses Script unter einem beliebigen Namen (Ich habe Remove Quarantine Flag gewählt) in /Benutzer/[Benutzernamen]/Library/Scripts/Folder Action Scripts ab. Wählen Sie einen beliebigen Ordner aus; ich habe zB auf meinem Schreibtisch einen Ordner Downloads erstellt und diesen im Firefox als Default Download Verzeichnis konfiguriert. Öffnen Sie das Kontextmenü des Ordners (Rechtsklick bzw. CMD/STRG+Klick) und wählen den Menüpunkt Ordneraktionen konfigurieren. Im darauffolgenden Menü wählen Sie ihr zuvor angelegtes Apple Script an, dann noch die Checkbox Ordneraktionen aktivieren aktivieren und den Dialog verlassen. Jetzt läuft das AppleScript jedesmal, wenn eine Datei in dieses Verzeichnis geschoben wird und entfernt das eventuell vorhandene Quarantine Flag.

pronto 2009/11/25 20:11

Die Abfrage per Systemeinstellung verhindern

Man kann die Abfrage auch mit einem Schalter in der com.apple.LaunchServices.plist unterdrücken:

$ defaults write com.apple.LaunchServices LSQuarantine -bool NO

Das generiert den Wert LSQuarantine in der ~/Library/Preferences/com.apple.LaunchServices.plist und setzt in auf disabled.

pronto 2010/05/24 16:42

mac/quarantine.txt (13952 views) · Zuletzt geändert: 2011/08/05 08:49 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0