
/etc/hostname ファイルにアクセスするアプリケーションがあります。このアプリケーションは、マシンごとに 1 つのインスタンスを実行することを目的としています。ただし、デバッグの目的で、同じマシンで複数のインスタンスを実行しています。
したがって、異なるパスでそれらのファイルを探すためにコードを手動で変更する必要なく、それぞれに異なる /etc/hostname (およびおそらく他のファイル) を用意したいと思います。
アプリケーションはワイヤレス インターフェイスを介して生のソケットを活用しているため、各インスタンスをコンテナー内で実行することは実現可能なオプションではありません (コンテナーへのインターフェイスに直接アクセスすることは可能ですか?)
私は、同じ実際のファイルにアクセスするときに、アプリケーションの各インスタンスを「だまして」異なるファイルにアクセスするふりをしただけです。
これどうやってするの?
答え1
これは次のように行うことができますfirejail
。
Firejail は、Linux 名前空間と seccomp-bpf を使用して信頼できないアプリケーションの実行環境を制限することで、セキュリティ侵害のリスクを軽減する SUID プログラムです。これにより、プロセスとそのすべての子孫は、ネットワーク スタック、プロセス テーブル、マウント テーブルなどのグローバルに共有されるカーネル リソースの独自のプライベート ビューを持つことができます。
例:
# cat /etc/hostname
myhost
# firejail --noprofile --quiet --writable-etc --bind=/etc/timezone,/etc/hostname cat /etc/hostname
Europe/Warsaw
アプリケーションの複数のインスタンスを簡単に実行できるように、いくつかのプロファイルを定義する必要があるでしょう。 調査man 1 firejail
してman 5 firejail-profile
。