Co powinienem zrobić z com.apple.quarantine?

90

Pobrałem kilka .jarplików z Internetu i chcą z nich korzystać pod Mac OS X. Ale OS wydaje się określili je z rozszerzonym com.apple.quarantine atrybutu (nie wskazuje na to, aż zauważyłem, że „ @” w ls -li wymyśliłem, jak korzystać ls -l@) - najwyraźniej dlatego, że zostały pobrane z Internetu. Jak sobie z tym poradzić?

Jason S.
źródło

Odpowiedzi:

63

Ten atrybut jest dodawany, aby mógł poprosić o potwierdzenie użytkownika przy pierwszym uruchomieniu pobranego programu, aby pomóc zatrzymać złośliwe oprogramowanie. Po potwierdzeniu atrybut powinien zostać automatycznie usunięty, a następnie program będzie działał normalnie.

mark4o
źródło
ahhhhhh .... ok, to ma sens. Jest to więc umowa między implementacjami przeglądarki, które zapisują pliki, a systemem operacyjnym i / lub Javą po uruchomieniu plików wykonywalnych.
Jason S
z wyjątkiem tego, że nie jest usuwany po otwarciu i wydaje się utrzymywać w nieskończoność, nawet po przeciągnięciu do / Aplikacje
Erik Aigner
83

Nie musisz sobie z tym poradzić. Otwórz go, a OS X poprosi o Twoją zgodę. Lub, jak sugeruje Richard, usuń go za pomocą czegoś takiego:

xattr -d com.apple.quarantine my_jar.jar

Aby to zrobić automatycznie dla każdego pobranego pliku, możesz dołączyć akcję folderu do folderu pobierania, jak opisano na macosxhints.com w 10.5: Usuń flagę ostrzegającą „pobrany plik” .

I dodaje został opublikowany macosxhints.com dawno temu, dla Safari: 10,5: Wyłącz „pobrane z internetu” ostrzeżenie plików , twierdząc, można usunąć VerifiedDownloadPlugin.pluginz /Library/Internet Plug-Ins. Nie testowałem tego.

Na marginesie: czasami trzeba uruchomić jeden program wiele razy na komputerze Mac. Można to zrobić za pomocą, cd /Applications/some-application/a następnie open -n "Application Name.app". To naprawdę potrzebuje .appprzyrostka; podczas działania open -n "Application Name"jeden GateKeeper może zatrzymać dostęp:

„Nazwa aplikacji” nie może zostać otwarta, ponieważ pochodzi od niezidentyfikowanego programisty.

Twoje preferencje bezpieczeństwa pozwalają na instalowanie tylko aplikacji z Mac App Store i zidentyfikowanych programistów.

Powyżej, nawet usunięcie rozszerzonego atrybutu com.apple.quarantinenie naprawia tego, ale użycie .appsufiksu działa dobrze.

(Nie radzę nikomu, aby faktycznie pozbył się środków bezpieczeństwa.)

Arjan
źródło
1
Mam wiele takich plików i musiałem ręcznie usunąć xattr, ponieważ OS X nie poprosił o pozwolenie ...
Brian Knoblauch
1
@Brian i czy kliknięcie prawym przyciskiem myszy, Otwórz też nie monitowało? (To czasem pomaga, jeśli OS X wyświetli monit, ale nie pokazuje opcji kontynuowania.)
Arjan
1
Dzięki za inkantację xattr, mniej kłopotów niż wymyślenie, jak uruchomić niewłaściwy (IMO) dialog w ramach.
Sue Spence
22
 xattr -d com.apple.quarantine /path/to/file
Richard Hoskins
źródło
3
Nie używaj, sudogdy nie musisz.
s4y
1
Edytowałem odpowiedź, aby usunąć „sudo”.
Richard Hoskins,
1
Jak to zrobić rekurencyjnie do wszystkich plików w katalogu?
Landon Kuhn
1
@ landon9720 - (obecnie) poniższa odpowiedź zawiera komentarz, który pozwala instruować xattr, aby rekurencyjnie pracował nad zawartością dostarczonego katalogu
66001
2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
sepehr
6

Możesz trwale wyłączyć ostrzeżenia za pomocą defaults write com.apple.LaunchServices LSQuarantine -bool false. Wyłącza także okna dialogowe Gatekeeper, nawet jeśli nie zezwalasz na pobieranie aplikacji z dowolnego miejsca w Preferencjach systemowych.

Lri
źródło
4

Znalazłem następujące polecenie

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

bardzo pomocne, gdy próbujesz pozbyć się atrybutu. Zwróć uwagę na podwójne cudzysłowy $l- potrzebujesz ich, jeśli folder aplikacji zawiera pliki z pustymi nazwami.

slhck
źródło
9
Możesz także użyć xattr -rd com.apple.quarantine Application.app.
Lri
4
Nie potrzebujesz pętli while ... find może zrobić wszystko: "find Application.app -print -exec xattr -d com.apple.quarantine {} \;"
rivimey
„opcja -r nie rozpoznano”
Jamie Iwanow
Nie ma potrzeby odradzania nowego procesu dla każdego pliku, ani nie musisz usuwać xattribute z pliku, jeśli go nie ma:find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland
Wszystkie przykłady wiersza poleceń działają tylko wtedy, gdy znajdujesz się w katalogu zawierającym aplikację. @dland findma również -execpodstawowy. find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; Możesz zastąpić /Applicationsją pełną ścieżką, np. /Users/jdoe/Downloads Jeśli znajdujesz się w katalogu, w którym znajduje się plik, po prostu wykonaj, xattr -d com.apple.quarantine <target>gdzie <target>jest nazwa pliku lub aplikacji.
user2531336
0

xattr ma teraz opcję -r do ponownego użycia. Więc nie musisz przechodzić przez te znalezione rzeczy. Ma także opcję -c, która usunie WSZYSTKIE flagi (w tym FinderInfo), nie zawsze zalecane, chyba że naprawdę jesteś na nią zły. :-)

OsamaBinLogin
źródło
uh ... na jakie pytanie odpowiadasz?
Jason S
Wygląda na to, że komentujesz inną odpowiedź w tym pytaniu ( superuser.com/a/126227/1162 ), a nie udzielasz odpowiedzi samodzielnie.
Jason S