FilePermission — 파일/디렉터리 접근 권한

FilePermission — 파일/디렉터리 접근 권한

FilePermission은 파일 또는 디렉터리에 대한 접근을 나타내는 권한 클래스예요. FilePermission은 경로명과 그 경로명에 유효한 동작(actions)의 집합으로 구성됩니다.

출처: Java API Reference

본문

이 클래스는 java.security.Permission을 상속하며 Serializable, Guard를 구현하는 final 클래스예요.

경로명은 지정된 권한을 부여받는 파일이나 디렉터리의 경로명이에요. *는 해당 디렉터리에 포함된 모든 파일과 디렉터리를 나타내고, -는 그 디렉터리에 포함된 모든 파일과 하위 디렉터리를 나타내는 재귀 표기예요. <<ALL FILES>>는 파일 시스템의 모든 파일을 나타내요.

부여할 동작은 동작을 담은 문자열로 생성자에 전달돼요. 지원되는 동작은 다음과 같아요:

  • read — 읽기 권한. FileInputStream을 열 수 있게 해요.
  • write — 쓰기 권한. FileOutputStream을 열 수 있게 해요.
  • execute — 실행 권한. Runtime.exec 호출을 허용하며 SecurityManager.checkExec에 대응해요.
  • delete — 삭제 권한. File.delete 호출을 허용하며 SecurityManager.checkDelete에 대응해요.
  • readlink — 링크 읽기 권한. readSymbolicLink 메서드 호출로 심볼릭 링크의 대상을 읽을 수 있게 해요.

동작 문자열은 처리 전에 소문자로 변환됩니다. FilePermission을 부여할 때는 신중해야 해요. 특히 write 권한은 안전 관리자 보안에 매우 위험할 수 있어요. 예를 들어 "<<ALL FILES>>" "write" 권한은 전체 파일 시스템에 쓰는 권한을 부여하며, 사실상 JVM 런타임 환경을 포함한 시스템 바이너리를 교체할 수 있게 해 줘요.

생성자

  • FilePermission(String path, String actions) — 지정한 동작으로 새 FilePermission 객체를 만들어요. path는 권한이 부여된 파일/디렉터리의 경로명이고, actions는 부여할 동작 문자열이에요.

메서드

  • boolean equals(Object obj) — 두 FilePermission 객체의 동등성을 확인해요.
  • String getActions() — 이 권한의 동작을 정규화된 형식으로 반환해요.
  • int hashCode() — 이 객체의 해시 코드 값을 반환해요.
  • PermissionCollection newPermissionCollection()FilePermission 객체를 저장하기 위한 새 PermissionCollection 객체를 반환해요.

FilePermission은 보안 관리자 환경에서 파일 접근을 제어하는 데 사용되며, 특히 샌드박스 실행 환경에서 중요해요.

더 알아보기 (Learn more)