4

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

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

4

1 回答 1

8

推荐的 Apple 方法如下:

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

为使上述工作正常,特权 exe 必须安装为 root 所拥有的并设置了 setuid 位。您可以使用 package maker 来执行此操作,也可以创建 Apple 所说的自我修复辅助工具。这是一个检查它是否以 root 身份运行的工具,如果不是,则通过AuthorizationExecuteWithPrivileges调用自身以修复其 setuid 位和所有权。然后它对操作进行授权并执行操作。

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

我强烈建议您阅读整个授权编程指南。它更详细地讨论了所有这些内容,并包含一些示例代码。

于 2010-12-09T10:01:48.107 回答