Введение / Зачем это нужно
macOS автоматически добавляет специальный атрибут com.apple.quarantine (флаг карантина) к файлам, скачанным из интернета через браузеры, почтовые клиенты или мессенджеры. Этот механизм, реализованный в Gatekeeper, предотвращает запуск потенциально опасного ПО.
Однако иногда вы можете столкнуться с ситуацией, когда:
- Собственный скрипт или программа блокируется, хотя вы уверены в её безопасности.
- Файл был скачан с доверенного источника, но macOS всё равно показывает ошибку «Разработчик не может быть проверен» или «Файл поврежден».
- Необходимо быстро развернуть собственное приложение на нескольких Mac без подписки.
Удаление флага карантина снимает эту защиту для конкретного файла или папки, позволяя запускать содержимое без предупреждений. Важно: делайте это только для файлов, происхождение которых вы полностью проверяете и доверяете.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к Terminal (Терминал) — он находится в
Программы → Утилитыили через Spotlight (Cmd+Пробел, введите «Терминал»). - Вы знаете полный путь к файлу или папке, с которой хотите снять атрибут. Для этого можно перетащить файл в окно Terminal — путь вставится автоматически.
- У вас есть права на запись в целевую папку. Если файл находится в системной директории (например,
/Applications), может потребоватьсяsudo(пароль администратора). - Вы понимаете риски безопасности: удаление флага карантина отключает одну из защитных механизмов macOS. Никогда не снимайте атрибут с файлов из непроверенных источников.
Пошаговая инструкция
Способ 1: Удаление флага для одного файла
Это самый частый сценарий, когда нужно снять карантин с конкретного исполняемого файла, скрипта или дистрибутива.
- Откройте Terminal.
- Введите команду, заменив
<полный_путь_к_файлу>на реальный путь:
Например:xattr -d com.apple.quarantine /полный/путь/к/файлу
Что делает команда:xattr -d com.apple.quarantine ~/Downloads/my-script.shxattr— утилита для работы с расширенными атрибутами файлов.-d— флаг удаления (delete).com.apple.quarantine— название атрибута, который отвечает за карантин.
- Нажмите Enter. Если файл доступен для записи, вы не увидите никакого вывода — это нормально. Ошибка
Operation not permittedозначает, что файл защищен SIP или требует прав администратора. В этом случае попробуйте добавитьsudoперед командой (введите пароль администратора).
Способ 2: Удаление флага для всех файлов в папке
Если вы скачали архив с несколькими файлами или папкой приложений, удобно удалить атрибут рекурсивно.
- В Terminal выполните:
xattr -dr com.apple.quarantine /путь/к/папке
Пример:xattr -dr com.apple.quarantine ~/Downloads/MyApp.app
Ключевые флаги:-r— рекурсивно обработать все вложенные файлы и папки.-d— удалить указанный атрибут.
- Для текущей директории (если вы уже находитесь в нужной папке) используйте точку:
xattr -dr com.apple.quarantine .
Способ 3: Массовое удаление по расширению или шаблону
Иногда нужно снять карантин только с определенных типов файлов (например, все .sh скрипты). Это можно сделать через find.
- Выполните команду:
find /путь/к/папке -name "*.sh" -exec xattr -d com.apple.quarantine {} \;
Как это работает:findищет файлы по шаблону (-name "*.sh").-execвыполняет для каждого найденного файла командуxattr -d com.apple.quarantine.{}заменяется на имя файла.\;завершает команду-exec.
- Удалите атрибут со всех файлов, содержащих «app» в имени:
find ~/Downloads -name "*app*" -exec xattr -d com.apple.quarantine {} \;
Проверка результата
После удаления атрибута убедитесь, что флаг карантина действительно снят:
- Для одного файла:
xattr -l /путь/к/файлу
В выводе не должно быть строкиcom.apple.quarantine. Если атрибут удален, вы увидите только другие атрибуты (если они есть) или пустой вывод. - Для папки (рекурсивная проверка):
find /путь/к/папке -exec xattr -l {} \; | grep com.apple.quarantine
Если команда ничего не выведет — значит, атрибут удален со всех файлов. - Попробуйте запустить файл. Предупреждение Gatekeeper должно исчезнуть. Если оно осталось, возможно, проблема в другом (например, отсутствие подписи или notarization).
Возможные проблемы
Ошибка «Operation not permitted» при выполнении xattr
- Причина: Файл находится в защищенной системной папке (например,
/System,/usr), и включена SIP (System Integrity Protection). Или у пользователя нет прав на запись. - Решение:
- Не отключайте SIP ради одного файла — это серьезно снижает безопасность системы.
- Если файл находится в
/Applicationsили вашей домашней папке, попробуйте выполнить команду сsudo(введите пароль администратора). - Переместите файл в другую папку (например,
~/Applicationsили~/Downloads), удалите атрибут, а затем переместите обратно.
Флаг карантина появляется снова после повторного скачивания
- Причина: macOS добавляет атрибут автоматически при каждом скачивании через Safari, Chrome и т.д.
- Решение: Удаляйте флаг после каждого скачивания или настройте браузер на отключение проверки (не рекомендуется). Для частых сценариев создайте скрипт-обертку.
Предупреждение Gatekeeper остается даже после удаления флага
- Причина: Файл не подписан или не прошел notarization (официальную проверку Apple). Удаление
com.apple.quarantineснимает только один тип проверки. - Решение:
- Добавьте файл в исключения: «Системные настройки» → «Конфиденциальность и безопасность» → «Безопасность» → нажмите «Все равно открыть» рядом с файлом.
- Или временно отключите Gatekeeper (только для тестовых сред):
sudo spctl --master-disable. Внимание: это отключает все проверки подписи для всех приложений. Включайте обратно:sudo spctl --master-enable.
Команда find не находит файлы или удаляет лишнее
- Причина: Неправильный путь или шаблон.
- Решение:
- Проверьте путь:
ls /путь/к/папке— убедитесь, что папка существует. - Уточните шаблон:
find /путь/к/папке -name "*.app"(только приложения). - Сначала выполните
findбез-exec, чтобы увидеть список файлов:find /путь/к/папке -name "*.app".
- Проверьте путь:
Атрибут удаляется, но файл не запускается с сообщением «Файл поврежден»
- Причина: Файл действительно поврежден или имеет неправильный формат (например, скачан не полностью).
- Решение:
- Проверьте контрольную сумму (если она предоставляется источником).
- Перекачайте файл заново.
- Убедитесь, что файл предназначен для вашей версии macOS (Intel vs Apple Silicon).
Помните: Удаление флага карантина — это обход защиты. Используйте этот метод осознанно, только для файлов, которые вы создали сами или получили от абсолютно доверенного источника. Для постоянной работы с неподписанным ПО рассмотрите возможность настройки отдельной среды разработки или использования виртуальной машины.