有没有办法在使用java的Linux机器上获取用户的UID?我知道System.getProperty("user.name");
方法,但它返回用户名,我正在寻找UID。
答案 0 :(得分:12)
您可以执行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) {
}
答案 1 :(得分:3)
如果您可以影响Java VM的启动方式,您可以将 uid 作为用户属性进行切换:
java -Duserid=$(id -u) CoolApp
在您的CoolApp中,您只需使用以下命令获取ID:
System.getProperty("userid");
此致
马丁。
答案 2 :(得分:1)
只需打开/etc/passwd
文件,然后搜索用户等于System.getProperty("user.name")
的行。
答案 3 :(得分:1)
另一种选择是使用JNI调用getuid()。
答案 4 :(得分:0)
实际上有一个api。
无需调用shell命令或使用JNI。def uid = new com.sun.security.auth.module.UnixSystem().getUid()