web-dev-qa-db-ja.com

「方向」を統計できません。許可が設定されている場合、許可が拒否されました

私はLinuxの初心者です。ユーザーアカウントでパブリックフォルダーにアクセスしようとしているWebサーバーがあります。

問題

アプリケーション共有パブリックフォルダー内のメンテナンスページにアクセスしようとするnginxサーバーを実行していますが、アクセス許可拒否エラーを受け取ります。

基礎

  • アプリケーションユーザー:quotrおよびプライマリグループ:app
  • ウェブサーバーユーザー:ubuntuおよびプライマリグループ:www-data
  • アプリケーションのホーム:/home/quotr/app
  • アプリケーション共有パブリックフォルダー:/home/quotr/app/shared
  • メンテナンスファイルの絶対パス:/home/quotr/app/shared/public/system/maintenance.html

グループ:

最初にwww-dataグループをappグループに追加したのは、問題を修正するためです。それがうまくいかなかったとき、私はグループを逆に追加しました。

www-data:x:33:Apache,quotr
ubuntu:x:1000:
app:x:1001:quotr,ubuntu,www-data

所有権

アプリケーションツリー全体の所有権はquotr:appに属します。許可の問題を受け取り始めたとき、メンテナンスページ(public/system/maintenance.html)へのパスの/home/quotr/app/shared/public/system/maintenance.html部分の所有権をquotr:www-dataに変更しました。

許可

/var/www/quotr-publicから始めて、下に向かって進みます。

# ls -la
drwxr-xr-x 4 quotr www-data 4096 Mar  3 21:49 .
drwxr-xr-x 5 quotr www-data 4096 Mar  3 21:49 ..
drwxr-xr-x 5 quotr www-data 4096 Mar  4 16:00 assets
drwxr-xr-x 3 quotr www-data 4096 Mar  4 19:03 system

# cd to system ls -la
drwxr-xr-x 3 quotr www-data 4096 Mar  4 19:03 .
drwxr-xr-x 4 quotr www-data 4096 Mar  3 21:49 ..
-rwxr-x--- 1 quotr www-data 3004 Mar  4 19:03 maintenance.html
drwxr-xr-x 3 quotr www-data 4096 Mar  3 21:51 pictures

テスト中

次のコマンドを使用して権限をテストしています。

Sudo -u www-data stat /home/quotr/app/shared/public/

その結果、許可が拒否されます。

最後の溝

最後の溝の試みとして、私は次のシンボリックリンクを作成しました:

quotr-public -> /home/quotr/app/shared/public/

私は次を正常に実行できますが、それ以上深くはできません:

Sudo -u www-data stat /var/www/quotr-public

私はこの時点で問題が何であるかを完全に失いました。どんなガイダンスでも大歓迎です。

編集1

私は許可をいじり続けたので、これらは少し違うかもしれませんが、要求された出力の下を見つけてください。 「namei -lx /home/quotr/app/shared/public/system/maintenance.html」の出力

Drwxr-xr-x root  root     /
drwxr-xr-x root  root     home
drwx------ quotr app      quotr
drwxr-xr-x quotr app      app
drwxr-xr-x quotr www-data shared
drwxr-xr-x quotr www-data public
drwxr-xr-x quotr www-data system
-rw-r--r-- quotr app      maintenance.html

「namei -lx /var/www/quotr-public/system/maintenance.html」の出力

Drwxr-xr-x root   root     /
drwxr-xr-x root   root     var
drwxrwsr-x root   www-data www
lrwxrwxrwx ubuntu www-data quotr-public -> /home/quotr/app/shared/public/
Drwxr-xr-x root   root       /
drwxr-xr-x root   root       home
drwx------ quotr  app        quotr
drwxr-xr-x quotr  app        app
drwxr-xr-x quotr  www-data   shared
drwxr-xr-x quotr  www-data   public
drwxr-xr-x quotr  www-data system
-rw-r--r-- quotr  app      maintenance.html

ありがとう。

2
gwnp

Muruの助けを借りて、ほとんどそこにいたと思います。ツリー内のすべてのフォルダーは、www-dataによって実行可能である必要があります。 quotrフォルダーはアプリグループが所有し、www-dataはアプリグループ内にあるため、他のグループではなくグループにexecを与える方が良いでしょう:

chmod g+x quotr

副次的な提案として...私はwww-dataとしてnginxでいくつかのウェブサイトを構築しました。私にとってうまくいったのは、www-dataがすべてをユーザーとグループとして所有できるようにすることです。次に、ユーザーとwww-dataグループへのアクセスが必要な人を追加します。

0
Paul Brackin