Cosa devo fare su com.apple.quarantine?


90

Ho scaricato alcuni .jarfile da Internet e voglio usarli su Mac OS X. Ma il sistema operativo sembra averli taggati con l'attributo esteso com.apple.quarantine (nessuna indicazione di ciò fino a quando non ho notato " @" in ls -le capito come usare ls -l@) - apparentemente perché sono stati scaricati da Internet. Qual è il modo giusto di affrontarlo?

Risposte:


63

Questo attributo viene aggiunto in modo che possa chiedere la conferma dell'utente la prima volta che viene eseguito il programma scaricato, per aiutare a bloccare il malware. Alla conferma l'attributo dovrebbe essere rimosso automaticamente, quindi il programma funzionerà normalmente.


ahhhhhh .... ok ha senso. Quindi è un contratto tra le implementazioni del browser che salva i file e il sistema operativo e / o Java quando esegue eseguibili.
Jason S,

tranne che non viene rimosso all'apertura e sembra persistere indefinitamente, anche se trascinato in / Applicazioni
Erik Aigner

83

Non hai a che fare con esso. Aprilo e OS X ti chiederà il permesso. O come ha suggerito richard, eliminalo usando qualcosa come:

xattr -d com.apple.quarantine my_jar.jar

Per fare questo automaticamente per qualsiasi file scaricato, è possibile allegare un'azione di cartella alla cartella di download, come descritto su macosxhints.com in 10.5: rimuovere il flag di avviso "file scaricato" .

E quanto segue è stato pubblicato su macosxhints.com molto tempo fa, per Safari: 10.5: disabilita l'avviso del file "scaricato da Internet" , sostenendo che uno può rimuovere VerifiedDownloadPlugin.pluginda /Library/Internet Plug-Ins. Non l'ho provato.

A parte questo: a volte è necessario avviare un singolo programma più volte su un Mac. Questo può essere fatto usando cd /Applications/some-application/seguito da open -n "Application Name.app". Questo ha davvero bisogno del .appsuffisso; in esecuzione open -n "Application Name"potrebbe ottenere un GateKeeper che interrompe l'accesso:

"Nome applicazione" non può essere aperto perché proviene da uno sviluppatore non identificato.

Le tue preferenze di sicurezza consentono l'installazione solo di app dal Mac App Store e sviluppatori identificati.

Sopra, anche la rimozione dell'attributo esteso com.apple.quarantinenon lo risolve, ma l'uso del .appsuffisso funziona bene.

(Non consiglio a nessuno di sbarazzarsi delle misure di sicurezza.)


1
Ho un numero di file come questo e ho dovuto rimuovere manualmente xattr poiché OS X non ha chiesto il permesso ...
Brian Knoblauch,

1
@Brian, e con il tasto destro del mouse, Apri non richiede neanche? (Questo a volte aiuta se OS X ne richiede uno, ma non mostra l'opzione per continuare.)
Arjan,

1
Grazie per l'incantesimo xattr, meno fastidio di capire come innescare un dialogo inappropriato (IMO) su un framework.
Sue Spence,

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

3
Non usare sudoquando non è necessario.
s4y,

1
Modificata la risposta per rimuovere "sudo".
Richard Hoskins,

1
Come si fa in modo ricorsivo a tutti i file in una directory?
Landon Kuhn,

1
@ landon9720 - La risposta (attualmente) di seguito ha un commento che ti consente di istruire xattr a lavorare in modo ricorsivo sui contenuti di una directory fornita
user66001

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

6

È possibile disabilitare gli avvisi in modo permanente con defaults write com.apple.LaunchServices LSQuarantine -bool false. Disabilita anche le finestre di dialogo Gatekeeper anche se non hai autorizzato il download di applicazioni da nessuna parte nelle Preferenze di Sistema.


4

Ho trovato il seguente comando

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

molto utile quando si cerca di sbarazzarsi dell'attributo. Nota le doppie virgolette in giro $l: sono necessarie se la cartella delle app contiene file con uno spazio vuoto nel loro nome.


9
Puoi anche usare xattr -rd com.apple.quarantine Application.app.
Lri,

4
Non hai bisogno del ciclo while ... find può fare tutto: "trova Application.app -print -exec xattr -d com.apple.quarantine {} \;"
rivimey

"opzione -r non riconosciuta"
Jamie Ivanov il

Non è necessario generare un nuovo processo per ogni file, né è necessario rimuovere xattribute dal file se non lo ha in primo luogo:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland

Tutti questi esempi da riga di comando funzionano solo quando ci si trova nella directory che contiene l'app. @dland findha anche un -execprimario. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; È possibile sostituire /Applicationscon il percorso completo desiderato, ad es. /Users/jdoe/Downloads Se ci si trova nella directory in cui si trova il file, fare semplicemente xattr -d com.apple.quarantine <target>dove si <target>trova un nome di file o app.
user2531336

0

xattr ora ha un flag -r da ricorrere. Quindi non devi passare attraverso quella ricerca di cose. Inoltre ha un -c che cancellerà TUTTI i flag (incluso FinderInfo), non sempre raccomandato a meno che tu non sia davvero arrabbiato con esso. :-)


uh ... a quale domanda stai rispondendo?
Jason S,

Sembra che tu stia commentando un'altra risposta in questa domanda ( superuser.com/a/126227/1162 ) anziché fornire una risposta da solo.
Jason S,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.