gpt4 book ai didi

java - Sudo Java 调用 C 应用程序和权限

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:34 25 4
gpt4 key购买 nike

我正在从我的 Java 应用程序调用 C 应用程序(仅限控制台)。我用它来调用它: Process proc = rt.exec("./Debug/CPP_CL --device 0");CPP_CL 需要访问 clinfo() 硬件 .. 因此 GPU 硬件作为其在 GPU 上的处理。因此,在这种情况下需要以 sudo/root 身份运行。

目前一切正常,但前提是我以 sudo 运行 Java JAR。当前仅用于测试 CPG 是 chmod 777(我知道不好)。

我想知道最好的方法是什么?如果由 SUDO java 调用,CPP 会作为 SUDO 运行吗?还是需要 chmod'ed ?如果是这样,最好的 chmod 值是多少?

谢谢。

最佳答案

如您所说,使用 root 运行 Java 是一种可能性,但并不完全好。

通常的 chmod 标志 (rwx) 也帮不了你。

只需用 sudo 调用它不会解决任何问题。通常,需要密码,如果 java 程序可以输入密码(即它知道 root 密码)……好吧,那么它又和上面一样了。

如评论中所述,您可以为 sudo 添加异常(exception),但有一些问题:
只能指定一个程序/脚本文件,没有参数限制。您将需要一个调用 ./Debug/CPP_CL --device 0 的脚本文件(最好使用完整路径)并将批处理文件添加为异常(exception)。
此外,您必须确保脚本文件不能被用户修改(文件的 chmod)并且不能被删除(包含目录的 chmod)。文件修改将意味着修改用户可以将任何内容放入其中并以 root 身份运行它,而删除将让用户在那里放置另一个具有此名称 = 相同效果的文件。鉴于此,您可以使用 sudo 调用 with 。

如果你不想在没有 sudo 的情况下调用它,请制作另一个脚本文件,它只使用 sudo 调用文件 1。

另一种可能性是程序本身的特殊 chmod 标志 SUID(如果它在您的发行版中启用/支持)。但在这里,你不能限制参数。

关于数据文件:由 root 程序创建的文件将归 root 所有。 chmod/chown 作为 root 可以改变它。如果你只需要读取文件,默认的 umasks 将允许在许多系统上这样做(如果文件不在像/root 这样的根目录中)

关于java - Sudo Java 调用 C 应用程序和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com