【问题标题】:Can I bind an unprivileged application to privileged port on Mac OS X?我可以将非特权应用程序绑定到 Mac OS X 上的特权端口吗?
【发布时间】:2012-02-03 03:47:31
【问题描述】:

我正在编写一个服务器类型的应用程序,它通常由用户运行,但需要绑定到特权 TCP 端口(502 - Modbus TCP)。端口号是行业标准,而我的应用程序是模拟器,所以我无法真正更改为 >1024,因为大多数设备都针对此端口号进行了预编程,无法更改。

“根 EUID 安全策略”保护端口 502 不被除根以外的任何人访问(请参阅 Authentication, Authorization, and Permissions Guide )。因此,使用端口

出于明显的安全原因,我试图避免以 root 身份运行我的模拟器应用程序。 沙盒可以解决这个问题,但我知道它只在 10.7 Lion 中可用,我必须在 10.6 SL 中工作。

有人可以指出在这种情况下什么被认为是端口访问的“最佳实践”,也许还有一些指向示例和进一步阅读的指针。

非常感谢

PS:我看过 Apple 的 Better Authorization Sample,但它已有 5 年历史,涉及由 launchd 运行的特权帮助工具有点麻烦。我希望有一个更好的解决方案,不涉及以 root 身份运行进程。

【问题讨论】:

    标签: macos security tcp osx-snow-leopard communication


    【解决方案1】:

    您可以使用ipfw 来执行此操作;尝试here 了解它,man ipfw 了解更多详情。

    【讨论】:

    • 抱歉,我最初的问题并没有说明我正在编写一个 coca 应用程序并且需要从我的应用程序中绑定到端口。我已经编辑了我的原始问题以反映这一点。
    【解决方案2】:

    看看 Apache 的 https 启动方式……它以 root 身份启动,足以获取端口 80 / 443,然后从那时起以 'apache' 或 'http' 用户身份运行。

    【讨论】:

      猜你喜欢
      • 2011-11-28
      • 2018-12-11
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2013-08-02
      • 2010-10-09
      相关资源
      最近更新 更多