Estou tentando escrever um applescript que envie algumas ações para um aplicativo (especificamente waterroof). O problema é que o aplicativo me pede periodicamente a senha de administrador quando abro o painel de configurações de meu interesse. Ele funciona com atraso, então se eu já digitei a senha nos x minutos anteriores, ele não avisa. Como não posso confiar na pergunta, não posso considerar fazer uma pausa e inserir a senha como parte do script.
Existe uma maneira de informar ao aplicativo/sistema operacional que desejo permanecer conectado ao aplicativo com privilégios de administrador e que ele não deveria me perguntar? Quero esgotar essa possibilidade antes de tentar verificar sua existência, etc., no código.
Responder1
Pelo que eu sei, o tempo limite para autorização no OS X (se feito corretamente) é definido noBanco de dados de políticaslocalizado em etc/authorization
, geralmente de forma programática. Parece um arquivo plist e, se um item não tiver uma chave de 'tempo limite', ele não terá tempo limite.
Eu sei que a preferência geralmente é definida em código usando APIs da Apple (conforme mostrado no Apple'sGuia de programação de serviços de autorizaçãoe afunçãoreferência).
Este é um arquivo protegido. Use algo parecido sudo pico /private/etc/authorization
para editá-lo.
A entrada neste arquivo terá um título usando um tipo de descritor 'com.company.application.right' ou algo parecido (por exemplo, com.apple.itunes.copy, com.stackexchange.superuser.deleteuser) - que é específico para cada aplicativo, então procure por isso. (Está em ordem alfabética para facilitar as coisas, acredito).
Se não houver tal entrada, o aplicativo provavelmente obterá autorização de outra maneira que eu não conheço. Tentei adicionar um tempo limite a um aplicativo que escrevi - funcionou. Em seguida, excluí-o novamente - e o tempo limite desapareceu. Deve funcionar no seu caso, suponho.
Você mencionou um painel de configurações - se isso envolve as Preferências do Sistema, também não sei como funciona. Não há como fazer isso através do applescript.
Editar: se não houver tal entrada
OUTRA maneira pela qual um aplicativo pode autorizar é usar o método agora obsoleto e inseguro AuthorizationExecuteWithPrivileges
. Suponho que, se um aplicativo não tiver sua própria entrada no banco de dados de políticas, ele usará arquivos AuthorizationExecuteWithPrivileges
. Pode ser que o aplicativo com o qual você está tentando trabalhar use isso.
Há uma entrada no banco de dados de políticas para esse método específico chamado system.privilege.admin
, mas observe que modificar isso e excluir o tempo limite provavelmente alterará o tempo limite de todos os aplicativos que usam AuthorizationExecuteWithPrivileges
, não apenas daquele que você está tentando alterar. Pode valer a pena tentar.