使用root权限部署应用程序

Cod*_*bat 4 permissions macos cocoa objective-c libpcap

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

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

Jer*_*myP 8

推荐的Apple方法可以满足您的需求,如下所示:

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

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

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

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