我可以将非特权应用程序绑定到Mac OS X上的特权端口吗?

时间:2012-02-03 03:47:32

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

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

根据EUID安全政策"保护端口502不被除root之外的任何人访问(参见Authentication, Authorization, and Permissions Guide)。因此,使用端口<时,对CFSocketSetAddress的调用失败。 1024。

出于明显的安全原因,我试图避免以root身份运行我的模拟器应用。 沙盒可以解决这个问题,但据我所知,它仅适用于10.7 Lion,我必须使用10.6 SL。

有人可以指出会考虑什么"最佳做法"在这个实例中进行端口访问,可能还有一些指向示例和进一步阅读的指针。

非常感谢

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

2 个答案:

答案 0 :(得分:0)

您可以使用ipfw执行此操作;请尝试here了解相关信息,并man ipfw了解详情。

答案 1 :(得分:-1)

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