본문 바로가기

WAS/Tomcat

[Linux] Tomcat9 File.io.IOException permission denied 오류 처리

개발환경

OS: Ubuntu 16.04

WAS: Tomcat9

Framework: Spring boot

 

파일업로드, 다운로드 관련 기능을 만들다 보면 파일권한문제가 생길때가 있다.

일반적인 처리방법은 Tomcat 사용자를 생성하고 Tomcat 사용자에게 chown 명령어로

권한을 부여한다. 그런데 이번이슈는 권한을 777로 부여했음에도 파일업로드를 진행하면

File.io.IOException / permission denied 오류를 뱉어내고 있다.

 

시도

/uploads 폴더를 생성하고 모든권한을 tomcat 사용자에게 부여했다.

$ sudo mkdir /uploads
$ sudo chmod -R 775 uploads
$sudo chown tomcat.tomcat uploads

 

결과

File.io.IOException 오류가 나고있다. 

 

열심히 구글링해봤지만 권한을 부여하는것 이외에는 찾을수없었다..

그러다 stackoverfloow에서 독특한 댓글을 발견했다. tomcat8.5 이상의 데비안/우분투에서 이러한 이슈가 발생하는것을

누군가 댓글로 남겼다. 그사람의 말로는 tomcat9.service 설정파일에서 ReadWrite 권한을 부여해야

tomcat이 해당폴더로 접근가능하다는 것이 었다.

그렇다면 tomcat9.service 파일은 어디에 존재할까..

 

$ sudo nano /etc/systemd/system/muti-user.target.wants/tomcat9.service

해당 파일을 nano 명령어로 열어보면 Security 설정에서

ReadWritePaths에 /uploads에 관한 패스설정이 없는것을 확인할수 있다.

 

제일하단에 추가한 후 재시작 명령어를 날리도록 하자..

$ sudo systemctl daemon-reload
$ sudo systemctl restart tomcat9

 

출처: https://serverfault.com/questions/989150/application-logging-broken-under-tomcat-9-permission-denied-to-var-log-myapp

'WAS > Tomcat' 카테고리의 다른 글

[Tomcat] Http로 접근시 Https로 redirect 시키기  (0) 2020.06.16