Рейтинг:0

Разрешить обновления Wordpress с помощью SELinux в EL8 с помощью nginx/php-fpm

флаг vn

Я пытаюсь разрешить использование обновлений Wordpress (не обновлений плагинов) непосредственно в веб-интерфейсе.

У меня уже есть SELinux, работающий для всего, кроме этой функции. Пытаясь определить, что должно быть разрешено, я не могу точно найти, что нужно изменить, вместо того, чтобы перемаркировать весь /путь/к/wordpress/каталогу к unconfined_u:object_r:httpd_sys_rw_content_t:s0

Вот что происходит, когда я пытаюсь обновиться через веб-интерфейс:

==> /var/log/nginx/kosen.energy.access.log <==
172.21.1.28 - - [22/июля/2021:14:21:27 -0300] "POST /wp-cron.php?doing_wp_cron=1626974487.4410700798034667968750 HTTP/1.0" 200 0 "https://kosen.energy/wp-cron .php?doing_wp_cron=1626974487.4410700798034667968750" "WordPress/5.7.2; https://kosen.energy"
172.21.1.28 - - [22/июля/2021:14:21:29 -0300] "GET /wp-admin/update-core.php HTTP/1.0" 200 155053 "https://kosen.energy/wp-admin /update-core.php?action=do-core-upgrade" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, например, Gecko) Version/14.1.1 Safari/605.1.15"

==> /var/log/audit/audit.log <== type=AVC msg=audit(1626974498.501:10696): avc: запрещено {запись} для pid=9658 comm="php-fpm" name="update- core.php" dev="dm-0" ino=101266980 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=file permissive=0

==> /var/log/nginx/error.log <== 2021/07/22 14:21:38 [ошибка] 9646#0: *38349 FastCGI отправлено в stderr: «Сообщение PHP: Предупреждение PHP: копировать (/ var/www/html/kosen.energy/wp-admin/includes/update-core.php): не удалось открыть поток: Отказано в доступе в /var/www/html/kosen.energy/wp-admin/includes/class- wp-filesystem-direct.php в строке 309" при чтении вверх по течению, клиент: 172.21.1.28, сервер: _, запрос: "POST /wp-admin/update-core.php?action=do-core-upgrade HTTP/1.0 ", вверх по течению: "fastcgi://unix:/run/php-fpm/www.sock:", хост: "kosen.energy", реферер: "https://kosen.energy/wp-admin/update-core .php"

==> /var/log/nginx/kosen.energy.access.log <==
172.21.1.28 - - [22 июля/2021:14:21:38 -0300] "POST /wp-admin/update-core.php?action=do-core-upgrade HTTP/1.0" 200 150059 "https:/ /kosen.energy/wp-admin/update-core.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, например Gecko) Version/14.1.1 Safari/605.1.15"

На wp-config.conf у меня уже есть FS_METHOD как непосредственный:

/** Включить правильную поддержку обновлений без FTP/FTPS. */
определить('FS_METHOD', 'прямой');

php-fpm уже работает как нгинкс пользователь:

[root@kosen kosen.energy]# пользователь grep /etc/php-fpm.d/www.conf | греп -v \;
пользователь = nginx
listen.acl_users = апач, nginx

Дополнительная информация:

[root@kosen kosen.energy]# rpm -qa | egrep "php-fpm|nginx"
nginx-mod-http-xslt-filter-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.x86_64
nginx-mod-http-image-filter-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.x86_64
nginx-mod-http-perl-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.x86_64
nginx-mod-mail-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.x86_64
nginx-1.14.1-9.0.1.модуль+el8.0.0+5347+9282027e.x86_64
nginx-все-модули-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.noarch
nginx-filesystem-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.noarch
nginx-mod-stream-1.14.1-9.0.1.module+el8.0.0+5347+9282027e.x86_64
php-fpm-7.4.6-4.module+el8.3.0+7685+72d70b58.x86_64

Спасибо.

Рейтинг:1
флаг cz

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

обновление ядра вп
wp core update-db
флаг vn
Мне нужно добавить wp-cli, чтобы использовать эту функцию, верно? Есть ли у вас какое-либо решение, когда вы администрируете сервер, но обычный пользователь (не системный администратор) — это тот, кто поддерживает страницу Wordpress? Спасибо!
Michael Hampton avatar
флаг cz
Да, это wp-cli. Пользователь может запустить его сам, когда файлы принадлежат ему (как, вероятно, и должно быть).
флаг vn
Я отмечаю как правильный ответ, потому что это хорошая идея для проблемы. Что касается разрешения пользователя, так как сегодня оно работает под управлением nginx:nginx, вы говорите, что я должен создать пользователя, а они передают пользователю:nginx все файлы? Но опять же, мне придется обучать пользователя, так как ssh это не то, что они знают.
Michael Hampton avatar
флаг cz
Правильно, nginx не нужны полные права доступа к файлам, ему просто нужно уметь их читать. php-fpm должен иметь возможность записывать в каталог загрузки. Все остальное может принадлежать пользователю.
флаг vn
Так и сделаю, спасибо Михаил!

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

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