2012-02-03 20 views
2

私は通常、ユーザが実行するが、特権TCPポート(502 - Modbus TCP)にバインドする必要があるサーバタイプのアプリケーションを書いています。ポート番号は業界標準で、私のアプリはシミュレータなので、ほとんどのデバイスはこのポート番号用にあらかじめプログラムされており、変更することはできませんので、1024以上に変更することはできません。特権を持たないアプリケーションをMac OS Xの特権ポートにバインドできますか?

"ルートEUIDセキュリティポリシー"は、ルート以外の誰かによるアクセスからポート502を保護します(Authentication, Authorization, and Permissions Guide参照)。したがって、ポート< 1024を使用すると、CFSocketSetAddressの呼び出しが失敗します。

明白なセキュリティ上の理由から、シミュレータアプリケーションをルートとして実行しないようにしようとしています。 サンドボックスはこの問題を克服するかもしれませんが、私は10.7 Lionでのみ利用可能であることを理解しており、10.6 SLで作業する必要があります。

誰かがこのインスタンスのポートアクセスのための「ベストプラクティス」と考えられていることを指摘してください。

多くのおかげ

PS:私はAppleのBetter Authorization Sampleを見てきましたが、それは5歳のlaunchdによって実行特権ヘルパーツールを含むビット面倒です。プロセスとしてルートを実行する必要がない、より良い解決策があることを願っています。

答えて

0

ipfwでこれを行うことができます。詳細についてはhere、詳細についてはman ipfwをお試しください。

+0

申し訳ありませんが、私の初期の質問は、私がコカアプリケーションを作成していることを明らかにしておらず、アプリケーション内からポートにバインドする必要があります。私はこれを反映するために私の元の質問を編集しました。 – helioz

-1

Apacheのhttpsの開始方法を見てください...ポート80/443を取得するのに十分な長さでrootとして起動し、その後 'apache'または 'http'ユーザとして実行されます。

関連する問題