Xcode 如何以root用户身份运行macOS应用程序并使用系统调用?

Xcode 如何以root用户身份运行macOS应用程序并使用系统调用?,xcode,macos,xcode9.2,Xcode,Macos,Xcode9.2,我正在尝试从macOS应用程序(objective-c)运行setpriority命令。它永远不会工作,我认为这是因为应用程序不是以root用户身份运行的 我已登录到我计算机上的管理员帐户 我已尝试使用sudo 我尝试在应用程序上使用chmod 我已尝试将该应用程序添加到安全和隐私 Xcode版本9.2(9C40b) 我将感谢任何帮助,谢谢 不建议在macOS上以root用户身份运行GUI应用程序。相反,您应该将应用程序中需要root访问的部分划分到单独的帮助工具中,使用smjobbles(

我正在尝试从macOS应用程序(objective-c)运行
setpriority
命令。它永远不会工作,我认为这是因为应用程序不是以root用户身份运行的

  • 我已登录到我计算机上的管理员帐户
  • 我已尝试使用
    sudo
  • 我尝试在应用程序上使用
    chmod
  • 我已尝试将该应用程序添加到
    安全和隐私
Xcode版本9.2(9C40b)


我将感谢任何帮助,谢谢

不建议在macOS上以root用户身份运行GUI应用程序。相反,您应该将应用程序中需要root访问的部分划分到单独的帮助工具中,使用
smjobbles()
函数以root身份启动该工具,然后使用XPC与该工具通信

Apple提供了示例代码,提供了一个非常好的基本框架


编辑:我不久前决定制作我自己的授权示例项目,它应该比古老的
甚至更好的授权示例更易于使用。您可以在上查看它。

您想以
root运行,还是想使用
sudo运行?这是不同的。绝对不建议以root用户身份运行,系统会出现奇怪的行为

你写道:

我试过用sudo打开应用程序

这应该行得通。你怎么试过的?您需要调用.app包中的二进制文件。对包运行
open
将不起作用

e、 g


即使它没有被推荐,我仍然想冒险去探索。甚至可以将应用程序作为根用户吗?@Quack在OSX的早期,这是可能的,尽管不是一个好主意。现在,我认为如果你尝试它,应用程序将无法连接到窗口服务器。这是最好的;当时有一些相当恶劣的特权升级漏洞利用了这种机制。我想这是有道理的,而且是有益的。我很想为自己读更多关于这方面的书(现在我很好奇)。你知道关于修改优先级和安全性的文章吗?@Quack The EvenbetterAuthorization示例代码是一个很好的资源。它没有像我希望的那样被文档化,但是如果你通读代码和注释,就有可能知道它在做什么。我一直想为我自己自制的Swift等价物清理代码,它有一个稍微好一点的界面,所以我可以把它放到网上,但我似乎从来没有抽出时间去做-/这返回了非法指令:4
。我不确定我会做错什么,我一直在努力寻找解决这个错误的方法。你的应用程序沙盒了吗?请删除Xcode中的所有权限,然后重试。
sudo ./Xcode.app/Contents/MacOS/Xcode