2016-12-20 15 views
4

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

У меня есть каталог на моей машине Linux (/ главная/WWW/открытый/WP-содержание/загрузки) которого пользователь www и чья группа www и чьи права устанавливаются на 775.

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

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

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

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

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

+0

Вы можете показать файл конфигурации fpm? –

ответ

4

похоже, что 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; 
     } 

насколько я могу определить, процесс cannot access permissions available to supplementary groups after it invokes setgid, поэтому я SOL.

1

Скорее всего, вы настроили FPM демон плохо, вам нужно будет указать группу в файле конф как это: [PHP] группа = PHP

+0

Я указал как user = php, так и group = php в файле conf php-fpm conf. –

 Смежные вопросы

  • Нет связанных вопросов^_^