Lorsque nous Runtime.exec(cmd)
, de quel utilisateur sera-t-il exécuté? Par exemple, user1
(sur Unix) java -jar Test.jar
. Dans ce programme, nous avons Runtime.exec("whoami")
. Quel identifiant d’utilisateur devons-nous recevoir?
J’ai terminal terminal, où a été exécuté chrootuid cmd et il existe un programme java. Et en quelque sorte, whoami commande de ce pr. retourne NOT SAME ID utilisateur en tant que propriétaire de chrootuid , dont Jp est le nom. Quelqu’un peut-il expliquer cela?
Comme le dit @SLaks, le script sera exécuté en tant que même utilisateur que celui qui a lancé la JVM.
Fatigué:
Donc, voilà: le processus “forked” s’exécutera avec les mêmes informations d’identification que la JVM.
Maintenant, quelques informations supplémentaires sur l’exécution d’un processus séparé en général …
En Java, vous voulez vraiment utiliser ProcessBuilder
au lieu de Runtime.exec()
pour les raisons suivantes:
.start()
). Mais cela ne vous permet clairement pas de contrôler avec précision les ressources partagées, ni les modifications de privilèges, comme le font les API natives. Cependant, ProcessBuilder
est bien mieux que Runtime.exec()
, mais Java n’a pas encore connu de changement radical pour la gestion des processus, car le nouveau File
java.nio.file
est File
: a revolution.
Tous les processus enfants sont exécutés avec le même utilisateur que le processus parent.