有没有办法让使用Java的Linux机器上的用户的UID?

有没有办法让使用Java的Linux机器上的用户的UID? 我知道System.getProperty("user.name"); 方法,但它返回的用户名,我正在寻找UID。

你可以执行id命令并读取结果。

例如:

$ id -u jigar

输出:

1000

你可以通过执行命令

 try { String userName = System.getProperty("user.name"); String command = "id -u "+userName; Process child = Runtime.getRuntime().exec(command); // Get the input stream and read from it InputStream in = child.getInputStream(); int c; while ((c = in.read()) != -1) { process((char)c); } in.close(); } catch (IOException e) { } 

资源

如果您可以影响Java VM的启动方式,则可以将uid作为用户属性进行切换:

 java -Duserid=$(id -u) CoolApp 

在你的CoolApp中,你可以简单地获取ID:

 System.getProperty("userid"); 

问候,

马丁。

只需打开/etc/passwd文件并搜索具有与System.getProperty("user.name")等同的用户的行。

另一个选择是使用JNI调用getuid()。