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