🚨에러노트

[Solved][Ubuntu] ERROR c.i.b.d.M.service.Service.'...' - Permission denied & java.base/java.io.unixfilesystem.createfileexclusively(native method)

디카페인라떼 2022. 10. 22. 02:47
문제상황

서버로 배포한 상황에서 이미지 업로드 문제를 로컬에서 해결했는데도 여전히 업로드가 안되고 있었다.

로컬에서와 마찬가지로 다른 Data 값들은 모두 DB에 저장이 잘되는데 이미지만 null 값으로 들어가고 있었다.

 

서버로그

어디선가 권한이 거절당했다고 한다... 

1) 로컬에서는 잘 돌아갔으니 AMI 권한은 아닐 것이다 (AWS에서 다시 확인해주었다)

2) Json Data는 잘들어가고 있으니 DB 복호화 문제도 아닐 것 이다 + 로컬에서 이미 fix했다

3) 요청으로 들어오는 이미지 값이 문제일까?

 

 

좀더 자세히 보기 위해서 로그를 보는 설정을 추가해 주었다. 

 👉 요청으로 들어오는 multipart 이미지 값은 잘 받았으나 예외로 빠지고 있었다.

 

 

해결방법

드디어 제대로된 에러 로그가 나왔다. (코딩할때부터 에러로그 찍는 걸 추가해 줘야하는 이유.. 이거 없어서 몇시간을 고생했다..ㅠ)

 

👉 java.base/java.io.unixfilesystem.createfileexclusively(native method)

 

Linux시스템에서 사용자 계정으로 java 컴파일이 발생한 경우 해당 오류가 나타난다고 한다. 

 

자동배포 중이므로 컴파일 시에 권한을 강화해주는 방법을 쓰기로 하였다.

쉘스크립트를 수정해주었다. 

 

[Before]

nohup java -jar $JAR_FIL &

[After]

sudo nohup java -jar $JAR_FIL &

👉root 권한으로 실행하는 sudo를 추가해주어서 컴파일할 때마다 root 권한으로 시행하게 해주었다. 

 

테스트

이미지가 잘 들어간 것을 확인할 수 있다!