리눅스에서 아파치를 설치한 후 직면하게 되는 부분이 바로 403 Forbidden 에러다.
403 Forbidden 에러는 단어 그대로 접근이 금지가 됐다는 말이다.
즉 권한이 없다는 뜻.
몇가지 경우가 있기 때문에 체크를 하다보면 해결할 수 있다.
서버관리를 10년이상해도 403 forbidden 에러는 정말 헷갈린다.
또 헤맸다 ㅡ.ㅡ
1. 웹서버의 디렉토리에 권한이 없는경우다.
웹루트가 /home/hosting/aaa/htdocs 인경우
hosting, aaa, htdocs 모두 실행권한(755 또는 701)이 있어야한다.
chmod 755 /home/hosting chmod 755 /home/hosting/aaa chmod 755 /home/hosting/aaa/htdocs
755가 아니라 701 로 해도 무방하겠지요.
2. 웹서버 설정화일 셋팅 문제 (httpd.conf)
<Directory /> Options FollowSymLinks AllowOverride None Order deny, allow Allow from all </Directory>
위 굵은 글자 부분이 Deny from all 로 되어 있다면 위처럼 변경하고 웹서버를 재시작한다.
구지 접속을 막고 싶다면
<Directory /> Options FollowSymLinks AllowOverride None Order deny, allow Deny from xxx.xxx.xxx.xxx yyy.yyy.yyy zzz.zzz.zzz Allow from all </Directory>
3. SELinux 가 동작하는경우
SELinux 는 취약한 보안을 강화시키는 좋은 환경이다.
귀찮다면
$ vi /etc/selinux/config
를 실행하여
SELinux=disabled 로 수정한다. (enforcing, permissive, disabled 가 있다.
적용하기 위해서는
$ setenforce 0 (끄기)
$ setenforce 1 (켜기)
혹은 재부팅
4. SELinux가 동작하는 경우
SELinux 보안환경에서 사용한다면 디렉토리에 보안셋팅을 해줘야한다.
ls -Z 으로 디렉토리 보안상태를 확인할 수 있다.
drwxr-xr-x nlinux nlinux root:object_r:httpd_sys_content_t aaa drwxr-xr-x nlinux nlinux user_u:object_r:user_home_dir_t bbb
위에서 httpd_sys_content_t 타입을 설정해줘야만 HTTP 웹서버가 접근이 가능하다.
설정하는 방법은 (하위디렉토리까지 모두 변경)
$ chcon -R -h -t httpd_sys_content_t /home/hosting/aaa