共有ホスティング: ユーザーが他のユーザーのファイルを閲覧できないようにしながら、Apache/PHP で書き込み可能なファイルを維持する方法

共有ホスティング: ユーザーが他のユーザーのファイルを閲覧できないようにしながら、Apache/PHP で書き込み可能なファイルを維持する方法

読みましたLinux ウェブサーバー上のウェブサイトのファイル/フォルダーにはどのような権限が必要ですか?そしてここに関連する質問があります。例えば、

  • /var/www/bobweb/所有者はbob:bob

  • /var/www/eveweb/所有者はeve:eve

各サイトにはApache VirtualHostがあり、bobweb.comそしてウェブ

各 Web サイトは Apache によって書き込み可能である必要があります (両方の Web サイトに画像アップローダーがあります)。そのため、私はよく次のように読みます。

chgrp -R www-data /var/www/bobweb/イブと同じように、ただやるだけよ!」

これは与える:

drwxrwx---  3 bob    www-data 4096 Jan  9 17:45 bobweb
drwxrwx---  5 eve    www-data 4096 Feb 26  2019 eveweb

これにより、Bob がシェル/SSH から Eve のファイルにアクセスできなくなり、その逆も同様になります。

しかしEve は PHP スクリプト ( によって実行されるwww-data) を記述して読み取り (または変更) することができたようです/var/www/bobweb/wp-config.php(つまり Bob の DB パスワードを盗むことができたのです)。

質問: Bob が Eve のファイルを読み取れないように、またその逆もできないように、ユーザー + グループの所有権と権限を変更しながら、Apache + PHP がこれらの Web サイトにデータを書き込めるようにするにはどうすればよいでしょうか。

(典型的な共有ホスティングの状況)

答え1

これはファイル権限だけでは完全には実行できません。jail を作成するには、実行しているアプリケーションを確認する必要があります。PHP の場合は、"オープンベースディレクトリ「仮想ホストごとに」

FTP サーバーでも同様のことが必要になります (どのサーバーを使用しているかは指定していませんが、多くの/ほとんどのサーバーには適切なディレクティブがあります)。

もちろん、CGI を許可すると、問題領域全体が変わります。

関連情報