web-dev-qa-db-ja.com

Nginxには同じ所有権を持つファイルにアクセスする権限がありません

archlinuxボックスにnginxをインストールしたところ、この問題が発生しました:

Nginxは"nginx"として実行するように構成されており、私が追加した新しいユーザー/グループは/etc/nginx/nginx.confにあります。

user nginx nginx;

ダブルチェックの場合:

$ ps aux | grep nginx
nginx     9678  0.0  0.5  28472  2856 ?        S    17:37   0:00 nginx: worker process
nginx     9679  0.0  0.5  28472  2856 ?        S    17:37   0:00 nginx: worker process
root     31912  0.0  0.6  28084  3364 ?        Ss   17:24   0:00 nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;

サーバーのルートは次の場所にあります。

    location / {
            root   /home/lamnk/sites/Host.com;
            index  index.html index.htm;
    }

そして、ファイルの所有者もnginxに設定されています。

$ ls -la /home/lamnk/sites/Host.com                                         
total 12
drwxr-xr-x 2 lamnk http  4096 Jan 12 09:37 .
drwxr-xr-x 3 lamnk users 4096 Jan 12 09:36 ..
-rw-r--r-- 1 nginx nginx   21 Jan 12 09:37 index.html

Host.comにアクセスすると、403 forbiddenエラーが発生しました。 error.log

2016/01/12 17:28:23 [error] 31914#0: *2 open() "/home/lamnk/sites/Host.com/index.html" failed (13: Permission denied), client: 171.233.242.40, server: Host.com, request: "GET /index.html HTTP/1.1", Host: "Host.com"

しかし、nginxを自分のユーザー名lamnkとして実行するように変更すると、nginxは他のファイルのアクセス許可を変更しなくても、コンテンツを正しく返すことができます。何が?

編集:親ディレクトリの権限:

$ namei -l /home/lamnk/sites/Host.com
f: /home/lamnk/sites/Host.com
drwxr-xr-x root  root  /
drwxr-xr-x root  root  home
drwx------ lamnk users lamnk
drwxr-xr-x lamnk users sites
drwxr-xr-x lamnk http  Host.com
5
Lamnk

Nginxユーザーは、ファイルシステムをトラバースして、サイトを配置したフォルダーに到達できません。ユーザーがフォルダーをトラバースできるようにするには、フォルダーに対する実行(+ x)​​権限が必要です。許可情報から、drwx------ lamnk users lmankは、ディレクトリの所有者のみがフォルダに対して読み取り、書き込み、および実行する権利を持っていることを示しています。したがって、nginxは、そのユーザーとして実行されない限り、そのフォルダーまたはそのサブフォルダーにアクセスできません。

自分以外のユーザーがフォルダを走査できるように、chmod og+x /home/lamnkを使用して/ home/lamnkに実行権限を付与する必要があります。読み取り権限がなければ、そのフォルダーの内容を一覧表示したり読み取ったりすることはできません。また、書き込み権限がないと、内容を変更することもできません。したがって、これにはセキュリティ上のリスクはありません。また、nginxユーザーなどの他のユーザーに表示されるホームディレクトリのサブフォルダが必要な場合に必要です。そのフォルダーに表示されるマスクはdrwx--x--xです。

11
Carcer