条件如下:MacOSX 10.7 和 Cocoa 用objective-c 编写的图形应用程序。
我面临以下问题。我无法从 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);
第二种方法是使用特权助手。对于我的情况,这种方式看起来非常复杂。我只需要在安装后启动守护进程。
当然,我可以要求用户重新启动 mac。但我想避免它。
其他可能性是守护程序可执行文件上的 SUID 位。但我认为这并不安全。
我的问题是:还有其他更简单的方法吗?