Я пытаюсь установить разрешения для файла для группы администраторов из Java в Windows. Ниже приведен мой код:
public static void main(String[] args) throws IOException {
final Path path = Paths.get("C:/Dev/dummy/test");
FileAttribute<?> permissions = new FileAttribute<List<AclEntry>>() {
public String name() {
return "acl:acl";
}
public List<AclEntry> value() {
try {
return get600ACL(path.getFileSystem());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
};
Files.createFile(path, permissions);
}
private static List<AclEntry> get600ACL(FileSystem fileSystem) throws IOException {
List<AclEntry> aclEntryList = new ArrayList<AclEntry>();
AclEntry.Builder acl3 = AclEntry.newBuilder();
acl3.setPermissions(EnumSet.of(
AclEntryPermission.READ_DATA, AclEntryPermission.WRITE_DATA, AclEntryPermission.WRITE_ATTRIBUTES,
AclEntryPermission.SYNCHRONIZE, AclEntryPermission.READ_ACL, AclEntryPermission.READ_ATTRIBUTES, AclEntryPermission.READ_NAMED_ATTRS,
AclEntryPermission.DELETE, AclEntryPermission.WRITE_NAMED_ATTRS, AclEntryPermission.APPEND_DATA, AclEntryPermission.EXECUTE, AclEntryPermission.DELETE,
AclEntryPermission.DELETE_CHILD, AclEntryPermission.ADD_FILE, AclEntryPermission.ADD_SUBDIRECTORY, AclEntryPermission.LIST_DIRECTORY, AclEntryPermission.WRITE_ACL,
AclEntryPermission.WRITE_ATTRIBUTES, AclEntryPermission.WRITE_DATA, AclEntryPermission.WRITE_OWNER
));
GroupPrincipal grp2 = fileSystem.getUserPrincipalLookupService().lookupPrincipalByGroupName("Administrators");
acl3.setPrincipal(grp2);
acl3.setType(AclEntryType.ALLOW);
AclEntry entry3 = acl3.build();
aclEntryList.add(entry3);
return aclEntryList;
}
После создания файла разрешения являются правильными, как показано на этом изображении
Нокогда я создаю нового пользователя, даю ему права администратора и пытаюсь открыть файл, он говорит, что у пользователя нет прав на чтение. Может кто-нибудь сказать мне, где я иду не так?