私は通常、ユーザが実行するが、特権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によって実行特権ヘルパーツールを含むビット面倒です。プロセスとしてルートを実行する必要がない、より良い解決策があることを願っています。
申し訳ありませんが、私の初期の質問は、私がコカアプリケーションを作成していることを明らかにしておらず、アプリケーション内からポートにバインドする必要があります。私はこれを反映するために私の元の質問を編集しました。 – helioz