9

Linux でプロセスを開始し、特定のファイル/ディレクトリへのアクセスを制限することはできますか? 例えば:

$ start-process --enable-dir=./sandbox --exec="some-script.sh"

some-script.shの外では何もできません./sandbox

4

2 に答える 2

5

chrootプロセスツリーのルートディレクトリを設定するために使用できます。ただし、これは、そのプロセスのすべての依存関係が新しいルートで使用可能である必要があることを意味します。

ニーズに合わせてchroot-environmentsをセットアップするのに役立つパッケージがいくつかあります。Googleはあなたの友達です;)


chroot環境の構築に関するいくつかの指針

一部のプログラムまたはデーモンのchrootを構築するときは、chrootするプログラムの完全な環境が必要です。これは、ディレクトリに最小限のシステムを提供する必要があることを意味します。これには次のものが含まれる可能性があります。

  • シェルといくつかのシェルユーティリティ、またはbusyboxのバリアント。(これには、単一の静的実行可能ファイルをデプロイする予定がない場合は、次のステップも含まれます)。
  • Libcおよびその他の依存共有ライブラリ。
    • lddまたはを使用して共有ライブラリの依存関係を確認する必要がありますobjdump。表示されるすべてのライブラリは、プライベートルートディレクトリにある必要があります。この手順は、必要な実行可能ファイルとライブラリごとに数回繰り返される場合があります。を使用して実行時に明示的にリンクされている一部のライブラリは、個別dlopenにチェックする必要があることに注意してください。
  • 最小限のツリー をchrootする予定に応じて。/dev
    • デーモンプロセスをchrootする場合は、または/devなどの最小限のファイルが必要になる可能性があります。コマンドで作成できます。ドキュメント、およびどのデバイスにメジャー/マイナー番号が必要かについてのLinuxドキュメントを参照してくださいrandomzeromknodmknod
  • また、 chrootを計画しているものに応じて、最小限に抑えられ/etcます。そこで必要なファイルは次のとおりです。
    • 最小限のpasswdとshadow(システムのpasswd / shadowではありません)。
    • 最小限のmtab含有/
    • 最小限group(ここでも、システムグループファイルではありません)。

どこかから始めなければならないので、プログラムの前提条件から始めるのが最善です。詳細については、ドキュメントを参照してください。

于 2010-12-23T11:31:15.543 に答える
1

通常はchroot、ディレクトリとそのサブディレクトリにのみアクセスし、いくつかの定義済みコマンドのみを実行できるように、プロセスを実行する必要があります。

chrootする方法を参照してください。

于 2010-12-23T11:31:22.740 に答える