HTTP 403 오류 해소 방법
상황: CentOS 7 & Apache 구동 서버에 접속 시 위와 같이 HTTP 403 오류가 발생한다.
로그를 확인해본다.
$ sudo vi /var/log/httpd/error_log
Permission denied: ... search permissions are missing on a component of the path의 오류 메시지를 확인할 수 있다. 즉 파일은 존재하긴 하나 외부에서 이 파일을 접근할 권한이 없다는 뜻이다. 이를 해결해보자
1. chmod로 해결하기
접근권한(permission)하면 먼저 떠올려야 할 것은 chmod
일 것이다. 다음과 같이 각 파일 및 이를 포함하는 디렉터리에 x(실행 가능) 권한이 있어야 할 것이다.
$ sudo ls -al
만일 rwx, r-x, -wx, --x와 같이 x가 포함되어 있지 않다면 chmod
로 실행 권한을 주면 된다.
$ sudo chmod +x 파일명
2. SELinux로 해결하기
그래도 HTTP 403 오류가 뜬다면 SELinux의 설정을 확인한다. SELinux는 일종의 보안 장치로서 해킹과 같은 허가되지 않은 접근을 커널 수준에서 차단하기 위한 장치이다.SELinux가 작동중인 서버에서는 각 파일(디렉터리 포함)에 개별적인 보안 문맥security context을 적용하는데 보안 문맥에는 크게 로컬에서 사용되는 일반 문서 수준의 보안(user_home_t
)과 서버를 통해 외부에서 접근 가능한 수준의 보안(httpd_sys_content_t
), 외부에서 접근 가능하며 실행이 가능한 수준의 보안 - 즉 서버 스크립트 파일에 적용되는 보안(httpd_sys_script_exec_t
)이 있으며 그 외에 다양한 보안 문맥이 있을 수 있으나 여기에서는 생략한다. 각 파일에 적용된 보안 문맥을 확인하기 위해서는 다음과 같이 입력한다.
$ sudo ls -alZ
접속하고자 하는 파일에 걸린 보안 문맥이 서버용이 아닌 다른 종류(dosfs_t
)이다. FAT 파일 시스템으로 포맷된 볼륨에서 복사된 파일에 대해 적용된 것으로 추정되는데 이를 수정하는 방법은 다음과 같다.
$ sudo chcon -R -t httpd_sys_script_exec_t 파일명
-R
는 뒤에 지정한 파일명이 디렉터리일 때 그 하위 구조까지 전부 재귀적으로 지정하는 옵션이고, -t
는 보안 문맥의 종류를 바꿀 때 사용하는 옵션이다. 이를 실행해본다.
수정 결과, 외부에서 잘 접속이 됨을 확인할 수 있다.
'Operating System Theme > Unix/Linux' 카테고리의 다른 글
CentOS Minimal Intallation으로부터 서버 구축 방법 - 외부 인터넷에 연결 (0) | 2018.07.12 |
---|---|
Perl에 HTTP, CGI 모듈 설치하기 (0) | 2018.07.09 |
CentOS Minimal Intallation으로부터 서버 구축 방법 #5 (PHP 설정) (0) | 2017.08.18 |
CentOS Minimal Intallation으로부터 서버 구축 방법 #4 (Postgre SQL 설치 및 Perl 연동) (0) | 2017.07.23 |
CentOS Minimal Intallation으로부터 서버 구축 방법 #3 (Perl 설치 및 Apache 연동) (0) | 2017.07.22 |