Вопрос или проблема
Я загрузил некоторые файлы .jar
из интернета и хочу использовать их на Mac OS X. Но ОС, похоже, добавила к ним расширенный атрибут com.apple.quarantine (об этом можно догадаться, заметив “@
” в ls -l
и научившись использовать ls -l@
) — видимо, потому что они были загружены из интернета. Как же правильно с этим справиться?
Этот атрибут добавляется для запроса подтверждения пользователя при первом запуске загруженной программы, чтобы помочь предотвратить проникновение вредоносного ПО. При подтверждении атрибут должен быть автоматически удален, и программа начнет работать нормально.
Вам не нужно с этим справляться. Просто откройте его, и OS X запросит ваше разрешение. Или, как предложил richard, удалите его, используя что-то вроде:
xattr -d com.apple.quarantine my_jar.jar
Чтобы делать это автоматически для любого загруженного файла, вы можете прикрепить действие на папку для загрузок, как описано на macosxhints.com в 10.5: Remove the ‘downloaded file’ warning flag.
Также давно на macosxhints.com было опубликовано следующее для Safari: 10.5: Disable the ‘downloaded from internet’ file warning, заявляющее, что можно удалить VerifiedDownloadPlugin.plugin
из /Library/Internet Plug-Ins
. Я этого не тестировал.
Кстати, иногда на Mac нужно запустить одну программу несколько раз. Это можно сделать, используя cd /Applications/some-application/
, а затем open -n "Application Name.app"
. Здесь действительно необходим суффикс .app
; запуск open -n "Application Name"
может привести к тому, что GateKeeper заблокирует доступ:
“Application Name” не может быть открыт, так как он от неустановленного разработчика.
Ваши настройки безопасности позволяют устанавливать только приложения из Mac App Store и от идентифицированных разработчиков.
В вышеупомянутом случае даже удаление расширенного атрибута com.apple.quarantine
не исправляет это, но использование суффикса .app
работает отлично.
(Я не советую никому на самом деле избавляться от мер безопасности.)
xattr -d com.apple.quarantine /path/to/file
Вы можете отключить предупреждения навсегда с помощью defaults write com.apple.LaunchServices LSQuarantine -bool false
. Это также отключает диалоги Gatekeeper, даже если вы не разрешили установку приложений, загруженных из любого источника, в Системных настройках.
Я нашел следующую команду
find Application.app | while read l; do echo $l; xattr -d com.apple.quarantine "$l"; done
очень полезной при попытке избавиться от атрибута. Обратите внимание на двойные кавычки вокруг $l
– они вам нужны, если ваша папка с приложениями содержит файлы с пробелом в имени.
Команда xattr -cr /path/to/folder
сработала для меня, чтобы устранить проблему com.apple.quarantine на бинарных загрузках Mac.
Вот дополнительный ответ на заданный вопрос. Для .app файлов карантин устанавливается при запуске файла и удаляется, когда пользователь получает разрешение в Системных настройках. Однако вы все равно не можете запустить .app, пока не переместите его в папку Applications. Эта информация полезна, если вы распространяете .apps неформально, но не хотите, чтобы пользователи должны были запускать xattr
, как в принятом ответе.
Вот пассивно-агрессивный комментарий об этом безумии.
Ответ или решение
Решение проблемы com.apple.quarantine на Mac OS X
Файлы, загруженные из Интернета на Mac OS X, получают специальный атрибут com.apple.quarantine
. Этот механизм служит для защиты пользователей от потенциально вредоносного ПО, автоматически запрашивая подтверждение перед тем, как файл будет запущен впервые. Однако иногда это может привести к неудобствам, особенно если вы доверяете скачанным файлам. Рассмотрим, как правильно и безопасно снять этот атрибут и какие есть альтернативы.
Анализ проблемы:
-
Что такое
com.apple.quarantine
?- Это защитный механизм Mac OS X, который метит загруженные из Интернета файлы специальным атрибутом, предупреждая пользователя о потенциальных угрозах при их первом открытии.
-
Как обнаружить атрибут?
- Используйте команду
ls -l@
, чтобы проверить наличие специального символа "@
", который указывает на существование дополнительных атрибутов, включаяcom.apple.quarantine
.
- Используйте команду
Решение проблемы:
-
Стандартное удаление атрибута:
- Откройте файл вручную. Система запросит ваше подтверждение, и атрибут будет снят автоматически.
-
Удаление атрибута через терминал:
- Команда
xattr -d com.apple.quarantine /путь/к/файлу
удаляет атрибут с конкретного файла. - Используйте данную команду осторожно, чтобы не нарушить безопасность вашей системы.
- Команда
-
Автоматизация для папки загрузок:
- Можно настроить автоматическое снятие атрибута с любых загруженных файлов, воспользовавшись скриптами или автоматизацией при помощи Folder Actions. Это особенно эффективно для папки загрузок.
-
Полное отключение функции Quarantine:
- Команда
defaults write com.apple.LaunchServices LSQuarantine -bool false
отключит предупреждения для всех загруженных файлов. Однако учтите, что это может снизить уровень безопасности вашей системы, так как отключит проверки Gatekeeper.
- Команда
-
Работа с приложениями (.app):
- При работе с
.app
файлами, перемещение в папку Applications может быть обязательным для запуска. Кроме того, использование командыxattr -cr /путь/к/папке
поможет убрать атрибут с всех файлов в указанной директории.
- При работе с
Вывод
Механизм com.apple.quarantine
был создан для повышения уровня безопасности пользователей на Mac OS X. Хотя его можно вручную отключить или автоматизировать процесс снятия атрибута, важно сохранять бдительность и заранее убедиться, что загружаемые файлы не несут угрозу для вашей системы. Рассмотрите возможность использования автоматизации или частичного отключения функции, если вы часто сталкиваетесь с фальшиво положительными установками на своих устройствах.