@Override boolean apply(Path p) throws IOException { fs.setAcl(p, aclSpec); return true; } }.run(src);
@Override public void setAcl(Path path, List<AclEntry> aclSpec) throws IOException { fs.setAcl(path, aclSpec); }
@Override public void setAcl(Path path, List<AclEntry> aclSpec) throws IOException { InodeTree.ResolveResult<FileSystem> res = fsState.resolve(getUriPath(path), true); res.targetFileSystem.setAcl(res.remainingPath, aclSpec); }
/** * Tests that link HdfsUtils#setFullFileStatus * does not thrown an exception when setting ACLs and without recursion. */ @Test public void testSetFullFileStatusFailInheritAcls() throws IOException { Configuration conf = new Configuration(); conf.set("dfs.namenode.acls.enabled", "true"); HdfsUtils.HadoopFileStatus mockHadoopFileStatus = mock(HdfsUtils.HadoopFileStatus.class); FileStatus mockSourceStatus = mock(FileStatus.class); AclStatus mockAclStatus = mock(AclStatus.class); FileSystem mockFs = mock(FileSystem.class); when(mockSourceStatus.getPermission()).thenReturn(new FsPermission((short) 777)); when(mockAclStatus.toString()).thenReturn(""); when(mockHadoopFileStatus.getFileStatus()).thenReturn(mockSourceStatus); when(mockHadoopFileStatus.getAclEntries()).thenReturn(new ArrayList<>()); when(mockHadoopFileStatus.getAclStatus()).thenReturn(mockAclStatus); doThrow(RuntimeException.class).when(mockFs).setAcl(any(Path.class), any(List.class)); HdfsUtils.setFullFileStatus(conf, mockHadoopFileStatus, null, mockFs, new Path("fakePath"), false); verify(mockFs).setAcl(any(Path.class), any(List.class)); }
fs.setAcl(target, aclEntries);
fs.setAcl(target, aclEntries);
@Override protected void processPath(PathData item) throws IOException { if (cf.getOpt("b")) { item.fs.removeAcl(item.path); } else if (cf.getOpt("k")) { item.fs.removeDefaultAcl(item.path); } else if (cf.getOpt("m")) { List<AclEntry> entries = getAclEntries(item); if (!entries.isEmpty()) { item.fs.modifyAclEntries(item.path, entries); } } else if (cf.getOpt("x")) { List<AclEntry> entries = getAclEntries(item); if (!entries.isEmpty()) { item.fs.removeAclEntries(item.path, entries); } } else if (cf.getOpt("-set")) { List<AclEntry> entries = getAclEntries(item); if (!entries.isEmpty()) { item.fs.setAcl(item.path, entries); } } }
List<AclEntry> srcFullEntries = AclUtil.getAclFromPermAndEntries(perm, srcEntries); target.fs.setAcl(target.path, srcFullEntries);
@Override boolean apply(Path p) throws IOException { fs.setAcl(p, aclSpec); return true; } }.run(src);
@Override boolean apply(Path p) throws IOException { fs.setAcl(p, aclSpec); return true; } }.run(src);
@Override boolean apply(Path p) throws IOException { fs.setAcl(p, aclSpec); return true; } }.run(src);
@Override public Void next(final FileSystem fs, final Path p) throws IOException { fs.setAcl(p, aclSpec); return null; } }.resolve(this, absF);
@Override public Void next(final FileSystem fs, final Path p) throws IOException { fs.setAcl(p, aclSpec); return null; } }.resolve(this, absF);
@Override public void setAcl(Path path, List<AclEntry> aclSpec) throws IOException { try { underlyingFs.setAcl(path, aclSpec); } catch(FSError e) { throw propagateFSError(e); } }
@Override public void setAcl(Path path, List<AclEntry> aclSpec) throws IOException { fileSystem.setAcl(convertToDefaultPath(path), aclSpec); }
@Override public void setAcl(Path path, List<AclEntry> aclSpec) throws IOException { InodeTree.ResolveResult<FileSystem> res = fsState.resolve(getUriPath(path), true); res.targetFileSystem.setAcl(res.remainingPath, aclSpec); }
@Test(expected=AclException.class) public void testSetAclDefaultOnFile() throws IOException { fs.create(path).close(); fs.setPermission(path, FsPermission.createImmutable((short)0640)); List<AclEntry> aclSpec = Lists.newArrayList( aclEntry(DEFAULT, USER, "foo", ALL)); fs.setAcl(path, aclSpec); }
@Test public void testAclReadTargetNotReadable() throws Exception { fs.setAcl(target, Arrays.asList( aclEntry(ACCESS, USER, READ_WRITE), aclEntry(ACCESS, USER, user.getUserName(), NONE), aclEntry(ACCESS, GROUP, READ), aclEntry(ACCESS, OTHER, READ))); doReadTargetNotReadable(); }
@Test public void testAclRenameSrcNotWritableFC() throws Exception { fs.setAcl(linkParent, Arrays.asList( aclEntry(ACCESS, USER, ALL), aclEntry(ACCESS, USER, user.getUserName(), READ_EXECUTE), aclEntry(ACCESS, GROUP, ALL), aclEntry(ACCESS, OTHER, ALL))); doRenameSrcNotWritableFC(); }
@Test(expected=FileNotFoundException.class) public void testSetAclPathNotFound() throws IOException { // Path has not been created. List<AclEntry> aclSpec = Lists.newArrayList( aclEntry(ACCESS, USER, READ_WRITE), aclEntry(ACCESS, USER, "foo", READ), aclEntry(ACCESS, GROUP, READ), aclEntry(ACCESS, OTHER, NONE)); fs.setAcl(path, aclSpec); }