特定のファイルが特定のディレクトリ内にあることを確認する必要があります (レベル数は関係ありません)。
視覚化するには:
A/ + file
また
A/ + x/x/x/..../file
レベル数に関係なく、A 未満である必要があります。
ファイル パス (プラス記号の後ろ) は、ユーザーによってプログラムに与えられます。
問題は、chroot を使用できないことです。これは、プログラムが A (B としましょう) の外にあるいくつかのフォルダーにもアクセスする必要があるためですが、ユーザー (ソケット インターフェイスを介して接続されている) は、A/ + ../B/file
これは内側の内側のループで行われるため、適切に実行する必要があります。「/」を数え、「..」の数を抽出し、「/./」の数を抽出して>= 1を比較することを考えましたが、入力がユーザー。
私が知らない、または他の方法でこれをチェックする機能はありますか?
編集:
chroot した後でもフォルダーBへのアクセスを許可する方法があれば (私の記憶が正しければ、chroot 後もファイル ハンドルが残ります。そのフォルダー バージョンが必要です)、それも問題ありません。必要なのはBにアクセスし、chroot 後にファイルを作成/読み取り/書き込みすることだけです。
EDIT2:
ちなみに、UID などを使用してこれを行う方法は知っていますが、別の方法が必要です。