Почему php-fpm игнорирует разрешения, определенные для дополнительных групп?

У меня есть пользователь на моей Linux-машине ("php"), который является членом двух групп. Основная группа — «php», а дополнительная группа — «www».

У меня есть каталог на моем Linux-компьютере (/home/www/public/wp-content/uploads), пользователь которого www, группа www и права доступа установлены на 775.

Я ожидаю, что процесс, запущенный как пользователь «php», должен иметь возможность читать и записывать файлы в этом каталоге. Если я запускаю скрипт из командной строки, который fopen является файлом в этом каталоге как пользователь «php», он работает нормально!

Однако, если я запускаю php-fpm с пользователем «php» и группой «php», я получаю ошибку «отказано в доступе» при попытке записи в этот каталог.

Я ожидаю, что процесс php-fpm должен по-прежнему иметь возможность писать в этот каталог, поскольку он работает как пользователь «php», который является частью группы «www», которой принадлежит каталог. Но я получаю «отказано в доступе».

Почему поведение php-fpm отличается от поведения php-скрипта?

(Я перезапустил php-fpm после того, как добавил дополнительную группу, так что это не проблема устаревания.)


person Kevin Burke    schedule 20.12.2016    source источник
comment
Можете ли вы показать файл конфигурации fpm?   -  person Aabir Hussain    schedule 23.12.2016


Ответы (2)


Похоже, исходный код php-fpm вызывает setgid здесь: https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_unix.c#L383-L386

        if (0 > setgid(wp->set_gid)) {
            zlog(ZLOG_SYSERROR, "[pool %s] failed to setgid(%d)", wp->config->name, wp->set_gid);
            return -1;
        }

Насколько я могу определить, процесс не может получить доступ к разрешениям, доступным дополнительным группам, после вызова setgid, поэтому Я СОЛ.

person Kevin Burke    schedule 22.12.2016

Скорее всего вы плохо настроили демон fpm, вам нужно указать группу в файле conf следующим образом: [php] group=php

person Stelian    schedule 21.12.2016
comment
Я указал как user=php, так и group=php в файле конфигурации php-fpm. - person Kevin Burke; 21.12.2016