【问题标题】:Java Wrapper Script w/ sudo not working带有 sudo 的 Java Wrapper 脚本不起作用
【发布时间】:2012-02-16 19:52:53
【问题描述】:

我有一个 Java 可执行文件,它接受命令行参数以在我的 Linux 机器上启动受根保护的应用程序。我们有单独的用户帐户,它们被授予 sudo 访问权限来启动单个 Java 可执行文件,然后用户可以使用它来启动受 root 保护的应用程序。我对 sudo 的理解是,用户在单次调用和之后的任何后续调用(即 Java exec 对应用程序的调用)期间担任根“角色”。它适用于我的大多数应用程序,但仅部分适用于其他应用程序。特别是有时启动的外部应用程序无法正常运行,并且似乎会输出无法打开文件的错误(所有人都可以读取)。如果我以 root 身份运行可执行文件,则可执行文件和后续应用程序都运行良好,所以我知道它与 sudo 有一些关系。

如有必要,我可以提供更多详细信息,但看看是否有人知道 sudo 是否会更改我不知道的环境或运行时问题。

更新:

配置文件位于可读目录中。为了确保测试,我制作了 Java exec 尝试启动的二进制文件,所有人都可以读取。然后,我从我的测试人员帐户启动 Java exec(不带 sudo),应用程序运行良好。然后我只保护二进制文件根目录,并使用 sudo 运行 Java exec,应用程序启动失败并给我一个错误,例如:

“记录器:无法打开 edtrecorder.cfg”

该文件及其所在的目录都可供所有人读取。

【问题讨论】:

  • 您的 Java 程序试图读取的文件是否在可访问目录中?
  • 你能提供更多细节吗?哪些命令有效,哪些无效?具体给出了哪些错误?正在进行哪些 sudo 调用?

标签: java linux sudo


【解决方案1】:

在某些发行版(例如 ubuntu)上,sudo 使用受限环境(具有不同的搜索路径)对运行命令的用户 shell 运行程序。这是一项安全功能;例如,一个程序可能已经更改了 PATH,以便在用户键入命令时运行流氓程序而不是真正的程序 - 这在 sudo 下将是灾难性的。 见sudo changes PATH - why?

【讨论】:

  • 我在其他地方读过,但是在你链接的帖子中运行了 sudo 测试。然而,sudo 似乎并没有改变我的 PATH。
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多