У меня есть php-скрипт, который работает на сервере apache при установке RHEL5. Этот скрипт запускает exec для "rpm -q --info packagename".
Дело в том, что он корректно работает с selinux в разрешительном режиме, а не в полностью включенном. Поэтому я предполагаю, что это проблема selinux.
Я начал с audit2allow для создания правил на основе найденных отклоненных записей, но теперь в журналах аудита больше нет отклонений, но он по-прежнему не работает с включенным selinux.
В моем мире кажется, что он запрашивает систему, разрешено ли ей работать, и когда selinux говорит: «Если вы попробуете это, я вас остановлю». Таким образом, система не запускает exec. Если бы это было так, я предполагаю, что получил бы «отказ», на основе которого я мог бы создать новое правило selinux. С selinux в разрешении мне тоже не отказывают, но это работает.
Так что, похоже, мне придется столкнуться с этим трудным путем и создать собственное правило для selinux. Сказано и сделано, я сделал один:
module php_rpm 1.0;
require {
type httpd_t;
type bin_t;
type rpm_exec_t;
type rpm_var_lib_t;
class file { execute execute_no_trans getattr read execmod };
class dir { getattr search };
}
#============= httpd_t ==============
allow httpd_t rpm_exec_t:file { execute execute_no_trans getattr read execmod };
allow httpd_t rpm_var_lib_t:dir { getattr search };
К сожалению, это никак не повлияло на мою проблему, но, предположительно, немного испортило мои правила selinux: P
Кто-нибудь пытался запустить rpm из php с включенным selinux и вышел сухим из воды?