如何配置 SELinux 以允许 apache 运行 git

如何配置 SELinux 以允许 apache 运行 git

我有一台 CentOS 6 服务器,并且正在尝试让 apache web 服务器git pull在目录中运行。

该 php 文件非常简单:

<?php
    shellexec('cd /var/www/vhosts/domain;git pull');

但是,git pull通过浏览器请求该文件时,该命令不会运行。

通过运行暂时关闭 SELinuxsetenforce 0可以允许其运行,但这不是一个安全的解决方案。

请求该文件时,/var/log/audit 显示以下错误。

type=AVC msg=audit(1401182476.567:363184): avc:  denied  { read } for  pid=11082 comm="ssh" name="known_hosts" dev=dm-0 ino=11272197 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file

答案1

暂时使用 SELinux 以 Permissive 模式 (setenforce 0) 运行您的系统。执行您的正常操作,以便将错误记录到 audit.log 中。

然后您可以使用审计为什么获取问题的解释。您可以使用audit2allow生成可加载策略模块。例如

audit2allow <wyred.log
type=AVC msg=audit(1401182476.567:363184): avc:  denied  { read } for  pid=11082 comm="ssh" name="known_hosts" dev=dm-0 ino=11272197 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file

    Was caused by:
            Missing type enforcement (TE) allow rule.

            You can use audit2allow to generate a loadable module to allow this 
            access.

然后

audit2allow -M wyred <wyred.log
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i wyred.pp

将生成一个.pp文件和一个可读的.te文件。

相关内容