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

Вопрос или проблема

Я загрузил некоторые файлы .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. Этот механизм служит для защиты пользователей от потенциально вредоносного ПО, автоматически запрашивая подтверждение перед тем, как файл будет запущен впервые. Однако иногда это может привести к неудобствам, особенно если вы доверяете скачанным файлам. Рассмотрим, как правильно и безопасно снять этот атрибут и какие есть альтернативы.

Анализ проблемы:

  1. Что такое com.apple.quarantine?

    • Это защитный механизм Mac OS X, который метит загруженные из Интернета файлы специальным атрибутом, предупреждая пользователя о потенциальных угрозах при их первом открытии.
  2. Как обнаружить атрибут?

    • Используйте команду ls -l@, чтобы проверить наличие специального символа "@", который указывает на существование дополнительных атрибутов, включая com.apple.quarantine.

Решение проблемы:

  1. Стандартное удаление атрибута:

    • Откройте файл вручную. Система запросит ваше подтверждение, и атрибут будет снят автоматически.
  2. Удаление атрибута через терминал:

    • Команда xattr -d com.apple.quarantine /путь/к/файлу удаляет атрибут с конкретного файла.
    • Используйте данную команду осторожно, чтобы не нарушить безопасность вашей системы.
  3. Автоматизация для папки загрузок:

    • Можно настроить автоматическое снятие атрибута с любых загруженных файлов, воспользовавшись скриптами или автоматизацией при помощи Folder Actions. Это особенно эффективно для папки загрузок.
  4. Полное отключение функции Quarantine:

    • Команда defaults write com.apple.LaunchServices LSQuarantine -bool false отключит предупреждения для всех загруженных файлов. Однако учтите, что это может снизить уровень безопасности вашей системы, так как отключит проверки Gatekeeper.
  5. Работа с приложениями (.app):

    • При работе с .app файлами, перемещение в папку Applications может быть обязательным для запуска. Кроме того, использование команды xattr -cr /путь/к/папке поможет убрать атрибут с всех файлов в указанной директории.
Вывод

Механизм com.apple.quarantine был создан для повышения уровня безопасности пользователей на Mac OS X. Хотя его можно вручную отключить или автоматизировать процесс снятия атрибута, важно сохранять бдительность и заранее убедиться, что загружаемые файлы не несут угрозу для вашей системы. Рассмотрите возможность использования автоматизации или частичного отключения функции, если вы часто сталкиваетесь с фальшиво положительными установками на своих устройствах.

Оцените материал
Добавить комментарий

Капча загружается...