I am writing a Java program which will be running on Linux servers. The program needs to start as "root", do a certain operation (reading a file), and then downgrade itself to a non-root user, after the file has been read and closed.
I read through the following questions, but I haven't found a viable solution - especially since I am not dealing with http ports.
https://askubuntu.com/questions/62713/how-to-downgrade-user-permissions-on-a-java-app-after-opening-port-80-443
https://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on-port-80-as-a-normal-user
Running a part of a Java Program as Root
Any ideas on how to implement what I am trying to do?
SOLVED: As suggested in the answer, JNA did the trick for me.
Unfortunately there is no way to do this in pure Java.
But you can use JNI or JNA to call setuid system function.
For instance, you may reuse jetty-setuid package for doing so: JAR + Native library.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With