CFPreferences to / Библиотека / Настройки - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть prefpane, используемый в Системных настройках (с блокировкой авторизации). Мне нужно получить свои предпочтения, чтобы написать на /Library/Preferences. Однако всякий раз, когда я пытаюсь синхронизировать префы с kCFPreferencesAnyUser и kCFPreferencesCurrentHost, он просто выходит из строя, даже если моя блокировка разблокирована. Есть ли способ записать мои предпочтения в /Library/Preferences без создания вспомогательного приложения? Я бы хотел избежать этого, потому что это излишне.

Обратите внимание, что для изменения настроек «Любой пользователь» требуются права суперпользователя (или права администратора до Mac OS X v10.6) - см. Руководство по программированию служб авторизации.

Я прочитал руководство по программированию служб авторизации, в котором даже не упоминались настройки.

1 Ответ

1 голос
/ 21 января 2013

CFPreferences использует euid вашего процесса, чтобы определить, что означает «текущий пользователь». Возможно, вы могли бы установить свой euid в 0, но это действительно не рекомендуется, потому что это означает, что ваша вся программа теперь является возможным источником атак на повышение привилегий, если она содержит уязвимость, а не просто крошечным специализированным помощником , Это плохо для ваших пользователей и, соответственно, плохо для вас.

Кроме того, XPC и seteuid () не всегда хорошо играют, а CFPreferences использует XPC. Я полагаю, что переключение с euid 0 на non-0 должно сработать, но я бы не рассчитывал на другое направление работы.

...