티스토리 뷰

반응형



 개인용 서버를 구매하고 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)

흔한 Node.js/Java 백엔드 개발자입니다
Ubuntu와 MacOS 데스크탑 개발 환경을 선호합니다
최근에는 vscode와 IntelliJ를 사용하고 있습니다
vscode에는 neovim, IntelliJ는 ideaVim
개발용 키보드는 역시 HHKB Pro 2 무각입니다
락 밴드에서 드럼을 쳤습니다

댓글쓰기 폼