条件は次のとおりです。Objective-cで記述されたMacOSX10.7およびCocoaグラフィカルアプリケーション。
私は次の問題に直面しています。Cocoaアプリケーションの/user/binフォルダーからデーモンアプリケーションを起動できません。そのためにはroot権限が必要です。
* .pkgではなく、手動で作成したインストーラーアプリケーションのインストーラーがあります。インストールプロセスが終了した後、デーモンを起動する必要があります。Objective-Cアプリケーションで特権レベルを上げるにはどうすればよいですか?
私はこのコードを持っています。ただし、AuthorizationExecuteWithPrivileges呼び出しは非推奨です。
使用しないでください。
AuthorizationItem authItem = { kSMRightModifySystemDaemons, 0, NULL, 0 };
AuthorizationRights authRights = { 1, &authItem };
AuthorizationFlags flags = kAuthorizationFlagDefaults |
kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagPreAuthorize |
kAuthorizationFlagExtendRights;
AuthorizationRef authRef = NULL;
OSStatus status = AuthorizationCreate(&authRights,
kAuthorizationEmptyEnvironment, flags, &authRef);
status = AuthorizationExecuteWithPrivileges(authorizationRef, tool, kAuthorizationFlagDefaults, args, &pipe);
2番目の方法は、特権ヘルパーを使用することです。私の場合、この方法は非常に複雑に見えます。インストール後にデーモンを起動する必要があります。
当然のことながら、私はユーザーにMacを再起動するように頼むことができます。しかし、私はそれを避けたいと思います。
他の可能性は、デーモン実行可能ファイルのSUIDビットです。しかし、それは安全ではないと思います。
私の質問は:それを行う他のより簡単な方法はありますか?