Попросите SELinux предоставить Apache исполняемый доступ к файлам PHP вне корневого каталога документов
У меня есть каталог, в котором хранятся общие PHP-скрипты (имя произвольное, но это не /var/, /usr/ или что-то, для чего у SELinux будут особые настройки):
/ все / скрипты /
Эти сценарии могут выполняться cronjobs или Apache или Tomcat, поэтому выходные данные могут быть включены в веб-страницу.
SELinux отказывает в разрешении:
type = AVC msg = аудит (1363205612.276:476923): avc: отказано {выполнить} для pid=6855 comm="sh" name="script.php" dev=sda3 ino=4325828 scontext=system_u:system_r:httpd_t:s0 tcontext=undefined_u:object_r:etc_runtime_t:s0 tclass= файл
тип =SYSCALL msg= аудит (1363205612.276:476923): arch=c000003e системный вызов = 59 успех = нет выхода =-13 a0=2431d10 a1=2431d70 a2=24301e0 a3=50 элементов =0 ppid=23100 pid=6855 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(нет) ses=4294967295 comm="sh" exe="/bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)
type = AVC msg = аудит (1363205612.277:476924): avc: отказано {выполнить} для pid=6855 comm="sh" name="script.php" dev=sda3 ino=4325828 scontext=system_u:system_r:httpd_t:s0 tcontext=undefined_u:object_r:etc_runtime_t:s0 tclass= файл
тип =SYSCALL msg= аудит (1363205612.277:476924): arch=c000003e системный вызов = 21 успех = нет выхода =-13 a0=2431d10 a1=1 a2=0 a3=50 элементов =0 ppid=23100 pid=6855 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(нет) ses=4294967295 comm="sh" exe="/bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)
Я знаю, что есть команда, которую я могу использовать, чтобы сказать SELinux, что это разрешено, но она ускользает от меня.
Даже создание владельца каталога и скрипта и группы apache не работает, поэтому это не классическая проблема с разрешениями, а специфичная для SELinux.
Система CentOS 6.3.
1 ответ
Я нашел решение с помощью этих двух команд:
semanage fcontext -a -t httpd_sys_script_exec_t '/whwhat/scripts(/.*)?'
restorecon -R -v / что угодно / scripts /
Это позволяет Apache выполнять PHP-скрипты в этом каталоге и сохраняется после перезагрузки или общесистемной перемаркировки.
Я использую это с исполняемыми программами, которые мне нужно запускать из моих сценариев PHP и Apache.
sudo chcon -v -t httpd_sys_script_exec_t my-executable