2

特定の作業ディレクトリ外のファイルへのアクセスを防止しようとしています。
私の最初の試みはchdirandchrootを使用することでしたchrootが、root ユーザーのみが使用できます。

他に可能性はありますか?別のことについて何か聞いたことがありますが、思い出せません。

おそらく、パスが作業ディレクトリまたは 2 番目の引数の外にあるかどうかを確認する単純な関数です。

プログラムに関する詳細:

  • Linuxで実行する必要があります
  • インタラクティブな要素のない単純なシェル プログラム
  • 作業ディレクトリであるディレクトリ引数を取ります

アドバイスをありがとう。

編集:
いくつかの調査の後、さまざまなアプローチを見つけましたが、それらのいずれも使用できません。

  • ピボットルート
  • set_fs_root (Linux カーネル)

それを使う可能性はありますか?

おそらく、特定のディレクトリに含まれるファイルを開く可能性があります。そのため、引数のファイル パスと検索する "ルート" パスを指定して関数を呼び出します。

4

2 に答える 2

1

制限されたシェルを調べることをお勧めします。cd一般的なシェルのほとんどには、 を無効にしたり、特定の環境変数の変更を防止したりする制限モードのオプションがあると思います。の場合pdksh、 になります/bin/ksh -r。ただし、オプションは他のシェルでは異なるため、該当するmanページを参照してください。

于 2012-07-05T14:01:43.453 に答える
1

Linux/MacOSX プラットフォームを使用していると仮定しています。いくつかの方法があります。1 つは、そのディレクトリを所有するプログラム用の特別なユーザーを作成することですが、システム内の他のものへの書き込み権限はありません*。もう 1 つのオプションは、SELinux のようなプログラムを使用して、プログラムに特定の操作のみを許可することですが、それはやり過ぎのように思えます。

*:ユーザーに常に読み取り権限を与える必要があります。への読み取りアクセスがないと、プログラムはどのように実行されglibcますか?

于 2012-07-05T13:43:34.093 に答える