【问题标题】:How to overwrite read-only files in privileged locations on MacOS?如何覆盖 MacOS 上特权位置的只读文件?
【发布时间】:2012-11-21 22:45:20
【问题描述】:

我正在编写一个需要覆盖只读文件的应用程序。特别是 /etc/hosts 文件。为此,我需要获得用户的许可才能获得 root 访问权限,从而获得覆盖主机文件的权限。

我在整个互联网上进行了搜索,但我无法理解如何做到这一点。我意识到曾经为此使用了一个名为 AuthorizationExecuteWithPrivileges() 的方法,但它在 OSX 10.7 中已被弃用。然后我遇到了一个叫SMJobBless的东西,但是我真的不明白它的概念吗?

那么你能解释一下如何以正确的方式解决我的问题吗?

问候,拉斯穆斯

【问题讨论】:

  • chmod 7777 AppExecutable 并在main() 中调用setuid(0);,您将成为root,tadam! (顺便说一句,在越狱的 iOS 应用程序中获取 root 权限的标准方法。)
  • 非常感谢您的回复!我对 obj-c 有点陌生,所以我想知道您是否可以具体详细说明如何做到这一点? :)
  • 第一个是在命令行中输入的。第二部分不知道能详细说什么,我让你从main()打给setuid(0);,就这样……
  • @H2CO3 是否可以在程序开始时从程序内部运行该命令,这样用户就不必自己键入该命令?
  • 用户不需要做任何事情。您 chmod 二进制文件并按原样分发。

标签: objective-c macos authorization hosts hosts-file


【解决方案1】:

http://atnan.com/blog/2012/02/29/modern-privileged-helper-tools-using-smjobbless-plus-xpc/

SMJobBless + XPC 是 os x 10.7+ 的解决方案,可满足您的需求。

提供的链接也包含显示示例的源代码。

【讨论】:

  • 尚未在较低版本上进行测试,但它应该可以工作,因为 API 不是新的
猜你喜欢
  • 2020-12-28
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多