스프링 부트 EC2 파일 생성 IOExeption (Permission Denied)


이번 안드로이드 프로젝트를 진행하면서 제일 시간을 많이 끈 문제다. 진짜 간단한 문제였지만 왜 하루 종일 찾고 있었는지 잘 모르겠다.

우선 하위 코드로 경로는 리눅스의 경로로 해서 절대경로를 지정했다.

multipartFile.transferTo(new File(getFullPath(storeFileName,request)));하세요

그리고 저장하려는 디렉토리에 들어가서 하위 명령어를 쳐주었다.

$ sudo mkdir /resource
$ sudo chmod 775 /resource
$ sudo chown ubuntu /resource

결과적으로 ec2에서 기본적으로 생성하는 계정에서 쓰기 권한이 없어서 권한을 755로 주고 ubuntu를 소유자로 바꿔주었다.

잘 저장되어지는 것을 확인했다.

하지만 다른 사례를 찾아보니 그래도 안되는 것들이 있는 것 같다. 톰 캣 계정 자체가 내장되어있는 것들에 대한 것 같다.

다음에 그래도 오류가 뜨면 실행해보고 싶은 방법이라 기술한다.

$ sudo nano /etc/systemd/system/muti-user.target.wants/tomcat9.service
결과
File.io.IOException 오류가 나고있다.
열심히 구글링해봤지만 권한을 부여하는것 이외에는 찾을수없었다..
그러다 stackoverfloow에서 독특한 댓글을 발견했다. tomcat8.5 이상의 데비안/우분투에서 이러한 이슈가 발생하는것을 누군가 댓글로 남겼다. 그사람의 말로는 tomcat9.service 설정파일에서 ReadWrite 권한을 부여해야 tomcat이 해당폴더로 접근가능하다는 것이 었다. 그렇다면 tomcat9.service 파일은 어디에 존재할까..
해당 파일을 nano 명령어로 열어보면 Security 설정에서ReadWritePaths에 /uploads에 관한 패스설정이 없는것을 확인할수 있다. 제일하단에 추가한 후 재시작 명령어를 날리도록 하자..
$ sudo systemctl daemon-reload
$ sudo systemctl restart tomcat9

출처 : https://kig6022.tistory.com/10 벨로그
참고 : https://serverfault.com/questions/989150/application-logging-broken-under-tomcat-9-permission-denied-to-var-log-myapp

좋은 웹페이지 즐겨찾기