我正在尝试以编程方式在hdfs中创建目录。我需要所有用户都可以写的目录。所以我试着像这样把经验传给MKDIR:
Path dir = new Path("/tmp/mkdir-test");
fileSystem.mkdirs(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));
但是,结果是我用 drwxr-xr-x
许可。这似乎不是什么总体权限问题,因为如果我在下一行显式设置它们:
// For some reason the initial permissions are ignored
fileSystem.setPermission(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));
目录以 drwxrwxrwx
如预期的那样。
为什么要将权限传递给 mkdirs
不受尊重?
1条答案
按热度按时间gv8xihay1#
尽管实际方法的javadoc没有提及任何内容,但是存在静态方法
FileSystem.mkdirs(FileSystem, Path, FsPermission)
这提供了一些解释:使用提供的权限创建目录。目录的权限设置为setpermission中提供的权限,而不是permission&~umask。
结果证明
mkdirs
和umask的许可。静态效用方法实现为
mkdirs
以及setPermission