web-dev-qa-db-ja.com

sftp上のシンボリックリンクとfilezilla

私はdebianにかなり慣れていないので、サーバーをセットアップしようとしています。

私は自分のフォルダー/home/username(およびそのサブディレクトリー)にのみアクセスできるユーザーを作成しました。

次に、設定したWebサーバーにそのユーザーを使用したいと思います。/var/wwwへのアクセスを許可しましたが、sftpで/var/wwwを表示できず、次のようなシンボリックリンクを作成しました。

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

これで、filezillaを使用して、wwwフォルダーを次のように表示できます。

Filezilla

しかし、それを開こうとすると、次のようになります。

Open

私は何を間違っていますか?

15
Doc

SFTPがchrootされている可能性があるため、chroot監獄のユーザーは/ var/wwwディレクトリを使用できません。

/etc/ssh/sshd_configを調べて、sftpディレクティブを調べます。あなたは次のようなものを見ますか?

Match group sftp
  ChrootDirectory /home/%u
  AllowTcpForwarding no
  ForceCommand internal-sftp

Sshd_configのmanページは here です。

基本的に、ユーザーがSFTPの/home/usernameに入ると、そのディレクトリは/になり、/home/usernameの外部の参照は使用できなくなります。実際、ln -s /var/www /home/username/wwwのようなシンボリックリンクは、/home/username/var/wwwに到達しようとしているように見えます(つまり、/home/username/になりました。そのため、/var/wwwを参照するリンクはすべてまた、chrootのコンテキストでは/home/usernameのサブディレクトリである必要があります)。

解決策として、chrootをオフにすることができます(ただし、これには、主にSFTPユーザーがファイルシステムを完全に制御している場合に、他のセキュリティ上の影響があります)。/var/wwwを/ home/username/wwwにループマウントできます(mount --bind /var/www /home/username/wwwmountについてはドキュメントを確認してください)など)。これは、chrootで期待どおりに機能するはずです。 sshd_configファイルを変更して、その特定のユーザーをchrootから除外することもできます(ただし、これもセキュリティに影響します)。

最初にバインドマウントを試します。

22
cjc

私が作成したシンボリックリンクのリンクを解除することで解決しました

root@server:/home/username# mkdir www
root@server:/home/username# mount --bind /home/username/www /var/www

(すべてを失ったとしても、/ var/wwwにありましたが、気にしません)

皆さんありがとう!

0
Doc