Bashで特定のディレクトリツリーにユーザーをロックできますか?

Bashで特定のディレクトリツリーにユーザーをロックできますか?

ユーザーを特定のディレクトリツリーにロックしたいと思います。つまり、彼/彼女は木に深く入ることができますが、木のより高い部分を離れることはできません。環境の他のすべてはまったく同じでなければなりません。

編集:chrootなしでこれを行うにはどうすればよいですか? Objective-C では bash を起動し、端末に似たアプリケーションを作成できます。ユーザーが /usr/include およびシステム内の他のすべての場所にアクセスできる必要があり、ディレクトリ構造にロックされている必要があります。 chrootを実行するにはroot権限が必要なようです。制限モードでbashを実行するには制限があります。

答え1

はいchroot何をお探しですか?

答え2

何を達成したいですか?

ユーザーを保護したい場合は、次のようになります。安全cd問題は、どのディレクトリに入るかを減らすことがどんな利益になるか想像できないことです。仮想マシン(非常に安全です)またはchroot Jail(非常に安全ではありません)を試してみてください。

自分を保護するには、次のように簡単に書き直すことができますcd.bashrc

cd() {
    builtin cd "$@"
    if [[ ! "$(pwd)" =~ ^$HOME ]]
    then
        echo "Escape is futile"
        builtin cd - >/dev/null
    fi
}

答え3

カーネルの助けがなければ、ディレクトリ内のユーザーを完全に制限することはできません。 strace / ktraceを正しく実装するのは複雑で、ユーザーエクスペリエンスを悪夢にする可能性があるため、使用が制限されます。

FreeBSDを使用している場合は、刑務所のサブシステムを見てください。実際には非常に効率的です。そうでなく、ユーザーが以下を介してログインしている場合は、chrootユーザーが必要です。

関連情報