Linux でプロセスを開始し、特定のファイル/ディレクトリへのアクセスを制限することはできますか? 例えば:
$ start-process --enable-dir=./sandbox --exec="some-script.sh"
some-script.sh
の外では何もできません./sandbox
。
Linux でプロセスを開始し、特定のファイル/ディレクトリへのアクセスを制限することはできますか? 例えば:
$ start-process --enable-dir=./sandbox --exec="some-script.sh"
some-script.sh
の外では何もできません./sandbox
。
chroot
プロセスツリーのルートディレクトリを設定するために使用できます。ただし、これは、そのプロセスのすべての依存関係が新しいルートで使用可能である必要があることを意味します。
ニーズに合わせてchroot-environmentsをセットアップするのに役立つパッケージがいくつかあります。Googleはあなたの友達です;)
chroot環境の構築に関するいくつかの指針
一部のプログラムまたはデーモンのchrootを構築するときは、chrootするプログラムの完全な環境が必要です。これは、ディレクトリに最小限のシステムを提供する必要があることを意味します。これには次のものが含まれる可能性があります。
ldd
またはを使用して共有ライブラリの依存関係を確認する必要がありますobjdump
。表示されるすべてのライブラリは、プライベートルートディレクトリにある必要があります。この手順は、必要な実行可能ファイルとライブラリごとに数回繰り返される場合があります。を使用して実行時に明示的にリンクされている一部のライブラリは、個別dlopen
にチェックする必要があることに注意してください。/dev
/etc
ます。そこで必要なファイルは次のとおりです。
mtab
含有/
。group
(ここでも、システムグループファイルではありません)。どこかから始めなければならないので、プログラムの前提条件から始めるのが最善です。詳細については、ドキュメントを参照してください。
通常はchroot
、ディレクトリとそのサブディレクトリにのみアクセスし、いくつかの定義済みコマンドのみを実行できるように、プロセスを実行する必要があります。
chrootする方法を参照してください。