【问题标题】:Deploying an app with root privileges以 root 权限部署应用程序
【发布时间】:2011-05-22 17:27:58
【问题描述】:

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

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

【问题讨论】:

  • 有趣。安全扫描应用?
  • 也许你可以把它分成两个可执行文件,一个 setuid(或任何一个在 OSX 上做的),它只是获取数据包数据并以某种方式使其可用(管道、套接字、?),另一个以普通用户权限运行,执行其他所有操作,包括写入文件。

标签: objective-c cocoa macos permissions libpcap


【解决方案1】:

推荐的 Apple 方法如下:

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

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

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

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

【讨论】:

  • 谢谢,这很有帮助。
猜你喜欢
  • 2017-05-04
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 2014-11-17
相关资源
最近更新 更多