자바(Java) & 인텔리제이

Java / Java 파일 생성,저장 시 파일 권한 설정하기 / 아과노트

아과노트 2023. 9. 11. 18:58
728x90
반응형

안녕하세요, 

 

아과노트 입니다.

 

오늘은 Java에서 파일을 생성하거나 저장할 때 권한을 설정하는 방법에 대해 알아보겠습니다.

 

스프링부트에서 파일을 올리면 기본적으로는 소유자에게만 권한이 생깁니다.

 

ls -lart로 권한을 확인하면 다음처럼 생깁니다.

 

파일의 권한확인

 

파일에는 소유자 / 그룹 / 기타 로 권한이 나뉘어 지는데

기타에 권한이 없기때문에 다른 프로그램에서 해당 파일을 접근하면 403 에러가 발생합니다.

 

이 문제를 해결하기 위해 chmod 를 이용해서 할 수도 있습니다.

 

하지만 매번 파일이 올라갈 때마다 손으로 할 수 없기 때문에 java에서 파일을 올리면서 파일의 권한도 설정할 수 있게 해보겠습니다.

 

 오늘 참고한 문서는 다음과 같습니다.

 

https://www.tutorialspoint.com/java/io/file_setreadable_owner.htm

 

Java.io.File.setReadable() Method

Java io File setReadable() Method - The java.io.File.setReadable(boolean readable) method sets the owner's and everybody's read access permission for this abstract pathname.

www.tutorialspoint.com

 

핵심적인 함수는 다음과 같습니다.

 

Java.io.File.setReadable()

Java.io.File.setWritable()

Java.io.File.setExecutable()

 

여기서 인자를 보면 첫번째는 권한 여부를 boolean 타입으로(true, false), 

그리고 두번째로는 소유자(ownerOnly)에게만 적용할 지에 대한 여부입니다.

 

그래서 그룹과 기타에도 읽기 권한을 주고 싶다면 다음과 같이 셋팅하면 됩니다.

 

setReadable(true, false)

 

그러면 파일셋팅하는 소스를 보겠습니다.

 

String filePath = "파일 저장할 경로";
File file = new File(filePath);
file.setReadable(true, false);

 

이렇게 해서 저장하면 다음과 같이 파일 권한이 셋팅된 것을 볼 수 있습니다.

 

기타에도 적용된 파일 읽기권한

도커의 컨테이너로 다 옮기면서 파일 업로드 후에 그 업로드 파일을 Nginx나 Apache를 통해서 보여줄려고 했는데

서로 서버가 다르다 보니 읽어오지 못하는 현상이 발생했었습니다.

 

이 현상에 대해서 어디에도 잘 설명이 안되어 있어서

기록으로 남겨봅니다.

 

다른 분들은 삽질이 줄어 들었으면 좋겠습니다.

 

오늘은 여기까지 입니다.

감사합니다.

 

728x90
반응형