Использование команд sudo в Какао и Objective-C? - PullRequest
3 голосов
/ 23 января 2010

Как правильно запустить что-то вроде $sudo touch folder_name или $sudo rm из Objective-C / Cocoa? Я изменяю и перемещаюсь по нескольким файлам и нуждаюсь в повышенных привилегиях. Любой пример кода будет принята с благодарностью. Спасибо.

Ответы [ 2 ]

11 голосов
/ 23 января 2010

Один из способов сделать это - AuthorizationExecuteWithPrivileges(), но это не рекомендуется для нормального хода вещей.Я понимаю, что в основном это для установщиков.

Что-то вроде:

AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);

И вы добавляете соответствующую проверку err ...

См. Авторизация документация.

2 голосов
/ 23 января 2010

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

Руководство по программированию служб авторизации дает вам все необходимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...