vsftpd でシンボリックリンクを辿れるようにする

SERVER


アップロード先のディレクトリーにシンボリックリンクを設定する

vsftpd を利用して FTP サーバーを運用する場合、基本的にはシンボリックリンクを設置して、ディレクトリーの別の階層を辿らせることができる様子です。

ただ、EZ-NET: vsftpd で特定のアカウントに chroot を設定する で記したときなどのように、chroot 環境で FTP アクセスしているような場合には、シンボリックリンクが正しく機能してくれない可能性が出てきます。

もっともこれは chroot の特徴が活かされた証でもあって、特定のディレクトリーがあたかもルート ( / ) として扱われる都合、シンボリックリンクが指し示すディレクトリーが、そこを上限とした階層で判断されることが影響している様子です。こうやって、chroot によってそれよりも上のディレクトリーを見えなくなることで、システムの安全が図られています。

そのため、シンボリックリンクを本来の環境としての適切なディレクトリーへ導くためには、vsftpd 全体または特定のアカウントに対して chroot を解除してあげる必要があると思います。

 

たとえば /etc/vsftpd/vsftpd.conf 内で "chroot_local_user=NO" にして特定のアカウントにだけ chroot を適用している場合には、chroot_list_file の内容から、シンボリックリンクを使う必要のあるアカウントを消去します。逆に全てのユーザーに chroot を適用している場合には、chroot_list_file にアカウント名を追加することで、そのアカウントに対する chroot を無効化することができるようになっています。

もちろん、chroot を無効化されたアカウントでは権限がある限りルートディレクトリーから任意のディレクトリーを辿れるので、安全面での注意は必要ですが、ともあれこのようにすることで、シンボリックリンクも正しく辿ることができるようになります。

セキュリティーの面を考慮して、chroot を解いてシンボリックリンクを許すべきかどうかを天秤にかけて判断すると良いでしょう。