LinuxコンピュータでC++でアプリケーションを開発中です。アプリケーションは、イーサネットアダプタとネットワークを使用するサードパーティのライブラリを使用します。ライブラリはGigE Visionカメラのライブラリです。起動時に、アプリケーションはカメラに接続しようとした後、カメラに関する情報を返します。その後、アプリケーションにビデオをストリーミングします。アプリケーションのネットワーク機能
しばらくすると、アプリケーションがカメラの情報をカメラに接続または取得できず、アプリケーションをroot(sudo)として実行すると問題が解決されます。
私は、ライブラリの供給元に連絡してきたし、彼らは私が次の操作を行う必要があることを示している:ルートが妥協としてのシステムのセキュリティは、次の実装は満足することが実行されていると感じ
ユーザー:
- 実行可能な所有者をrootとして設定します。
- アプリケーションの起動時には、すべてを解放するが、これらの権限能力セット()を使用する場合、コードで実行可能
- の「setuidさ」許可ビットを設定します。CAP_SYS_NICE、CAP_NET_ADMIN、CAP_NET_BROADCAST、CAP_NET_RAWアプリケーションはすべてroot権限で起動しますが、起動後すぐに削除されます。
これは動作しますが、実行可能ファイルを変更せずにこれを行う方法はありますか?私はそれらの特権にアクセスすることができるいくつかのグループに自分のユーザーを追加することを考えています。
上記の解決方法は、各コンパイル後に所有者を変更してアクセス許可を設定する必要があるという意味で最適ではありません。アプリケーションは、ビデオを記録し、画像をキャプチャするために使用されます。上記のソリューションでは、これらの記録とキャプチャはrootユーザーが所有し、ファイルを配布するときにユーザーを元に戻す必要があります。
OS:Ubuntu Linuxの11.10 環境:Qtの