在 Linux 中使用 env 命令不适用于 u+s file

问题描述

我是 Stack Overflow 的新手,也许我的问题描述很复杂,抱歉。

我将一个 C++ 程序编译成二进制可执行文件 mygraph

然后我用sudo chmod u+s mygraph给它一个“设置uid权限”,文件所有者和组是root:root,我用普通用户ezeta来执行mygraph

mygraph 需要一个 LD_LIBRARY_PATH 环境,所以我使用 env 命令来执行 mygraph,但它不起作用,因为系统提示 ./mygraph: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory

我认为是因为 env 命令不起作用。 这是启动命令:

$ env LD_LIBRARY_PATH=./bundle/lib:./bundle/jre/lib/amd64/server ./mygraph
./mygraph: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
$
$
$ ll .
 total 272
 drwxrwxr-x  9 ezeta ezeta    4096 Jan  8 11:35 ./
 drwxrwxr-x  7 ezeta root     4096 Jan  8 14:01 ../
 drwxrwxr-x  4 ezeta ezeta    4096 Jan  6 16:26 bundle/
 -rwsrwxr-x  1 root root 205384 Jan  8 14:01 mygraph*

mygraph 权限是 rws rwx r-x,我知道我用 ezeta 运行 mygraph 会有 root 权限,因为 s 权限。但也许 env 命令将 LD_LIBRARY_PATH 设置为 ezeta 而不是 root

如何通过用户 ezeta 使用 env 命令或其他方式将 LD_LIBRARY_PATH 设置为 root

ps:我不能使用 -rpath 在 ELF 头中写入 LD_LIBRARY_PATH,因为我需要防止这条路径被篡改。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)