有没有办法在使用java的Linux机器上获取用户的UID?

时间:2011-01-25 16:33:18

标签: java linux uid

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

5 个答案:

答案 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) {
}

source

答案 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()