Вот настройка: я позволяю MySQL сбрасывать таблицы в /tmp
(они просто содержат числа, а не настоящие данные), чтобы PHP мог их подобрать и обработать. После этого временные файлы больше не нужны, поэтому я удаляю их с помощью PHP (unlink
).
Конечно, SELinux этого не любит. Я могу настроить /tmp
нормально для MySQL для чтения / записи и PHP для чтения / записи из него, но когда PHP хочет удалить файл, созданный MySQL, он не может. Я подумал, что это может быть связано с "липким кусочком" на /tmp
, но это не имеет значения.
Я не могу найти правильного решения этой проблемы, большинство решений касается вопроса о том, чтобы сделать каталоги доступными для чтения / записи для PHP (или для пользователя httpd), а не для удаления чужих файлов.
Кстати: если я выключу SELinux, PHP удалит файлы без проблем. Так что это определенно то, что я должен изменить с точки зрения SELinux, но что было бы лучше всего?
Согласно моему комментарию: я решил это, используя audit2allow
.
/var/log/audit/audit.log
для нарушающего правила (я использовал имя файла, написанного MySQL)audit2allow
и просмотрите его: grep {offending rule name} /var/log/audit/audit.log | audit2allow -a
allow httpd_t mysqld_tmp_t:file unlink;
с шага 2, так что это выглядело точно так же, как и я. С этим результатом я создал новый модуль: grep {offending rule name} /var/log/audit/audit.log | audit2allow -a -M tmp
. Это создает файл с именем tmp.pp
.semodule -i tmp.pp