如何在Objective-C/Cocoa中以正确的方式运行类似于$sudo touch folder_name
或$sudo rm
这样的命令?我正在修改和移动一些文件,需要提升权限。任何代码示例都将不胜感激。谢谢。
如何在Objective-C/Cocoa中以正确的方式运行类似于$sudo touch folder_name
或$sudo rm
这样的命令?我正在修改和移动一些文件,需要提升权限。任何代码示例都将不胜感激。谢谢。
有一种方法是使用AuthorizationExecuteWithPrivileges()
,但这在正常情况下不被鼓励使用,主要是用于安装程序。
类似于:
AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);
你需要加入适当的错误检查...
参见Authorization文档。
NSXPCConnection
。 - PapershineAuthorizationExecuteWithPrivileges
将setuid位授予辅助工具。其思想是将根权限限制在仅需要权限的代码(特定任务的辅助工具)中,以便不需要权限的代码(您的应用程序)不会拥有它们。这是最小特权原则。 - Peter Hosey