私はネットワークスクリプト用のユニットテストを設定しようとしています。単体テストは非ルートユーザー(通常は "jenkins")によって実行されるため、ネットワークから送信されているパケットをテストするためにジェンキンが使用できるネットワークインターフェイスを設定できるようにしたいスクリプト。私がテストしているプログラムは、ネットワークインターフェイスを "無差別"モードで使用し、最終的にはrootユーザーの下でLinuxサービスとして実行されます。しかし、rootログインや対話型入力を必要とせずに、機能ユニットをテストしたいと思っています.Jenkins "user"は、システム上の対話型ユーザーではありません。sudoを使わずにLinuxタップインターフェースにデータを送信
私はセットアップすることができ、次のようにタップインタフェース(CentOSの7.xのを):
sudo ip tuntap add tap0 mode tap user jenkins
sudo ifconfig tap0 promisc up
これは私がifconfig
を使用して見ることができるインタフェースを起動しますが、それは「RUNNING」されていません。
予想通り私のプログラムが動作しているので、私は、sudo XXXX
を使用して私のプログラムを実行することによって、それにデータを送信することができます。しかし、私がjenkinsアカウントを通じてプログラムを実行すると、パケットは通過しません - 私は一時的にjenkinsユーザーアカウントを "インタラクティブ"にしてこれを試すことができます。私はWiresharkを使用して、このインターフェイスのスループットを表示しています。
私は自分のユーザーアカウントを使用して、これを試みたが、他のアカウントが、唯一のrootアカウントの作品ました。
私は(プライベート、ユーザー所有の)ネットワーク・インタフェースを利用するためにroot以外のユーザーを許可するために使用できるいくつかのコマンドラインからの呼び出しがあると感じるが、私は何も見つけることができません。
I はおそらくsudo
および/またはSUIDを使用してシステムを出て仕事ができる(chmod 4755 XXX
)ユニットテストは、root権限で実行できるようになる権限が、私がすることなく、自動テストを実行することができるはずと思われますこのやや曲がりくねったプロセスを経る。
私はユーザーアカウントからタップインターフェイスをどのように利用できるのか誰かが知っていますか?
注:私のプログラムは最終的にlibpcap
のpcap_inject
を使用して、パケットをインターフェイスに注入します。誰かが異なるプログラム的な解決策を知っていれば、それがこの問題に取り組む別の方法です。
また、実際のネットワークインターフェイスに非ルートユーザーとしてパケットを注入することもできますが、実際のネットワーク上にパケット(誤っている可能性があります)を緩和することはやや危険です。ユーザーが実際のインターフェースを利用することはできますが、テストのために「タップ」インターフェースを使用することはできません。
スタックオーバーフローは、プログラミングおよび開発の質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 – jww
私はプログラムを開発しようとしていますが、そのプログラムの単体テストを実行していますが、特に管理タスクに関連性があるかもしれません。これらのボードの1つに質問を転送する方法はありますか?私は彼らが同じシステムによって運営されていることを理解しています。 – user1738833