3

Я пытаюсь написать appleScript, который отправляет некоторые действия приложению (в частности, waterroof). Проблема в том, что приложение периодически запрашивает пароль администратора при открытии интересующей меня панели настроек. Он работает с задержкой, поэтому, если я уже ввел пароль в предыдущие x минут, он не запрашивает. Поскольку я не могу рассчитывать на то, что меня спросят, я не могу рассматривать приостановку и ввод пароля как часть сценария.

Есть ли способ сообщить приложению / ОС, что я хочу оставаться в приложении с правами администратора, и что оно не должно спрашивать меня? Я хочу исчерпать эту возможность, прежде чем я попытаюсь проверить ее существование и т.д. В коде.

1 ответ1

0

Насколько я знаю, время ожидания для авторизации в OS X (если все сделано правильно) устанавливается в Базе данных политики, расположенной в etc/authorization , обычно программно. Он выглядит как файл plist, и если у элемента нет ключа 'timeout', то у него нет тайм-аута.

Я знаю, что предпочтение обычно задается в коде с использованием API Apple (как показано в Руководстве по программированию служб авторизации Apple и в справочнике по функциям ).

Это защищенный файл. Используйте что-то вроде sudo pico /private/etc/authorization для редактирования.

Запись в этом файле будет иметь заголовок с использованием своего рода дескриптора com.company.application.right или чего-то в этом роде (например, com.apple.itunes.copy, com.stackexchange.superuser.deleteuser), который является специфическим для каждое приложение, так что ищите это. (В алфавитном порядке, чтобы сделать вещи проще, я считаю).

Если такой записи нет, то приложение, вероятно, получает авторизацию другим способом, о котором я не знаю. Я просто попытался добавить тайм-аут в приложение, которое я написал - это сработало. Затем я снова удалил его - и таймаут исчез. Это должно работать в вашем случае, я думаю.

Вы упоминаете панель настроек - если это связано с Системными настройками, то я тоже не знаю, как она работает. Нет никакого способа сделать это через яблочный скрипт.

Изменить: если такой записи нет

ДРУГОЙ способ авторизации приложения - использование устаревшего и небезопасного метода AuthorizationExecuteWithPrivileges . Я предполагаю, что если приложение не имеет своей собственной записи в базе данных политики, оно использует AuthorizationExecuteWithPrivileges . Может случиться так, что приложение, с которым вы пытаетесь работать, использует это.

В базе данных политики есть запись для этого конкретного метода, называемая system.privilege.admin , но обратите внимание, что изменение этого значения и удаление тайм-аута, вероятно, изменят тайм-аут для всех приложений, использующих AuthorizationExecuteWithPrivileges , а не только тот, который вы пытаетесь изменить. Возможно, стоит попробовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .