No se puede cambiar el propietario y el grupo de Nginx error_log y access_log

No se puede cambiar el propietario y el grupo de Nginx error_log y access_log

No se puede cambiar el propietario y el grupo de Nginx error_log y access_log

Quiero cambiar el propietario y el grupo de error_log y access_log de nginx directamente desde nginx (sin usar chgrp y chown manualmente). Mientras se mantiene nginx ejecutándose como root para que pueda escuchar en el puerto 80, 443, etc....

El servidor ejecuta Ubuntu 20.04, nginx/1.18.0 (Ubuntu)

Parece que no importa cuál sea la ubicación:

/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
...

Todos ellos son propiedad root:rootignorando la configuración que se describe en lausuariodirectiva.

Salida de 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

Pocos contenidos (truncados) de /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
...

Aunque había especificado elusuariodirectiva sobre /etc/nginx/nginx.conf:

user www-data webservergroup;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

Ejemplo de bloque de servidor:

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;
        }
}

El comportamiento esperado sería que error_logy access_logse cree como www-data como propietario y webservergroup como grupo, algo como esto cuando ejecutamos 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

Respuesta1

No encontré otra manera, por ahora....

Simplemente dejo que Nginx cree el archivo que será propiedad de rooty luego chgrplo hago manualmente chownpara mi usuario objetivo después de crear el archivo.

Para mí, uso webservergroupcomo grupo de archivos, en el que también se ejecuta nginx, por lo que el archivo de registro se puede leer y escribir.

información relacionada