[macosx] уровень привелегий cocoa приложения для запуска root демона
От: salvequick  
Дата: 07.02.13 18:50
Оценка:
Hi all!

Как правильно поднять уровень привелегий в macosx cocoa приложении запущенном от обычного пользователя?
Требуется запустить демон требующий root права.

Нашел вот такие вызовы

AuthorizationCreate(&authRights, kAuthorizationEmptyEnvironment, flags, &authRef);
AuthorizationExecuteWithPrivileges(authorizationRef, tool, kAuthorizationFlagDefaults, args, &pipe);

Однако вызов AuthorizationExecuteWithPrivileges устарел. С SDK 10.8 компилятор выдает warning.
Возможно в 10.9 уже поддержки не будет.
Вообем этот вариант не подходит.

Есть еще вариант с helper tool.
Есть пример от Apple: SMJobBlessHelper.
Однако простотой вся эта схема не блещет.
Я так пока и не понял как все это рабоает.
Но иедя такая, что код приложения делится на две части.
Собственно обычное приложение и привелигерованный helper распологаемый в /Library/PrivilegedHelperTools
Приложение каким то образом запускет helper и он делает уже всю root работу.

Вывод ls -l каталога /Library/PrivilegedHelperTools


total 448
-r-xr--r-- 1 root wheel 36784 Oct 12 07:55 com.barebones.authd
-rwxr-xr-x 1 root wheel 85216 Jan 30 2011 com.barebones.textwrangler
-rwxr-xr-x 1 root wheel 104220 Aug 25 2010 com.microsoft.office.licensing.helper



Как видим helper принадлежить пользователю root , SUID bit не установлен.
Получается что возвращаемся в исходную точку. Опять стоит задача запустить с root правами.



Есть ли еще возможности получить root?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.