有没有办法让使用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()。