Repository: hadoop Updated Branches: refs/heads/branch-2.7 faf87ddf7 -> 7a4064188
xattr api cleanup Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7a406418 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7a406418 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7a406418 Branch: refs/heads/branch-2.7 Commit: 7a4064188033f7f92caac354adf76cc3dd6ac68c Parents: faf87dd Author: Kihwal Lee <[email protected]> Authored: Thu Feb 15 11:42:47 2018 -0600 Committer: Kihwal Lee <[email protected]> Committed: Thu Feb 15 11:42:47 2018 -0600 ---------------------------------------------------------------------- .../hdfs/server/namenode/FSDirXAttrOp.java | 3 +-- .../hdfs/server/namenode/FSXAttrBaseTest.java | 26 +++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a406418/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java index cba3506..64d13f9 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java @@ -134,8 +134,7 @@ class FSDirXAttrOp { final boolean isRawPath = FSDirectory.isReservedRawName(src); final INodesInPath iip = fsd.resolvePath(pc, src); if (fsd.isPermissionEnabled()) { - /* To access xattr names, you need EXECUTE in the owning directory. */ - fsd.checkParentAccess(pc, iip, FsAction.EXECUTE); + fsd.checkPathAccess(pc, iip, FsAction.READ); } final List<XAttr> all = FSDirXAttrOp.getXAttrs(fsd, iip); return XAttrPermissionFilter. http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a406418/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSXAttrBaseTest.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSXAttrBaseTest.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSXAttrBaseTest.java index 75fd8dc..8533945 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSXAttrBaseTest.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSXAttrBaseTest.java @@ -837,28 +837,37 @@ public class FSXAttrBaseTest { } /* - * Check that execute/scan access to the parent dir is sufficient to get - * xattr names. + * Check that execute/scan access to the parent dir is not + * sufficient to get xattr names. */ fs.setPermission(path, new FsPermission((short) 0701)); user.doAs(new PrivilegedExceptionAction<Object>() { @Override public Object run() throws Exception { + try { final FileSystem userFs = dfsCluster.getFileSystem(); userFs.listXAttrs(childDir); - return null; + fail("expected AccessControlException"); + } catch (AccessControlException ace) { + GenericTestUtils.assertExceptionContains("Permission denied", ace); } + return null; + } }); /* * Test that xattrs in the "trusted" namespace are filtered correctly. */ + // Allow the user to read child path. + fs.setPermission(childDir, new FsPermission((short) 0704)); fs.setXAttr(childDir, "trusted.myxattr", "1234".getBytes()); user.doAs(new PrivilegedExceptionAction<Object>() { @Override public Object run() throws Exception { final FileSystem userFs = dfsCluster.getFileSystem(); - assertTrue(userFs.listXAttrs(childDir).size() == 1); + List<String> xattrs = userFs.listXAttrs(childDir); + assertTrue(xattrs.size() == 1); + assertEquals(name1, xattrs.get(0)); return null; } }); @@ -1106,8 +1115,13 @@ public class FSXAttrBaseTest { * and non-root can't do listXAttrs on /.reserved/raw. */ // non-raw path - final List<String> xattrNames = userFs.listXAttrs(path); - assertTrue(xattrNames.size() == 0); + try { + userFs.listXAttrs(path); + fail("listXAttr should have thrown AccessControlException"); + } catch (AccessControlException ace) { + // expected + } + try { // raw path userFs.listXAttrs(rawPath); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
