Настройте параметры приложений OS X так, чтобы они не запрашивали пароль администратора

Настройте параметры приложений OS X так, чтобы они не запрашивали пароль администратора

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

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

решение1

Насколько мне известно, таймаут авторизации в 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), который является специфическим для каждого приложения, поэтому ищите его. (Я полагаю, он отсортирован в алфавитном порядке, чтобы упростить задачу).

введите описание изображения здесь

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

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

Редактировать: Если такой записи нет

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

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

введите описание изображения здесь

Связанный контент