티스토리 뷰



 개인용 서버를 구매하고 CentOS를 서버용 호스트 운영체제로 올린 후 얼마지나지 않아 일어난 일이다. Apache httpd를 올려서 웹 서버를 구축하는데 루트 디렉토리는 잘 뜨는데 사용자별 디렉토리를 설정하고 사용자 계정으로 접속하니 다음과 같이 퍼미션 오류가 나는 것이다.



 /etc/httpd 디렉토리의 log를 까보니 다음과 같은 에러 메세지를 뱉는다.


[Tue May 13 18:37:58 2014] [error] [client 192.168.0.1] (13)Permission denied: access to /~uyu423/ denied (filesystem path '/home/uyu423') because search permissions are missing on a component of the path


 안타깝게도 디렉토리 권한 설정이나 httpd.conf 설정에도 문제가 없었다. httpd.conf에서 사용자별 디렉토리 설정은 활성화 되어있었고, 사용자 홈 디렉토리의 권한은 711, public_html의 권한 역시 755로 잘 잡혀 있었다. 문제는 CentOS의 SELinux boolean 값이었다. SELinux는 리눅스 운영체제의 보안 솔루션이라 생각하면 된겠다. 우선 위 문제를 해결하기 위해서 터미널에서 아래 명령어로 값을 확인해 보자.

# getsebool -a | grep httpd_enable_homedirs


 잡았다 요놈. 요놈이 off 상태면 httpd.conf 에서 사용자별 디렉토리를 설정했더라도 막상 접속해보면 퍼미션 오류가 나타나는 것이었다. 다음 명령어로 httpd_enable_homedirs 를 on 해주면 httpd의 사용자별 디렉토리 권한 문제가 해결된다.

# setsebool -P httpd_enable_homedirs on


물론 SELinux 기능을 아예 off 하는 방법도 있겠지만 서버로 사용하는 리눅스라면 추천하지 않는다. 차라리 SELinux 내에서 불 필요한 보안 옵션을 해제하는 것이 좋다.



프로필사진

Yowu (Yu Yongwoo)

흔한 백엔드 개발자입니다
우분투 데스크탑 개발 환경을 선호합니다
최근에는 vscode에 neovim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 쳤습니다

«   2020/10   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
Total
2,982,871
Today
891
Yesterday
941