web-dev-qa-db-ja.com

SFTP:投獄された(chrootされた)ディレクトリにシンボリックリンクをファイルする

信頼できる数人の人がいくつかのファイルにアクセス/編集/作成できるようにsftpを設定しようとしています。ユーザーをホームディレクトリ(/ home/name)に投獄しましたが、問題が発生しました。また、ゲームサーバー、ウェブホストなどでもあるため、VPSの他の部分にもアクセスできるようにしたいと思います。また、jailされたディレクトリの外部にあるファイルを完全に制御できるようにしたいです。

目的のディレクトリへのシンボリックリンク(ln -s)を作成しようとしましたが、期待どおりに機能しません。アクセスを許可したいファイルを(cp -rl)試してみましたが、動作しました-ディレクトリ内のファイルを編集でき、刑務所の外に保存されているファイルを変更します。ただし、新しいファイルを作成することはできません(ファイルは作成できますが、刑務所の外では更新されません)。私はおそらくこれを「正しい方法」で行っていないことを知っていますが、私がやりたいことを行うにはどうすればよいですか?

24
dukevin

シンボリックリンクは純粋にシンボリックです。シンボリックリンクを開くと、OSはパスを読み取り、代わりにパスを使用します。 chroot環境では、リンク(特に絶対パスを持つリンク)は通常、通常の環境で指定したのと同じ場所を指していません。

サーバーのOSがLinuxの場合、最善の策は、chrootディレクトリ内のどこかにディレクトリ全体をバインドマウントすることです。これを使用する場合、これはディレクトリのコピーではないことを覚えておくことが重要です。ここで削除されたものはすべて、他のディレクトリから削除されます(ユーザーがmvファイルまたはrm -rf)。これをする:

mount --bind /some/directory /somewhere/else

ディレクトリ内のファイルは実際のファイルである必要があります。ここのシンボリックリンクは、おそらく最初にファイルにリンクしようとしているのと同じ問題を抱えているでしょう。

42
DerfK