java - 如何以 root 身份启动 Java 程序但降级为非 root 用户

标签 java linux security permissions userid

我正在编写一个将在 Linux 服务器上运行的 Java 程序。程序需要以“root”身份启动,进行一定的操作(读取文件),然后在文件读取关闭后降级为非root用户。

我通读了以下问题,但没有找到可行的解决方案 - 特别是因为我不处理 http 端口。

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

关于如何实现我正在尝试做的事情有什么想法吗?

已解决: 正如答案中所建议的那样,JNA 为我解决了这个问题。

最佳答案

不幸的是,在纯 Java 中无法做到这一点。
但是你可以使用JNI或者JNA来调用setuid系统函数。
例如,您可以重复使用 jetty-setuid 包:JAR + Native library .

关于java - 如何以 root 身份启动 Java 程序但降级为非 root 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274200/

相关文章:

java - 在 Java 8 中查找高点和低点

c - Linux;如果您不是 root,请将 UID 更改为 root

linux - linux中的局部变量

c# - 如何实现密码重置?

java - 在 Android 上将文本转换为位图(像素)

java - 比较数据库中的图像时出错

java - Grails 3 taglib静态编译

python - 使用 subprocess.Popen() 后关闭 process.stdout

security - ubuntu 16.04 LTS 上的 2FA 登录

database - 半透明数据库