Служба php-fpm не получает разрешения пользователя

У меня проблема с php-fpm. На самом деле это версия php7. У меня есть drupal, и он будет жаловаться, что какой-то каталог недоступен для записи. Только если я запустил php-fpm как такую ​​службу:

#service php-fpm start

Я использую nginx как веб-сервер и php-fpm в порту 127.0.0.1:9000. Это моя конфигурация в /etc/php-fpm.d/www.conf:

; Start a new pool named 'www'.
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000

Все документы для Интернета - drupal - принадлежат nginx: nginx. Если я запустил службу, либо

#service php-fpm start

, либо

#systemctl start php-fpm

Он будет жаловаться на разрешения, даже если этот ps показывает это (ps aux | grep php -fpm):

root      1591  0.0  0.8 528916 31260 ?        Ss   07:49   0:00 php-fpm: master process (/etc/php-fpm.conf)
nginx     1593  0.0  2.2 567252 79768 ?        S    07:49   0:03 php-fpm: pool www
nginx     1594  0.0  1.9 565248 72004 ?        S    07:49   0:01 php-fpm: pool www
nginx     1595  0.0  2.0 567268 73040 ?        S    07:49   0:02 php-fpm: pool www
nginx     1596  0.0  2.0 573440 75320 ?        S    07:49   0:01 php-fpm: pool www
nginx     1597  0.0  1.9 568704 71812 ?        S    07:49   0:02 php-fpm: pool www
nginx     1600  0.0  2.0 572360 74632 ?        S    07:50   0:01 php-fpm: pool www
nginx     1604  0.0  1.8 565264 68584 ?        S    07:53   0:01 php-fpm: pool www

Похоже, пользователь был правильно настроен. Но это не работает.

Я действительно не понимаю, что если я выполню это:

# / usr / sbin / php-fpm --nodaemonize --fpm-config /etc/php-fpm.conf

- это команда, описанная в службе (/usr/lib/systemd/system/php-fpm.service) - Тогда у меня нет проблем с разрешениями.

Вывод ps aux | grep php-fpm то же самое, но nginx является пользователем.

Я все выполняю как root.

Как это возможно?

Править

Это стало вопросом SElinux. У меня есть это в журналах аудита:

denied  { write } for  pid=2755 comm="php-fpm" name="files" dev="xvda1" ino=9167949 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir

Каталог, который я хочу записать в php-fpm, называется vanilladrupal

# ls -Z .
drwxr-xr-x. root   root   system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. nginx  nginx  unconfined_u:object_r:httpd_sys_content_t:s0 vanilladrupal

Процесс php-fpm имеет следующий контекст:

 ps Zaux | grep php-fpm
system_u:system_r:httpd_t:s0    root      2749  0.0  0.8 528916 31212 ?        Ss   03:03   0:00 php-fpm: master process (/etc/php-fpm.conf)
system_u:system_r:httpd_t:s0    nginx     2751  0.0  0.5 529548 19456 ?        S    03:03   0:00 php-fpm: pool www
and the other pool wwww look the same

Конфигурация selinux следующая:

SELINUX=enforcing
SELINUXTYPE=targeted

What что мне делать?

( здесь , вроде как аргумент в пользу того, что способ его установки не должен иметь проблем с правами доступа)

(Я пытался изменить контекст для каталога "vanilla drupal" чтобы выглядеть так же, как html (я предполагаю, что если бы я поместил каталог в html, у меня не было бы никаких проблем), изменив пользователя. Но у меня просто появилось еще больше ошибок (запрещено {execmem}).

0
задан 8 December 2015 в 05:26
1 ответ

Вам нужно изменить SELinux контекст для всех файлов, где Drupal должен записывать в httpd_sys_rw_content_t, что-то вроде этого:

семантический fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/drupal/admin/config/media/file-system(/. *)?'

Я не знаю, какие у вас пути, и вам нужно проверить в интерфейсе Drupal в Configuration -> Media -> Filesystem для получения дополнительной информации.

.
1
ответ дан 4 December 2019 в 16:45

Теги

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