如何验证用户是否是Java应用程序中的root用户?谢谢
63lcw9qa1#
Process p = Runtime.getRuntime().exec("id -u")
字符串请记住,系统上的“root”用户可能不会被称为root(尽管很少更改它),也可以将其别名为另一个用户名。如果当前用户是root用户,则输出将是0。
root
0
sg24os4d2#
简单。只要用
System.getProperty("user.name")
字符串
iih3973s3#
运行一个本地命令?像whoami
7qhs6swi4#
你可以叫
Process p = Runtime.getRuntime().exec("whoami")
字符串方法。然后你可以处理 p 的标准输出来读取命令的输出。
vmpqdwk35#
看看这个:get login username in java。
bbuxkriu6#
最好的办法就是逃跑
Process p = Runtime.getRuntime.exec("groups `whoaim`");
字符串并尝试解析字符串以获取组调用root。您的JVM进程可以由用户运行,而不是调用root,而是主持人,但此用户可能在root组中,并且您具有root权限。
axzmvihb7#
String userName = System.getProperty("user.name"); Process p = Runtime.getRuntime().exec("groups " + userName); String output = read(p.getInputStream()); String error = read(p.getErrorStream());
字符串下面是一个read函数:
public static String read(InputStream input) throws IOException { try (BufferedReader buffer = new BufferedReader(new InputStreamReader(input))) { return buffer.lines().collect(Collectors.joining("\n")); } }
型只是“另一种”修改的解决方案。
utugiqy68#
下面是一个带有工作方法的完整Utility类
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringWriter; public interface U { public static final Logger l = LogManager.getLogger(U.class.getName()); public static boolean isRoot() { try { Process p = Runtime.getRuntime().exec("id -u"); StringWriter sw = new StringWriter(); InputStreamReader isw = new InputStreamReader(p.getInputStream()); isw.transferTo(sw); String output = sw.toString(); l.trace("id -u output = [{}]", output); return output.startsWith("0"); } catch (IOException e) { l.error("", e); } return false; } }
8条答案
按热度按时间63lcw9qa1#
字符串
请记住,系统上的“root”用户可能不会被称为
root
(尽管很少更改它),也可以将其别名为另一个用户名。如果当前用户是root用户,则输出将是0
。sg24os4d2#
简单。只要用
字符串
iih3973s3#
运行一个本地命令?像whoami
7qhs6swi4#
你可以叫
字符串
方法。然后你可以处理 p 的标准输出来读取命令的输出。
vmpqdwk35#
看看这个:get login username in java。
bbuxkriu6#
最好的办法就是逃跑
字符串
并尝试解析字符串以获取组调用root。您的JVM进程可以由用户运行,而不是调用root,而是主持人,但此用户可能在root组中,并且您具有root权限。
axzmvihb7#
字符串
下面是一个read函数:
型
只是“另一种”修改的解决方案。
utugiqy68#
下面是一个带有工作方法的完整Utility类
字符串