Одна из наиболее часто встречающихся проблем, с которыми сталкиваются начинающие и даже продвинутые пользователи MacOS, – это невозможность запустить загруженную из Интернет программу.
MacOS может блокировать монтирование дисков, запуск программ, открытие файлов и установку расширений по ряду причин, но основная из них связана с системой безопасности операционной системы, а в частности с Gatekeeper. О том, как устроена и работает система безопасности в MacOS я подробно рассказывал в этой статье. Кому интересно – почитайте.
Если же вкратце, то этот инструмент – Gatekeeper – проверяет все файлы, загруженные из “ненадежных источников”: локальная сеть, сеть Интернет, просто данные с “флешки” – все они относится к ним. Его функция направлена на предотвращение потенциальных угроз безопасности, так как непроверенные приложения могут повредить операционную систему или содержать трояны и вредоносные программы, угрожающие утечкой конфиденциальных данных, или предоставляющие злоумышленникам доступ к устройству пользователя.
Все файлы и приложения проходят проверку на предмет надежности. Gatekeeper активируется при любой попытке открыть, установить или запустить какой-либо исполняемый файл, загруженный не через Mac App Store, блокируя его запуск. В случае обнаружения потенциально опасного приложения, система выводит сообщение с ошибкой, предупреждая пользователя.
Есть множество вариаций того, как могут выглядеть эти предупреждения. Это зависит от версии операционной системы, типа открываемого файла и даже места откуда оно было загружено. Давайте рассмотрим основные и наиболее распространённые типы ошибок, а так же варианты их решения. Надеюсь, эта информация даст вам больше понимания о механизмах работы операционной системы MacOS и позволит корректно управлять вашими приложениями, устанавливаемыми вне официального магазина Apple, а так же обеспечит дополнительный уровень защиты вашего Mac и данных.
Приложение не удается открыть, так как оно было загружено не из App Store.
Или на английском предупреждение выглядит как «Application can’t be opened because it was not downloaded from the App Store.» и говорит нам о том, что в настройках MacOS разрешено использование приложения только из Mac App Store.
Если вы пытаетесь запустить программу, которую скачали напрямую с официального сайта разработчика, а не из Mac App Store, то обойти ошибку можно несколькими способами: Вариант #1, Вариант #2 или Вариант #3.
Приложение нельзя открыть, так как его автор является неустановленным разработчиком.
В дополнение к основному сообщению есть так же подсказка: «macOS не удается подтвердить, что в этом приложении не содержится вредоносное ПО». На английском языке предупреждение выглядит как «Application can’t be opened because it is from an unidentified developer.» и указывает на то, что в macOS разрешено использование приложений из App Store и от подтвержденных разработчиков, но при этом пользователь, вероятнее всего, пытается запустить приложение от незарегистрированного в Apple разработчика или приложение не имеет цифровой подписи доверенного разработчика.
Если вы уверены в происхождении запускаемого приложения и знаете, что оно не содержит вредоносного ПО, то такую ошибку можно обойти следующими способами: Вариант #1, Вариант #2 или Вариант #3.
Приложение невозможно открыть, так как Apple не может проверить его на наличие вредоносного ПО.
Данное предупреждение возникает если приложение подписано цифровой подписью зарегистрированного разработчикика, но не было проверено в Apple. Английский вариант уведомления – «Application can’t be opened because Apple cannot check it for malicious software.»:
Такую ошибку можно обойти следующими способами: Вариант #1, Вариант #2 или Вариант #3. Если эти способы не работают, то попробуйте Вариант #4 и Вариант #5.
Приложение повреждено, и его не удается открыть. Переместите приложение в Корзину.
На английском «Application is damaged and can’t be opened. You should move it to the Trash.». Данное предупреждение свидетельствует о том, что цифровая подпись приложения не соответствует содержимому пакета приложения. Это может быть в следующих случаях:
- Приложение повредилось при загрузке или копировании;
- Накопитель на который (или с которого) копировалось приложение имеет аппаратный сбой или программный сбой;
- Приложение повредило вредоносное ПО;
- Приложение подверглось модификации при патчинге (взломе) или при других манипуляциях (например модификация иконки, языковых пакетов и так далее).
Все эти варианты не исключают друг-друга, но в большинстве случаев пользователи сталкиваются с последним пунктом (приложение подверглось модификации при взломе или при модификации ресурсов программы), особенно если это приложение загруженно с торрент-трекеров.
Данную ошибку бывает очень трудно обойти, но и на это есть своё решение:
- Сначала нужно удалить цифровую подпись приложения. Как это сделать описано здесь, в Варианте #6;
- После того, как цифровая подпись будет удалена, можно пробовать запустить приложение следующими способами: Вариант #1, Вариант #2, Вариант #3.
- Если эти способы не работают, то попробуйте Вариант #4 и Вариант #5.
Приложение повредит компьютеру. Переместите приложение в Корзину.
Такое предупреждение (без дополнительных разъяснений под основным текстом предупреждения) обычно показывается при запуске приложения если:
- Gatekeeper обнаруживает, что программное обеспечение содержит недокументированный код;
- Авторизация разработчика, его цифровой подписи или самого приложения были по какой-либо причине отозваны компанией Apple;
- macOS обнаруживает, что целостность программного обеспечение было каким-либо образом испорчено, изменено или повреждено;
«Application will damaged your computer. You should move it to the Trash.» – так выглядит это предупреждение на английском:
Такая реакция системы чаще всего происходит на взломанное ПО. Если вы доверяете данному программному обеспечению, то обойти предупреждение для запуска данного приложения можно следующими способами: Вариант #1, Вариант #2, Вариант #4 или Вариант #5. Иногда запустить приложение удаётся только после применения всех вариантов.
Приложение повредит компьютеру. Переместите приложение в Корзину.
Предупреждение аналогичное примеру выше, однако в нём уже явно указывается, что в запускаемом приложении «Содержится вредоносное ПО “VIRUS”.» (в реальности название вредоносного ПО, находящегося в пакете программы, естественно, другое). На английском предупреждение выглядит следующим образом: «Application will damaged your computer. You should move it to the Trash. It containts the “VIRUS” malware.»
Данное предупреждение, думаю, не нуждается в комментариях и разъяснениях: запускать такое ПО не следует. Конечно, (теоретически) это может быть ложное срабатывание. Но на вашем месте я бы 100 раз подумал прежде чем открывать такую программу. Обойти ограничение системы и запустить ПО (с огромной вероятностью содержащее вредоносный код) можно воспользовавшись вариантами #1, #2, #4 и #5. Но нужно ли оно вам – решать только вам 😉
Вариант #1
Для единичных случаев, когда нужно запустить программу загруженную от известного Apple разработчика, но не через Mac App Store, а прямиком с официального сайта, достаточно найти эту программу в Finder (обычно приложения находятся в папке “Программы” или “Программы” → “Утилиты“), далее нужно кликнуть по значку программы с зажатой клавишей Control ⌃ (или сделать “правый клик” мышкой) и в контекстном меню выбрать пункт Открыть. В появившемся окне с предупреждением нужно снова нажать Открыть. Скорее всего вам придётся ввести имя и пароль администратора, чтобы открыть приложение.
После данной процедуры программа будет сохранена как исключение в настройках безопасности системы, и вы сможете открывать её в будущем как обычно – дважды щелкнув по ней. То есть так же, как и любое другое приложение.
Вариант #2
Если вы уверены, что приложение, которое вы хотите открыть, получено из надежного источника и не было подвергнуто несанкционированным изменениям, то можно сделать исключение для этой конкретной программы, запуск которой блокируется системой. Для этого:
- Попробуйте обычным образом (двойным кликом) открыть программу;
- Когда увидите сообщение о том, что Mac не может запустить программу (по какой либо причине), нажмите OK или Отмена чтобы закрыть окно;
- Перейдете в меню → Системные настройки…
- Слева в меню найдите пункт «Конфиденциальность и безопасность»;
- В основном окне справа прокрутите вниз до раздела «Безопасность»;
- Найдите сообщение «Приложение “App” заблокировано, так как его автор не является установленным разработчиком» и нажмите кнопку Подтвердить вход, чтобы открыть или установить приложение.
- После этого программа должна запускаться в обычном режиме.
Вариант #3
Для ситуации, когда приложение было загружено от известного Apple разработчика, но не через Mac App Store, а прямиком с официального сайта, достаточно в настройках разрешить запуск программ не только из Mac App Store, но и от и от подтвержденных разработчиков. Для этого переходим в:
→ Системные настройки… → Конфиденциальность и безопасность → Безопасность
Этот раздел находится почти в самом низу основного окна: здесь нужно выбрать параметр «Разрешить использование приложений, загруженных из: App Store и от подтвержденных разработчиков». При использовании англоязычного интерфейса MacOS этот пункт будет находиться в меню → System Settings… , в боковом меню нужно выбрать Privacy & Security , а в основном окне справа найти раздел Security как показано на скриншоте:
Для версий MacOS с “классическим” интерфейсом Системных настроек (это все операционные системы до MacOS 12 Monterey включительно) путь будет выглядеть так:
→ Системные настройки… → Защита и безопасность → Основные
Для применения настроек нужно ввести пароль администратора системы (или разблокировать замочек в левом нижнем углу окна настроек перед их внесением, если речь идёт о “классическом” интерфейсе Системных настроек). После применения данных настроек все подписанные доверенными разработчиками программы будут запускаться как обычно вне зависимости откуда они были загружены.
Вариант #4
Если вы используете большое количество приложений, загруженных из разных источников и разработанных разными компаниями, вы должны осознавать, что это может быть небезопасно, так как непроверенное программное обеспечение может содержать вредоносные элементы. Однако, если вы осознаете риски и все еще желаете воспользоваться такими приложениями, существует возможность активировать дополнительный параметр в настройках безопасности, который был убран в 2019 году с выпуском macOS Catalina. Этот параметр позволяет частично отключить Gatekeeper и разрешить запуск приложений от любых разработчиков и из любых источников по умолчанию. Для этого нужно запустить программу Терминал и выполнить следующую команду (как работать с Терминалом можно посмотреть здесь):
Для macOS 10.12 Sierra – 10.15.7 Catalina:
sudo spctl --master-disable
Для macOS 11.0 Big Sur и новее:
sudo spctl --global-disable
Проверить правильность выполнения команды можно перейдя в:
→ Системные настройки… → Конфиденциальность и безопасность → Безопасность
Здесь должен появиться новый пункт меню «Разрешить использование приложений, загруженных из: Любого источника»:
Для версий MacOS с “классическим” интерфейсом Системных настроек (до MacOS 12 Monterey включительно) данный параметр нужно искать здесь:
→ Системные настройки… → Защита и безопасность → Основные
Вернуть всё в изначальное состояние можно такими командами:
Для macOS 10.12 Sierra – 10.15.7 Catalina:
sudo spctl --master-enable
Для macOS 11.0 Big Sur и новее:
sudo spctl --global-enable
Вариант #5
Ещё один способ запустить программу – это удалить её из так называемого “карантина”. Данная процедура подходит как для образов дисков (.dng), так и для приложений (.app).
Однако есть и условие: образ диска или программа должны быть доступны на запись. То есть, если речь идёт о программе, то она должна находиться, например, в папке “Программы”, а не внутри образа диска. А образ диска должен находиться, к примеру, в папке “Загрузки” или на “Рабочем столе”, а не внутри другого образа диска (бывает и такое).
На данный момент используются несколько похожих команды, которые в равной степени могут быть эффективными для достижения нашей цели. Применять их можно последовательно, если одна из них не даёт желаемого результата:
Первая с ключом -c (“очистка”), когда все атрибуты карантина (включая связанные с ними значения) очищаются:
sudo xattr -r -c /Путь/Программа.app
Вторая с ключом -d (“удаление”), приводит к удалению указанного атрибута (и связанного с ними значений):
sudo xattr -r -d com.apple.quarantine /Путь/Программа.app
Третья с ключом -с (как и первая), но без ключа -r (“рекурсия”). В сети начали появляться упоминая, что в последних обновлениях MacOS 14 Sonoma утилиту xattr лишили рекурсивного обхода файлов внутри пакета. При исполнении xattr с ключом -r выдаётся ошибка и ничего не происходит. Чтобы команда снова стала работать как положено её нужно исполнять в таком формате:
sudo find /Путь/Программа.app -exec xattr -c {} \;
Советы и подсказки по работе с терминалом находятся здесь. После того как команда будет выполнена, попытайтесь двойным кликом запустить программу или смонтировать образ – система должна инициировать процедуру проверки, которая может длиться до 30 минут. Нужно дождаться завершения проверки прежде чем приложение сможет запуститься.
Важно понимать и помнить:
- Команда не действует на программы внутри образа (.dmg) – их необходимо скопировать куда-либо, например, на Рабочий стол.
- Команда не действует на программы внутри образа (.dmg) который находится внутри другого образа (бывает и такое) – их так же необходимо скопировать куда-либо, например, на Рабочий стол.
- В некоторых случаях команду можно применить к образу (.dmg) до его монтирования (открытия) если система безопасности выдаёт ошибку.
- Если в системе не задан пароль администратора системы – задайте его. Без пароля администратора не удастся выполнить команды с привилегиями sudo.
Вариант #6
Если операционная система “ругается” на то, что «Приложение повреждено, и его не удается открыть», и что единственным (по её мнению) решением проблемы является «Перемещение приложения в Корзину», то мы с ней, конечно же, не согласимся. Мы удалим цифровую подпись приложения и попробуем его запустить снова.
Для начала проверим, а есть ли у нашего приложения вообще цифровая подпись. Для этого выполним следующую команду:
codesign -d -v /Путь/Программа.app
Видим, что цифровая подпись присутствует:
Теперь удалим цифровую подпись следующей командой:
codesign --remove-signature /Путь/Программа.app
Проверим, осталась ли у приложения цифровая подпись:
codesign -v /Путь/Программа.app
Видим, что цифровой подписи больше нет:
Теперь можно попробовать запустить приложение, воспользовавшись вариантами #1, #2, #4 или #5.
Подсказки по работе с Терминалом
- Чтобы вручную не писать длинный путь к образу диска или приложению, вы можете просто перетащить в окно Терминала программу или образ диска, и путь в правильном формате пропишется самостоятельно (следите за пробелами, команда должна быть в правильном формате как в примере).
- Программа Терминал – это стандартная системная утилита, которая находится в каталоге Программы → Утилиты (её так же можно найти через Spotlight).
- Исполнение команды происходит по нажмию клавиши Enter.
- Все команды с привилегиями администратора (sudo) требуют ввода пароля администратора.
- Если в системе не задан пароль администратора системы – задайте его. Без пароля администратора не удастся выполнить команды с привилегиями sudo.
- При вводе пароля он не отображается ни звёздочками, ни точками, ни в явном виде – его нужно вводить “вслепую” в окне Терминала (то есть, он никак не отображается, но вводится).
- Будьте всегда внимательны при работе с консолью (программой Терминал)! Этот инструмент предназначен для продвинутых пользователей. Бездумное выполнение команд может привести к различным непредсказуемым последствиям в работе системы или к потере данных.