我目前正在尝试从LaunchDaemon中作为特定用户在date | data
2015-01-23 | 15
2015-01-23 | 11
2015-02-25 | 15
2015-02-25 | 11
2015-01-25 | 24
2015-01-25 | 2
2015-01-25 | 13
2015-01-29 | 5
2015-02-28 | 12
2015-02-28 | 1
2015-05-15 | 12
2015-05-16 | 1
中启动应用程序。有没有一种方法可以在不给予程序root权限的情况下启动此应用程序?我在目标C中写守护进程。
答案 0 :(得分:0)
在启动守护程序的plist中,它应位于/ Library / LaunchDaemons中,您可以设置UserName
键:
<key>UserName</key>
<string>userForThisProcess</string>
其中userForThisProcess
是您要用来运行应用程序的用户。
答案 1 :(得分:0)
我现在以一种古怪的方式解决了这个问题。我将NSTask
与sudo
和open
结合使用。也许有人在将来需要这个:
+ (bool)start_app_bundle_as_user:(NSString *)path with_user_name:(NSString *)user_name
{
NSString *cmd = [NSString stringWithFormat:@"/usr/bin/sudo -i -u %@ -- open -a %@", user_name, path];
NSTask *task = [[NSTask alloc] init];
NSArray *args = [NSArray arrayWithObjects:@"-c", cmd, nil];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:args];
[task launch];
[task waitUntilExit];
return [task terminationStatus] == 0;
}