mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
Un-jankify root user detection
This commit is contained in:
parent
b7e5de9401
commit
2af3439727
1 changed files with 2 additions and 19 deletions
|
@ -20,11 +20,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
+
|
||||
+import com.sun.security.auth.module.NTSystem;
|
||||
+import com.sun.security.auth.module.UnixSystem;
|
||||
+import org.apache.commons.lang.SystemUtils;
|
||||
+
|
||||
+import java.io.IOException;
|
||||
+import java.io.InputStream;
|
||||
+import java.util.Set;
|
||||
+import org.apache.commons.lang.SystemUtils;
|
||||
+
|
||||
+public class ServerEnvironment {
|
||||
+ private static final boolean RUNNING_AS_ROOT_OR_ADMIN;
|
||||
|
@ -34,21 +31,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||
+ if (SystemUtils.IS_OS_WINDOWS) {
|
||||
+ RUNNING_AS_ROOT_OR_ADMIN = Set.of(new NTSystem().getGroupIDs()).contains(WINDOWS_HIGH_INTEGRITY_LEVEL);
|
||||
+ } else {
|
||||
+ boolean isRunningAsRoot = false;
|
||||
+ if (new UnixSystem().getUid() == 0) {
|
||||
+ // Due to an OpenJDK bug (https://bugs.openjdk.java.net/browse/JDK-8274721), UnixSystem#getUid incorrectly
|
||||
+ // returns 0 when the user doesn't have a username. Because of this, we'll have to double-check if the user ID is
|
||||
+ // actually 0 by running the id -u command.
|
||||
+ try {
|
||||
+ Process process = new ProcessBuilder("id", "-u").start();
|
||||
+ process.waitFor();
|
||||
+ InputStream inputStream = process.getInputStream();
|
||||
+ isRunningAsRoot = new String(inputStream.readAllBytes()).trim().equals("0");
|
||||
+ } catch (InterruptedException | IOException ignored) {
|
||||
+ isRunningAsRoot = false;
|
||||
+ }
|
||||
+ }
|
||||
+ RUNNING_AS_ROOT_OR_ADMIN = isRunningAsRoot;
|
||||
+ RUNNING_AS_ROOT_OR_ADMIN = new UnixSystem().getUid() == 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
|
|
Loading…
Reference in a new issue