저는 CentOS 7에서 Apache를 마스터하려고 노력해 왔습니다.
두 개의 가상 호스트를 설정하고 다음과 같은 기본 index.html 페이지를 만들었습니다.
/var/www/domainA/public_html/index.html
/var/www/domainB/public_html/index.html
두 호스트 모두 다음 권한을 갖습니다.
도메인 A:
public_html -> jonathan:jonathan
index.html -> root:root
도메인 B:
public_html -> jonathan:jonathan
index.html -> root:root
이제 DomainA의 index.html 페이지는 제대로 작동하지만 Domain B의 index.html에서는 403 Forbidden이 표시됩니다.
DomainB의 error.log는 다음을 제공합니다.
AH00132: file permissions deny server access: /var/www/DomainB/public_html/index.html
왜 이런 일이 발생합니까? 이것은 나를 매우 슬프게 만듭니다.
답변1
문제는 파일/폴더 권한 자체가 아니라 작동하지 않는 도메인의 보안 컨텍스트에 있는 것으로 나타났습니다.
내 제한된 이해에 따르면 Apache가 파일을 제공하려면 파일/폴더가 context 에서 실행되도록 구성해야 합니다 httpd_sys_content_d
.
내 "오류"는 작동하지 않는 도메인이 내 개발 영역에서 Apache 콘텐츠 폴더로 이동되었고 올바른 보안 컨텍스트가 없어 Apache가 파일을 제공할 수 없다는 것입니다. 이는 폴더 및 하위 폴더에서 실행하여 ls -Z
확인되었습니다 .public_html
일단 chcon -R -t httpd_sys_content_t public_html/
올바른 보안 컨텍스트를 설정했고 이제 Apache가 모든 것을 제공하고 있습니다.
답변2
chcon -R -t httpd_sys_content_t <Your_Document_Root_Dir>
트릭을 수행해야합니다