使用root权限部署应用程序

时间:2010-12-09 08:31:21

标签: objective-c cocoa macos permissions libpcap

我编写了一个Cocoa应用程序,它使用libpcap来监控网络流量。由于libpcap需要root权限,我想知道赋予root权限的最佳方法是什么(例如使用Package Maker?)。我是否可以使用拖放式安装程序部署它,或者是Package Maker我唯一的选择吗?

此外,我想知道通过授予我的应用程序root权限所带来的安全风险。该应用程序还写入磁盘(sqlite数据库),我读到,给一个写入磁盘根权限的应用程序不是一个好主意。

1 个答案:

答案 0 :(得分:8)

推荐的Apple方式如您所愿:

  • 将需要特权操作的内容分解为单独的可执行文件(这就是使用libpcap的东西)。
  • 当应用程序需要启动特权exe时,它会创建授权引用并检查用户是否可以授权(称为预授权)并将授权的外部引用传递给特权exe。
  • 首次启动时,特权执行程序会在尝试执行特权之前再次获得授权。

为了使上述工作正常,特权exe必须由root用户安装,并设置setuid位。您可以使用包装制造商执行此操作,也可以创建Apple术语self repairing helper tool。这是一个检查它是否以root身份运行的工具,如果不是通过AuthorizationExecuteWithPrivileges调用自身来修复其setuid位和所有权。然后它执行操作的授权并执行操作。

如果您使用自我修复工具,您可以将其与应用程序捆绑在一起,并使用拖放安装过程。

我强烈建议您阅读整个Authorization Programming Guide。它更详细地讨论了所有这些内容,并包含一些示例代码。