使用Objective-C/Cocoa以root身份运行Bash脚本

cit*_*cit 3 bash cocoa objective-c

假定在xCode项目的Resources文件夹中有一个名为copystuff的文件,该文件读取:

#!/bin/sh
cp -R /Users/someuser/Documents /Users/admin/Desktop
Run Code Online (Sandbox Code Playgroud)

如果下面的这段代码链接到IB中的按钮...它会在/ Cocoa应用程序中按下按钮时将/ Users/someuser/Documents目录复制到/ Users/admin ...当应用程序是在管理员帐户中启动(在此处使用OS X 10.5.x)...

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:[NSArray arrayWithObjects:[[NSBundle mainBundle]
pathForResource:@"copystuff" ofType:@"sh"], nil]];
[task launch];
Run Code Online (Sandbox Code Playgroud)

我的问题是..有没有办法让NSTask运行一个以root身份运行的脚本,而这个代码是从非管理员帐户调用的?或者问另一种方式..可以编译Objective-C来从非管理员帐户以root身份运行来自/ usr/bin的脚本吗?

Rob*_*ier 7

我强烈建议不要使用像这样的外部脚本.这样做要好得多,NSFileManager并将其保留在受控代码中.但是对于如何成为root的问题,您想要查看授权服务.该站点将指导您如何创建升级其权限的应用程序,包括适当的UI元素.