Debianでnginxとphp-fpmを使用して共有ホスティングサーバーを実行しています。
すべてが正常に機能します。php-fpmには、個別のユーザーとして実行されているユーザーごとに個別のプールがあり、それぞれに独自のソックスがあります。
ただし、ユーザーごとに個別のnginxプロセスを設定したくないため、Nginxはwww-dataとして実行されています。
これは、nginxがユーザーデータにアクセスできるようにするには、/ homeの権限がdrwxr-x--xである必要があることを意味します。問題は、すべてのユーザーが他のユーザーのファイルにアクセスできることです。
他のユーザーにアクセスを許可せずに、ユーザーファイルへのnginxアクセスを許可する最良の方法は何でしょうか。ルートとしてnginxを実行することはオプションではありません。しかし、AppArmorは役に立ちますか?
私はこれにACLを使用することを好みます。例えば:
setfacl -R -m user:www-data:rx,d:user:www-data:rx /home
www-data
ユーザーに/home
の下のファイルの読み取りとディレクトリのトラバースへのアクセスを許可し、後で作成される新しいファイルまたはディレクトリに同じACLを適用します。
適用されると、ユーザーのホームディレクトリはワールド実行可能である必要がなくなり(例:chmod o= /home/$USER
)、ユーザーはお互いのファイルを読み取ることができなくなりますが、nginxは読み取ることができます。
一部のディレクトリをWebサーバーで書き込み可能にする必要がある場合は、権限rx
の両方のインスタンスをrwx
に変更することで、ケースバイケースでそれらを設定できることに注意してください。例えば:
setfacl -R -m user:www-data:rwx,d:user:www-data:rwx /home/user/public_html/wp-content/{cache,uploads}