gpt4 book ai didi

Linux SUID 配置导致二进制文件无法执行

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

我有一个二进制文件(名称为 bmu),在调用 statfs 函数时需要 root 权限。

操作系统是 SuSE Linux 2.6.16.60-0.21-smp
运行bmu的用户是test,是非root用户

test@SuSE:~> id
uid=1056(test) gid=0(root) groups=0(root),16(dialout),33(video)

我测试了3种场景。

--->场景一
如果bmu没有配置SUID,bmu可以执行但是调用会失败。

-rwxr-xr-x 1 test root 14389879 2012-04-10 10:38 bmu

--->场景2
如果bmu配置了SUID,当bmu通过test运行时,会失败提示“DBMS API Library 'libclntsh.so' loading fails”

-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu

--->场景三
如果 bmu 由 root 运行,它将被成功执行。当然,不管是否配置了SUID。

-rwxr-xr-x 1 root root 14389879 2012-04-10 10:38 bmu<br/>
-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu

从场景2来看,应该是LD_LIBRARY_PATH配置的问题,但是从场景1来看,应该不是LD_LIBRARY_PATH配置的问题。从场景3可以看出,bmu是root可执行的。

只有场景2有问题,所以有人可以提供一些建议吗?谢谢!

最佳答案

当程序作为 setuid 运行时,您环境中的 LD_LIBRARY_PATH 变量将被忽略,因为它是一个潜在的安全漏洞。

您应该使用 $ORIGIN 相对 rpath 将您的二进制文件链接到依赖库,或者使用绝对 rpath 引用库。查看ld man page有关 $ORIGIN rpath 的详细信息。

关于Linux SUID 配置导致二进制文件无法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084796/

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