Java System.getProperty 与 sudo 获得 root 权限

Java System.getProperty 与 sudo 获得 root 权限

这个问题在这里问比在 stack overflow 上问更好,因为它与 Ubuntu 的关系比与实际编程语言的关系更密切。这里有两种不同的方法来获取文件的路径。第一种是有一个默认路径并对其进行硬编码。第二种选择是使用Paths.get(System.getProperty("user.home"))Java 编程语言中提供的路径。为了获得更多上下文,我使用 Ubuntu 14.04 和 Java 17 以及 maven。不幸的是,我无法更改 Ubuntu。

我在 Ubuntu 中部署了 jar 文件。问题是我必须使用 运行 jar 文件才能sudo获得 sudo 权限。但在这种情况下,Paths.get(System.getProperty("user.home"))将返回root/home而不是user/home

你知道在这种情况下我该怎么做吗?

答案1

调查为什么.jar需求sudoroot),以及“能力”能否取代sudo

现在,开始破解:

阅读man sudo sudoers sudoedit。定义一个环境变量来保存主目录,指示sudoers将其导出到调用的环境。为此使用新的环境变量,不要使用$HOME。请执行以下操作:

export userhome="$HOME"
sudo ... .jar

并引用userhome中的环境变量.jar

相关内容