16

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

4

5 回答 5

13

您可以执行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) {
}

来源

于 2011-01-25T16:38:12.863 回答
7

实际上有一个api。无需调用 shell 命令或使用 JNI,只需

def uid = new com.sun.security.auth.module.UnixSystem().getUid()
于 2019-03-11T07:25:14.930 回答
6

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

java -Duserid=$(id -u) CoolApp

在您的 CoolApp 中,您可以简单地通过以下方式获取 ID:

System.getProperty("userid");

问候,

马丁。

于 2011-01-25T17:00:14.367 回答
1

只需打开/etc/passwd文件并搜索用户等于System.getProperty("user.name").

于 2011-01-25T17:03:32.103 回答
1

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

于 2011-01-25T17:42:14.890 回答