Назад | Перейти на главную страницу

разрешить apache запускать php-скрипт - audit2allow пока не работает

В предыдущей компании исправление заключалось в отключении SELinux. Я пытаюсь оставить SELinux включенным и настроить то, что мне нужно для достижения моей цели.

Короче говоря, я хочу, чтобы apache / httpd запускал / usr / bin / systemctl status postfix и возвращал статус. С отключенным SELinux работает нормально. При принудительном применении SElinux он запрещает действие:

type=AVC msg=audit(1518207070.317:87): avc:  denied  { getattr } for  pid=2191 comm="sh" path="/usr/bin/systemctl" dev="dm-0" ino=100857189 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:systemd_systemctl_exec_t:s0 tclass=file
type=SYSCALL msg=audit(1518207070.317:87): arch=c000003e syscall=4 success=no exit=-13 a0=1f32060 a1=7ffcb5925f60 a2=7ffcb5925f60 a3=7ffcb5925d90 items=0 ppid=2190 pid=2191 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="/usr/bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1518207070.317:88): avc:  denied  { getattr } for  pid=2191 comm="sh" path="/usr/bin/systemctl" dev="dm-0" ino=100857189 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:systemd_systemctl_exec_t:s0 tclass=file
type=SYSCALL msg=audit(1518207070.317:88): arch=c000003e syscall=4 success=no exit=-13 a0=1f32060 a1=7ffcb5925f40 a2=7ffcb5925f40 a3=7ffcb5925d90 items=0 ppid=2190 pid=2191 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="/usr/bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)

audit2allow -w -a много раз говорит мне:

Отсутствует разрешающее правило принудительного применения типа (TE).

audit2allow -a строит следующее:

#============= httpd_t ==============
allow httpd_t admin_home_t:file { execute getattr };
allow httpd_t cgroup_t:dir read;
allow httpd_t cgroup_t:file { getattr open read };
allow httpd_t faillog_t:file write;
allow httpd_t init_t:dbus send_msg;
allow httpd_t postfix_etc_t:file { append getattr read };
allow httpd_t shadow_t:file { getattr open read };
allow httpd_t sudo_db_t:dir write;
allow httpd_t syslogd_var_run_t:dir read;
allow httpd_t systemd_systemctl_exec_t:file { getattr open read };
allow httpd_t systemd_unit_file_t:service status;

Итак, я собираю модуль и устанавливаю его с помощью audit2allow -a -M postfix_status_check_by_apahce_WR:

******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i postfix_status_check_by_apahce_WR.pp

Это работает, и я вижу это в списке selmodule -l и ошибки audit.log прекращаются, однако сценарий никогда не выполняется.

Как я уже говорил ранее, предыдущим занятием было отключение SELinux, так что это новое место для меня. Я использую Centos 7.3.

Пока не забыл, это код:

<?php
     $status = shell_exec("/usr/bin/systemctl status postfix | grep Active | awk -F: '{ print $2\":\"$3 }'");
     echo $status;
    ?>

Помощь приветствуется.