在Cocoa和Objective-C中使用sudo命令?
从Objective-C/Cocoa中运行诸如在Cocoa和Objective-C中使用sudo命令?,objective-c,cocoa,macos,privileges,sudo,Objective C,Cocoa,Macos,Privileges,Sudo,从Objective-C/Cocoa中运行诸如$sudo touch folder\u name或$sudo rm之类的内容的正确方法是什么?我正在更改和移动一些文件,需要提升权限。任何代码示例都将不胜感激。谢谢。一种方法是authorization executewithprivileges(),但正常情况下不鼓励这样做。我想主要是为安装人员准备的 比如: AuthorizationRef auth = NULL; OSStatus err = AuthorizationCreate(NULL
$sudo touch folder\u name
或$sudo rm
之类的内容的正确方法是什么?我正在更改和移动一些文件,需要提升权限。任何代码示例都将不胜感激。谢谢。一种方法是authorization executewithprivileges()
,但正常情况下不鼓励这样做。我想主要是为安装人员准备的
比如:
AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);
并添加对错误的适当检查
请参阅文档。有几种方法可以做到这一点。你选择哪一个取决于你想做什么。最简单也是最不安全的方法是在一个额外的助手工具上简单地设置s位,这个工具可以从代码中调用,并执行需要管理员权限的操作。请看下面的示例,了解执行特权代码的最奇特和最复杂的方式
你所需要的一切都会得到 “最简单也是最不安全的方法是简单地在一个额外的助手工具上设置s位,你可以从代码中调用它,并执行需要管理员权限的操作。”这实际上是苹果公司推荐的方法。您应该只使用AuthorizationExecuteWithPrivileges
将setuid位授予辅助工具。我们的想法是将根权限限制在只需要权限的代码(特定于任务的帮助工具),这样不需要权限的代码(您的应用程序)就没有权限了。这是最小特权的原则。你为什么想在iPhone中使用sudo
?对不起,我的思绪一直在徘徊。我将标记替换为“mac”。遗憾的是,这不再受支持,但您可以使用AppleScript以提升的权限执行shell。或者使用NSXPCConnection