AclFileAttributeView — 파일의 ACL 또는 파일 소유자 속성을 읽거나 갱신하는 파일 속성 뷰

AclFileAttributeView — 파일의 ACL 또는 파일 소유자 속성을 읽거나 갱신하는 파일 속성 뷰

AclFileAttributeView는 파일의 접근 제어 목록(ACL, Access Control List) 또는 파일 소유자 속성을 읽거나 갱신하는 것을 지원하는 파일 속성 뷰예요.

출처: Java API Reference

본문

public interface AclFileAttributeView extends FileOwnerAttributeView

파일의 ACL 또는 파일 소유자 속성을 읽거나 갱신하는 것을 지원하는 파일 속성 뷰예요. ACL은 파일 시스템 객체에 대한 접근 권한을 지정하는 데 사용돼요. ACL은 접근 제어 항목(access-control-entry)들의 정렬된 목록이며, 각 항목은 UserPrincipal과 그 사용자 principal에 대한 접근 수준을 지정해요.

이 파일 속성 뷰는 RFC 3530(Network File System version 4 Protocol)에 명시된 ACL 모델을 기반으로 ACL을 읽고 쓰는 getAclsetAcl 메서드를 정의해요. 이 뷰는 NFSv4 ACL 모델을 지원하거나 NFSv4 ACL 모델과 파일 시스템이 사용하는 ACL 모델 사이의 잘 정의된 매핑을 가진 파일 시스템 구현을 위한 것이에요.

이 클래스는 또한 파일 소유자를 얻고 설정하는 메서드를 정의하기 위해 FileOwnerAttributeView를 확장해요.

파일 시스템이 동질적이지 않은 파일 시스템 집합에 접근을 제공하는 경우 일부 파일 시스템만 ACL을 지원할 수 있어요. supportsFileAttributeView 메서드로 파일 시스템이 ACL을 지원하는지 검사할 수 있어요.

상호 운용성

RFC 3530은 POSIX 정의 접근 권한을 지원하는 플랫폼에 특수 사용자 정체성을 사용하도록 허용해요. 특수 사용자 정체성은 "OWNER@", "GROUP@", "EVERYONE@"이에요. AclFileAttributeViewPosixFileAttributeView가 모두 지원되면 이러한 특수 사용자 정체성이 읽거나 쓰는 ACL 항목에 포함될 수 있어요.

사용 예

// "joe" 조회
UserPrincipal joe = file.getFileSystem().getUserPrincipalLookupService()
    .lookupPrincipalByName("joe");

// 뷰 얻기
AclFileAttributeView view = Files.getFileAttributeView(file, AclFileAttributeView.class);

// "joe"에게 읽기 접근을 주는 ACE 생성
AclEntry entry = AclEntry.newBuilder()
    .setType(AclEntryType.ALLOW)
    .setPrincipal(joe)
    .setPermissions(AclEntryPermission.READ_DATA, AclEntryPermission.READ_ATTRIBUTES)
    .build();

// ACL 읽기, ACE 삽입, ACL 다시 쓰기
List<AclEntry> acl = view.getAcl();
acl.add(0, entry); // 어떤 DENY 항목 앞에 삽입
view.setAcl(acl);

지원 속성

이름 타입
"acl" List<AclEntry>
"owner" UserPrincipal

메서드 요약

수식자와 타입 메서드 설명
List<AclEntry> getAcl() 접근 제어 목록을 읽어요.
String name() 속성 뷰의 이름을 반환해요.
void setAcl(List<AclEntry> acl) 접근 제어 목록을 갱신(대체)해요.

FileOwnerAttributeView에 선언된 메서드: getOwner, setOwner

name

String name() — 속성 뷰의 이름을 반환해요. 이 유형의 속성 뷰는 "acl"이라는 이름을 가져요.

getAcl

List<AclEntry> getAcl() throws IOException

접근 제어 목록을 읽어요. 파일 시스템이 NFSv4 정의 ACL 모델과 다른 ACL 모델을 사용하면, 이 메서드는 ACL을 NFSv4 ACL 모델로 변환한 값을 반환해요. 반환된 목록은 수정 가능해 기존 ACL 변경을 용이하게 해요.

예외: IOException — I/O 오류 발생 시, SecurityException — 기본 프로바이더의 경우 보안 관리자가 설치되어 RuntimePermission("accessUserInformation")을 거부하거나 checkRead 메서드가 파일 읽기를 거부할 때

setAcl

void setAcl(List<AclEntry> acl) throws IOException

접근 제어 목록을 갱신(대체)해요. 파일 시스템이 NFSv4 정의 ACL 모델과 다른 ACL 모델을 사용하면, 이 메서드는 ACL을 파일 시스템이 지원하는 모델로 변환해야 해요. ACL 항목에 이 속성 뷰와 같은 프로바이더와 연관되지 않은 사용자 principal이 포함되면 ProviderMismatchException이 발생해요.

예외: IOException — I/O 오류 발생 또는 ACL이 유효하지 않을 때, SecurityException — 기본 프로바이더의 경우 보안 관리자가 설치되어 RuntimePermission("accessUserInformation")을 거부하거나 checkWrite 메서드가 파일 쓰기를 거부할 때

더 알아보기 (Learn more)

Java 공식 API