【问题标题】:How to set my application to always run as root OSX如何将我的应用程序设置为始终以 root OSX 身份运行
【发布时间】:2014-06-02 23:10:58
【问题描述】:

我正在开发一个 OSX 应用程序,它的某些功能需要 ROOT 权限 我想出了如何以 root 身份调试我的应用程序(仅在方案中)。

但我希望用户以 Root 身份运行它,以便他们可以访问其功能。

我该怎么做??

【问题讨论】:

  • 以root身份运行还是使用sudo运行?有区别。我假设您想使用sudo 运行。以root身份运行意味着在root用户帐户下运行它。
  • 你为什么要这个?只需以 root 身份登录即可。
  • - 我有一些功能,需要 su prieveleges 那里,
  • @9000 是的,我希望我的用户以 sudo 身份运行它。
  • 我已经成功安装了 helperTool,但 macosxvpn 代码仍然不能以(我)的身份在调试进程上运行。谁能帮帮我?

标签: objective-c macos cocoa


【解决方案1】:

如果它是典型的 OS X 应用程序包,您可以在终端中以 root 身份运行它:

sudo /Applications/YourAppName.app/Contents/MacOS/YourAppName

您可以保存一个仅包含此内容的文件,并将其命名为 YourAppLauncher.command,这样就可以在 Finder 中双击它。

或者,在 AppleScript 中:

do shell script "/Applications/YourAppName.app/Contents/MacOS/YourAppName" ¬
    with administrator privileges user name "username" password "password"

然后将其另存为应用程序以以 root 身份启动您的应用程序。它不会提示输入密码(如果需要,请删除 具有管理员权限之后的所有内容。

【讨论】:

  • 我可以用这个上传到appStore吗?
  • 绝对不是。您需要通过适当的框架以编程方式授予特权访问权限,即使那样,我什至不知道他们是否让任何使用特权访问权限的东西进入 Mac App Store。我认为他们没有,但不能这么权威地说。
  • 你能详细解释一下你上面写的AppleScript吗?
【解决方案2】:

不要以 root 身份运行桌面应用程序。 Mac OS X 框架不打算以这种方式使用,并且会导致不良行为(例如,用户库中 root 拥有的文件/文件夹;进程对“强制退出”没有响应;潜在的安全漏洞)。

使用 Authorization Services 以 root 身份运行特定的有限特权操作。

【讨论】:

  • 确实如此。执行此操作的正确方法是请求特定任务的授权或以 root 身份登录。没有理由任何用户登陆应用程序都应该以 root 权限运行。这只是给了用户root权限并为灾难打开了大门。外部错误和用户错误。
  • 它看起来正是我想要的,只是不了解任务:当我调用一个方法时:我可以把它放在 vompletion 块上,然后运行我的受限函数?
  • 我在 osx 应用程序中使用此 github.com/halo/macosvpn 代码,此代码仅在我设置 root 并从 Xcode 编译时工作,但当我运行 myapplication.app 文件时不起作用,不在系统钥匙串中存储密码.此外,我已经安装了 Helpertool,仍然没有进展
  • 我已经成功安装了 helperTool,但 macosxvpn 源代码仍然没有将密码存储在调试过程中的系统钥匙串中作为(我)。谁能帮帮我?
  • 有时像我这样的开发人员需要使用sudo 执行一些应用程序,所以不要告诉mac os x is not intended to be used in that way 之类的东西... osx 是基于unix 的操作系统,有时使用root 权限是正常的.另请参阅 (AppleSupport)[support.apple.com/en-us/HT204012]
【解决方案3】:

您可以创建本地服务器并使其在 /Library/LaunchDaemons 中运行。这将使服务器自动启动并获得root权限。我找到了一篇很好的文章来讨论这个问题。

https://medium.com/@fahimhossain_16989/adding-startup-scripts-to-launch-daemon-on-mac-os-x-sierra-10-12-6-7e0318c74de1

【讨论】:

  • 我结束了应用程序嵌套应用程序,一个应用程序作为启动器要求权限并以 root 身份打开所需的应用程序。
猜你喜欢
  • 2011-04-20
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
相关资源
最近更新 更多