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


22

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

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

回答:


40

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

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

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

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


ご回答有難うございます。これをどのように動作させることができるかについてのチュートリアルを教えてください。ゲストのsshが無効になっているため、ゲストはsftpアクセスしかできません。このコマンドはどのファイルに入れますか?
デュークビン

あまりお勧めできませんが、ディレクトリハードリンクも作成できます。これは、すべてのファイルが同じデバイス上にある場合にのみ簡単になります。
ファルコンモモット

そのためのコマンドは何だ
dukevin

@KevinDukeこれはユーザーが自分でできることではなく、rootだけがmountこの方法を使用できます。そこにそれを指定する方法もあり/etc/fstab、それがブート時に自動的に行われますので、私は方法がわからないんだけど
DerfK

1
ありがとうございました。私はいくつかのチュートリアルを読み、それを理解しました。あなたの答えは本当に正しい方向に私を導くのに役立ちました。ありがとう!ノウハウをしたい人のために、これらは助け:aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/...の redbottledesign.com/...を
dukevin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.