简体   繁体   中英

How to start Java program as root but downgrade to non-root user

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM