zhouyingchao created HDFS-8649:
----------------------------------
Summary: Default ACL is not inherited if directory is generated by
FileSystem.create interface
Key: HDFS-8649
URL: https://issues.apache.org/jira/browse/HDFS-8649
Project: Hadoop HDFS
Issue Type: Bug
Reporter: zhouyingchao
Assignee: zhouyingchao
I have a directory /acltest/t, whose acl is as following:
{code}
# file: /acltest/t
# owner: hdfs_tst_admin
# group: supergroup
user::rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::rwx
{code}
My program create a file /acltest/t/a/b using the FileSystem.create interface.
The acl of directory /acltest/t/a is as following:
{code}
# file: /acltest/t/a
# owner: hdfs_tst_admin
# group: supergroup
user::rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::rwx
{code}
As you can see, the child directory "b" did not inherit its parent's default
acl for other.
By looking into the implementation, the FileSystem.create interface will
automatically create non-existing entries in the path, it is done by calling
FSNamesystem.mkdirsRecursively and hard-coded the third param
(inheritPermission) as true. In FSNamesystem.mkdirsRecursively, when
inheritPermission is true, the parent's real permission (rather than
calculation from default acl) would be used as the new directory's permission.
Is this behavior correct? The default acl is not worked as people expected. It
kind of render many access issues in our setup.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)