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

Как настроить SELinux, чтобы разрешить apache запускать git

У меня есть сервер CentOS 6, и я пытаюсь запустить веб-сервер apache git pull в каталоге.

Файл php просто:

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

Однако git pull Команда не запускается, когда файл запрашивается через браузер.

Временное отключение SELinux, запустив setenforce 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

Временно запустите вашу систему с помощью SELinux в разрешающем режиме (setenforce 0). Выполняйте обычные операции, чтобы ошибки регистрировались в audit.log.

Затем вы можете использовать audit2why чтобы получить объяснение проблемы (ов). Ты можешь использовать 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.