web-dev-qa-db-ja.com

CentOSでのNGINXの適切なログ権限は何ですか?

on / var/log/nginx /アクセスログとエラーログがあります。 。logエラーがあるものと、。gzがあるものがあります。

私は許可をめちゃくちゃにしたと思います。一部のファイルはroot/rootによって作成され、他のファイルはnginx.confで構成されたユーザーを使用して作成されます。

  • どのユーザー/グループがこれらのファイルを作成する必要がありますか?なぜ?それは根になることができますか?新しい.logファイルがrootによって作成されていることがわかりますが、それが正しい方法かどうかはわかりません。
  • また、それらのファイルを作成したユーザーを誰に変更するかを尋ねたいのですが?
4
Pikk

/ var/log/nginx /にあるファイルでは、ルールは(少なくとも私の経験では)時間とともに変化しました。まだデータがなければ、私は決定的な提案をするのは快適ではありません。でもやってみます。

NGINX自体は「ルート」として実行されますNGINXプロセスは/etc/nginx/nginx.confで指定されたユーザーとして実行されます。これは通常「www-data」です(ハングアップして読み続けます)

このコマンドを使用して、NGINXの実行方法を確認できます。

ps -eo "%U %G %a" | grep nginx

出力は次のようになります。

root     root     nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

www-data www-data nginx: worker process

あなたが言わなかったことは、なぜあなたがこの質問をしているのかということです。仮に、ELSECスタックでOSSECを実行しているとしましょう。また、Ubuntu 16.04を使用している場合、2番目の問題は、プロセスがファイルの読み取りと書き込みを行えることです。 logrotateを使用している場合は、logrotateファイルを編集し、ログフォルダーのアクセス許可を変更する必要があります。

手順1-logrotateでnginxファイルを更新します。

nano /etc/logrotate.d/nginx

そのファイルでは、nginxとubuntuの最近のバージョンで、所有権の行を次のように変更すると機能することがわかりました。これは/ etc/logrotate/nginxのファイルにあり、ファイルがローテーションされるときにファイルのアクセス権を設定します。

create 0640 nginx nginx

または代わりに:

create 0640 www-data www-data

ただし、実際にはnginx:nginxはより一貫して機能しており、nginx Webプロセスにログファイルへのアクセス許可を与えることと、ログファイルをrootに設定することのバランスです。

続行するには、レガシーログファイル(たとえば、logstashによって読み取られる)の場合、アクセス許可をリセットすることをお勧めします(ほとんどの人が実際には使用していないことがわかっているデフォルトのファイルの場所を想定しています)。

chmod nginx:nginx /var/log/nginx/*

または(再び)または

chown www-data:www-data /var/log/nginx/*

うまくいけば、これが役立ちます。ログに関しては、nginxの適切な権限に関するデータが混乱を招くだけであることがわかりました。これは、AMAZINGソフトウェアの進化によるものです。そして、私は私の返信についてフィードバックを提供することをもっと知っている他の人を歓迎します。

4
eschipul

提供された情報で理解できる限り:

  1. サーバーのログファイルはlogrotateデーモンによって管理されています(ログのアーカイブエンジンとして参照)

  2. これは、いくつかのファイルが.tar.gz形式で表示される理由を説明しています

  3. 私はそれらのファイルが所有者rootとして持っているものであるに違いない(詳細はここをチェック http://linuxcommand.org/man_pages/logrotate8.html )。これは、ログローテーションプロセスに指定されたユーザーによって異なります。

  4. その他のファイルは、それらに対するrw権限を持つnginxが所有しています

その場合は、すべてが大丈夫です

0