Что мне делать с com.apple.quarantine?

57490
Jason S

Я скачал некоторые .jarфайлы из Интернета и хочу использовать их под Mac OS X. Но ОС, похоже, пометила их расширенным атрибутом com.apple.quarantine (никаких признаков этого пока я не заметил, " @" в ls -lи разобрался как пользоваться ls -l@) - видимо потому что их скачали из интернета. Какой правильный способ справиться с этим?

84

5 ответов на вопрос

75
Arjan

Вам не нужно иметь дело с этим. Откройте его, и OS X попросит вашего разрешения. Или, как предложил Ричард, удалите его, используя что-то вроде:

xattr -d com.apple.quarantine my_jar.jar 

Чтобы сделать это автоматически для любого загруженного файла, вы можете прикрепить действие папки к папке загрузки, как описано на macosxhints.com в 10.5: Снимите флаг предупреждения «загруженный файл» .

Следующее было опубликовано на macosxhints.com очень давно, для Safari: 10.5: Отключить предупреждение о файле «скачано из Интернета», утверждая, что его можно удалить VerifiedDownloadPlugin.pluginиз /Library/Internet Plug-Ins. Я не проверял это.

В качестве отступления: иногда нужно запускать одну программу несколько раз на Mac. Это может быть сделано с помощью cd /Applications/some-application/следующего open -n "Application Name.app". Это действительно нуждается в .appсуффиксе; запуск open -n "Application Name"может получить один доступ для остановки GateKeeper:

«Имя приложения» не может быть открыто из-за неизвестного разработчика.

Ваши настройки безопасности позволяют устанавливать только приложения из Mac App Store и определенных разработчиков.

Выше, даже удаление расширенного атрибута com.apple.quarantineне исправляет это, но использование .appсуффикса работает просто отлично.

(Я никому не советую фактически избавляться от мер безопасности.)

У меня есть несколько таких файлов, и мне пришлось вручную удалить xattr, так как OS X не запрашивала разрешения ... Brian Knoblauch 6 лет назад 0
@ Брайан, а сделал правый клик, Открыть тоже не подсказка? (Это иногда помогает, если OS X действительно запрашивает один, но не показывает возможность продолжить.) Arjan 6 лет назад 0
Спасибо за заклинание xattr, меньше надоедать, чем выяснять, как вызвать какой-то неуместный (IMO) диалог на платформе. Sue Spence 5 лет назад 0
58
mark4o

Этот атрибут добавлен, чтобы он мог запрашивать подтверждение пользователя при первом запуске загруженной программы, чтобы помочь остановить вредоносное ПО. После подтверждения атрибут должен быть удален автоматически, и тогда программа будет работать нормально.

ааааа .... хорошо, это имеет смысл. Таким образом, это контракт между реализациями браузера, которые сохраняют файлы, и ОС и / или Java, когда он запускает исполняемые файлы. Jason S 14 лет назад 0
19
Richard Hoskins
 xattr -d com.apple.quarantine /path/to/file 
Не используйте `sudo`, когда вам это не нужно. s4y 14 лет назад 1
Отредактировал ответ, чтобы удалить «sudo». Richard Hoskins 14 лет назад 0
Как вы делаете это рекурсивно для всех файлов в каталоге? Landon Kuhn 12 лет назад 0
@ landon9720 - (в настоящее время) [ответ ниже] (http://superuser.com/questions/28384/#126227) имеет [комментарий] (http://superuser.com/questions/28384/what-should-i -do-about-com-apple-quarantine # comment565539_126227), который позволяет настроить xattr для рекурсивной работы над содержимым предоставленного каталога user66001 10 лет назад 0
`find / path / to / dir -exec xattr -d com.apple.quarantine {} \;` sepehr 8 лет назад 1
4
user495470

Вы можете отключить предупреждения навсегда с помощью defaults write com.apple.LaunchServices LSQuarantine -bool false. Он также отключает диалоговые окна гейткипера, даже если вы не разрешали загружать приложения из любой точки системной настройки.

1
slhck

Я нашел следующую команду

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

очень полезно при попытке избавиться от атрибута. Обратите внимание на двойные кавычки $l- они нужны вам, если в папке ваших приложений есть файлы с пустым именем.

Вы также можете использовать `xattr -rd com.apple.quarantine Application.app`. user495470 11 лет назад 9
Вам не нужно время пока ... петля. find может делать все это: "find Application.app -print -exec xattr -d com.apple.quarantine {} \;" rivimey 8 лет назад 4
"опция -r не распознана" Jamie Ivanov 7 лет назад 0
Нет необходимости создавать новый процесс для каждого файла, и при этом вам не нужно удалять xattribute из файла, если он не имеет его в первую очередь: `find. -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine` dland 7 лет назад 0