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:root
ignorando 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_log
y access_log
se 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 root
y luego chgrp
lo hago manualmente chown
para mi usuario objetivo después de crear el archivo.
Para mí, uso webservergroup
como grupo de archivos, en el que también se ejecuta nginx, por lo que el archivo de registro se puede leer y escribir.