【发布时间】:2014-12-08 14:21:34
【问题描述】:
如何从 Objective-c 运行 sudo 命令?我可以使用以下方法运行不需要 sudo 的简单命令:
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments = [NSArray arrayWithObjects:@"-c" ,[NSString stringWithFormat:@"%@", cmd], nil];
NSLog(@"run command: %@",cmd);
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *output;
output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
return output;
当我运行 sudo 命令时,我收到错误:不允许操作。
根据我在网上找到的信息,我需要获得授权。我阅读了 Apple 的授权文档,但没有指定说明点。
Apple 的 EvenBetterAuthorizationSample 示例不起作用。
应用程序使用 Apple ID 签名。
【问题讨论】:
-
是的,您需要获得授权。这是你的问题吗?
-
您是尝试以 root 身份运行命令,还是实际上尝试通过
sudo命令使用它?如果您想通过sudo,您需要拥有/etc/sudoers中拥有该进程的用户的权限。 -
我要执行命令:“sudo discoveryutil udnsflushcaches”来清理DNS缓存。
-
是的,我需要获得授权。但是如何使用授权来执行命令。
标签: objective-c