SELinux 阻止 /etc/aliases 电子邮件管道到脚本运行

SELinux 阻止 /etc/aliases 电子邮件管道到脚本运行

当有人向我的服务器发送电子邮件时,例如

[email protected]

我希望它通过管道传输到 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

答案1

SELinux 很难学。哎呀,我还是没有完全理解所有内容。但有一件事对我有帮助,那就是安装软件包setroubleshoot并学习如何使用sealertaudit2allow工具。它会查看您的审计日志,找出被拒绝的内容,给出被阻止的原因的基本描述,并帮助您创建规则以在需要时允许它。我认为它是 EPEL 存储库的一部分。看看吧。

答案2

您可以尝试:

semanage permissive -a postfix_local_t

它应该为进程类型设置 SELinux 许可postfix_local_t

相关内容