OS 파일 권한 제어

필요환경 : Java 1.7 이상에서 가능

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.util.Set;

public class ChangeFilePermission {

    public static void main(String[] args) {
        // 변경할 파일 경로 설정
        String filePath = "/path/to/your/file/example.sh";

        try {
            // 현재 파일 권한 출력
            displayFilePermissions(filePath);

            // 현재 파일 권한 가져오기
            Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(Path.of(filePath));

            // 실행 권한 추가
            permissions.add(PosixFilePermission.OWNER_EXECUTE);
            permissions.add(PosixFilePermission.GROUP_EXECUTE);
            permissions.add(PosixFilePermission.OTHERS_EXECUTE);

            // 변경된 권한으로 파일 업데이트
            Files.setPosixFilePermissions(Path.of(filePath), permissions);

            System.out.println("실행 권한이 성공적으로 추가되었습니다.");

            // 변경 후 파일 권한 출력
            displayFilePermissions(filePath);
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("실행 권한 추가 중 오류가 발생했습니다.");
        }
    }

    private static void displayFilePermissions(String filePath) throws IOException {
        Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(Path.of(filePath));

        System.out.println("현재 파일 권한:");
        System.out.println("Owner: " + permissions.contains(PosixFilePermission.OWNER_READ) + permissions.contains(PosixFilePermission.OWNER_WRITE) + permissions.contains(PosixFilePermission.OWNER_EXECUTE));
        System.out.println("Group: " + permissions.contains(PosixFilePermission.GROUP_READ) + permissions.contains(PosixFilePermission.GROUP_WRITE) + permissions.contains(PosixFilePermission.GROUP_EXECUTE));
        System.out.println("Others: " + permissions.contains(PosixFilePermission.OTHERS_READ) + permissions.contains(PosixFilePermission.OTHERS_WRITE) + permissions.contains(PosixFilePermission.OTHERS_EXECUTE));
        System.out.println();
    }
}