我正在写一个Java程序,它将在Linux服务器上运行。程序需要以"root"身份启动,执行特定操作(读取文件),然后在文件被读取并关闭后,将自己降级为非root用户。
我通读了下面的问题,但我还没有找到一个可行的解决方案-特别是因为我不处理http端口。
https://askubuntu.com/questions/62713/how -降低-用户权限- - - java应用程序后,打开-港- 80 - 443
https://serverfault.com/questions/112795/how可以-我-运行- -服务器- - linux - -港- 80——————正常用户
以Root用户运行Java程序的一部分
关于如何实现我想做的事情有什么想法吗?
SOLVED: 正如答案中所建议的,JNA为我解决了这个问题。
不幸的是,在纯Java中无法做到这一点。
但是您可以使用JNI或JNA来调用setuid
系统函数。
例如,您可以重用jetty-setuid
包:JAR +本机库。