Java 包装脚本 w/sudo 不起作用

发布于 2025-01-06 13:09:43 字数 651 浏览 1 评论 0原文

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

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

更新:

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

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

该文件及其所在目录都可以通过以下方式读取:全部。

I have a Java executable that takes in command line arguments to launch root protected applications on my Linux box. We have separate user accounts that are given sudo access to launch the single Java executable, which the user can then use to launch the root protected apps. My understanding of sudo is that the user assumes the root 'role' during the single call and any subsequent calls thereafter (i.e. the calls the Java exec makes to the apps). It works for most of my applications, but only partially works for others. In particular the external applications being launched sometime don't operate correctly and seem to output errors that they can't open files (that are read accessible by all). If I run the executable as root, the executable and subsequent apps all run fine, so I know it has something to do w/ sudo.

I can provide more details if necessary but looking if anybody knows if sudo changes environment or runtime issues that I'm not aware of.

UPDATE:

The config files are in readable directories. To test for sure I made the binaries that the Java exec are trying to launch read accessible by all. From my tester account, I then launch the Java exec (w/o sudo) and the app runs fine. I then make just the binaries root protected, and run the Java exec with sudo and the application launch fails and gives me an error like:

"recorder: Fail to open edtrecorder.cfg"

That file and the directory its in are both read accessible by all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怕倦 2025-01-13 13:09:43

在某些发行版(例如 ubuntu)上,sudo 使用受限环境(具有不同的搜索路径)运行程序到运行命令的用户 shell。这是一项安全功能;例如,某个程序可能更改了 PATH,以便当用户键入命令时运行恶意程序而不是真正的程序 - 这在 sudo 下将是灾难性的。
请参阅 sudo 更改 PATH - 为什么?

On some distributions (e.g. ubuntu) sudo runs programs using a restricted environment (with different search path) to the user shell running the command. This is a security feature; for example a program may have changed the PATH so that so that a rogue program is run instead of the real one when the user types a command - this would be catastrophic under sudo.
See sudo changes PATH - why?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文