
信頼できる数人のユーザーが一部のファイルにアクセス/編集/作成できるように sftp を設定しようとしています。ユーザーをホーム ディレクトリ (/home/name) に jail しましたが、問題が発生しました。VPS はゲーム サーバーや Web ホストなどでもあるため、VPS の他の部分にもアクセスできるようにし、jail ディレクトリ外のファイルを完全に制御できるようにしたいと考えています。
目的のディレクトリへのシンボリックリンク (ln -s) を作成しようとしましたが、期待どおりに機能しません。アクセスを許可したいファイルへの (cp -rl) を試したところ、機能しました。ディレクトリ内のファイルを編集でき、jail 外に保存されているファイルを変更できます。ただし、新しいファイルを作成することはできません (作成はできますが、jail 外では更新されません)。おそらく「正しい方法」で実行していないことはわかっていますが、目的を達成するにはどうすればよいでしょうか。
答え1
シンボリックリンクは純粋にシンボリックです。シンボリックリンクにはパスしか含まれていないため、シンボリックリンクを開くと、OS はパスを読み取り、代わりにそれを使用します。chroot 環境では、リンク (特に絶対パスを含むリンク) は通常、通常の環境で指していた場所と同じ場所を指しません。
サーバー OS が Linux の場合、最善策は、chroot ディレクトリ内のどこかにディレクトリ全体をバインド マウントすることです。これを使用する場合、これはディレクトリのコピーではないことに注意してください。ここで削除されたものは、他のディレクトリから削除されます (ユーザーがmv
ファイルまたは を実行できる場合は重要ですrm -rf
)。これを行うには、次の手順を実行します。
mount --bind /some/directory /somewhere/else
ディレクトリ内のファイルは実際のファイルである必要があります。ここでのシンボリックリンクは、おそらく、最初にファイルにリンクしようとしたときと同じ問題を抱えることになります。