私は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
私はこの時点で問題が何であるかを完全に失いました。どんなガイダンスでも大歓迎です。
私は許可をいじり続けたので、これらは少し違うかもしれませんが、要求された出力の下を見つけてください。 「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
ありがとう。
Muruの助けを借りて、ほとんどそこにいたと思います。ツリー内のすべてのフォルダーは、www-dataによって実行可能である必要があります。 quotrフォルダーはアプリグループが所有し、www-dataはアプリグループ内にあるため、他のグループではなくグループにexecを与える方が良いでしょう:
chmod g+x quotr
副次的な提案として...私はwww-dataとしてnginxでいくつかのウェブサイトを構築しました。私にとってうまくいったのは、www-dataがすべてをユーザーとグループとして所有できるようにすることです。次に、ユーザーとwww-dataグループへのアクセスが必要な人を追加します。