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