hadoop filesystem.mkdirs(路径,权限)忽略权限

cuxqih21  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(565)

我正在尝试以编程方式在hdfs中创建目录。我需要所有用户都可以写的目录。所以我试着像这样把经验传给MKDIR:

  1. Path dir = new Path("/tmp/mkdir-test");
  2. fileSystem.mkdirs(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));

但是,结果是我用 drwxr-xr-x 许可。这似乎不是什么总体权限问题,因为如果我在下一行显式设置它们:

  1. // For some reason the initial permissions are ignored
  2. fileSystem.setPermission(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));

目录以 drwxrwxrwx 如预期的那样。
为什么要将权限传递给 mkdirs 不受尊重?

gv8xihay

gv8xihay1#

尽管实际方法的javadoc没有提及任何内容,但是存在静态方法 FileSystem.mkdirs(FileSystem, Path, FsPermission) 这提供了一些解释:
使用提供的权限创建目录。目录的权限设置为setpermission中提供的权限,而不是permission&~umask。
结果证明 mkdirs 和umask的许可。
静态效用方法实现为 mkdirs 以及 setPermission

相关问题