Besitzer und Gruppe von Nginx error_log und access_log können nicht geändert werden
Ich möchte den Besitzer und die Gruppe von Nginx's error_log und access_log direkt von Nginx aus ändern (nicht manuell mit chgrp und chown). Während Nginx weiterhin als Root ausgeführt wird, damit es auf Port 80, 443 usw. lauschen kann.....
Auf dem Server läuft Ubuntu 20.04, nginx/1.18.0 (Ubuntu)
Es scheint, als ob es unabhängig vom Standort ist:
/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
...
Sie sind alle im Besitz von root:root
Einstellungen, die in der beschrieben istBenutzerRichtlinie.
Ausgabe von 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
Wenige (abgeschnittene) Inhalte von /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
...
Obwohl ich angegeben hatte,BenutzerRichtlinie über /etc/nginx/nginx.conf
:
user www-data webservergroup;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
Beispiel Serverblock:
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;
}
}
Das erwartete Verhalten wäre, dass error_log
und access_log
mit www-data als Eigentümer und webservergroup als Gruppe erstellt wird, ungefähr so, wenn wir ausführen 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
Antwort1
Ich habe bisher keinen anderen Weg gefunden....
Ich lasse einfach Nginx die Datei erstellen, die im Besitz von sein wird root
, und führe dann nach der Erstellung der Datei manuell die folgenden Aktionen für meinen Zielbenutzer chgrp
aus .chown
Ich verwende webservergroup
als Dateigruppe die Dateigruppe, auf der auch nginx läuft, sodass die Protokolldatei lesbar und beschreibbar ist.