diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Context.java b/ql/src/java/org/apache/hadoop/hive/ql/Context.java index f21ac7efaad5..d762c4e5761b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Context.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Context.java @@ -582,6 +582,9 @@ private Path getScratchDir(String scheme, String authority, throw new RuntimeException("Cannot make directory: " + dirPath.toString()); } + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(dirPath, fsPermission); + } if (isHDFSCleanup) { fs.deleteOnExit(dirPath); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java b/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java index 4b833b730cf9..3edd3d64218b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java @@ -371,6 +371,9 @@ private QueryResultsCache(HiveConf configuration) throws IOException { FsPermission fsPermission = new FsPermission("700"); fs.mkdirs(cacheDirPath, fsPermission); + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(cacheDirPath, fsPermission); + } // Create non-existent path for 0-row results zeroRowsPath = new Path(cacheDirPath, "dummy_zero_rows"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java index ba8d53fbfb25..3f7b6e25b41e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java @@ -796,6 +796,9 @@ private Path createTezDir(String sessionId, String suffix) throws IOException { FileSystem fs = tezDir.getFileSystem(conf); FsPermission fsPermission = new FsPermission(HiveConf.getVar(conf, HiveConf.ConfVars.SCRATCHDIRPERMISSION)); fs.mkdirs(tezDir, fsPermission); + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(tezDir, fsPermission); + } // Make sure the path is normalized (we expect validation to pass since we just created it). tezDir = DagUtils.validateTargetDir(tezDir, conf).getPath(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 32c0891d3f94..6dbe916e96dc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -853,6 +853,9 @@ static void createPath(HiveConf conf, Path path, String permission, boolean isLo if (!fs.mkdirs(path, fsPermission)) { throw new IOException("Failed to create directory " + path + " on fs " + fs.getUri()); } + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(path, fsPermission); + } String dirType = isLocal ? "local" : "HDFS"; LOG.info("Created " + dirType + " directory: " + path.toString()); }