Рейтинг:0

Nginx php-fpm 1 из 3 пулов не работает: возвращает stat () с ошибкой (13: разрешение отклонено)

флаг tr

У меня есть nginx с 3 пулами для php7.4-fpm — по одному на каждого из 3 пользователей в системе, так как у них есть свои приложения и файлы. Настройка всех трех полностью идентична, но у недавно добавленного есть проблема с правами доступа.

Браузер выдает ошибку 404 - Not Found.

Ошибка возвращается в журнал nginx:

18.01.2022, 09:32:16 [крит] 504237#504237: *5120 стат() Ошибка "/var/www/user3/websites/site.com/index.php" (13: разрешение отклонено), клиент: XXX.XXX.XXX.XXX, сервер: site.com, запрос: «GET / HTTP/2.0", хост: "site.com"

sudo -u user3 stat /var/www/user3/websites/site.com/index.php

возвращается

  Файл: /var/www/user3/websites/site.com/index.php
  Размер: 405 Блоков: 8 Блок ввода-вывода: 4096 обычный файл
Устройство: 807h/2055d Инод: 1441895 Ссылки: 1
Доступ: (0644/-rw-r--r--) Uid: (1003/user3) Gid: (1003/user3)
Доступ: 2022-01-17 20:32:08.081267396 +0000
Изменить: 2020-04-26 21:46:41.000000000 +0000
Изменение: 2022-01-18 09:35:09.129994390 +0000

Конфигурация пула:

[php7.4-пользователь3]

пользователь = пользователь3
группа = пользователь3

слушать = 127.0.0.1:9003
слушать.владелец = никто
listen.group = никто
listen.allowed_clients = 127.0.0.1

вечера = по требованию
pm.max_children = 24
pm.start_servers = 16
pm.min_spare_servers = 6
pm.max_spare_servers = 24
pm.process_idle_timeout = 900 с
pm.max_requests = 55

php_admin_value[error_log] = /var/log/fpm-php7.4.log
php_admin_flag[log_errors] = вкл.
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED

Другие пулы почти такие же, за исключением имени пула, пользователя и группы — это user1, user2, а порт прослушивания отличается, например, 9001, 9002, 9003, следовательно, x в конфигурации.

конфигурация виртуального хоста

сервер {
    имя_сервера site.com www.site.com;

    журнал_доступа /var/log/nginx/site.com.access.log; 
    error_log /var/log/nginx/site.com.error.log;

    корень /var/www/user3/websites/site.com;

    индекс index.php index.html index.htm;

    место расположения / {
      try_files $uri $uri/ /index.php?$args;
    }
    расположение ~ \.php$ {
      try_files $uri = 404;
      включить fastcgi_params;
      fastcgi_pass 127.0.0.1:9003;
    }

    слушать 443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
    включить /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
сервер {
    если ($host = www.site.com) {
        вернуть 301 https://$host$request_uri;
    }
    если ($ хост = site.com) {
        вернуть 301 https://$host$request_uri;
    }
    слушать ХХХ.ХХХ.ХХХ.ХХХ:80;
    имя_сервера site.com www.site.com;
    вернуть 404;
}

Чего мне не хватает для user3, чтобы работали nginx и fpm? Один и тот же конфиг для user1 и user2 работает нормально.

флаг jp
Убедитесь, что `user3` может получить доступ (имеет права доступа +x) ко всем каталогам в дереве `/var/www/user3/websites/site.com`. Сюда входят `/var`, `/var/www` и т. д.
флаг jp
На самом деле, не user3, а пользователь nginx.
флаг in
Вы можете легко проверить это, запустив `namei -l /var/www/user3/websites/site.com/index.php`.
флаг tr
Как это сделать, не влияя на фактические права пользователя: владельца группы?
флаг tr
ХОРОШО. Оказывается, у папки /var/www/user3 было 750 разрешений вместо 755. Теперь все работает. Спасибо!
Рейтинг:0
флаг tr

Оказывается, у папки /var/www/user3 было 750 разрешений вместо 755. Теперь все работает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.