18 votes

Existe-t-il un moyen d'obtenir l'UID d'un utilisateur sur une machine Linux en utilisant Java ?

Existe-t-il un moyen d'obtenir l'UID d'un utilisateur sur une machine Linux en utilisant Java ? Je suis au courant de System.getProperty("user.name"); mais elle renvoie le nom de l'utilisateur et je cherche l'UID.

13voto

Jigar Joshi Points 116533

Vous pouvez exécuter id et lire le résultat.

par exemple :

$ id -u jigar

sortie :

1000

vous pouvez exécuter la commande par

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

10voto

Erik Martino Points 793

Il existe en fait un api pour cela. Il n'est pas nécessaire d'appeler une commande shell ou d'utiliser JNI.

def uid = new com.sun.security.auth.module.UnixSystem().getUid()

6voto

Si vous pouvez influencer la façon dont la VM Java est démarrée, vous pouvez transmettre le programme de la uid comme une propriété de l'utilisateur :

java -Duserid=$(id -u) CoolApp

Dans votre CoolApp, vous pourriez simplement récupérer l'ID avec :

System.getProperty("userid");

Regards,

Martin.

1voto

vz0 Points 11605

Il suffit d'ouvrir le /etc/passwd et rechercher la ligne qui a un utilisateur égal à System.getProperty("user.name") .

1voto

ShiDoiSi Points 4585

Un autre choix serait d'appeler getuid() en utilisant JNI.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X