6

Linux マシンのユーザー モード [非ルート] で、 を使用してソケットをバインドしようとしていioctl(iInterfaceSocket, SIOCSIFADDR, &stCommand)ます。私は得てerror 13 -> Permission denied because of user modeいます。ユーザーモードからカーネルモードに変更すると、すべて正常に動作します。

ユーザーモードでのみソケットをバインドする必要があります。上記の問題を説明しながら解決策を提案してください。情報を見逃した場合はお知らせください。詳細情報を提供します。

4

1 に答える 1

8

root でない限り、インターフェイス アドレスを設定することはできません (技術的には、持っていない限りCAP_NET_ADMIN)。devinet.cを参照してください。

解決策は、root として実行することです。その解決策をどのように実装するか、プログラム全体を SUID にするか、ユーザーにsudoまたはgksudo経由で実行するように依頼するか、またはプログラムを 2 つの部分 (ルートと非ルート) に分解するかどうか、その選択はあなた次第です。

于 2011-05-03T15:43:45.100 に答える