У меня есть сервер 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.