Skip to content

Commit 61c38bb

Browse files
committed
HADOOP-19031. Enhance access control for RunJar. (#6427). Contributed by He Xiaoqiao.
Signed-off-by: Shuyan Zhang <[email protected]> Signed-off-by: Shilun Fan <[email protected]> Signed-off-by: Ayush Saxena <[email protected]> (cherry picked from commit 9634bd3)
1 parent 666561e commit 61c38bb

File tree

1 file changed

+9
-7
lines changed
  • hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util

1 file changed

+9
-7
lines changed

hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,14 @@
2828
import java.net.URL;
2929
import java.net.URLClassLoader;
3030
import java.nio.file.Files;
31+
import java.nio.file.attribute.FileAttribute;
32+
import java.nio.file.attribute.PosixFilePermission;
33+
import java.nio.file.attribute.PosixFilePermissions;
3134
import java.util.ArrayList;
3235
import java.util.Arrays;
3336
import java.util.Enumeration;
3437
import java.util.List;
38+
import java.util.Set;
3539
import java.util.jar.JarEntry;
3640
import java.util.jar.JarFile;
3741
import java.util.jar.JarInputStream;
@@ -287,20 +291,18 @@ public void run(String[] args) throws Throwable {
287291

288292
final File workDir;
289293
try {
290-
workDir = File.createTempFile("hadoop-unjar", "", tmpDir);
291-
} catch (IOException ioe) {
294+
FileAttribute<Set<PosixFilePermission>> perms = PosixFilePermissions
295+
.asFileAttribute(PosixFilePermissions.fromString("rwx------"));
296+
workDir = Files.createTempDirectory(tmpDir.toPath(), "hadoop-unjar", perms).toFile();
297+
} catch (IOException | SecurityException e) {
292298
// If user has insufficient perms to write to tmpDir, default
293299
// "Permission denied" message doesn't specify a filename.
294300
System.err.println("Error creating temp dir in java.io.tmpdir "
295-
+ tmpDir + " due to " + ioe.getMessage());
301+
+ tmpDir + " due to " + e.getMessage());
296302
System.exit(-1);
297303
return;
298304
}
299305

300-
if (!workDir.delete()) {
301-
System.err.println("Delete failed for " + workDir);
302-
System.exit(-1);
303-
}
304306
ensureDirectory(workDir);
305307

306308
ShutdownHookManager.get().addShutdownHook(

0 commit comments

Comments
 (0)