Gate Keeper использует функцию карантина , которая присутствует некоторое время, чтобы раздражать пользователей после загрузки файлов.
Вы можете просмотреть информацию о карантине файла, прочитав его расширенный атрибут com.apple.quarantine . Здесь я делаю это для никогда ранее не запускаемого .app скопированного из загруженного .dmg:
$ xattr -l Butler.app/
com.apple.quarantine: 0002;50697c0e;Safari;942183F8-A268-447B-AEAB-55CEA27DD911
Первое значение - это состояние карантина (то есть интересная часть). За ним следует шестнадцатеричная метка времени Unix (в данном случае: date -r 0x50697c0e приводит к Mo 1 Okt 2012 13:18:38 CEST), имя приложения, создающего файл, и уникальный идентификатор (UUID) объекта. оригинальный карантин Этот последний наследуется извлеченными файлами из их контейнера, в данном случае, файла .dmg .
Первая часть расширенного атрибута - это состояние карантина. Когда этот файл загружен и никогда не открывается, в нем содержится 0002 , что может указывать на загрузку через Интернет.
Когда вы дважды щелкаете по приложению, но прерываете при запросе подтверждения, это 0022 (вероятно, для записи более раннего выполнения без одобрения), а когда вы подтверждаете выполнение один раз, это 0062 . В этом случае вас больше не спросят. Это очень похоже на восьмеричное или восьмеричное представление битового поля, где третий бит значения 4 указывает на утверждение, а третий бит значения 2 указывает на предварительное выполнение.
Сбросив это значение в исходное состояние после загрузки, вы можете снова включить защиту Gate Keeper. Просто прочитайте значение после открытия (xattr -p com.apple.quarantine <filename>) и замените его тем же значением без битов "это уже было утверждено" (например, xattr -w com.apple.quarantine 0002;[rest of the previous value] <filename>).