웹페이지에서 아래와 같은 퍼미션 에러 메시지를 뿜어내곤 합니다.
" Forbidden You don't have permisssion to access xx.png on this server"
대부분의 경우에 FTP 설정의 umask문제인 경우가 많습니다. 스크로를 제일 아래로 내리면 VSFTP 기준으로 간단한 해결책을 설명해 두었습니다.
이 문서는 우분투에 vsftp 3.0.2를 기준으로 설명하였습니다.
말그대로 파일의 권한이 오류여서 일어나는 문제입니다.
서버에 접속해서 보면 파일에 ORTHER 부분 즉 맨 마지막 부분이 --- 로되어 있는 것을 확인할 수 있습니다.
맨 마지막 부분이 적어도 r--- 으로는 되어 있어야 아파치에서 접근해서 읽고 사용자에게 페이지를 보여줄 수 있습니다.
아래와 같이 직접 파일에 권한을 부여할 수 있습니다. 아래에서는 644를 부여했는데 rw-r--r-- 의 의미입니다. 그룹과 기타(other)에서도 읽을 수 있는 권한을 준 것입니다.
$ chmod 644 파일명
이런식으로 그때 그때 해결하 수 있지만 반복이 되는 문제라면 더 들여다 보아야 겠지요?
계속 700(drwx------) 600(-rw-------) 이런식으로 파일이 생성된다는 것은 umask 값을 들여다 볼 필요가 있습니다.
대부분에 시스템에서 기본적으로 0002 이거나 0022 이게 됩니다. umask의 역할은 기본 생성되는 퍼미션(권한)을 설정해 주는 것입니다.
umask 값은 콘솔에서 umask라고 명령어를 치면 확인할 수 있습니다.
만약 umask값이 000일때는 디렉토리는 777 파일은 666의 권한을 가지게 됩니다.
디렉토리는 777에서 umask값을 빼면 생성시 권한이 나오고 파일은 666에서 빼면됩니다.
단 예외는 파일의 경우에는 실행권한은 빠지게 됩니다. 아래 보시면 001의 경우에는 그냥 666이 되는 걸 보실 수 있습니다.
umask 가 002 이거나 022인데도 위와 같은 오류가 지속적으로 난다면 FTP설정을 의심해 보시면 됩니다.
저의 경우는 vsftp를 쓰고 있는데 vsftp는 기본적으로 올라오는 파일에 umask값을 077로 먹여 버립니다. 생성되는 파일은 600이 되니 아파치 서버에서는 접근할 수 없게 되는 것이지요. (디렉토리는 700) 그래서 퍼미션 오류가 나게 됩니다.
vsftp의 설정파일에서 열어서 설정파일을 바꿀 수 있습니다. 제가 가진 우분투 서버 기준으로는 /etc/vsftpd.conf에 있네요.
# vi /etc/vsftpd.conf
여기에서 local_umask을 검색해 보시면 주석처리가 되어 있습니다. 이걸 풀어주면 됩니다. (#이 앞에있으면 주석처리) 특정한 권한을 주고 싶다면 umask를 바꾸어 주면 되겠지요. vsftp말고 다른 서버의 경우는 나름의 설정이 있을 테니 검색해서 참고하시기를 바랍니다.
이렇게 해주시고 설정파일의 적용을 위해 데몬을 재실행 해줍니다.
# service vsftpd restart
이렇게 하시고 다시 접속을 하시면 접속이 잘 되는 것을 확인 하실 수 있습니다.