2012-02-03 32 views
2

我正在編寫一個服務器類型的應用程序,通常由用戶運行,但需要綁定到特權TCP端口(502 - Modbus TCP)。端口號是行業標準,我的應用程序是模擬器,所以我不能真正改變到> 1024,因爲大多數設備都是爲此端口號預編程的,不能更改。我可以將非特權應用程序綁定到Mac OS X上的特權端口嗎?

「根EUID安全策略」保護端口502不受root用戶訪問(請參閱Authentication, Authorization, and Permissions Guide)。因此,當使用端口< 1024時,對CFSocketSetAddress的調用失敗。

我試圖避免以root身份運行我的模擬器應用程序,原因很明顯的安全原因。 沙盒可能會克服這個問題,但我知道它只在10.7 Lion中可用,我必須在10.6 SL中工作。

有人請指出在這種情況下什麼會被認爲是「最佳做法」的端口訪問,也許是一些指向示例和進一步閱讀的指針。

非常感謝

PS:我已經看到了蘋果的Better Authorization Sample卻是5歲和有點麻煩,涉及由launchd會運行一個特權助手工具。我希望有一個更好的解決方案,不涉及以root身份運行進程。

回答

0

您可以使用ipfw來做到這一點;請嘗試here瞭解更多信息,man ipfw瞭解更多詳情。

+0

對不起,我最初的問題並沒有說清楚,我正在編寫一個古柯應用程序,需要從我的應用程序中綁定到端口。我編輯了我原來的問題來反映這一點。 – helioz 2012-02-03 09:10:32

-1

看看Apache的https開始的方式......它以root身份啓動足夠長的時間來抓取端口80/443,然後從此時開始以「apache」或「http」用戶身份運行。

相關問題