【问题标题】:How to start Java program as root but downgrade to non-root user如何以 root 身份启动 Java 程序但降级为非 root 用户
【发布时间】:2015-09-25 06:33:48
【问题描述】:

我正在编写一个将在 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 linux security permissions userid


【解决方案1】:

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

【讨论】:

  • 我同意唯一可行的处理方法是调用 setuid 系统函数。这不是一个普遍的问题吗?通常,需要执行某些特定“root”相关任务的应用程序应以 root 身份启动,但出于安全原因,它们应尽快降级为非 root 用户。
  • 我之前并不知道 JNA。我做了一些测试,JNA 完美运行——正是我需要的。
猜你喜欢
  • 1970-01-01
  • 2015-04-29
  • 2018-04-09
  • 2015-06-18
  • 2016-04-11
  • 2019-10-09
  • 2019-04-05
  • 2016-05-08
  • 2020-05-16
相关资源
最近更新 更多