Можно ли привязать непривилегированное приложение к привилегированному порту в Mac OS X? - PullRequest
2 голосов
/ 03 февраля 2012

Я пишу приложение типа сервера, которое обычно запускается пользователем, но требует привязки к привилегированному порту TCP (502 - Modbus TCP). Номер порта является отраслевым стандартом, а мое приложение представляет собой симулятор, поэтому я не могу изменить его на> 1024, так как большинство устройств запрограммированы на этот номер порта и не могут быть изменены.

«Политика безопасности Root EUID» защищает порт 502 от доступа кого-либо, кроме root (см. Руководство по аутентификации, авторизации и разрешениям ). Поэтому вызов CFSocketSetAddress завершается неудачно при использовании портов <1024. </p>

Я пытаюсь избежать запуска моего приложения-симулятора в качестве пользователя root по очевидным причинам безопасности. Песочница может решить эту проблему, но я понимаю, что она доступна только в 10.7 Lion, и мне нужно работать в 10.6 SL.

Может ли кто-нибудь указать, что в данном случае считается «наилучшей практикой» для доступа к портам, и, возможно, некоторые ссылки на примеры и дальнейшее чтение.

Большое спасибо

PS: Я видел образец лучшей авторизации Apple , но ему 5 лет, и он немного громоздкий, включая привилегированный вспомогательный инструмент, запускаемый launchd. Я надеюсь, что есть лучшее решение, которое не включает запуск процесса от имени пользователя root.

Ответы [ 2 ]

0 голосов
/ 13 марта 2014

Посмотрите, как запускается https в Apache ... он запускается как root достаточно долго, чтобы захватить порт 80/443, а затем с этого момента запускается как пользователь 'apache' или 'http'.

0 голосов
/ 03 февраля 2012

Вы можете сделать это с помощью ipfw; попробуйте здесь , чтобы узнать об этом, и man ipfw для более подробной информации.

...