Nginx error_log と access_log の所有者とグループを変更できません
nginx の error_log と access_log の所有者とグループを、nginx から直接変更したい (chgrp と chown を手動で使用しない)。ポート 80、443 などで listen できるように、nginx を root として実行したままにしておきます.....
サーバーはUbuntu 20.04、nginx/1.18.0 (Ubuntu) を実行しています
場所がどこであっても同じようです:
/var/www/error_log
/var/www/access_log
/var/www/sub.domain.com/error_log
/var/www/sub.domain.com/access_log
/var/www/sub2.domain.com/error_log
/var/www/sub2.domain.com/access_log
...
root:root
これらはすべて、説明されている設定を無視することによって所有されていますユーザー指令。
出力ls -l
:
-rw-r--r-- 1 root root 0 Sep 14 09:07 access_log
-rw-r--r-- 1 root root 0 Sep 14 08:43 error_log
内容がほとんどありません (省略されています) /etc/group
:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
tty:x:5:syslog
disk:x:6:
lp:x:7:
www-data:x:33:
backup:x:34:
operator:x:37:
...
webservergroup:x:1001:tirtagt,www-data,anotheruserhere
...
私はユーザー指令/etc/nginx/nginx.conf
:
user www-data webservergroup;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
サーバーブロックの例:
server {
listen 80;
root /var/www/sub.example.com;
# Set the domain name or server name here
server_name sub.example.com;
# error_log
error_log /var/www/sub.example.com/error_log notice;
access_log /var/www/sub.example.com/access_log;
# Declare a priority if there is no path or files specified.
index index.html index.htm index.php;
# Catch All Location
location / {
# Pass it to the FastCGI PHP bridge
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# Run the DynamicPHPRouter for anything and let it do it's job.
fastcgi_param SCRIPT_FILENAME $document_root/srouter.php;
}
}
error_log
予想される動作は、access_log
を実行すると、所有者として www-data、グループとして webservergroup として が作成され、次のようになることですls -l
。
-rw-rw-r-- 1 www-data webservergroup 0 Sep 14 09:07 access_log
-rw-rw-r-- 1 www-data webservergroup 0 Sep 14 08:43 error_log
答え1
今のところ、他に方法は見つかりませんでした...。
私は、Nginx に が所有するファイルを作成させroot
、ファイルが作成された後にターゲット ユーザーに対して とchgrp
を手動で実行します。chown
私の場合、webservergroup
nginx も実行されているファイル グループを として使用しているため、ログ ファイルは読み取りおよび書き込み可能です。