AclFileAttributeView — 파일의 ACL 또는 파일 소유자 속성을 읽거나 갱신하는 파일 속성 뷰
AclFileAttributeView — 파일의 ACL 또는 파일 소유자 속성을 읽거나 갱신하는 파일 속성 뷰
AclFileAttributeView는 파일의 접근 제어 목록(ACL, Access Control List) 또는 파일 소유자 속성을 읽거나 갱신하는 것을 지원하는 파일 속성 뷰예요.
본문
public interface AclFileAttributeView extends FileOwnerAttributeView
파일의 ACL 또는 파일 소유자 속성을 읽거나 갱신하는 것을 지원하는 파일 속성 뷰예요. ACL은 파일 시스템 객체에 대한 접근 권한을 지정하는 데 사용돼요. ACL은 접근 제어 항목(access-control-entry)들의 정렬된 목록이며, 각 항목은 UserPrincipal과 그 사용자 principal에 대한 접근 수준을 지정해요.
이 파일 속성 뷰는 RFC 3530(Network File System version 4 Protocol)에 명시된 ACL 모델을 기반으로 ACL을 읽고 쓰는 getAcl과 setAcl 메서드를 정의해요. 이 뷰는 NFSv4 ACL 모델을 지원하거나 NFSv4 ACL 모델과 파일 시스템이 사용하는 ACL 모델 사이의 잘 정의된 매핑을 가진 파일 시스템 구현을 위한 것이에요.
이 클래스는 또한 파일 소유자를 얻고 설정하는 메서드를 정의하기 위해 FileOwnerAttributeView를 확장해요.
파일 시스템이 동질적이지 않은 파일 시스템 집합에 접근을 제공하는 경우 일부 파일 시스템만 ACL을 지원할 수 있어요. supportsFileAttributeView 메서드로 파일 시스템이 ACL을 지원하는지 검사할 수 있어요.
상호 운용성
RFC 3530은 POSIX 정의 접근 권한을 지원하는 플랫폼에 특수 사용자 정체성을 사용하도록 허용해요. 특수 사용자 정체성은 "OWNER@", "GROUP@", "EVERYONE@"이에요. AclFileAttributeView와 PosixFileAttributeView가 모두 지원되면 이러한 특수 사용자 정체성이 읽거나 쓰는 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 메서드가 파일 쓰기를 거부할 때