私は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フォルダーを次のように表示できます。
しかし、それを開こうとすると、次のようになります。
私は何を間違っていますか?
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/www
(mount
についてはドキュメントを確認してください)など)。これは、chrootで期待どおりに機能するはずです。 sshd_configファイルを変更して、その特定のユーザーをchrootから除外することもできます(ただし、これもセキュリティに影響します)。
最初にバインドマウントを試します。
私が作成したシンボリックリンクのリンクを解除することで解決しました
root@server:/home/username# mkdir www
root@server:/home/username# mount --bind /home/username/www /var/www
(すべてを失ったとしても、/ var/wwwにありましたが、気にしません)
皆さんありがとう!