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>
).