Кроме того, используя вышеуказанный принятый ответ
setsebool -P httpd_can_network_connect=1
setsebool -P httpd_can_network_connect_db=1
Мне также пришлось изменить контекст безопасности файла, к которому httpd
пытался получить доступ.
Сценарий php, запущенный через apache, пытался получить доступ к файлу сертификата, который находился за пределами обычного корня документа httpd
. Изменение разрешений на доступ к файлу для разрешения доступа httpd было недостаточно для разрешения доступа httpd к этому файлу. Мне также пришлось перейти в контекст безопасности, поэтому перед изменением:
[admin]$ ls -Z ../../certs/rds-ca-2015-root-us-east-1-BUNDLE.pem
-rw-r--r--. admin apache unconfined_u:object_r:unlabeled_t:s0 ../../certs/rds-ca-2015-root-us-east-1-BUNDLE.pem
Изменить контекст, используя:
sudo chcon -v --type=httpd_sys_content_t ../../certs/rds-ca-2015-root-us-east-1-BUNDLE.pem```
чтобы получить:
[admin]$ ls -Z ../../certs/rds-ca-2015-root-us-east-1-BUNDLE.pem
-rw-r--r--. admin apache unconfined_u:object_r:httpd_sys_content_t:s0 ../../certs/rds-ca-2015-root-us-east-1-BUNDLE.pem
Теперь все хорошо. Хороший ресурс, на который стоит обратить внимание, это /var/log/audit/audit.log
и обратите пристальное внимание на ошибки. В моем случае ошибка, указывающая на направление разрешения, была:
type=AVC msg=audit(1509047616.042:4049): avc: denied { read } for pid=17096 comm="httpd" name="rds-ca-2015-root-us-east-1-BUNDLE.pem" dev="xvdb" ino=262146 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=file