O Gate Keeper usa a funcionalidade quarentena que está presente há algum tempo para irritar os usuários depois de baixarem arquivos.
Você pode examinar as informações de quarentena de um arquivo lendo seu atributo estendido com.apple.quarantine
. Aqui eu faço isso para um .app
nunca antes lançado copiado de um baixado .dmg
:
$ xattr -l Butler.app/
com.apple.quarantine: 0002;50697c0e;Safari;942183F8-A268-447B-AEAB-55CEA27DD911
O primeiro valor é o estado de quarentena (ou seja, a parte interessante). Ele é seguido por um registro de data e hora Unix codificado em hexadecimal (neste caso: date -r 0x50697c0e
resulta em Mo 1 Okt 2012 13:18:38 CEST
), o nome do aplicativo que cria o arquivo e um identificador exclusivo (UUID) do item em quarentena original. Este último é herdado por arquivos extraídos de seu contêiner, neste caso, o arquivo .dmg
.
A primeira parte do atributo estendido é o estado de quarentena. Quando baixado e nunca aberto, esse arquivo tem 0002
, possivelmente indicando um download da web .
Quando você clica duas vezes no aplicativo, mas o interrompe quando solicitado, ele é 0022
(provavelmente para gravar uma execução anterior sem aprovação) e, quando você confirma a execução uma vez, é 0062
. Nesse caso, você não será perguntado novamente depois. Isso se parece muito com uma representação octal ou hexadecimal de um campo de bits, com o terceiro bit de 4
indicando a aprovação e o terceiro bit de 2
indicando a execução anterior.
Ao redefinir esse valor para o estado original após o download, você pode reativar a proteção do Gate Keeper . Apenas leia o valor após a abertura ( xattr -p com.apple.quarantine <filename>
) e substitua-o pelo mesmo valor, sem os bits "isto já foi aprovado" (por exemplo, xattr -w com.apple.quarantine 0002;[rest of the previous value] <filename>
).