Javaを使用してLinuxマシンでユーザーのUIDを取得する方法はありますか?

StackOverflow https://stackoverflow.com/questions/4796172

  •  24-10-2019
  •  | 
  •  

質問

Javaを使用してLinuxマシンでユーザーのUIDを取得する方法はありますか?私は知っています System.getProperty("user.name"); メソッドですが、ユーザー名が返され、UIDを探しています。

役に立ちましたか?

解決

実行できます id コマンドと読み取り結果。

例えば:

$ id -u jigar

出力:

1000

Commandを実行できます

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").

もう 1 つの選択肢は、JNI を使用して getuid() を呼び出すことです。

実際にはこれ用の API があります。シェル コマンドを呼び出したり、JNI を使用したりする必要はありません。

def uid = new com.sun.security.auth.module.UnixSystem().getUid()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top