SELinux предотвращает работу канала электронной почты /etc/aliases для скрипта

Когда кто-то отправляет письмо на мой сервер, например

somestringthatisnotnecessarilyauser@myserver.com

Я хочу, чтобы это транслировалось в скрипт PHP. Так по моему

/etc/aliases

файл у меня есть:

somestringthatisnotnecessarilyauser: "|/path/to/php/script.php"

Если SELinux отключен, он отлично отправляет электронное письмо в скрипт PHP.

При включенном SElinux почтовый журнал выходит с ошибкой прав доступа:

local[19660]: fatal: execvp /path/to/php/script.php: Permission denied

Я новичок в SELinux, но я связал проблему с SELinux, потому что, если он отключен, он работает нормально.

Кто-нибудь знает, какие команды semanage или другую политику мне нужно применить, чтобы это работало с включенным SELinux?

ОС является Centos6.5 64 бит

Вот что говорит /var/log/audit/audit.log при отправке электронной почты на адрес:

type=AVC msg=audit(1395174916.444:476603): avc:  denied  { search } for  pid=25396 comm="local" name="web" dev=dm-0 ino=522246 scontext=unconfined_u:system_r:postfix_local_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir
type=SYSCALL msg=audit(1395174916.444:476603): arch=c000003e syscall=59 success=no exit=-13 a0=7feaddb404a0 a1=7feaddb40470 a2=7feaddb3b2d0 a3=7fffa4fe93d0 items=0 ppid=21187 pid=25396 auid=500 uid=99 gid=99 euid=99 suid=99 fsuid=99 egid=99 sgid=99 fsgid=99 tty=(none) ses=69836 comm="local" exe="/usr/libexec/postfix/local" subj=unconfined_u:system_r:postfix_local_t:s0 key=(null)

Вот вывод getsebool httpd_can_sendmail

$ getsebool httpd_can_sendmail
httpd_can_sendmail --> on

2 ответа

Решение

SELinux довольно устрашающий, чтобы учиться. Черт, я до сих пор не до конца понимаю все. Но одна вещь, которая помогла мне, это установить пакет setroubleshoot и узнать, как использовать sealert а также audit2allow инструменты. Он просматривает ваш журнал аудита, находит то, что было отклонено, дает базовое описание того, почему он был заблокирован, и помогает вам создать правила, чтобы разрешить это при необходимости. Я думаю, что это часть репо EPEL. Проверьте это.

Вы можете попробовать:

semanage permissive -a postfix_local_t

Предполагается установить SELinux разрешающим для типа процесса postfix_local_t

Другие вопросы по тегам