@@ -12,37 +12,32 @@ Co-authored-by: Noah van der Aa <ndvdaa@gmail.com>
1212
1313diff --git a/src/main/java/io/papermc/paper/util/ServerEnvironment.java b/src/main/java/io/papermc/paper/util/ServerEnvironment.java
1414new file mode 100644
15- index 0000000000000000000000000000000000000000..5ba45a071a5b7e9f2ef9f2dea7e07d74d83ccee4
15+ index 0000000000000000000000000000000000000000..0d8e415acb1e06532d9e1c2add576806b2aafdaa
1616--- /dev/null
1717+++ b/src/main/java/io/papermc/paper/util/ServerEnvironment.java
18- @@ -0,0 +1,29 @@
18+ @@ -0,0 +1,24 @@
1919+ package io.papermc.paper.util;
2020+
2121+ import com.sun.security.auth.module.NTSystem;
22+ + import com.sun.security.auth.module.UnixSystem;
2223+ import org.apache.commons.lang.SystemUtils;
2324+
24- + import java.io.IOException;
25- + import java.util.Arrays;
25+ + import java.util.Set;
2626+
2727+ public class ServerEnvironment {
28- + private static final boolean runningAsRootOrAdmin;
28+ + private static final boolean RUNNING_AS_ROOT_OR_ADMIN;
29+ + private static final String WINDOWS_HIGH_INTEGRITY_LEVEL = "S-1-16-12288";
2930+
3031+ static {
3132+ if (SystemUtils.IS_OS_WINDOWS) {
32- + runningAsRootOrAdmin = Arrays.asList (new NTSystem().getGroupIDs()).contains("S-1-16-12288" );
33+ + RUNNING_AS_ROOT_OR_ADMIN = Set.of (new NTSystem().getGroupIDs()).contains(WINDOWS_HIGH_INTEGRITY_LEVEL );
3334+ } else {
34- + boolean isRunningAsRoot;
35- + try (final var inputStream = Runtime.getRuntime().exec("id -u " + System.getProperty("user.name")).getInputStream()) {
36- + isRunningAsRoot = new String(inputStream.readAllBytes()).trim().equals("0");
37- + } catch (IOException ignored) {
38- + isRunningAsRoot = false;
39- + }
40- + runningAsRootOrAdmin = isRunningAsRoot;
35+ + RUNNING_AS_ROOT_OR_ADMIN = new UnixSystem().getUid() == 0L;
4136+ }
4237+ }
4338+
4439+ public static boolean userIsRootOrAdmin() {
45- + return runningAsRootOrAdmin ;
40+ + return RUNNING_AS_ROOT_OR_ADMIN ;
4641+ }
4742+ }
4843diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
0 commit comments