Невозможно изменить владельца и группу Nginx error_log и access_log

Невозможно изменить владельца и группу nginx error_log и access_log

Я хочу изменить владельца и группу error_log и access_log nginx прямо из nginx (без использования chgrp и chown вручную). При сохранении работы nginx от имени пользователя root, чтобы он мог прослушивать порты 80, 443 и т. д......

Сервер работает под управлением 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игнорируя настройки, описанные в директиве user.

Вывод 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
0
задан 14 September 2021 в 02:34
1 ответ

На данный момент я не нашел другого способа....

Я просто позволил Nginx создать файл, который будет принадлежать root, а затем вручную выполнить chgrpи chownмоему целевому пользователю после создания файла.

Я использую webservergroupв качестве файловой группы, в которой также работает nginx, поэтому файл журнала доступен для чтения и записи-.

0
ответ дан 1 October 2021 в 04:55

Теги

Похожие вопросы