Java - 파일 권한 확인 및 변경

By JS | Last updated: October 10, 2021

Java에서 파일의 Read, Write, Execute 권한을 변경하는 방법에 대해서 소개합니다.

1. File이 권한을 갖고 있는지 확인

File은 다음과 같이 퍼미션을 확인할 수 있는 API를 제공합니다.

  • File.canExecute() : 파일이 execute 권한을 갖고 있으면 true를 리턴, 그렇지 않으면 false를 리턴
  • File.canWrite() : 파일이 write 권한을 갖고 있으면 true를 리턴, 그렇지 않으면 false를 리턴
  • File.canRead() : 파일이 read 권한을 갖고 있으면 true를 리턴, 그렇지 않으면 false를 리턴

2. File에 Read, Write, Execute 권한 부여

File은 다음과 같이 퍼미션을 설정할 수 있는 API를 제공합니다.

  • File.setExecutable() : 파일에 execute 권한 부여, 설정이 성공하면 true를 리턴
  • File.setReadable() : 파일에 read 권한 부여, 설정이 성공하면 true를 리턴
  • File.setWritable() : 파일에 write 권한 부여, 설정이 성공하면 true를 리턴

3. 권한 변경 예제

먼저 아래 파일의 권한 확인 및 변경할 것입니다. shell에서 권한을 확인해보면 Owner에 Read, Write, Execute 권한이 모두 부여되어있습니다.

$ ls -al sample.txt
-rwxrwxrwx 1 mjs mjs 0 10월 10 12:06 sample.txt

다음은 파일의 권한 확인 및 권한을 변경하는 예제입니다. Read, Write, Execute 권한을 모두 제한합니다.

import java.io.File;
import java.io.IOException;

public class FilePermission {
    public static void main(String[] args) throws IOException {

        File file = new File("/var/tmp/sample.txt");
        if(file.exists()){
            System.out.println("canExecute: " + file.canExecute());
            System.out.println("canWrite: " + file.canWrite());
            System.out.println("canRead: " + file.canRead());

            file.setExecutable(false);
            file.setReadable(false);
            file.setWritable(false);

            System.out.println("- After changing permissions");
            System.out.println("canExecute: " + file.canExecute());
            System.out.println("canWrite: " + file.canWrite());
            System.out.println("canRead: " + file.canRead());
        }

    }
}

Output:

canExecute: true
canWrite: true
canRead: true
- After changing permissions
canExecute: false
canWrite: false
canRead: false

위 코드 실행 후, shell에서 다시 파일의 권한을 확인해보면 Owner의 rwx 권한이 모두 회수된 것을 확인할 수 있습니다.

$ ls -al sample.txt
----rwxrwx 1 mjs mjs 0 10월 10 12:06 sample.txt

References

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha