Javaを使用してLinuxマシンでユーザーのUIDを取得する方法はありますか?
質問
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()
所属していません StackOverflow