web-dev-qa-db-ja.com

サブディレクトリで拒否されたNginx権限のトラブルシューティング方法は?

私はFedora29サーバーに取り組んでいます。 SELinuxは強制モードです。ルートの下のサブディレクトリからNginxにドキュメントを提供させるのに問題があります。 Nginxログエントリは、アクセス許可を検査するときに表示される内容に関して正確ではないため、さらにトラブルシューティングする方法を知る必要があります。

http://172.16.2.1/のルートからドキュメントにアクセスすることは、index.htmlのように問題ありません。サブディレクトリhttp://172.16.2.1/ftc-data/内のドキュメントにアクセスすると、403になります。error.logは次のように表示されます。

2019/03/27 08:45:24 [error] 18589#0: *5 directory index of "/var/www/html/ftc-data/"
is forbidden, client: 172.16.4.8, server: _, request: "GET /ftc-data/ HTTP/1.1",
Host: "172.16.2.1"

/var/www/htmlの権限から、私には問題ないように見えます。

# ls -Al
total 64
...
-rw-r-----. 1 root nginx  7822 Mar 27 08:09 index.html
lrwxrwxrwx. 1 root nginx    22 Mar 27 07:57 ftc-data -> /var/ftc/ftc-data
...

そして再び/var/www/htmlから:

# ls -Al ftc-data/
total 98192
-rw-r-----. 1 root nginx 1411314 Mar 26 06:47 2019-01-28.csv
-rw-r-----. 1 root nginx 3105895 Mar 26 06:47 2019-01-29.csv
-rw-r-----. 1 root nginx 2782858 Mar 26 06:47 2019-01-30.csv
...

そして:

# ls -Al /var/ftc/
total 4
drwxr-x---. 2 root nginx 4096 Mar 27 07:16 ftc-data

symlinks offnginx.confに存在しません。サーバーはsystemctl restart nginxで再起動されました。また、restorecon -r /var/www/restorecon -r /var/ftc/を実行して、SELinuxラベルを修正しました。

次にどこを検索すればいいのか途方に暮れています。 0777は、Stack Overflowの開発者の間で人気がありますが、受け入れられる答えではありません。

権限の問題をさらにトラブルシューティングするにはどうすればよいですか?


重要な場合は、ファイルhttp://172.16.2.1/ftc-data/2019-01-28.csvをフェッチしようとすると次のようになります。

2019/03/27 09:02:39 [error] 18589#0: *13 open() "/var/www/html/ftc-data/2019-01-28.csv"
failed (13: Permission denied), client: 172.16.4.8, server: _, request: "GET /ftc-data/2019-01-28.csv HTTP/1.1",
Host: "172.16.2.1"

そして:

# namei -l /var/ftc/
f: /var/ftc/
dr-xr-xr-x root root  /
drwxr-xr-x root root  var
drwxr-xr-x root nginx ftc

# namei -l /var/www/
f: /var/www/
dr-xr-xr-x root root  /
drwxr-xr-x root root  var
drwxr-x--- root nginx www

許可の問題はないと確信しています。他の何かが間違っています。

2
user56041

あなたが言ったように、これはおそらくSELinux構成に関連しています。 this answerで提案されているように、問題を修正するには次のコマンドを実行してください。

chcon -R -t httpd_sys_content_t /var/ftc/

# ls -Zd /var/www/html/ /var/ftc/
              unconfined_u:object_r:var_t:s0 /var/ftc/
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

# chcon -R -t httpd_sys_content_t /var/ftc/

# ls -Zd /var/www/html/ /var/ftc/
unconfined_u:object_r:httpd_sys_content_t:s0 /var/ftc/
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/
1
rush