Nginxがアセットを読み込んで提供するには、私のアプリケーションディレクトリ「assets」のフルパスに対して同じ権限が必要です。

Nginxがアセットを読み込んで提供するには、私のアプリケーションディレクトリ「assets」のフルパスに対して同じ権限が必要です。

私のフォルダにWebアプリケーションがあります。

  /home/main_user/dir1/dir2/my_web_app/

そこには実行可能ファイルとフォルダアセットがあります。

Nginxは次のように設定されます。資産のみを提供します。

  location ~ ^/assets/(images|css|js| [.........])/(.*) {
    alias /home/main_user/dir1/dir2/my_web_app/assets/$1/$2;
    autoindex off;
  }

Nginxはユーザー「http」として実行されます。

nginxが「assets」フォルダで権限拒否エラーを受けていることがわかりました。 「assets」ディレクトリの所有者を「http」に変更して755を与えても

エラーを修正するには、「o + x」権限を付与する必要があります。道に沿ってルートディレクトリの「assets」フォルダに移動します。「アセット」フォルダだけでなく

つまり、次の操作を行うには "o+x" を呼び出す必要があります。

   /home
   /home/main_user/
   /home/main_user/dir1/

など.....

少なくとも誰もが/home/main_userにあるすべてのファイルを実行できるので、これは私にとって間違っているようです。ただし、「assets」ディレクトリに対してのみこれを行うと機能しません。

より良い方法や推奨される方法はありますか?

ベストアンサー1

ディレクトリに対する権限の場合、実行ビットは実際には「そのディレクトリに含まれるファイルとディレクトリへのアクセスを許可する」を意味します(一方、読み取りビットはディレクトリの内容を一覧表示できます)。したがって、あなたは正しいです。 http ユーザーは少なくともxディレクトリチェーン全体に対する権限が必要です。

つまり、すべてのユーザーにこのアクセス権を付与する必要はありません。 ACLを使用すると、httpユーザーにのみアクセスを許可できます。setfacl(1)詳細についてはを参照してください。setfacl -m u:http:x /homeはじめに(およびその他の中間ディレクトリ)を参照してください。

個々のユーザーにアクセス権を付与するもう1つの方法は、ファイル所有グループをそのファイルにアクセスできるすべてのユーザーのみを含むグループに設定し、それに応じてグループ権限を設定することです。このアプローチの1つの問題は、通常、多数のグループを作成できることです。もう 1 つの理由は、このアプローチが 2 人が書き込み可能で、一部のグループが読み取ることができ、他のグループがアクセスできないファイルと互換性がないためです。これが私たちがACLを使用する理由です。

おすすめ記事