我编写了一个 Cocoa 应用程序,它使用 libpcap 来监控网络流量。由于 libpcap 需要 root 权限,我想知道赋予它 root 权限的最佳方法是什么(例如,使用 Package Maker?)。我是否可以使用拖放安装程序来部署它,还是 Package Maker 是我唯一的选择?
此外,我想知道授予我的应用 root 权限所带来的安全风险。该应用程序还写入磁盘(sqlite 数据库),我读到给一个写入磁盘根权限的应用程序不是一个好主意。
我编写了一个 Cocoa 应用程序,它使用 libpcap 来监控网络流量。由于 libpcap 需要 root 权限,我想知道赋予它 root 权限的最佳方法是什么(例如,使用 Package Maker?)。我是否可以使用拖放安装程序来部署它,还是 Package Maker 是我唯一的选择?
此外,我想知道授予我的应用 root 权限所带来的安全风险。该应用程序还写入磁盘(sqlite 数据库),我读到给一个写入磁盘根权限的应用程序不是一个好主意。
推荐的 Apple 方法如下:
为使上述工作正常,特权 exe 必须安装为 root 所拥有的并设置了 setuid 位。您可以使用 package maker 来执行此操作,也可以创建 Apple 所说的自我修复辅助工具。这是一个检查它是否以 root 身份运行的工具,如果不是,则通过AuthorizationExecuteWithPrivileges调用自身以修复其 setuid 位和所有权。然后它对操作进行授权并执行操作。
如果您使用自我修复工具,您可以将其与您的应用程序捆绑在一起,并使用拖放安装过程。
我强烈建议您阅读整个授权编程指南。它更详细地讨论了所有这些内容,并包含一些示例代码。